Как удалить OpenJDK?

39

Я не хочу OpenJDKустанавливать в моей системе Ubuntu 13.04, но при попытке удалить openjdk-7-jreвыдает следующее сообщение:

$ sudo apt-get purge openjdk-7-jre
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  gcj-4.7-base gcj-4.7-jre gcj-4.7-jre-headless gcj-4.7-jre-lib gcj-jre gcj-jre-headless icedtea-6-jre-cacao icedtea-6-jre-jamvm libgcj-common libgcj13 libgcj13-awt
  openjdk-6-jre-headless openjdk-6-jre-lib
Suggested packages:
  fastjar gcj-4.7-jdk gcj-jdk libgcj13-dbg sun-java6-fonts fonts-ipafont-gothic fonts-ipafont-mincho ttf-telugu-fonts ttf-oriya-fonts ttf-kannada-fonts
  ttf-bengali-fonts
The following packages will be REMOVED:
  default-jre* icedtea-7-plugin* icedtea-netx* icedtea-plugin* libatk-wrapper-java* libatk-wrapper-java-jni* openjdk-7-jre*
The following NEW packages will be installed:
  gcj-4.7-base gcj-4.7-jre gcj-4.7-jre-headless gcj-4.7-jre-lib gcj-jre gcj-jre-headless icedtea-6-jre-cacao icedtea-6-jre-jamvm libgcj-common libgcj13 libgcj13-awt
  openjdk-6-jre-headless openjdk-6-jre-lib
0 upgraded, 13 newly installed, 7 to remove and 4 not upgraded.
Need to get 57,0 MB/57,2 MB of archives.
After this operation, 156 MB of additional disk space will be used.
Do you want to continue [Y/n]?

Что мне нужно сделать, чтобы при удалении не было установлено никаких новых пакетов, из которых я не нуждаюсь openjdk-7?

Fynn
источник
1
Взгляните сюда: askubuntu.com/questions/84483/how-to-completely-uninstall-java
kingmilo

Ответы:

30

Вы можете использовать следующую команду:

sudo apt-get purge openjdk-8-jre openjdk-8-jre-headless openjdk-7-jre gcj-4.7-base gcj-4.7-jre openjdk-6-jre-headless

Таким образом, новые пакеты не будут установлены. Вот мой вывод для вышеуказанной команды:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'gcj-4.7-base' is not installed, so not removed
Package 'gcj-4.7-jre' is not installed, so not removed
Package 'openjdk-6-jre-headless' is not installed, so not removed
The following packages will be REMOVED:
  default-jre* icedtea-7-plugin* icedtea-netx* libatk-wrapper-java*
  libatk-wrapper-java-jni* libreoffice-base* minecraft-installer*
  openjdk-7-jre*
0 upgraded, 0 newly installed, 8 to remove and 6 not upgraded.
After this operation, 10,3 MB disk space will be freed.
Do you want to continue [Y/n]? n

Но я не советую вам делать это. В один прекрасный день вам наверняка понадобится OpenJDK (6 или 7).

Раду Рэдяну
источник
4
Если мне действительно нужен JDK, я бы предпочел использовать Oracle JDK вместо OpenJDK.
Финн
Это не сработало для меня.
jgomo3
@ radu-rdeanu Для этого мне нужно было установить gcj раньше. Когда я попробовал ваше решение, apt пожаловался, что gcj не установлен. Я установил gcj и удалил все те пакеты, которые вы сказали. Но после этого команда Java все еще была там. Так что я должен иметь проводную среду.
jgomo3
@ jgomo3 Как видно из моего вывода, этого не произошло со мной. О какой версии gcjвы говорите?
Раду Радеану
66

Отличный вопрос, мне самому было интересно.

Я обнаружил, что вы можете использовать следующее для удаления openjdk-7-jre в Ubuntu 13.04:

sudo apt-get autoremove openjdk-7-jre

Нажмите «y», а затем нажмите ввод, когда будет предложено подтвердить это изменение. Это также должно очистить все дополнительные библиотеки зависимостей, которые были установлены с ним.

Я также обнаружил, что вы можете использовать следующую команду для выполнения дополнительной очистки:

sudo apt-get purge openjdk*

Если вы используете следующую команду:

java -version

Вы больше не должны видеть, что openjdk-7-jre установлен!

Надеюсь это поможет. :)

