我曾经dpkg
将不同 Debian 版本 (Sid) 中的一些软件包 (openjdk) 强制安装到我当前的安装 (Stretch) 上。它似乎有效(可以编译“hello world”)但之后尝试安装任何东西都会抱怨libc6
版本不匹配。
我怎样才能忽略这个问题?
或者是否有另一种方法可以让同一基本安装提供多种 openjdk 版本?我不愿意用希德作为我的根据地。
答案1
你不能忽视这个问题...
然而,有几种方法可以解决这个问题。
您可以升级到 Debian 10:目前该版本的 OpenJDK 版本与 stable 中的版本接近,并且很快就会有完全相同的版本。
您可以从 Stretch 向后移植安装 OpenJDK (11);这与不稳定的版本相同,但是是针对 Stretch 的软件包构建的。
后者可能更简单:
echo deb http://deb.debian.org/debian stretch-backports main | sudo tee /etc/apt/sources.list.d/stretch-backports.list
sudo apt update
sudo apt install -t stretch-backports openjdk-11-jdk
你可能还需要处理一些libc 差异的影响,但具体细节取决于您随 OpenJDK 一起升级的内容。
您可以以这种方式并行安装 OpenJDK 8 和 11,并通过JAVA_HOME
相应设置来使用合适的版本。系统范围内的默认 Java 版本可以通过运行来设置update-java-alternatives
。
要安装旧版本的 Java,您可以尝试从 Debian 快照安装软件包集;你会找到OpenJDK 6和OpenJDK 7。我不会尝试版本 9 和 10,因为它们从未以稳定的发行版发布;无论如何,他们不应该被需要。
无论您做什么,都不要尝试从较新版本的 Debian 安装软件包,也不要使用dpkg
的--force
选项。