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; doneLà 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.
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
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 -llink group/ master-slave
88
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 editorVớ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)
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
Làm sao để thay đổi 1 link?
# update-alternatives --config editorchươ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!
No comments:
Post a Comment