Wie deinstalliere ich OpenJDK?

38

Ich möchte nicht OpenJDKauf meinem Ubuntu 13.04-System installiert sein, aber wenn ich versuche, das Programm zu deinstallieren, wird openjdk-7-jredie folgende Meldung angezeigt:

$ 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]?

Was muss ich tun, damit beim Entfernen keine neuen Pakete installiert werden, von denen ich keine benötige openjdk-7?

Fynn
quelle

Antworten:

29

Sie können den folgenden Befehl verwenden:

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

Auf diese Weise werden keine neuen Pakete installiert. Hier ist meine Ausgabe für den obigen Befehl:

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

Aber ich schlage Ihnen nicht vor, dies zu tun. An einem Tag benötigen Sie sicher ein OpenJDK (6 oder 7).

Radu Rădeanu
quelle
4
Wenn ich wirklich ein JDK brauche, würde ich lieber das JDK von Oracle anstelle von OpenJDK verwenden.
Fynn
Das hat bei mir nicht funktioniert.
jgomo3
@ radu-rdeanu Dazu musste ich vorher gcj installieren. Als ich Ihre Lösung ausprobierte, beschwerte sich apt, dass gcj nicht installiert war. Ich habe gcj installiert und all das Paket entfernt, das Sie gesagt haben. Aber danach war der Java-Befehl immer noch da. Also muss ich eine kabelgebundene Umgebung haben.
jgomo3
@ jgomo3 Wie du an meiner Ausgabe sehen kannst, ist mir dieses Ding nicht passiert. Über welche Version von gcjsprichst du?
Radu Rădeanu
66

Tolle Frage, ich habe mich das selbst gefragt.

Ich habe festgestellt, dass Sie Folgendes verwenden können, um openjdk-7-jre unter Ubuntu 13.04 zu entfernen:

sudo apt-get autoremove openjdk-7-jre

Drücken Sie 'y' und dann die Eingabetaste, wenn Sie aufgefordert werden, diese Änderung zu bestätigen. Dies sollte auch alle zusätzlichen Abhängigkeitsbibliotheken bereinigen, die mit ihm installiert wurden.

Ich habe auch festgestellt, dass Sie den folgenden Befehl verwenden können, um eine zusätzliche Bereinigung durchzuführen:

sudo apt-get purge openjdk*

Wenn Sie den folgenden Befehl verwenden:

java -version

Sie sollten das installierte openjdk-7-jre nicht mehr sehen!

Hoffe das hilft. :)

Raouf Aghrout
quelle
2
@ jgomo3 Hilft dir diese Antwort? Besonders das sudo apt-get remove --purge openjdk*bisschen?
Landroni
1
@landroni ich muss es testen. Um die radu-rdeanu-Lösung zu machen, musste ich vorher gcj installieren. Auf diese Weise konnte ich es "entfernen". Ich werde versuchen, diese Lösung zuerst Oracle Java zu deinstallieren, dann openjdk und so weiter zu installieren und zuletzt automatisch zu entfernen.
jgomo3
Lassen Sie mich wissen, wie Sie autoremovevorankommen. Denken Sie daran, dass Sie openjdk-6-jre ausführen, wenn Sie die richtige Version von openjdk angeben müssen. Wenn Sie mehrere Versionen von openjdk ausführen, werden mit dem purgeBefehl alle Spuren davon entfernt. Gehen Sie daher je nach den gewünschten Aktionen vorsichtig vor.
Raouf Aghrout
2
sudo apt-get purge openjdk*Arbeitete für mich, aber es deinstallierte auch meine Jenkins-Installation (was vom openjdk 7-Paket abhängt) :(
RobertG
1
Die erste Option hat 7 entfernt, aber 6 installiert, die zweite hat funktioniert: sudo apt-get purge openjdk *
Pablo Pazos
4

Warum passiert das?

Dies ist wahrscheinlich darauf zurückzuführen, dass ein anderes Paket auf Ihrem System von Java abhängt. Beim Entfernen wird festgestellt openjdk-7-jre, apt-getdass bei der Deinstallation von OpenJDK einige Pakete nicht erfüllte Abhängigkeiten aufweisen. Um dieses Problem zu lösen, wird ein anderes Paket installiert, das Java bereitstellt.

Führen Sie die folgenden Befehle in einem Terminal aus, um herauszufinden, was dies verursacht:

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

Beispielausgabe (gekürzt):

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

Dies zeigt an, dass alle LibreOffice-Pakete von abhängig sind openjdk-7-jre. Solange diese Pakete installiert sind, kann OpenJDK nicht deinstalliert werden, ohne automatisch ein alternatives Java zu installieren.

Zu entfernen openjdk-7-jre

Wenn Sie entfernen möchten openjdk-7-jre(ohne andere Pakete zu installieren), müssen Sie zuerst alle Pakete deinstallieren, die davon abhängen.

In der Beispielausgabe ist das:

sudo apt-get remove oracle-java7-installer libreoffice-filter-mobiledev libreoffice libreoffice-writer libreoffice-base libreoffice-filter-mobiledev libreoffice libreoffice-writer libreoffice-base
kiri
quelle
3

Ich habe bemerkt, dass Sie sagten, Sie wollten das JDK von Oracle verwenden. Wenn Sie stattdessen das JDK von Oracle installieren möchten, können Sie es herunterladen und an einem Ort Ihrer Wahl extrahieren.

Dann verwenden Sie einfach Update-Alternativen, um Ihrem System mitzuteilen, wo Java installiert ist. Wenn Sie sich über die Syntax von Update-Alternativen nicht sicher sind, können Sie das Front-End dafür verwenden, galternatives.

Zum Beispiel ... Ich verwende das JDK von Oracle hier ziemlich häufig.

Ich extrahiere es nach / opt / java /.

Dann, damit alle Oracle Java-Binärdateien die Hauptdienstprogramme für Java-bezogene Dinge sind, mache ich Folgendes mit Update-Alternativen:

for j in `ls /opt/java/bin` ; do update-alternatives --install /usr/bin/"$j" "$j" /opt/java/bin/"$j" 1 ; done

Hierbei werden alle Oracle Java-Dienstprogramme verwendet, die Sie zuvor extrahiert haben, und ihnen wird die erste Priorität zugewiesen, falls Sie andere Java-Versionen installiert haben. (Da in Ubuntu mehrere Versionen desselben Dienstprogramms installiert sein können)

Longviewbits
quelle
1

Haben Sie zusammen mit den restlichen Antworten Ihre .bashrcDatei überprüft , um sicherzustellen, dass die JAVA_HOME-Umgebung nicht vorhanden ist? Entfernen Sie diese Zeile, um Ubuntu von openjdk zu befreien. Wie ein Beispiel:

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

Wenn Sie so etwas sehen, löschen Sie diese beiden Zeilen und starten Sie neu.

Faron
quelle
0

Um OpenJDK zu deinstallieren, müssen Sie diese Befehle in Ihrem Terminal ausführen. Sie können das Terminal mit den Tasten ctrl++ shiftaufrufen enter.

Nur Openjdk entfernen:

$ sudo apt-get remove openjdk*

Entfernen Sie Openjdk zusammen mit Abhängigkeiten:

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

Entfernen Sie Openjdk und seine Konfigurationsdateien:

$ sudo apt-get purge openjdk*

Entfernen Sie Openjdk zusammen mit Abhängigkeiten und seinen Konfigurationsdateien:

$ sudo apt-get purge --auto-remove openjdk*
Janaka Pushpakumara
quelle