Рауф Агроут
источник
2
@ jgomo3 Этот ответ тебе поможет? Особенно sudo apt-get remove --purge openjdk*немного?
Ландрони
1
@landroni я должен проверить это. Чтобы выполнить решение radu-rdeanu, мне нужно было установить gcj раньше. Таким образом, я мог бы «удалить» его. Я попробую это решение: сначала удалите Oracle Java, затем установите openjdk и прочее и, наконец, «удалите» его автоматически.
jgomo3
Дайте мне знать, как вы попали, помните, что если вы используете, autoremoveвам нужно указать правильную версию openjdk, возможно, вы используете openjdk-6-jre. Кроме того, стоит отметить, что если вы используете несколько версий openjdk, purgeкоманда удалит все их следы, поэтому будьте осторожны, используя это в зависимости от того, что вы хотите сделать.
Рауф Агроу
2
sudo apt-get purge openjdk*Работал для меня, но он также удалил мою установку Jenkins (которая зависит от пакета openjdk 7) :(
RobertG
1
первый вариант удалил 7, но установил 6, второй работал: sudo apt-get purge openjdk *
Pablo Pazos
4

Почему это происходит

Вероятно, это происходит потому, что другой пакет в вашей системе зависит от Java. При удалении openjdk-7-jre, apt-getвидит , что если удалений OpenJDK, некоторые пакеты имеют неудовлетворенные зависимости. Чтобы решить эту проблему, он устанавливает другой пакет, который обеспечивает Java.

Чтобы выяснить, что является причиной этого, выполните следующие команды в терминале:

packages=(default-jre default-jre-headless icedtea-6-plugin icedtea-7-plugin java-compiler java-jdk java-runtime java-runtime-headless java-sdk java-virtual-machine java2-jdk java2-runtime java2-runtime-headless java2-sdk java5-jdk java5-runtime java5-runtime-headless java5-sdk java6-jdk java6-runtime java6-runtime-headless java6-sdk java7-jdk java7-runtime java7-runtime-headless java7-sdk openjdk-6-jdk openjdk-6-jre openjdk-6-jre-headless openjdk-7-jdk openjdk-7-jre openjdk-7-jre-headless oracle-java7-bin oracle-java7-fonts oracle-java7-jdk oracle-java7-jre oracle-java7-plugin sun-java6-bin sun-java6-fonts sun-java6-jdk sun-java6-jre sun-java6-plugin)
for pkg in "${packages[@]}"; do
    apt_cache_out="$(apt-cache --installed rdepends "$pkg" | grep -E '^ [| ]\S')"
    if (( $? == 0 )); then
        echo -----------------------
        echo "$pkg"
        echo "$apt_cache_out"
    fi
done

Пример вывода (сокращенный):

-----------------------
openjdk-7-jre
 |libreoffice-filter-mobiledev
 |libreoffice
 |libreoffice-writer
 |libreoffice-base
 |libreoffice-filter-mobiledev
 |libreoffice
 |libreoffice-writer
 |libreoffice-base

Это указывает на то, что все пакеты LibreOffice зависят от openjdk-7-jre. Пока эти пакеты установлены, OpenJDK не может быть удален без автоматической установки альтернативной Java.

Удалять openjdk-7-jre

Если вы хотите удалить openjdk-7-jre(без установки других пакетов), вам нужно будет удалить все пакеты, которые зависят от него в первую очередь.

Из выходных данных примера это будет:

sudo apt-get remove oracle-java7-installer libreoffice-filter-mobiledev libreoffice libreoffice-writer libreoffice-base libreoffice-filter-mobiledev libreoffice libreoffice-writer libreoffice-base
харакири
источник
3

Я заметил, что вы сказали, что хотите использовать Oracle JDK. Если вы хотите вместо этого установить Oracle JDK, вы можете скачать его и распаковать в любое удобное для вас место.

Затем вы просто используете альтернативы обновления, чтобы сообщить вашей системе, где установлена ​​Java. Если вы не уверены в синтаксисе альтернатив обновления, вы можете использовать для него внешний интерфейс, альтернативы.

Например ... Я довольно широко использую JDK от Oracle.

Я извлекаю его в / opt / java /.

Затем, так как все двоичные файлы Oracle Java являются основными утилитами для вещей, связанных с Java, я делаю следующее с альтернативами обновления:

for j in `ls /opt/java/bin` ; do update-alternatives --install /usr/bin/"$j" "$j" /opt/java/bin/"$j" 1 ; done

Это берет все утилиты Oracle Java, которые вы ранее извлекли, и дает им первый приоритет, если у вас установлены другие версии Java. (поскольку Ubuntu позволяет вам иметь несколько версий одной и той же утилиты)

longviewbits
источник
1

Наряду с остальными ответами - проверили ли вы свой .bashrcфайл, чтобы убедиться, что среды JAVA_HOME там нет? Удаление этой строки должно помочь избавиться от Ubuntu от openjdk. Как пример:

 JAVA_HOME=/usr/local/java/jdk1.7.0_45
 export PATH=$JAVA_HOME:$PATH

Если вы видите что-то подобное, удалите эти две строки и перезагрузитесь.

Faron
источник
0

Чтобы удалить OpenJDK, вам нужно запустить эти команды в вашем терминале. Вы можете получить терминал с помощью этих клавиш, ctrl+ shift+ enter.

Удалить только Openjdk:

$ sudo apt-get remove openjdk*

Удалите Openjdk вместе с зависимостями:

$ sudo apt-get remove --auto-remove openjdk*

Удалите Openjdk и его конфигурационные файлы:

$ sudo apt-get purge openjdk*

Удалите Openjdk вместе с зависимостями и файлами конфигурации:

$ sudo apt-get purge --auto-remove openjdk*
Джанака Пушпакумара
источник