มีวิธีแสดงรายการ `ตัวเลือก 'ที่สามารถตั้งค่าได้ทั้งหมด (symlink สำหรับคำสั่งที่คล้ายกัน) ในระบบหรือไม่?


24

alternativesคำสั่ง (แพคเกจchkconfig) บน RHEL / Fedora จัดการ symlinks ซึ่งเชื่อมโยงชื่อทั่วไปให้เป็นหนึ่งในทางเลือกการใช้งาน ตัวอย่างเช่นmtaกลุ่ม symlink สามารถให้บริการโดย Sendmail และ Postfix (เพื่อใช้sendmailคำสั่งie ):

alternatives --display mta

ในขณะที่ฉันสามารถ--displayกลุ่ม symlink ได้ฉันต้องเดาชื่อก่อน (เช่นmta)

ฉันสามารถแสดงรายการกลุ่ม symlink ที่กำหนดค่าได้ที่เป็นไปได้ทั้งหมด (เช่นmta) หรือไม่

เหตุผลคือฉันลืมชื่อกลุ่มบางครั้ง

คำตอบ:


25

ใน Debian (แต่ไม่ใช่ Fedora หรือ RHEL) เพื่อดูรายการ "ชื่อทางเลือกหลัก" ทั้งหมด:

update-alternatives --get-selections

--get-selections รายการชื่อทางเลือกหลักและสถานะของพวกเขา

และสำหรับแต่ละรายการคุณสามารถเรียกใช้--list $ALTERNATIVE_NAMEเช่น

update-alternatives --list editor

--list name แสดงเป้าหมายทั้งหมดของกลุ่มลิงค์

หากคุณต้องการที่จะเห็นรายการของทางเลือกทั้งหมดในกลุ่มของพวกเขาคุณสามารถเรียกใช้ต่อไปนี้ในfishเปลือก:

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

ไวยากรณ์ (ba | z)? sh ควรเป็นสิ่งที่คล้ายกัน

หากต้องการเปลี่ยนทางเลือกให้เรียกใช้ sudo update-alternatives --config $ALTERNATIVE_NAME


1
เมื่อวันที่ 12 Fedora ของฉันupdate-alternativesเป็น symlink ไป:alternatives /usr/sbin/update-alternatives -> alternativesดังนั้นตัวเลือก--get-selectionsจะไม่แสดงอะไรเลย (ออกโดยมีข้อผิดพลาดแสดงการใช้งาน)
uvsmtid

1
ฉันอ่านคำถามไม่ถูกต้อง ขอโทษ นี่สำหรับเดเบียน ฉันพยายามค้นหาสิ่งเดียวกับคุณและฉันไม่สามารถตอบคำถามนี้ได้ ฉันสงสัยว่าควรลบคำตอบของฉันหรือไม่
kzh

แล้วแต่คุณ. หากคุณคิดว่ามันถูกต้องในบางสถานการณ์และอาจเป็นประโยชน์กับคนอื่นมันก็คุ้มค่าที่จะทิ้งมันไว้
uvsmtid

16

คำตอบที่แน่นอนคือ:

ls /var/lib/alternatives

ไดเรกทอรี/etc/alternativesเก็บรายการยาวแบนของ symlink ผสมปรมาจารย์และทาสทั้งหมดเข้าด้วยกัน Slave symlink ไม่สามารถใช้กับalternatives --display [symlink]คำสั่งได้

ในเวลาเดียวกันไดเรกทอรี/var/lib/alternativesมีข้อมูลสถานะ (รวมถึงความสัมพันธ์ master-slave) สำหรับแต่ละกลุ่มในรายการย่อของชื่อไฟล์ซึ่งทั้งหมดสามารถใช้โดยตรงกับ--displayตัวเลือก ตัวอย่างเช่น/var/lib/alternatives/java:

alternatives --display java

4
บน Ubuntu 12.04 ไม่มีก็น่าจะเป็น/var/lib/alternatives /var/lib/dpkg/alternatives
Hibou57

1
คำตอบที่ดีขอบคุณ! อีกอย่างหนึ่ง: บนเดเบียนและอาร์เบียมัน/etc/alternativesแทน/var/lib/alternatives
Alexey Vesnin

4

คำตอบที่ง่ายที่สุดคือ ...

ls /etc/alternatives

1
เป็นที่ชัดเจนมากขึ้นเมื่อคุณรู้คำตอบแล้ว :)
4329 gparent

มันเป็นครั้งแรกที่ฉันเดา แต่มันก็ไม่ได้ทำให้ฉันพึงพอใจ รายการยาวเกินไปที่มีลิงค์ master และ slave ทั้งหมด
uvsmtid

-1

บน Ubuntu 12.04 (อาจเป็นรุ่นก่อนหน้านี้ด้วยเพื่อตรวจสอบ) และอาจเป็น Debian ด้วย (เพื่อตรวจสอบ):

ls /var/lib/dpkg/alternatives

ทำรายการเพื่อรับชื่อทางเลือกที่กำหนดค่าได้เนื่องจากรายการในไดเรกทอรีนี้ไม่ใช่ลิงก์ อย่างไรก็ตามอาจมีไฟล์บีบอัดในไดเรกทอรีนี้ดังนั้นชื่อที่อยู่ในรายการจึงไม่สามารถใช้งานได้ตลอดเวลาเนื่องจาก ‑ คือ อดีต ฉันมี/var/lib/dpkg/alternatives/psql.1.gz


ไม่เป็นประโยชน์จริง ๆ เนื่องจากคำถามระบุอย่างชัดเจนว่ามันใช้กับ RedHat Enterprise Linux วิธีการกำหนดค่า RHEL อธิบายไว้อย่างถูกต้องในคำตอบอื่น ๆ
Kosi2801
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.