
如何使用 make-jpkg 和 fakeroot 在 Debian Wheezy 上安裝 Oracle Java?
在 debian wheezy 上安裝 oracle java 的手冊非常清晰易懂:
http://wiki.debian.org/JavaPackage https://blogs.oracle.com/marigan/entry/installation_of_the_jdk_on http://www.debian-administration.org/articles/142
- 從oracle下載jdk-7u21-linux-x64.tar.gz
- 安裝 java 套件
- 使用 jdk-7u21-linux-x64.tar.gz 運行 make-jpkg
以 root 身分運行:
make-jpkg jdk-7u21-linux-x64.tar.gz
fakeroot make-jpkg jdk-7u21-linux-x64.tar.gz
結果出現以下錯誤:
您是真正的 root — 不幸的是,某些 Java 發行版具有直接操作 /etc 的安裝腳本,並且可能會導致您的系統出現一些不一致。相反,您應該成為非 root 用戶並運行:
fakeroot make-jpkg jdk-7u21-linux-x64.tar.gz
這不會對您的系統檔案造成任何損害,並且仍然允許 Java 發行版成功解壓縮。
正在流產。
作為普通用戶運行:
make-jpkg jdk-7u21-linux-x64.tar.gz
fakeroot make-jpkg jdk-7u21-linux-x64.tar.gz
導致警告/錯誤牆。
一些錯誤:
dpkg-shlibdeps: warning: Can't extract name and version from library name `libverify.so'
error: couldn't find library libxslt.so.1 needed by /tmp/make-jpkg.MxvYKHyE3L/install/usr/lib/jvm/j2sdk1.7-oracle/jre/lib/amd64/libjfxwebkit.so (ELF format: 'elf64-x86-64'; RPATH: '')
dpkg-gencontrol: warning: Depends field of package oracle-j2sdk1.7: unknown substitution variable ${shlibs:Depends}
dpkg-shlibdeps: error: cannot continue due to the errors listed above
完整輸出:沒有 fakeroot http://pastie.org/private/r2llqa2pubqzh8krhbymw
與假根 http://pastie.org/private/kigrgcsam9pvdazbex1fa
安裝工作正常:
dpkg -i oracle-j2sdk1.7_1.7.0+update21_amd64.deb
java版本:
java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)
可以安全地忽略該錯誤嗎?
答案1
首先,您可以忽略 dpkg-shlibdeps 發出的警告。這些錯誤應該提示您需要安裝哪些套件才能滿足 JDK 的所有庫相依性。
發生這種情況的原因是您正在從二進位發行版(即預編譯的 JDK)建置 deb 套件。通常,Debian 軟體包是從原始碼建立的,而不是從二進位檔案建構的。為此,建置包的人會將來源依賴的所有庫新增到某個檔案 ( debian/control
)。如果沒有安裝這些庫,則無法編譯原始程式碼,因此不會產生套件。
在您的例子中,整個 JDK 已經由 Oracle 編譯,並且make-jpkg
僅模仿從原始碼建置套件的過程。因此,您不需要預先安裝所有必需的程式庫。
若要消除錯誤,您可以使用apt-file
找出哪些軟體包包含遺失的檔案(libgtk-x11-2.0.so.0
、libgdk-x11-2.0.so.0
、libatk-1.0.so.0
、 ...)並將它們全部安裝。
或者您可以只使用 OpenJDK,它是為 Debian Wheezy 預先打包的,並且可以通過apt-get install openjdk-7-jdk
.