如何卸载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-jreapt-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 

示例输出(缩短):

 ----------------------- openjdk-7-jre |libreoffice-filter-mobiledev |libreoffice |libreoffice-writer |libreoffice-base |libreoffice-filter-mobiledev |libreoffice |libreoffice-writer |libreoffice-base 

这表明所有LibreOffice包都依赖于openjdk-7-jre 。 只要安装了这些软件包,就不能在不自动安装备用Java的情况下卸载OpenJDK。

删除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的语法,可以使用前端,替代品。

例如……我在这里广泛使用Oracle的JDK。

我把它解压缩到/ opt / java /。

那么,所有Oracle Java的二进制文件都是Java相关内容的主要实用程序,我使用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允许您安装相同实用程序的多个版本)

除了其他答案之外 – 您是否检查过.bashrc文件以确保JAVA_HOME环境不存在? 删除该行应该可以解决从openjdk释放Ubuntu的问题。 像一个例子:

  JAVA_HOME=/usr/local/java/jdk1.7.0_45 export PATH=$JAVA_HOME:$PATH 

如果您看到类似的内容,请删除这两行并重新启动。