Apa sebenarnya yang dilakukan `pembaruan-alternatif`?

99

Untuk apa perintah itu update-alternativesdigunakan?

Ambil contoh ini:

sudo update-alternatives --install /usr/bin/java java /usr/local/java/jre1.7.0_09/bin/java 1

Apa fungsinya? Apa bedanya dengan menambahkan jdk ke path?

Katakanlah saya sudah menjalankan perintah. Bagaimana saya kembali ke keadaan semula?

Pengembang Android
sumber
2
Anda juga dapat menggunakan sudo update-alternatives --config javadan javacdan javawsuntuk memilih antara versi yang diinstal.
Shayan

Jawaban:

73

Ini memperbarui tautan /etc/alternativesuntuk menunjuk ke program untuk tujuan ini. Ada banyak contoh, seperti x-www-browser, editor, dll yang akan link ke browser atau editor preferensi Anda. Beberapa skrip atau alat sistem mungkin ingin Anda mengedit file secara manual (misalnya konflik konfigurasi di dpkg) dan mereka akan mencari alternatif untuk memberi Anda editor pilihan. Sebab java, ini adalah lingkungan runtime Java - Oracle, OpenJRE, dll.

Tautan di dalam /etc/alternativeshanyalah tautan simbolis. Anda dapat melihatnya menggunakan misalnya

ls -l /etc/alternatives

Selain itu, /usr/binbinari reguler juga merupakan symlink. Misalnya:

ls -l /usr/bin/java
  lrwxrwxrwx 1 root root 22 Aug 14 10:33 /usr/bin/java -> /etc/alternatives/java
ls -l /etc/alternatives/java
  lrwxrwxrwx 1 root root 46 Aug 14 10:33 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java

Jadi, tidak PATHharus diubah. Itu hanya menggunakan tautan simbolis.

gertvdijk
sumber
Jadi dengan kata lain saya bisa mengetikkan satu perintah dan itu akan meminta saya untuk pilihan. Itulah satu-satunya keuntungan tambahan daripada mengatur jalan yang benar. Juga katakanlah saya memiliki vendor yang berbeda dari java juga diinstal Bagaimana saya memperbarui java untuk menunjuk ke dua vendor yang berbeda?
Pengembang Android
Anda tidak dapat menunjuk keduanya seperti yang Anda gambarkan. Seluruh tujuan itu adalah untuk memiliki satu pointer ke implementasi entri seperti pada contoh yang diberikan. Tanpa pertanyaan. Dan salah satu kandidat harus bekerja - itu hanya akan menjadi preferensi administrator. Dan lagi: itu tidak ada hubungannya dengan PATHs.
gertvdijk
1
Baik. Itu membersihkan semuanya. Saya tahu saya akan kembali ke jalan, tetapi saya hanya ingin memahami perbedaan di antara mereka. Dalam kasus path kita harus secara eksplisit menentukan lokasi tetapi dalam kasus ini hanya sym link sehingga ketika kita mengetik java mencari / etc / alternative terlebih dahulu. Atau apakah saya salah dalam membuat asumsi ini?
Pengembang Android