Skip to main content

[Debian] update-alternatives: thay đổi là sự lựa chọn!

update-alternatives là tên của một chương trình trong Debian (tất nhiên cả Ubuntu), phục vụ cho việc quản lý các symlink để quyết định câu lệnh nào là default (mặc định).

Chú ý 1: có chữ ``s`` ở cuối tên câu lệnh
Chú ý 2: phiên âm là /ɔːlˈtəːnətɪv/  - Việt sub: ôl tơ nơ tiv 
 
Chào hỏi theo phong cách CCGU
$ for cmd in whatis whereis which; do echo -n $cmd: ; $cmd update-alternatives; done
whatis:update-alternatives (8) - maintain symbolic links determining default commands
whereis:update-alternatives: /usr/bin/update-alternatives /usr/sbin/update-alternatives /usr/share/man/man8/update-alternatives.8.gz
which:/usr/sbin/update-alternatives
Là một câu lệnh thuộc man8, update-alternatives nhắm tới đối tượng sử dụng là các sysadmin, tên câu lệnh khá dài và cho thấy một sự thật rằng dài nhiều khi không phải đã là hay.

update-alternatives giải quyết vấn đề gì?
Khi có nhiều chương trình cùng cung cấp 1 tính năng (ví dụ emacs, nano và vim đều cung cấp tính năng "editor"), việc này tiện cho user được lựa chọn nhưng với các chương trình thì đây lại là một vấn đề, chúng sẽ không biết lấy cái gì để dùng. ``alternatives system`` của Debian đảm bảo cung cấp 1 cái tên chung (cụ thể là 1 symlink file: vd /usr/bin/editor), và nó sẽ chọn một chương trình phù hợp để cung cấp tính năng ấy.



update-alternatives có 2 mode
- auto: mặc định, tự chọn dựa trên priority của mỗi alternative, chọn cái có điểm cao nhất
- manual: do sysadmin chọn

"alternative" là path của chương trình thực sự cung cấp tính năng.

Với ví dụ nói trên thì ``/usr/bin/vim`` là một "alternative" của "alternative link (đôi khi gọi ngắn là link)" ``editor``. Nếu vim được chọn, symlink ``/usr/bin/editor`` sẽ link tới ``/etc/alternatives/editor`` và symlink này lại link đến ``/usr/bin/vim``.

alternative directory
Các link được nằm tập trung trong thư mục /etc/alternatives cho dễ quản lý: 
$ ls /etc/alternatives/ | wc -l
88
link group/ master-slave
Mỗi ``link`` có khái niệm về master-slave như sau:
- master link sẽ quyết định sự thay đổi của các slave link.
- master link và slave links tạo thành một link group.

Ví dụ với alternative link editor:
# update-alternatives --query editor
Link: editor
Status: auto
Best: /usr/bin/vim.basic
Value: /usr/bin/vim.basic

Alternative: /usr/bin/mcedit
Priority: 25
Slaves:
 editor.1.gz /usr/share/man/man1/mcedit.1.gz

Alternative: /usr/bin/vim.basic
Priority: 30
Slaves:
 editor.1.gz /usr/share/man/man1/vim.1.gz
 editor.fr.1.gz /usr/share/man/fr/man1/vim.1.gz
 editor.it.1.gz /usr/share/man/it/man1/vim.1.gz
 editor.pl.1.gz /usr/share/man/pl/man1/vim.1.gz
 editor.ru.1.gz /usr/share/man/ru/man1/vim.1.gz
Với ví dụ trên, link là "editor", các group được phân cách nhau ứng với các "alternative", master link trong ví dụ là ``/usr/bin/vim.basic`` nó có các slave là các link của manpages (khi link editor thay đổi từ ``mcedit`` sang ``vim`` thì man editor cũng cần thay đổi sang man vim)

Làm sao để thay đổi 1 link?
# update-alternatives --config editor
chương trình sẽ đưa ra các lựa chọn để user chọn.
Sau khi user đã chọn, link này sẽ tự động được chuyển sang mode "manual". Muốn nó trở lại auto thì dùng
# update-alternatives --auto editor

Hiển thị thông tin của tất cả các alternative link
# cd /etc/alternatives/; for i in *; do update-alternatives --query $i; echo ================; done

Tham khảo: man 8 update-alternatives
http://manpages.ubuntu.com/manpages/precise/man8/update-alternatives.8.html

Hết.
hvn@familug.org
 
happy sytadminting!

Comments

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG