Jak odinstalować OpenJDK?

38

Nie chcę OpenJDKinstalować w moim systemie Ubuntu 13.04, ale próba odinstalowania openjdk-7-jrewyświetla następujący komunikat:

$ 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]?

Co muszę zrobić, aby podczas usuwania nie były instalowane żadne nowe pakiety, których nie potrzebuję openjdk-7?

Fynn
źródło

Odpowiedzi:

29

Możesz użyć następującego polecenia:

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

W ten sposób żadne nowe pakiety nie zostaną zainstalowane. Oto mój wynik dla powyższego polecenia:

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

Ale nie sugeruję, abyś to zrobił. W ciągu jednego dnia na pewno będziesz potrzebować OpenJDK (6 lub 7).

Radu Rădeanu
źródło
4
Jeśli naprawdę potrzebuję JDK, wolę używać JDK Oracle zamiast OpenJDK.
Fynn
To mi nie zadziałało.
jgomo3
@ radu-rdeanu Aby to zrobić, musiałem wcześniej zainstalować gcj. Kiedy wypróbowałem twoje rozwiązanie, apt skarżył się, że gcj nie został zainstalowany. Zainstalowałem gcj i usunąłem wszystkie te pakiety, które powiedziałeś. Ale potem polecenie java nadal tam było. Więc muszę mieć środowisko przewodowe.
jgomo3
@ jgomo3 Jak widać z moich danych wyjściowych, ta sprawa się nie wydarzyła. O jakiej wersji gcjmówisz?
Radu Rădeanu
66

Świetne pytanie, zastanawiałem się nad tym sam.

Odkryłem, że możesz użyć następującego narzędzia, aby usunąć openjdk-7-jre z Ubuntu 13.04:

sudo apt-get autoremove openjdk-7-jre

Naciśnij „y”, a następnie naciśnij Enter, gdy pojawi się monit o potwierdzenie tej zmiany. Powinno to również wyczyścić wszystkie dodatkowe biblioteki zależności, które zostały z nim zainstalowane.

Odkryłem również, że możesz użyć następującego polecenia, aby wykonać dodatkowe czyszczenie:

sudo apt-get purge openjdk*

Jeśli użyjesz następującego polecenia:

java -version

Nie powinieneś już widzieć openjdk-7-jre zainstalowanego!

Mam nadzieję że to pomoże. :)

Raouf Aghrout
źródło
2
@ jgomo3 Czy ta odpowiedź ci pomaga? Zwłaszcza sudo apt-get remove --purge openjdk*trochę?
landroni
1
@landroni muszę to przetestować. Aby wykonać rozwiązanie radu-rdeanu, musiałem wcześniej zainstalować gcj. W ten sposób mogłem to „usunąć”. Spróbuję tego rozwiązania najpierw odinstalowując Oracle Java, następnie instalując openjdk i inne rzeczy, a następnie „autoroving”.
jgomo3
Daj mi znać, jak się masz, pamiętaj, że jeśli używasz autoremove, musisz określić poprawną wersję openjdk, być może używasz openjdk-6-jre. Dodatkowo warto zauważyć, że jeśli korzystasz z wielu wersji openjdk, purgepolecenie usunie wszystkie ich ślady, więc bądź ostrożny, używając tego w zależności od tego, co chcesz zrobić.
Raouf Aghrout
2
sudo apt-get purge openjdk*Pracował dla mnie, ale odinstalował również moją instalację Jenkins (która zależy od pakietu openjdk 7) :(
RobertG
1
pierwsza opcja usunięta 7, ale zainstalowana 6, druga działała: sudo apt-get purge openjdk *
Pablo Pazos
4

Dlaczego tak się dzieje

Dzieje się tak prawdopodobnie dlatego, że inny pakiet w twoim systemie zależy od Javy. Podczas usuwania openjdk-7-jre, apt-getwidzi, że jeśli to odinstalowuje OpenJDK, niektóre pakiety będą miały niespełnione zależności. Aby rozwiązać ten problem, instaluje inny pakiet, który udostępnia Javę.

Aby dowiedzieć się, co to powoduje, uruchom następujące polecenia w terminalu:

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

Przykładowe dane wyjściowe (skrócone):

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

Oznacza to, że wszystkie pakiety LibreOffice zależą od openjdk-7-jre. Dopóki te pakiety są zainstalowane, OpenJDK nie może zostać odinstalowany bez automatycznej instalacji alternatywnej Javy.

Usuwać openjdk-7-jre

Jeśli chcesz usunąć openjdk-7-jre(bez instalowania innych pakietów), musisz najpierw odinstalować wszystkie pakiety, które od niego zależą.

Z przykładowego wyniku będzie to:

sudo apt-get remove oracle-java7-installer libreoffice-filter-mobiledev libreoffice libreoffice-writer libreoffice-base libreoffice-filter-mobiledev libreoffice libreoffice-writer libreoffice-base
kiri
źródło
3

Zauważyłem, że powiedziałeś, że chcesz użyć JDK Oracle. Jeśli zamiast tego chcesz zainstalować pakiet JDK firmy Oracle, możesz go pobrać i rozpakować w wybranym miejscu.

Następnie wystarczy użyć alternatywnych aktualizacji, aby poinformować system, gdzie jest zainstalowana Java. Jeśli nie masz pewności co do składni update-alternatives, możesz użyć do tego front-endu, galternative.

Na przykład ... Używam JDK Oracle dość szeroko tutaj.

Rozpakowuję go do / opt / java /.

Następnie, więc wszystkie pliki binarne Oracle Java są podstawowymi narzędziami dla rzeczy związanych z Javą, robię następujące z alternatywami aktualizacji:

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

Spowoduje to pobranie wszystkich wcześniej wyodrębnionych narzędzi Oracle Java i nadanie im pierwszeństwa na wypadek, gdyby zainstalowano inne wersje Java. (ponieważ Ubuntu pozwala na zainstalowanie wielu wersji tego samego narzędzia)

longviewbits
źródło
1

Wraz z resztą odpowiedzi - czy sprawdziłeś .bashrcplik, aby upewnić się, że nie ma środowiska JAVA_HOME? Usunięcie tej linii powinno załatwić sprawę w uwolnieniu Ubuntu z openjdk. Jak przykład:

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

Jeśli zobaczysz coś takiego, usuń te dwa wiersze i uruchom ponownie.

Faron
źródło
0

Aby odinstalować OpenJDK, musisz uruchomić te polecenia w swoim terminalu. Możesz uzyskać terminal za pomocą tych klawiszy, ctrl+ shift+ enter.

Usuń tylko Openjdk:

$ sudo apt-get remove openjdk*

Usuń Openjdk wraz z zależnościami:

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

Usuń Openjdk i jego pliki konfiguracyjne:

$ sudo apt-get purge openjdk*

Usuń Openjdk wraz z zależnościami i jego plikami konfiguracyjnymi:

$ sudo apt-get purge --auto-remove openjdk*
Janaka Pushpakumara
źródło