Có cách nào để liệt kê tất cả các 'lựa chọn thay thế' (symlink cho các lệnh tương tự) có thể định cấu hình trên hệ thống không?


24

Các alternativeslệnh (gói chkconfig) trên RHEL / Fedora quản lý liên kết tượng trưng mà liên kết một tên chung để một trong những triển khai thay thế. Ví dụ: mtanhóm các liên kết tượng trưng có thể được cung cấp bởi Sendmail và Postfix (để thực hiện sendmaillệnh eg):

alternatives --display mta

Trong khi tôi có thể --displaymột nhóm các liên kết tượng trưng, ​​tôi cần đoán tên của nó trước (nghĩa là mta).

Tôi có thể chỉ cần liệt kê tất cả các nhóm symlink có thể định cấu hình (thích mta) để chọn không?

Lý do là thỉnh thoảng tôi quên một số tên nhóm.

Câu trả lời:


25

Trên Debian (nhưng không phải Fedora hoặc RHEL), để xem danh sách tất cả "tên thay thế chính":

update-alternatives --get-selections

--get-selections liệt kê tên thay thế chủ và trạng thái của họ.

Và với mỗi thứ được liệt kê, bạn có thể chạy --list $ALTERNATIVE_NAME, vd

update-alternatives --list editor

--list name Hiển thị tất cả các mục tiêu của nhóm liên kết.

Nếu bạn muốn xem danh sách tất cả các lựa chọn thay thế trong các nhóm tương ứng của họ, bạn có thể chạy phần sau trong fishshell:

for alternative in (update-alternatives --get-selections)
    echo $alternative 
    update-alternatives --list (echo $alternative | cut -d" " -f1)
    echo
end | pager

Cú pháp (ba | z)? Sh phải là một cái gì đó tương tự.

Để thay đổi các lựa chọn thay thế, hãy chạy sudo update-alternatives --config $ALTERNATIVE_NAME


1
Trên Fedora 12 của tôi update-alternativeslà một liên kết tượng trưng đến alternatives: /usr/sbin/update-alternatives -> alternatives. Vì vậy, tùy chọn --get-selectionskhông hiển thị bất cứ điều gì (thoát với lỗi hiển thị việc sử dụng).
uvsmtid

1
Tôi đã không đọc câu hỏi đúng. Lấy làm tiếc. Cái này dành cho Debian. Tôi đã cố gắng tìm ra điều tương tự như bạn và tôi không thể đáp ứng với câu trả lời này. Tôi tự hỏi nếu tôi nên xóa câu trả lời của tôi?
kzh

Tùy bạn Nếu bạn nghĩ rằng nó là chính xác trong một số trường hợp và có thể hữu ích cho bất cứ ai khác, thì đáng để bỏ nó.
uvsmtid

16

Câu trả lời chính xác là:

ls /var/lib/alternatives

Thư mục /etc/alternativesduy trì danh sách dài bằng phẳng của tất cả các liên kết trộn chủ và nô lệ với nhau. Liên kết nô lệ không thể được sử dụng với alternatives --display [symlink]lệnh.

Đồng thời thư mục /var/lib/alternativeschứa thông tin trạng thái (bao gồm mối quan hệ chủ-nô) cho mỗi nhóm trong danh sách rút gọn của tên tệp tất cả có thể được sử dụng trực tiếp với --displaytùy chọn. Ví dụ /var/lib/alternatives/java:

alternatives --display java

4
Trên Ubuntu 12.04, /var/lib/alternativesdường như không có /var/lib/dpkg/alternatives.
Hibou57

1
Câu trả lời tuyệt vời, Cảm ơn! Một bổ sung: trên Debian và Armbian /etc/alternativesthay vì/var/lib/alternatives
Alexey Vesnin

4

Câu trả lời đơn giản nhất sẽ là ...

ls /etc/alternatives

1
Nó luôn luôn rõ ràng hơn khi bạn đã biết câu trả lời :)
gparent

Đó cũng là phỏng đoán đầu tiên của tôi. Nhưng nó không làm tôi hài lòng. Danh sách quá dài chứa các liên kết chủ và nô lệ hoàn toàn.
uvsmtid

-1

Trên Ubuntu 12.04 (cũng có thể là một số phiên bản trước, được kiểm tra) và có lẽ cả Debian nữa (sẽ được kiểm tra):

ls /var/lib/dpkg/alternatives

Liệt kê nó chỉ để có được tên thay thế có thể cấu hình, vì các mục trong thư mục này không phải là liên kết. Nhân tiện, có thể có tệp nén trong thư mục này, vì vậy các tên được liệt kê ở đó, không thể luôn được sử dụng như. Vd tôi có một/var/lib/dpkg/alternatives/psql.1.gz


Không thực sự hữu ích, vì câu hỏi nêu rõ rằng nó áp dụng cho RedHat Enterprise Linux. Cách cấu hình của RHEL được mô tả đúng trong các câu trả lời khác.
Kosi2801
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.