如何卸载 OpenJDK?

Fyn*_*ynn 45 uninstall java openjdk

我不想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]?
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能在删除时不会安装我不需要的新软件包openjdk-7

Rao*_*out 79

好问题,我自己也在想这个。

我发现您可以使用以下命令删除 Ubuntu 13.04 上的 openjdk-7-jre:

sudo apt-get autoremove openjdk-7-jre
Run Code Online (Sandbox Code Playgroud)

按“y”,然后在提示确认此更改时按 Enter。这也应该清理所有与它一起安装的附加依赖库。

我还发现您可以使用以下命令来执行额外的清理:

sudo apt-get purge openjdk*
Run Code Online (Sandbox Code Playgroud)

如果使用以下命令:

java -version
Run Code Online (Sandbox Code Playgroud)

您应该不再看到安装的 openjdk-7-jre!

希望这可以帮助。:)

  • @jgomo3 这个答案对你有帮助吗?特别是 `sudo apt-get remove --purge openjdk*` 位? (2认同)
  • `sudo apt-get purge openjdk*` 对我有用,但它也卸载了我的 Jenkins 安装(这取决于 openjdk 7 包):( (2认同)

Rad*_*anu 36

您可以使用以下命令:

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
Run Code Online (Sandbox Code Playgroud)

这样就不会安装新的软件包。这是我对上述命令的输出:

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
Run Code Online (Sandbox Code Playgroud)

但是,我不建议你这样做。有一天,您肯定需要一个 OpenJDK(6 或 7)。

  • 如果我真的需要 JDK,我更愿意使用 Oracle 的 JDK 而不是 OpenJDK。 (5认同)

小智 8

要卸载 OpenJDK,您需要在终端中运行这些命令。\n您可以使用这些键ctrl+ shift+来获取终端enter

\n\n

仅删除 Openjdk:

\n\n
$ sudo apt-get remove openjdk*\n
Run Code Online (Sandbox Code Playgroud)\n\n

删除 Openjdk 以及依赖项:

\n\n
$ sudo apt-get remove --auto-remove openjdk*\n
Run Code Online (Sandbox Code Playgroud)\n\n

删除Openjdk及其\xe2\x80\x99s配置文件:

\n\n
$ sudo apt-get purge openjdk*\n
Run Code Online (Sandbox Code Playgroud)\n\n

删除 Openjdk 及其依赖项和 it\xe2\x80\x99s 配置文件:

\n\n
$ sudo apt-get purge --auto-remove openjdk*\n
Run Code Online (Sandbox Code Playgroud)\n


kir*_*iri 6

为什么会发生这种情况

发生这种情况可能是因为系统上的另一个包依赖于 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
Run Code Online (Sandbox Code Playgroud)

示例输出(缩短):

-----------------------
openjdk-7-jre
 |libreoffice-filter-mobiledev
 |libreoffice
 |libreoffice-writer
 |libreoffice-base
 |libreoffice-filter-mobiledev
 |libreoffice
 |libreoffice-writer
 |libreoffice-base
Run Code Online (Sandbox Code Playgroud)

这表明所有 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
Run Code Online (Sandbox Code Playgroud)