如何卸载OpenJDK?


38

我不想OpenJDK在Ubuntu 13.04系统上安装,但是尝试卸载会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


Answers:


29

您可以使用以下命令:

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)。


4
如果我真的需要JDK,我更喜欢使用Oracle的JDK而不是OpenJDK。
Fynn

这对我不起作用。
jgomo3 2014年

@ radu-rdeanu为了做到这一点,我不得不先安装gcj。当我尝试您的解决方案时,apt抱怨没有安装gcj。我安装了gcj,并删除了您说的所有那些软件包。但是之后,java命令仍然存在。所以我必须有一个有线环境。
jgomo3 2014年

@ jgomo3正如您从我的输出中看到的那样,这件事对我而言并没有发生。gcj您说什么版本的?
RaduRădeanu2014年

66

很好的问题,我自己也很奇怪。

我发现您可以使用以下命令在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!

希望这可以帮助。:)


2
@ jgomo3这个答案对您有帮助吗?特别是sudo apt-get remove --purge openjdk*位?
landroni 2014年

1
@landroni我必须测试一下。为了执行radu-rdeanu解决方案,我必须先安装gcj。这样我可以“删除”它。我将尝试此解决方案,首先卸载Oracle Java,然后安装openjdk和东西,最后“自动删除”它。
jgomo3 2014年

让我知道您的情况,记住如果您正在使用autoremove,则需要指定正确的openjdk版本,您可能正在运行openjdk-6-jre。另外值得注意的是,如果您正在运行多个版本的openjdk,该purge命令将删除所有版本的跟踪,因此请根据您的操作谨慎使用此版本。
Raouf Aghrout 2014年

2
sudo apt-get purge openjdk*为我工作,但它也卸载了我的Jenkins安装程序(这取决于openjdk 7软件包):(
RobertG 2016年

1
第一个选项删除了7个,但安装了6个,第二个工作了:sudo apt-get purge openjdk *
Pablo Pazos

4

为什么会这样

发生这种情况很可能是因为系统上的另一个程序包依赖于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

3

我注意到您说过您想使用Oracle的JDK。如果要安装Oracle的JDK,则可以下载该文件并将其解压缩到您选择的位置。

然后,您只需使用update-alternatives来告诉您的系统Java的安装位置。如果您不确定update-alternatives的语法,可以使用其前端galternatives。

例如...我在这里广泛使用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

如果您安装了其他版本的Java,它将采用您先前提取的所有Oracle Java实用程序,并将它们放在第一位。(因为Ubuntu允许您安装同一实用程序的多个版本)


1

连同其他答案-您是否检查了.bashrc文件以确保JAVA_HOME环境不存在?删除该行应该可以使Ubuntu从openjdk中解放出来。像一个例子:

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

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


0

要卸载OpenJDK,您需要在终端中运行这些命令。您可以通过使用这些按键得到了终端ctrl+ shift+ enter

仅删除Openjdk:

$ sudo apt-get remove openjdk*

删除Openjdk及其依赖项:

$ sudo apt-get remove --auto-remove openjdk*

删除Openjdk及其配置文件:

$ sudo apt-get purge openjdk*

删除Openjdk及其依赖项及其配置文件:

$ sudo apt-get purge --auto-remove openjdk*
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.