Chính xác thì `update-thay thế` làm gì?


99

Lệnh update-alternativesđược sử dụng để làm gì?

Lấy ví dụ này:

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

Nó làm gì? Làm thế nào khác với việc thêm jdk vào đường dẫn?

Hãy nói rằng tôi đã chạy lệnh. Làm thế nào tôi trở lại trạng thái ban đầu?


2
Bạn cũng có thể sử dụng sudo update-alternatives --config javajavacjavawsđể lựa chọn giữa các phiên bản cài đặt.
Shaya

Câu trả lời:


73

Nó cập nhật các liên kết /etc/alternativesđể trỏ đến chương trình cho mục đích này. Có rất nhiều ví dụ, như x-www-browser, editorv.v. sẽ liên kết đến trình duyệt hoặc trình soạn thảo theo sở thích của bạn. Một số tập lệnh hoặc công cụ hệ thống có thể muốn bạn chỉnh sửa tệp theo cách thủ công (ví dụ: xung đột cấu hình dpkg) và chúng sẽ xem xét các lựa chọn thay thế để cung cấp cho bạn trình soạn thảo lựa chọn. Đối với java, đây là môi trường thời gian chạy Java - Oracle, OpenJRE, v.v.

Các liên kết trong /etc/alternativeschỉ là liên kết tượng trưng. Bạn có thể thấy họ bằng cách sử dụng ví dụ

ls -l /etc/alternatives

Hơn nữa, các /usr/binnhị phân thông thường cũng là liên kết tượng trưng. Ví dụ:

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

Vì vậy, không PATHphải sửa đổi. Nó chỉ sử dụng các liên kết tượng trưng.


Vì vậy, nói cách khác tôi có thể gõ một lệnh duy nhất và nó sẽ nhắc tôi lựa chọn. Đó là lợi thế duy nhất được thêm vào khi thiết lập một đường dẫn đúng. Cũng cho biết tôi có một nhà cung cấp java khác nhau cũng đã cài đặt Làm cách nào để cập nhật java để trỏ đến cả hai nhà cung cấp khác nhau?
Nhà phát triển Android

Bạn không thể chỉ đến cả hai như bạn mô tả. Toàn bộ mục đích của nó là để có một con trỏ duy nhất để thực hiện mục nhập như trong ví dụ đã cho. Không có câu hỏi. Và bất kỳ ứng cử viên nào cũng nên làm việc - đó chỉ nên là sở thích của quản trị viên. Và một lần nữa: nó không có gì để làm với PATHs.
gertvdijk

1
Được chứ. Điều đó làm sạch mọi thứ lên. Tôi biết tôi đang quay trở lại con đường nhưng tôi chỉ muốn hiểu sự khác biệt giữa chúng. Trong trường hợp đường dẫn, chúng ta phải xác định rõ vị trí nhưng trong trường hợp này, nó chỉ là các liên kết sym để khi chúng ta gõ java, nó sẽ tìm kiếm / etc / thay thế trước. Hay tôi sai khi đưa ra giả định này?
Nhà phát triển Android
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.