Linux toàn về sự tự do. Trong khi các hệ điều hành độc quyền thường gán bạn vào một ứng dụng mặc định cho mỗi loại (ví dụ: trình duyệt web), Linux cung cấp công cụ để tùy chỉnh hệ thống theo sở thích riêng. Bạn nên có thể cài đặt bao nhiêu chương trình cùng loại tùy ý. Đó chính là mục đích của update-alternatives -- một cách dễ dàng để chuyển đổi giữa các lựa chọn.
Dưới đây là cách sử dụng nó trong Ubuntu (và các hệ thống dựa trên Debian).
Hệ thống update-alternatives
Trước khi đi sâu vào các lựa chọn thay thế, hãy xem xét cơ chế hoạt động. Một lựa chọn thay thế, editor, cung cấp trình soạn thảo văn bản dựa trên terminal:
whereis editor
editor: /usr/bin/editor /usr/share/man/man1/editor.1.gz
Mở tập tin văn bản bằng lệnh này sẽ hoạt động đúng như mong đợi:
sudo editor /etc/fstab
Lệnh này sẽ mở tập tin cấu hình hệ thống tập tin trong trình soạn thảo văn bản... nhưng là trình nào? Trên hệ thống dưới đây, nó mở bằng nano:

Lệnh editor thực chất là một liên kết tượng trưng (symlink). Liên kết tới nano à? Không hẳn! Lệnh /usr/bin/editor là liên kết tới /etc/alternatives/editor. Thư mục /etc/alternatives là nơi quản lý tất cả các lựa chọn thay thế trong hệ thống dưới dạng liên kết tượng trưng. Chúng trỏ đến chương trình thực tế. Vậy là một liên kết (trong PATH) trỏ đến một liên kết (trong thư mục alternatives) trỏ đến chương trình.
Như bạn đã đoán, update-alternatives là công cụ giúp quản lý các liên kết này. Hãy xem cách sử dụng.
Ví dụ sử dụng update-alternatives
Hầu hết các lệnh update-alternatives bạn sẽ dùng tuân theo mẫu sau:
sudo update-alternatives [tùy_chọn] [lựa_chọn_thay_thế]
Trong đó, lựa_chọn_thay_thế là chương trình bạn sẽ dùng. tùy_chọn là hành động bạn muốn thực hiện. Tiếp tục với thành phần editor, trước khi thay đổi, hãy xem tổng quan. Tùy chọn display hiển thị chi tiết:
update-alternatives --display editor

Các dòng đầu cho biết đường dẫn tới lệnh editor và liên kết hiện tại. Có khá nhiều thông tin bao gồm cả bản dịch trang man. Lệnh list tập trung hơn giúp dễ hiểu hơn:
update-alternatives --list editor

Ở đây, bạn thấy nano được liệt kê là lựa chọn cho editor. Nhưng còn có gì khác? Có ba lựa chọn, bao gồm VIM. Bạn có thể gán lại editor gọi chương trình VIM bằng tùy chọn config.
sudo update-alternatives --config editor

Sử dụng menu tương tác, bạn chọn lựa chọn mới. Hoặc nếu biết chương trình muốn dùng, dùng tùy chọn set:
sudo update-alternatives --set editor /usr/bin/vim.basic
Tiếp theo, chúng ta sẽ xem một vài lựa chọn thay thế đáng chú ý.
Các lựa chọn thay thế đáng chú ý của update-alternatives
Như đã nói, đã có nhiều gói tin sử dụng hệ thống update-alternatives. Dưới đây là một số có thể hữu ích trong quản trị hệ thống:
update-alternatives --config java
Một số chương trình yêu cầu phiên bản Java cụ thể. Trên Ubuntu, bạn có thể cài nhiều phiên bản OpenJDK (Java mã nguồn mở) từ kho phần mềm cũng như cài nhiều phiên bản Oracle JRE chính thức thủ công. Thiết lập chúng làm lựa chọn thay thế cho phép chuyển đổi môi trường Java chạy chương trình ngay lập tức.
Lưu ý: Có một số lựa chọn thay thế liên quan đến Java cần cập nhật cùng lúc. Hãy xem ứng dụng tiện ích update-java-alternatives, nó tự động hóa một phần công việc đặc thù Java.

