在Debian Squeeze上安装Openjdk7

我有一台运行Debian Squeeze的服务器,升级到Wheezy不是一个选项。 我需要安装JRE的第7版,因为我需要在那里修正一些错误。 我的select是:

  • 从wheezy软件包仓库安装openjdk-7-jre
  • 安装oracle 7 jre

我们最好喜欢安装openjdk,但是我发现它非常困难。 我试着安装使用apt-get openjdk-7-jre,得到以下回应:

Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: openjdk-7-jre : Depends: openjdk-7-jre-headless (= 7u3-2.1.3-1) but it is not going to be installed Depends: libfontconfig1 (>= 2.9.0) but 2.8.0-2.1 is to be installed Depends: libgdk-pixbuf2.0-0 (>= 2.22.0) but it is not going to be installed Depends: libjpeg8 (>= 8c) but 8b-1 is to be installed Depends: libpulse0 (>= 0.99.1) but 0.9.21-3+squeeze1 is to be installed Depends: libatk-wrapper-java-jni (>= 0.30.4-0ubuntu2) but it is not going to be installed E: Broken packages 

然后我尝试了能力,得到了这个回应:

 0 packages upgraded, 76 newly installed, 0 to remove and 0 not upgraded. Need to get 56.9 MB of archives. After unpacking 171 MB will be used. The following packages have unmet dependencies: libnss3: Conflicts: libnss3-1d (< 2:3.13.4-2) but 3.12.8-1+squeeze6 is installed. openjdk-7-jre: Depends: libfontconfig1 (>= 2.9.0) but 2.8.0-2.1 is installed. Depends: libjpeg8 (>= 8c) but it is not going to be installed. Depends: libpulse0 (>= 0.99.1) but it is not going to be installed. libgdk-pixbuf2.0-0: Depends: libglib2.0-0 (>= 2.31.18) but 2.24.2-1 is installed. Depends: libjpeg8 (>= 8c) but it is not going to be installed. Depends: libtiff4 (>= 3.9.5-2) but 3.9.4-5+squeeze8 is installed. Breaks: libgtk2.0-0 (< 2.21.3) but 2.20.1-2 is installed. Breaks: libgtk2.0-bin (< 2.21.3) but 2.20.1-2 is installed. icedtea-7-jre-cacao: Depends: libstdc++6 (>= 4.6) but 4.4.5-8 is installed. libatk-wrapper-java-jni: Depends: libglib2.0-0 (>= 2.31.8) but 2.24.2-1 is installed. openjdk-7-jre-headless: Depends: libjpeg8 (>= 8c) but it is not going to be installed. Depends: libfontconfig1 (>= 2.9.0) but 2.8.0-2.1 is installed. Depends: libglib2.0-0 (>= 2.26.0) but 2.24.2-1 is installed. The following actions will resolve these dependencies: Keep the following packages at their current version: 1) icedtea-7-jre-cacao [Not Installed] 2) icedtea-7-jre-jamvm [Not Installed] 3) libatk-wrapper-java-jni [Not Installed] 4) libgdk-pixbuf2.0-0 [Not Installed] 5) libnss3 [Not Installed] 6) openjdk-7-jre [Not Installed] 7) openjdk-7-jre-headless [Not Installed] 8) openjdk-7-jre-lib [Not Installed] Leave the following dependencies unresolved: 9) libatk-wrapper-java recommends libatk-wrapper-java-jni Accept this solution? [Y/n/q/?] 

接受解决scheme如下所示:

 No packages will be installed, upgraded, or removed. 0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 0 B of archives. After unpacking 0 B will be used. 

对不起,输出详细,我是一个新手在这。

无论如何,从我读过的文章来看,安装openjdk-7非常困难 – 我想我正在寻找一颗银弹! 有没有人做过这个? 我应该放弃并获得甲骨文?

干杯,

詹姆士

我不知道你尝试失败的原因(可能与APT conf等有关),但是我设法很容易地安装了openjdk7,没有任何明显的副作用。

这里有一个警告的字眼:混合不同版本的软件包(比如stable和testing)是有风险的。 从其他版本安装的软件包可能与其他版本不兼容,甚至可能会破坏其他软件包。 升级像libc这样的关键软件包尤其有风险。

首先,您需要设置软件包的优先级,以便APT不会从testing开始拉扯所有内容。 有关更多信息,请参阅apt_preferences(5)手册页和“Debianpipe理员手册” 。

  1. 包括wheezy在sources.list(我假设你已经这样做了)

  2. 设置优先级

    设置挤压作为默认版本

     $ cat /etc/apt/apt.conf.d/local APT::Default-Release "squeeze"; 

    这有效地确定了挤包的优先级990。

    通过模拟升级,我注意到APT正试图从testing中升级一些软件包。 apt-cache policy解释了从backports安装的软件包(安装的软件包优先级为100 vs 500,在testing中可用的软件包)。 不知道这是否是最好的做法,但要解决这个问题(避免使用来自testing版本的backports升级包)我最小化了testing优先级(如果不使用backports,则不必这样做)

     $ cat /etc/apt/preferences.d/wheezy Package: * Pin: release n=wheezy Pin-Priority: 10 

    “10”只是我select的一个任意数字,小于100.我猜这个pin安全更新不会被从testing中安装的软件包取得(还没有testing过),这个解决scheme也很有趣。

  3. 安装openjdk7selectwheezy作为目标版本

     # apt-get install -t wheezy openjdk-7-jdk 

由于必要的库将在此过程中升级,准备重新启动一些服务(将自动与您的协议重新启动)。 我不会推荐在graphics化会话中使用它 – 我被告知在升级libc之前停止显示pipe理器。