Bagaimana cara menghapus OpenJDK?

39

Saya tidak ingin OpenJDKdiinstal pada sistem Ubuntu 13.04 saya, tetapi mencoba untuk menghapus openjdk-7-jrehasil yang dihasilkan pesan berikut:

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

Apa yang harus saya lakukan agar tidak ada paket baru, yang tidak saya perlukan, akan diinstal ketika menghapus openjdk-7?

Fynn
sumber

Jawaban:

30

Anda dapat menggunakan perintah berikut:

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

Dengan cara ini tidak ada paket baru yang akan diinstal. Ini output saya untuk perintah di atas:

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

Tapi, saya tidak menyarankan Anda untuk melakukan ini. Dalam satu hari Anda pasti membutuhkan OpenJDK (6 atau 7).

Radu Rădeanu
sumber
4
Jika saya benar-benar membutuhkan JDK, saya lebih suka menggunakan JDK Oracle daripada OpenJDK.
Fynn
Ini tidak berhasil untuk saya.
jgomo3
@ radu-rdeanu Untuk melakukan ini, saya harus menginstal gcj sebelumnya. Ketika saya mencoba solusi Anda, apt mengeluh bahwa gcj tidak diinstal. Saya menginstal gcj, dan menghapus semua paket yang Anda katakan. Tapi setelah itu, perintah java masih ada di sana. Jadi saya harus memiliki lingkungan kabel.
jgomo3
@ jgomo3 Seperti yang Anda lihat dari output saya, hal ini tidak terjadi pada saya. Tentang versi apa gcjAnda berbicara?
Radu Rădeanu
66

Pertanyaan yang bagus, saya sendiri bertanya-tanya.

Saya menemukan bahwa Anda dapat menggunakan yang berikut ini untuk menghapus openjdk-7-jre di Ubuntu 13.04:

sudo apt-get autoremove openjdk-7-jre

Tekan 'y' dan kemudian tekan enter ketika diminta untuk mengkonfirmasi perubahan ini. Ini juga harus membersihkan semua pustaka dependensi tambahan yang diinstal dengannya.

Saya juga menemukan Anda dapat menggunakan perintah berikut untuk melakukan pembersihan tambahan:

sudo apt-get purge openjdk*

Jika Anda menggunakan perintah berikut:

java -version

Anda seharusnya tidak lagi melihat openjdk-7-jre diinstal!

Semoga ini membantu. :)

Raouf Aghrout
sumber
2
@ jgomo3 Apakah jawaban ini membantu Anda? Terutama yang sudo apt-get remove --purge openjdk*sedikit?
landroni
1
@ Landroni saya harus mengujinya. Untuk melakukan solusi radu-rdeanu, saya harus menginstal gcj sebelumnya. Dengan begitu saya bisa "menghapus" itu. Saya akan mencoba solusi ini terlebih dahulu menghapus instalan Oracle Java, kedua menginstal openjdk dan semacamnya, dan terakhir "autoremoving" itu.
jgomo3
Biarkan saya tahu bagaimana Anda melanjutkan, ingat jika Anda menggunakan autoremoveAnda harus menentukan versi openjdk yang benar, Anda mungkin menjalankan openjdk-6-jre. Selain itu, perlu dicatat bahwa jika Anda menjalankan beberapa versi openjdk, purgeperintah itu akan menghapus semua jejaknya, jadi berhati-hatilah menggunakan ini tergantung pada apa yang ingin Anda lakukan.
Raouf Aghrout
2
sudo apt-get purge openjdk*Bekerja untuk saya, tetapi juga menghapus instalasi Jenkins saya (yang tergantung pada paket
openjdk
1
opsi pertama dihapus 7 tetapi diinstal 6, yang kedua bekerja: sudo apt-get purge openjdk *
Pablo Pazos
4

Kenapa ini terjadi?

Ini mungkin terjadi karena paket lain pada sistem Anda tergantung pada Java. Saat menghapus openjdk-7-jre, apt-getmelihat bahwa jika itu meng-uninstall OpenJDK, beberapa paket akan memiliki dependensi yang tidak terpenuhi. Untuk mengatasi ini, ia menginstal paket lain yang menyediakan Java.

Untuk mencari tahu apa penyebabnya, jalankan perintah ini di terminal:

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

Contoh output (disingkat):

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

Ini menunjukkan bahwa semua paket LibreOffice bergantung pada openjdk-7-jre. Selama paket-paket ini diinstal, OpenJDK tidak dapat dihapus tanpa menginstal Java alternatif secara otomatis.

Untuk menghapus openjdk-7-jre

Jika Anda ingin menghapus openjdk-7-jre(tanpa menginstal paket lain), Anda harus menghapus semua paket yang bergantung terlebih dahulu.

Dari contoh output, itu akan menjadi:

sudo apt-get remove oracle-java7-installer libreoffice-filter-mobiledev libreoffice libreoffice-writer libreoffice-base libreoffice-filter-mobiledev libreoffice libreoffice-writer libreoffice-base
kiri
sumber
3

Saya perhatikan Anda mengatakan Anda ingin menggunakan JDK Oracle. Jika Anda ingin menginstal JDK Oracle, Anda dapat mengunduhnya dan mengekstraknya di lokasi pilihan Anda.

Kemudian Anda hanya menggunakan pembaruan-alternatif untuk memberi tahu sistem Anda di mana Java diinstal. Jika Anda tidak yakin tentang sintaks pembaruan-alternatif, Anda dapat menggunakan front-end untuk itu, alternatif.

Sebagai contoh ... Saya menggunakan JDK Oracle cukup luas di sini.

Saya mengekstraknya ke / opt / java /.

Kemudian, jadi semua binari Oracle Java adalah utilitas utama untuk hal-hal yang berhubungan dengan Java, saya melakukan hal berikut dengan pembaruan-alternatif:

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

Ini mengambil semua utilitas Oracle Java yang sebelumnya telah Anda ekstrak, dan memberi mereka prioritas pertama, jika Anda memiliki versi lain dari Java yang diinstal. (karena Ubuntu memungkinkan Anda menginstal banyak versi dari utilitas yang sama)

longviewbits
sumber
1

Seiring dengan sisa jawaban - sudahkah Anda memeriksa .bashrcfile Anda untuk memastikan bahwa lingkungan JAVA_HOME tidak ada? Menghapus baris itu harus melakukan trik dalam membebaskan Ubuntu Anda dari openjdk. Seperti contoh:

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

Jika Anda melihat hal seperti itu, hapus dua baris ini dan reboot.

Faron
sumber
0

Untuk menghapus OpenJDK, Anda harus menjalankan perintah ini di terminal Anda. Anda bisa mendapatkan terminal dengan menggunakan tombol-tombol ini, ctrl+ shift+ enter.

Hapus Openjdk saja:

$ sudo apt-get remove openjdk*

Hapus Openjdk bersama dependensi:

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

Hapus Openjdk dan file konfigurasinya:

$ sudo apt-get purge openjdk*

Hapus Openjdk bersama dengan dependensi dan file konfigurasinya:

$ sudo apt-get purge --auto-remove openjdk*
Janaka Pushpakumara
sumber