Questão Como eu removo o Java no Debian?


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)

Não parece ser uma maneira fácil de procurar pacotes no apt, então estou usando o dpkg para procurar por pacotes relacionados ao 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

Eu continuo a remover o java-common, no entanto, quando termina o java ainda está instalado e java -version ainda mostra a mesma coisa.

Nada muda, o pacote java-common ainda aparece na pesquisa do dpkg. o que estou perdendo?

Eu também removi o OpenJDK, que parecia configurá-lo para "deinstall":

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

Java ainda está 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)

4


origem


Como exatamente você removeu os pacotes? Porque deinstall significa apenas que ele está selecionado para desinstalação, mas não é realmente desinstalado. - Jan Hlavacek
Além disso, há algo estranho sobre a ordem em seus tubos: você tem alguma razão para ter less antes grep? - Jan Hlavacek
Eu usei apt-cache remove <package> para removê-los, e eles apareceram como "deinstall" no dpkg - não tenho certeza se isso é normal. - some1
Havia muita saída e eu tentei menos antes de usar. p Você está certo, não faz sentido como é. - some1
Você tem certeza que usou apt-cache? Até onde sei apt-cache nem sequer tem um remove comando, de qualquer maneira, apt-cache é para consultar o cache do apt, não para instalar e desinstalar pacotes. Usando apt-get remove <package>ou apt-get purge <package> seria melhor. Eu mesmo uso aptitude para tarefas como essa, tem uma boa interface de usuário, ou se você quer algo com uma GUI, synaptic é suposto ser bom. - Jan Hlavacek


Respostas:


Para mim foi:

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

9





Eu me deparei com isso porque eu estou trabalhando através de um livro de instruções para programação android que quer usar um Java SE específico e JRE (8u121) e solicita que todos os outros pacotes de java sejam removidos antes de continuar com a instalação. Então, depois de ler as idéias acima, eu fui com:

sudo apt-get remove openjdk*

e o resultado foi:

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

Portanto, o acima sugere que não há nenhum java encontrado em qualquer versão. Qual é o OP queria fazer (eu acho).

Caso alguém encontre esse segmento porque está desinstalando o Java para que possa instalar uma versão antiga, incluí um passo a passo que encontrei. Os dois primeiros códigos ajudam você a instalá-lo se não tiver interface gráfica. Se você tiver um tarball, pule esses. O último codeblock tem algumas partes que você precisará editar se não estiver instalando minha mesma versão.


{begin copy / paste}

Caso você esteja tentando instalar o Java JDK remotamente e não tenha absolutamente nenhum acesso à Interface Gráfica com o Usuário e ao navegador da Web, use o seguinte método de curl para baixar o Java JDK usando uma linha de comando.

Primeiro, obtenha um URL de download correto usando o comando curl:

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

O comando acima gera um monte de URLs para sua seleção. Para iniciar o download do arquivo Java desejado, copie sua URL e inicie o download usando o comando curl enquanto aceita a licença do Jave solicitada. Por exemplo:

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

Instalar o Java JDK Neste estágio, devemos ter um tarball Java JDK apropriado em nosso diretório de trabalho atual:

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

Crie um diretório de instalação de destino do Java JDK:

# mkdir /opt/java-jdk

Extraia o tarball Java JDK baixado anteriormente:

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

Definir o Oracle Java como padrão Atualmente, o sistema não reconhece nossa instalação do Java JDK:

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

Use o comando update-alternatives para incluir java, javac e javac como parte do ambiente Java do sistema. Substitua o caminho abaixo pelos binários java onde for apropriado para refletir sua versão java baixada:

# 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

{end copy / paste}

Ok, então depois que eu segui que eu queria confirmar que funciona ...

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)

É isso aí! É o que nós queremos.

Então eu fiquei preocupado que 'atualizar' pode apenas desfazer o que eu fiz atualizando o pacote (inseguro). Então eu os coloquei em espera. Para remover a espera: 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.

2





Você tentou:

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

Estes são apenas regex's que devem corresponder a qualquer coisa com "icedtea" ou "jre" no nome.
Espero que isto ajude!


-1



Eu duvido que funcione, pelo menos quando chamado de shell. O shell interpretará os asteriscos como globos de shell e tentará expandi-los. Dependendo da sua configuração, é mais provável que ele tente expandi-los em uma lista de todos os arquivos no diretório de trabalho que possui a string jre (ou icedtea) em seu nome de arquivo. Mesmo se houver tais arquivos, é muito improvável que seus nomes de arquivos sejam exatamente os nomes dos pacotes que você deseja remover. - Jan Hlavacek
@JanHlavacek Oops. Eu vou consertar isso. Esses comandos funcionam quando chamados de um diretório vazio! ;) - BenjiWiebe
@JanHlavacek Eles devem funcionar corretamente agora. - BenjiWiebe
Isso depende do seu shell e talvez da sua configuração específica. Quando tento executá-los a partir de um diretório vazio, o shell reclama que não consegue encontrar nenhuma correspondência e, portanto, não pode expandir o glob. Outro problema é que você está confiando no fato de que não há outro pacote completamente não relacionado que tenha, por acaso, a string jre em seu nome. Embora esse pareça ser o caso nos repositórios Debian atuais, pode não ser a melhor idéia confiar nele, no caso de alguém empacotar o programa (fictício) jrecode que converte entre diferentes conjuntos de caracteres japoneses. - Jan Hlavacek
Eu quero dizer os originais. As citadas funcionam, mas ainda vejo meu outro ponto. - Jan Hlavacek