Come rimuovo 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)

Non sembra esserci un modo semplice per cercare i pacchetti in apt quindi sto usando dpkg per cercare pacchetti relativi a Java:

# 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

Procedo a rimuovere java-common, tuttavia quando finisce java è ancora installato e java -version mostra ancora la stessa cosa.

Non cambia nulla, il pacchetto java-common appare ancora nella ricerca di dpkg. Cosa mi sto perdendo?

Ho anche rimosso OpenJDK, che sembrava impostarlo su "deinstall":

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

Java è ancora lì.

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

Come hai rimosso esattamente i pacchetti? Perché deinstallsignifica solo che è selezionato per la disinstallazione, ma non effettivamente disinstallato.
Jan Hlavacek,

1
Inoltre, c'è qualcosa di strano nell'ordine nelle tue pipe: hai qualche motivo per averlo lessprima grep?
Jan Hlavacek,

Ho usato apt-cache remove <package> per rimuoverli, e sono comparsi come "deinstall" in dpkg - non sono sicuro che sia normale.
some1

L'output era eccessivo e ho provato meno prima di eseguire il grepping. ; p Hai ragione, non ha senso com'è.
some1

Sei sicuro di aver usato apt-cache? Per quanto ne so apt-cachenon ha nemmeno un removecomando, comunque, apt-cacheè per interrogare la cache apt, non per installare e disinstallare pacchetti. Usando apt-get remove <package>, o apt-get purge <package>sarebbe meglio. Io stesso lo uso aptitudeper compiti del genere, ha una bella interfaccia utente, o se vuoi qualcosa con una GUI, synapticdovrebbe essere buono.
Jan Hlavacek,

Risposte:


9

Per me è stato:

sudo apt-get remove openjdk-6*
sudo apt-get remove icedtea*

2

Mi sono imbattuto in questo perché sto lavorando a un libro di istruzioni per la programmazione Android che vuole utilizzare uno specifico Java SE e JRE (8u121) e richiede che tutti gli altri pacchetti java vengano rimossi prima di continuare con l'installazione. Quindi dopo aver letto le idee di cui sopra sono andato con:

sudo apt-get remove openjdk*

e il risultato fu:

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

Quindi quanto sopra suggerisce che non è stato trovato java di nessuna versione. Qual è l'OP che volevo fare (penso).

Nel caso in cui qualcuno trovi questo thread perché sta disinstallando Java in modo da poter installare una vecchia versione, ho incluso un walk-through che ho trovato. I primi due codici ti aiutano a installarlo se non disponevi di una GUI. Se hai un tarball, salta quelli. L'ultimo blocco di codice ha alcune parti che dovrai modificare se non stai installando la mia stessa versione.


{inizia copia / incolla}

Nel caso in cui si stia tentando di installare Java JDK in remoto e non si abbia assolutamente accesso all'interfaccia utente grafica e al browser Web, utilizzare il seguente metodo di arricciatura per scaricare Java JDK mediante una riga di comando.

Innanzitutto, ottieni un URL di download corretto utilizzando il comando curl:

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

Il comando sopra mostra un sacco di URL per la tua selezione. Per avviare il download del file Java desiderato, copiare il relativo URL e avviare il download utilizzando il comando curl mentre si accetta la licenza Jave richiesta. Per esempio:

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

Installa Java JDK In questa fase, dovremmo avere un tarball Java JDK appropriato nella nostra directory di lavoro corrente:

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

Creare una directory di installazione JDK Java di destinazione:

# mkdir /opt/java-jdk

Estrarre il tarball Java JDK precedentemente scaricato:

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

Imposta Oracle Java come predefinito Attualmente, il sistema non riconosce la nostra installazione JDK Java:

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

Utilizzare il comando update-alternatives per includere sia java che javac come parte dell'ambiente Java del sistema. Sostituire il percorso seguente ai binari java ove appropriato per riflettere la versione java scaricata:

# 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

{fine copia / incolla}

Va bene, quindi dopo che ho seguito che volevo confermare che funziona ...

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)

Questo è tutto! Questo è quello che vogliamo.

Poi mi sono preoccupato che "apt update" potesse semplicemente annullare ciò che ho fatto aggiornando il pacchetto (incerto). Quindi li ho messi in attesa. Per rimuovere la sospensione: 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.

-1

Hai provato:

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

Questi sono solo regex che dovrebbero corrispondere a qualsiasi cosa con "icedtea" o "jre" nel nome.
Spero che questo ti aiuti!


Dubito che funzionerà, almeno quando chiamato dalla shell. La shell interpreterà gli asterischi come globs di shell e proverà ad espanderli. A seconda delle impostazioni, molto probabilmente tenterà di espanderli in un elenco di tutti i file nella directory di lavoro che hanno la stringa jre(o icedtea) nel loro nome file. Anche se ci sono tali file, è molto improbabile che i loro nomi di file siano esattamente i nomi dei pacchetti che si desidera rimuovere.
Jan Hlavacek,

@JanHlavacek Oops. Io lo aggiusterò. Questi comandi funzionano quando chiamati da una directory vuota! ;)
BenjiWiebe,

@JanHlavacek Dovrebbero funzionare correttamente ora.
BenjiWiebe,

1
Dipende dalla shell e forse dall'impostazione specifica. Quando provo a eseguirli da una directory vuota, la shell si lamenta che non riesce a trovare alcuna corrispondenza e non può quindi espandere il glob. Un altro problema è che stai facendo affidamento sul fatto che non esiste nessun altro pacchetto completamente non correlato che abbia, per caso, la stringa jrenel suo nome. Mentre quello sembra essere il caso negli attuali repository Debian, potrebbe non essere la migliore idea basarsi su di esso, nel caso qualcuno impacchi il programma (immaginario) jrecodeche converte tra diversi set di caratteri giapponesi.
Jan Hlavacek,

Intendo quelli originali. Quelli citati funzionano, ma vedo ancora l'altro mio punto.
Jan Hlavacek,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.