update-alternatives --config x-www-browser/gnome-www-browser
Rõ ràng, điều này cho phép đặt trình duyệt web mặc định. Nếu bạn làm việc trên máy tính để bàn dựa trên GNOME, hãy xem thêm gnome-www-browser.
update-alternatives --config mozilla-flashplugin
Thiện hay ác, vẫn còn nhiều trang web dùng Flash. Điều này giúp chuyển đổi giữa phiên bản Adobe chính thức và các phiên bản mã nguồn mở như gnash.
Nếu tò mò về toàn bộ các lựa chọn thay thế có sẵn, hãy thử lệnh sau để liệt kê tất cả kèm thiết lập hiện tại:
update-alternatives --get-selections
Tùy chỉnh các lựa chọn thay thế của bạn
Quản lý các lựa chọn Canonical cung cấp là ổn. Nhưng không phải tự do nếu bạn không thể làm nó thành của mình, đúng không? Phần sau sẽ hướng dẫn thêm và xóa nhóm lựa chọn thay thế riêng.
Thêm lựa chọn thay thế từ hệ thống
Lựa chọn thay thế được thêm tự động khi bạn cài gói tin được hỗ trợ. Ví dụ, cài emacs sẽ chạy tập lệnh tạo lựa chọn cần thiết trong /etc/alternatives, bao gồm độ ưu tiên.
Nhưng bạn cũng có thể tạo lựa chọn thay thế riêng, nếu đủ táo bạo. Nếu làm vậy, hãy nhớ rằng bạn phải điền các lựa chọn này thủ công. Ví dụ, tạo nhóm mới tên x-word-processor, bạn phải thêm chương trình đầu tiên và các chương trình sau bằng tay. Cũng phải xóa chúng, nếu không lựa chọn có thể trỏ đến chương trình không còn tồn tại.
Hãy thêm nhóm x-word-processor với một lựa chọn (trường hợp này là LibreOffice Writer tuyệt vời) như sau:
sudo update-alternatives --install /usr/bin/word-processor x-word-processor /usr/bin/lowriter 40
Lệnh này tạo:
- Một lệnh mới (thực chất là symlink) tên word-processor đại diện cho;
- Một nhóm alternatives mới tên x-word-processor, mà;
- Chứa (và mặc định là) ứng dụng /usr/bin/lowriter, có;
- Độ ưu tiên 40.
Gọi word-processor từ dòng lệnh sẽ khởi chạy LibreOffice Writer (được chỉ định là lowriter). Bạn có thể thêm các lựa chọn khác (ví dụ: bộ soạn thảo văn bản chế độ văn bản wordgrinder) bằng cùng lệnh, thay đổi đường dẫn chương trình thực:
sudo update-alternatives --install /usr/bin/word-processor x-word-processor /usr/bin/wordgrinder 20
Bây giờ truy vấn nhóm x-word-processor sẽ hiện hai lựa chọn.

Mặc định nhóm ở chế độ "auto", nghĩa là hệ thống sẽ dùng lựa chọn có Priority cao nhất (theo số) -- ở đây là LibreOffice (40, so với wordgrinder 20). Bạn có thể dùng tùy chọn config như trên để thay đổi.
Xóa lựa chọn thay thế khỏi hệ thống
Nếu quyết định không cần một lựa chọn, lệnh đơn giản với tùy chọn remove sẽ loại bỏ nó.
sudo update-alternatives --remove x-word-processor /usr/bin/wordgrinder
Cuối cùng, tùy chọn remove-all xóa toàn bộ nhóm, bao gồm tất cả lựa chọn thay thế:
sudo update-alternatives --remove-all x-word-processor
Lưu ý: Các lệnh này xóa mục update alternatives nhưng không xóa chương trình chúng trỏ tới.
Bạn đã từng dùng update-alternatives chưa? Có mẹo hay thủ thuật nào liên quan đến làm việc với alternatives? Hãy cho chúng tôi biết trong bình luận!
Nguồn ảnh: momente via Shutterstock.com