当前位置: 首页>>技术教程>>正文


如何卸载OpenJDK?

, , ,

问题描述

我不希望在我的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允许您安装相同实用程序的多个版本)

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/3075.html,未经允许,请勿转载。