Вопрос: Как удалить Java в 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)

Кажется, что нет простого способа поиска пакетов в apt, поэтому я использую dpkg для поиска пакетов, связанных с 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

Я продолжаю удалять java-common, но когда он заканчивается, java все еще установлен, а java -version все еще показывает одно и то же.

Ничего не меняется, пакет java-common даже все еще появляется в поиске dpkg. Что мне не хватает?

Я также удалил OpenJDK, который, казалось, установил его на «deinstall»:

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

Java все еще существует.

# 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
2018-06-16 00:38


Источник


Как именно вы удалили пакеты? Потому как deinstall просто означает, что он выбран для деинсталляции, но не деинсталлирован. - Jan Hlavacek
Кроме того, в ваших трудах есть что-то странное: у вас есть какая-то причина для того, чтобы less до grep? - Jan Hlavacek
Я использовал apt-cache remove <package>, чтобы удалить их, и они появились как «deinstall» в dpkg - не уверен, что это нормально. - some1
Слишком много выходных, и я старался меньше, прежде чем я встретил. ; ты прав, это не имеет никакого смысла, как есть. - some1
Вы уверены, что использовали apt-cache? Насколько я знаю apt-cache даже не имеет remove команда, во всяком случае, apt-cache предназначен для запроса кеша apt, а не для установки и unistalling пакетов. С помощью apt-get remove <package>, или apt-get purge <package> было бы лучше. Я сам использую aptitude для таких задач он имеет приятный пользовательский интерфейс, или если вы хотите что-то с графическим интерфейсом, synaptic должен быть хорошим. - Jan Hlavacek


Ответы:


Для меня это было:

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

9
2018-01-10 02:41





Я столкнулся с этим, потому что я работаю через учебную книгу по программированию для Android, которая хочет использовать определенный Java SE и JRE (8u121) и просит удалить все другие пакеты Java, прежде чем продолжить установку. Поэтому, прочитав приведенные выше идеи, я пошел:

sudo apt-get remove openjdk*

и результат был следующим:

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

Таким образом, вышесказанное позволяет предположить, что Java не существует ни одной версии. Кого хочет OP (я думаю).

Если кто-то найдет этот поток, потому что они деинсталлируют Java, чтобы установить старую версию, я включил прохождение, которое я нашел. Первые два кода помогут вам установить его, если у вас нет графического интерфейса. Если у вас есть tarball, пропустите те. В последнем кодеблоке есть некоторые части, которые вам нужно будет отредактировать, если вы не устанавливаете мою версию.


{begin copy / paste}

В случае, если вы пытаетесь установить Java JDK удаленно и не имеете абсолютно никакого доступа к графическому пользовательскому интерфейсу, а веб-браузер использует следующий метод curl для загрузки Java JDK с использованием командной строки.

Во-первых, получите правильный URL загрузки с помощью команды curl:

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

Вышеупомянутая команда выводит кучу URL-адресов для вашего выбора. Чтобы начать загрузку нужного файла Java, скопируйте его URL-адрес и начните загрузку с помощью команды curl, приняв требуемую лицензию Jave. Например:

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

Установка Java JDK На этом этапе у нас должен быть соответствующий Java-архив JDK в нашем текущем рабочем каталоге:

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

Создайте целевой каталог установки Java JDK:

# mkdir /opt/java-jdk

Извлеките ранее загруженный архив Java JDK:

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

Установите Oracle Java по умолчанию В настоящее время система не распознает нашу установку Java JDK:

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

Используйте команду update-alternatives, чтобы включить как java, так и javac как часть среды Java системы. Пожалуйста, замените приведенный ниже путь на java-файлы, где это необходимо, чтобы отразить вашу загруженную версию java:

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

Хорошо, поэтому после того, как я последовал за этим, я хотел подтвердить, что он работает ...

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)

Это оно! Это то, чего мы хотим.

Затем я стал беспокоиться о том, что «apt update» может просто отменить то, что я сделал, обновив пакет (не уверен). Поэтому я отложил их. Чтобы удалить удержание: 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
2018-03-31 10:17





Ты пробовал:

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

Это всего лишь регулярное выражение, которое должно соответствовать чему-либо с «icedtea» или «jre» в названии.
Надеюсь это поможет!


-1
2018-06-16 01:08



Я сомневаюсь, что это сработает, по крайней мере, когда вызывается из оболочки. Оболочка будет интерпретировать звездочки как оболочки-оболочки и попытаться их расширить. В зависимости от вашей настройки, скорее всего, она попытается развернуть их в список всех файлов в рабочем каталоге, которые имеют строку jre (или icedtea) в их имени файла. Даже если есть такие файлы, очень маловероятно, что их имена файлов будут именно именами пакетов, которые вы хотите удалить. - Jan Hlavacek
@JanHlavacek К сожалению. Я починю это. Эти команды работают при вызове из пустого каталога! ;) - BenjiWiebe
@JanHlavacek Они должны работать правильно сейчас. - BenjiWiebe
Это зависит от вашей оболочки и, возможно, от вашей конкретной настройки. Когда я пытаюсь запустить их из пустого каталога, оболочка жалуется, что не может найти соответствия, и поэтому не может расширять glob. Другая проблема заключается в том, что вы полагаетесь на то, что нет другого совершенно несвязанного пакета, который, случайно, имеет строку jre от его имени. Хотя это, похоже, имеет место в текущих репозиториях Debian, может быть, не лучшая идея полагаться на него, в случае, если кто-то упаковывает (вымышленную) программу jrecode который преобразует различные наборы символов японского алфавита. - Jan Hlavacek
Я имею в виду оригинальные. Указанные цитаты работают, но все еще видят мой другой момент. - Jan Hlavacek