Wie entferne ich Java in Debian?

4
java -version
java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8.13) (6b18-1.8.13-0+squeeze2)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)

Es scheint keine einfache Möglichkeit zu geben, in apt nach Paketen zu suchen. Daher verwende ich dpkg, um nach Java-bezogenen Paketen zu suchen:

# dpkg --get-selections | less | grep java
ca-certificates-java            install
java-common                     install
javascript-common               install
libaccess-bridge-java           install
libaccess-bridge-java-jni       install
libdb4.7-java-gcj               deinstall
libhsqldb-java-gcj              deinstall
sun-java6-bin                   deinstall
sun-java6-jre                   deinstall
tzdata-java                     install

Ich entferne Java-Common, aber wenn es fertig ist, ist Java immer noch installiert und Java-Version zeigt immer noch dasselbe.

Es ändert sich nichts, das Java-Common-Paket erscheint sogar noch in der dpkg-Suche. Was vermisse ich?

Ich habe auch OpenJDK entfernt, was anscheinend "deinstall" bedeutet:

# dpkg --get-selections | less | grep openjdk
openjdk-6-jre                   deinstall
openjdk-6-jre-headless          install
openjdk-6-jre-lib               install

Java ist immer noch da.

# java -version
java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8.13) (6b18-1.8.13-0+squeeze2)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)
some1
quelle
Wie genau haben Sie die Pakete entfernt? Denn deinstallbedeutet nur, dass es zur Deinstallation ausgewählt, aber nicht tatsächlich deinstalliert wird.
Jan Hlavacek
1
Außerdem gibt es etwas seltsam über die Reihenfolge in Ihren Rohren: Sie haben keinen Grund dafür , dass lessvor grep?
Jan Hlavacek
Ich habe apt-cache remove <package> verwendet, um sie zu entfernen, und sie wurden in dpkg als "deinstall" angezeigt - ich bin mir nicht sicher, ob das normal ist.
Irgendwann am
Es wurde zu viel ausgegeben und ich habe weniger versucht, bevor ich gegriffen habe. ; p Du hast recht, es macht so wie es ist keinen Sinn.
einige1
Bist du sicher, dass du es benutzt hast apt-cache? Soweit mir bekannt ist, apt-cachegibt es noch nicht einmal einen removeBefehl apt-cachezum Abfragen des apt-Cache, nicht zum Installieren und Deinstallieren von Paketen. Verwenden Sie apt-get remove <package>oder apt-get purge <package>wäre besser. Ich selbst benutze aptitudefür synapticsolche Aufgaben, es hat eine nette Benutzeroberfläche, oder wenn man etwas mit einer GUI haben will, soll das gut sein.
Jan Hlavacek

Antworten:

9

Für mich war es:

sudo apt-get remove openjdk-6*
sudo apt-get remove icedtea*
DavidG
quelle
2

Ich bin darauf gestoßen, weil ich ein Lehrbuch für die Android-Programmierung durcharbeite, das eine bestimmte Java SE und JRE (8u121) verwenden möchte und verlangt, dass alle anderen Java-Pakete entfernt werden, bevor ich mit der Installation fortfahre. Nachdem ich die obigen Ideen gelesen hatte, ging ich mit:

sudo apt-get remove openjdk*

und das Ergebnis war:

bryan@kali:~$ java -version
bash: /usr/bin/java: No such file or directory

Das oben Gesagte deutet also darauf hin, dass von keiner Version Java gefunden wird. Welches ist das OP wollte (denke ich).

Falls jemand diesen Thread findet, weil er Java deinstalliert, um eine alte Version zu installieren, habe ich eine Anleitung beigefügt, die ich gefunden habe. Die ersten beiden Codes helfen Ihnen bei der Installation, wenn Sie keine GUI hatten. Wenn Sie einen Tarball haben, überspringen Sie diese. Der letzte Codeblock enthält einige Teile, die Sie bearbeiten müssen, wenn Sie nicht dieselbe Version installieren.


{Kopieren / Einfügen beginnen}

Wenn Sie versuchen, Java JDK remote zu installieren und keinen Zugriff auf die grafische Benutzeroberfläche und den Webbrowser haben, verwenden Sie die folgende Curl-Methode, um Java JDK über eine Befehlszeile herunterzuladen.

Ermitteln Sie zunächst mit dem Befehl curl eine korrekte Download-URL:

$ curl -s http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html | grep "otn-pub" | cut -d \" -f12

Der obige Befehl gibt eine Reihe von URLs für Ihre Auswahl aus. Um den Download der gewünschten Java-Datei zu starten, kopieren Sie deren URL und starten Sie den Download mit dem Befehl curl, während Sie die angeforderte Jave-Lizenz akzeptieren. Zum Beispiel:

$ curl -LOb "oraclelicense=a" http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.tar.gz

Java JDK installieren Zu diesem Zeitpunkt sollten wir einen geeigneten Java JDK-Tarball in unserem aktuellen Arbeitsverzeichnis haben:

$ ls
jdk-8u121-linux-x64.tar.gz

Erstellen Sie ein Java JDK-Zielinstallationsverzeichnis:

# mkdir /opt/java-jdk

Extrahieren Sie den zuvor heruntergeladenen Java JDK-Tarball:

# tar -C /opt/java-jdk -zxf jdk-8u121-linux-x64.tar.gz

Oracle Java als Standard festlegen Derzeit erkennt das System unsere Java JDK-Installation nicht:

$ update-alternatives --list java
update-alternatives: error: no alternatives for java
$ java
bash: java: command not found

Verwenden Sie den Befehl update-alternatives, um sowohl Java als auch Javac als Teil der Java-Umgebung des Systems einzuschließen.

# update-alternatives --install /usr/bin/java java /opt/java-jdk/jdk1.8.0_121/bin/java 1   
update-alternatives: using /opt/java-jdk/jdk1.8.0_121/bin/java to provide /usr/bin/java (java) in auto mode
# update-alternatives --install /usr/bin/javac javac /opt/java-jdk/jdk1.8.0_121/bin/javac 1
update-alternatives: using /opt/java-jdk/jdk1.8.0_121/bin/javac to provide /usr/bin/javac (javac) in auto mode

{Kopieren / Einfügen beenden}

Okay, nachdem ich gefolgt bin, wollte ich bestätigen, dass es funktioniert ...

bryan@kali:~/Desktop$ java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

Das ist es! Das wollen wir.

Dann wurde ich besorgt, dass es "passendes Update" kann nur rückgängig machen, was ich getan habe, indem Sie das Paket aktualisieren (unsicher). Also habe ich sie auf Eis gelegt. Halten entfernen: apt-mark unhold.

bryan@kali:~/Desktop$ sudo apt-mark hold openjdk-8*
openjdk-8-jre set on hold.
openjdk-8-jre-headless set on hold.
openjdk-8-doc set on hold.
openjdk-8-jdk set on hold.
openjdk-8-dbg set on hold.
openjdk-8-demo set on hold.
openjdk-8-jdk-headless set on hold.
openjdk-8-source set on hold.
openjdk-8-jre-dcevm set on hold.
openjdk-8-jre-zero set on hold.
K irk H 4 2 0
quelle
-1

Hast du es versucht:

  1. sudo apt-get remove '*jre*'
  2. sudo apt-get remove '*icedtea*'

Dies sind nur reguläre Ausdrücke, die mit "icedtea" oder "jre" im Namen übereinstimmen sollten.
Hoffe das hilft!

BenjiWiebe
quelle
Ich bezweifle, dass das funktionieren wird, zumindest wenn es von Shell aufgerufen wird. Die Shell interpretiert die Sternchen als Shell-Globs und versucht, sie zu erweitern. Abhängig von Ihrer Einstellung wird höchstwahrscheinlich versucht, sie in eine Liste aller Dateien im Arbeitsverzeichnis zu erweitern, deren Dateiname die Zeichenfolge jre(oder icedtea) enthält. Selbst wenn es solche Dateien gibt, ist es sehr unwahrscheinlich, dass deren Dateinamen genau den Namen der Pakete entsprechen, die Sie entfernen möchten.
Jan Hlavacek
@JanHlavacek Ups. Ich werde es reparieren. Diese Befehle funktionieren, wenn sie aus einem leeren Verzeichnis aufgerufen werden! ;)
BenjiWiebe
@ JanHlavacek Sie sollten jetzt richtig funktionieren.
BenjiWiebe
1
Das hängt von Ihrer Shell und möglicherweise von Ihrer spezifischen Einstellung ab. Wenn ich versuche, sie aus einem leeren Verzeichnis auszuführen, beschwert sich die Shell, dass sie keine Übereinstimmung finden und daher den Glob nicht erweitern kann. Ein weiteres Problem besteht darin, dass Sie sich auf die Tatsache verlassen, dass es kein anderes, völlig unabhängiges Paket gibt, jrein dessen Namen die Zeichenfolge zufällig enthalten ist . Während dies in den aktuellen Debian-Repos der Fall zu sein scheint, ist es möglicherweise nicht die beste Idee, sich darauf zu verlassen, falls jemand das (fiktive) Programm jrecodepackt, das zwischen verschiedenen japanischen Zeichensätzen konvertiert.
Jan Hlavacek
Ich meine die originalen Die zitierten funktionieren, sehen aber immer noch meinen anderen Punkt.
Jan Hlavacek