Як видалити Java в 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)

Здається, непростий спосіб пошуку пакетів в 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 -версія все одно показує те саме.

Нічого не змінюється, звичайний пакет java навіть все ще з’являється в пошуку dpkg. Що я пропускаю?

Я також видалив OpenJDK, який, здавалося, встановив його на "деінсталяцію":

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

Ява все ще є.

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

Як саме ви видалили пакунки? Тому deinstallщо це просто означає, що він обраний для деінсталяції, а фактично не деінстальований.
Ян Главачек

1
Крім того, є щось дивне в порядку у ваших трубах: у вас є якісь причини для цього lessраніше grep?
Ян Главачек

Я використовував apt-cache remove <package>, щоб видалити їх, і вони показали як "деінсталяція" в dpkg - не впевнений, що це нормально.
some1

Виходу було занадто багато, і я намагався менше, перш ніж я привітався. ; p Ти маєш рацію, немає сенсу, як є.
близько1

Ви впевнені, що використовували apt-cache? Наскільки я знаю , у будь-якому випадку apt-cacheнавіть не існує removeкоманди apt-cacheдля запиту підходящого кешу, а не для встановлення та видалення пакунків. Використання apt-get remove <package>, або apt-get purge <package>було б краще. Я сам використовую aptitudeдля таких завдань, він має приємний користувальницький інтерфейс, або якщо ви хочете щось із графічним інтерфейсом, synapticповинен бути хорошим.
Ян Главачек

Відповіді:


9

Для мене це було:

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

2

Я натрапив на це, тому що я працюю через навчальну книгу для програмування 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, щоб вони могли встановити Стару версію, я включив знайдений прохідний документ. Перші два коди допомагають встановити його, якщо у вас не було графічного інтерфейсу. Якщо у вас є тарбол, тоді пропустіть їх. Останній кодблок містить деякі частини, які вам потрібно буде відредагувати, якщо ви не встановлюєте мою ж версію.


{почати копіювати / вставляти}

У випадку, якщо ви намагаєтесь встановити 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 tarball:

# 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-alternative, щоб включити як java, так і javac як частину середовища Java Java. Замініть нижче наведений шлях до java binaries, де це доречно, щоб відобразити завантажену версію 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-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

Ти намагався:

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

Це просто регулярні виразки, які повинні відповідати чому-небудь з "icedtea" або "jre" в назві.
Сподіваюся, це допомагає!


Я сумніваюся, що це спрацює, принаймні, коли дзвонить із оболонки. Оболонка буде інтерпретувати зірочки як кулі оболонок і намагатиметься розширити їх. Залежно від вашого налаштування, швидше за все, вони спробують розширити їх до списку всіх файлів робочого каталогу, у яких ім'я файлу jre(або icedtea) є рядком . Навіть якщо є такі файли, дуже малоймовірно, що їхні імена файлів будуть точно назвами пакетів, які ви хочете видалити.
Ян Главачек

@JanHlavacek На жаль Я це виправлю. Ці команди працюють при виклику з порожнього каталогу! ;)
BenjiWiebe

@JanHlavacek Вони повинні працювати правильно зараз.
BenjiWiebe

1
Це залежить від вашої оболонки та, можливо, від вашої конкретної настройки. Коли я намагаюся запустити їх із порожнього каталогу, оболонка скаржиться, що не може знайти жодної відповідності, і тому не може розширити глобус. Інша проблема полягає в тому, що ви покладаєтесь на те, що не існує іншого, абсолютно не пов'язаного пакету, який, випадково, має рядок jreу своїй назві. Хоча це, мабуть, так і в нинішніх репортажах Debian, можливо, не найкраща ідея на нього покладатися, якщо хтось пакує програму (вигадану), jrecodeяка перетворює між різними наборами японських символів.
Ян Главачек

Я маю на увазі оригінальні. Цитовані працюють, але все-таки бачу інший момент.
Ян Главачек
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.