如何使用 make-jpkg 和 fakeroot 在 Debian Wheezy 上無錯誤地安裝 Oracle Java?

如何使用 make-jpkg 和 fakeroot 在 Debian Wheezy 上無錯誤地安裝 Oracle Java?

如何使用 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.0libgdk-x11-2.0.so.0libatk-1.0.so.0、 ...)並將它們全部安裝。

或者您可以只使用 OpenJDK,它是為 Debian Wheezy 預先打包的,並且可以通過apt-get install openjdk-7-jdk.

相關內容