问题描述
我不希望在我的Ubuntu 13.04系统上安装OpenJDK
,但尝试卸载openjdk-7-jre
会产生以下消息:
$ sudo apt-get purge openjdk-7-jre
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
gcj-4.7-base gcj-4.7-jre gcj-4.7-jre-headless gcj-4.7-jre-lib gcj-jre gcj-jre-headless icedtea-6-jre-cacao icedtea-6-jre-jamvm libgcj-common libgcj13 libgcj13-awt
openjdk-6-jre-headless openjdk-6-jre-lib
Suggested packages:
fastjar gcj-4.7-jdk gcj-jdk libgcj13-dbg sun-java6-fonts fonts-ipafont-gothic fonts-ipafont-mincho ttf-telugu-fonts ttf-oriya-fonts ttf-kannada-fonts
ttf-bengali-fonts
The following packages will be REMOVED:
default-jre* icedtea-7-plugin* icedtea-netx* icedtea-plugin* libatk-wrapper-java* libatk-wrapper-java-jni* openjdk-7-jre*
The following NEW packages will be installed:
gcj-4.7-base gcj-4.7-jre gcj-4.7-jre-headless gcj-4.7-jre-lib gcj-jre gcj-jre-headless icedtea-6-jre-cacao icedtea-6-jre-jamvm libgcj-common libgcj13 libgcj13-awt
openjdk-6-jre-headless openjdk-6-jre-lib
0 upgraded, 13 newly installed, 7 to remove and 4 not upgraded.
Need to get 57,0 MB/57,2 MB of archives.
After this operation, 156 MB of additional disk space will be used.
Do you want to continue [Y/n]?
我需要做什么才能在删除openjdk-7
时不安装任何我不需要的新软件包?
最佳解决思路
您可以使用以下命令:
sudo apt-get purge openjdk-8-jre openjdk-8-jre-headless openjdk-7-jre gcj-4.7-base gcj-4.7-jre openjdk-6-jre-headless
这样就不会安装新的软件包。这是我上面命令的输出:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package 'gcj-4.7-base' is not installed, so not removed
Package 'gcj-4.7-jre' is not installed, so not removed
Package 'openjdk-6-jre-headless' is not installed, so not removed
The following packages will be REMOVED:
default-jre* icedtea-7-plugin* icedtea-netx* libatk-wrapper-java*
libatk-wrapper-java-jni* libreoffice-base* minecraft-installer*
openjdk-7-jre*
0 upgraded, 0 newly installed, 8 to remove and 6 not upgraded.
After this operation, 10,3 MB disk space will be freed.
Do you want to continue [Y/n]? n
但是,我不建议你这样做。有一天你需要确定一个OpenJDK(6或7)。
次佳解决思路
好问题,我自己也在想这个。
我发现您可以使用以下命令删除Ubuntu 13.04上的openjdk-7-jre:
sudo apt-get autoremove openjdk-7-jre
按’y’,然后在提示确认此更改时按Enter键。这还应该清理随其安装的所有其他依赖库。
我还发现您可以使用以下命令执行其他清理:
sudo apt-get purge openjdk*
如果使用以下命令:
java -version
您应该不再看到openjdk-7-jre已安装!
希望这可以帮助。 🙂
第三种解决思路
为什么会这样
这可能是因为系统上的另一个包依赖于Java。在删除openjdk-7-jre
时,apt-get
发现如果卸载OpenJDK,某些软件包将具有未满足的依赖项。为了解决这个问题,它安装了另一个提供Java的包。
要找出导致此问题的原因,请在终端中运行以下命令:
packages=(default-jre default-jre-headless icedtea-6-plugin icedtea-7-plugin java-compiler java-jdk java-runtime java-runtime-headless java-sdk java-virtual-machine java2-jdk java2-runtime java2-runtime-headless java2-sdk java5-jdk java5-runtime java5-runtime-headless java5-sdk java6-jdk java6-runtime java6-runtime-headless java6-sdk java7-jdk java7-runtime java7-runtime-headless java7-sdk openjdk-6-jdk openjdk-6-jre openjdk-6-jre-headless openjdk-7-jdk openjdk-7-jre openjdk-7-jre-headless oracle-java7-bin oracle-java7-fonts oracle-java7-jdk oracle-java7-jre oracle-java7-plugin sun-java6-bin sun-java6-fonts sun-java6-jdk sun-java6-jre sun-java6-plugin)
for pkg in "${packages[@]}"; do
apt_cache_out="$(apt-cache --installed rdepends "$pkg" | grep -E '^ [| ]\S')"
if (( $? == 0 )); then
echo -----------------------
echo "$pkg"
echo "$apt_cache_out"
fi
done
Example output (shortened):
----------------------- openjdk-7-jre |libreoffice-filter-mobiledev |libreoffice |libreoffice-writer |libreoffice-base |libreoffice-filter-mobiledev |libreoffice |libreoffice-writer |libreoffice-base
This indicates that all the LibreOffice packages are depending on
openjdk-7-jre
. As long as these packages are installed, OpenJDK cannot be uninstalled without installing an alternate Java automatically.
删除openjdk-7-jre
如果要删除openjdk-7-jre
(不安装其他软件包),则需要先卸载所有依赖它的软件包。
从示例输出中,将是:
sudo apt-get remove oracle-java7-installer libreoffice-filter-mobiledev libreoffice libreoffice-writer libreoffice-base libreoffice-filter-mobiledev libreoffice libreoffice-writer libreoffice-base
第四种思路
我注意到你说你想使用Oracle的JDK。如果您想要安装Oracle的JDK,可以下载并在您选择的位置提取它。
然后,您只需使用update-alternatives告诉您的系统安装Java的位置。如果您不确定update-alternatives的语法,可以使用front-end,替代品。
例如……我在这里广泛使用Oracle的JDK。
我将它解压缩到/opt /java /。
那么,所有Oracle Java的二进制文件都是Java-related的主要实用工具,我使用update-alternatives执行以下操作:
for j in `ls /opt/java/bin` ; do update-alternatives --install /usr/bin/"$j" "$j" /opt/java/bin/"$j" 1 ; done
这将获取您之前提取的所有Oracle Java实用程序,并为您提供第一优先级,以防您安装了其他版本的Java。 (因为Ubuntu允许您安装相同实用程序的多个版本)