ฉันควรพึ่งพาลีนุกซ์รุ่นใดที่มี / etc / os-release อยู่?


17

ฉันกำลังพยายามหาวิธีในการกำหนดชื่อและรุ่นการแจกจ่าย Linux ที่สามารถทำงานได้กับการกระจายแบบทันสมัยส่วนใหญ่ ฉันสังเกตเห็นว่า/etc/os-releaseมีข้อมูลที่ฉันต้องการในดิสทริบิวชันที่ฉันลองใช้ (CentOS, Debian) แต่มันปลอดภัยแค่ไหนที่จะพึ่งพาการปรากฏตัวของมัน คำสั่งเช่นuname -aไม่มีข้อมูลเดียวกันจริง ๆ และlsb_releaseดูเหมือนจะไม่ปรากฏบนเช่น CentOS ขั้นต่ำ

มีวิธีที่รวดเร็วในการค้นหาสิ่งที่ distros มาพร้อมกับ/etc/os-release? นอกจากนี้ยังมีการ/etc/os-releaseรับประกันว่าจะมีNAME, VERSIONและPRETTY_NAMEเขต?


1
Ubuntu, Debian, Arch อย่างแน่นอน อย่างไรก็ตามฉันจะละเว้นการตรวจสอบ distro ด้วยวิธีนั้น ครั้งสุดท้ายที่ฉันต้องแยกความแตกต่าง distros ฉันกำลังตรวจสอบการปรากฏตัวของผู้จัดการแพคเกจโดยเฉพาะ (เช่น pacman -> Arch, apt-get & no pacman -> ทั้ง Ubuntu หรือ Debian) มันเป็นงานที่ค่อนข้างยุ่งยากและฉันก็อยากจะรู้ว่ามันมีทางออกที่ดีกว่าไหม
ddnomad

1
สิ่งหนึ่งที่สงสัยว่าทำไมคุณต้องรู้ชื่อการแจกจ่าย เสียงนี้เช่นกรณีที่มีการตรวจสอบเบราว์เซอร์เมื่อคุณควรจะทำการตรวจสอบคุณสมบัติ
xDaizu

@xDaizu ฉันกำลังเรียกใช้สคริปต์จากโฮสต์ระยะไกลเพื่อดึงข้อมูลต่างๆเกี่ยวกับพวกเขา
w128

@ w128 ในกรณีนั้นคุณไม่สามารถตรวจสอบว่ามี "คุณสมบัติ" (/ etc / os-release) อยู่ (และสำรองกลับไปที่วิธีการอื่นถ้าไม่) แทนที่จะใช้รายการคงที่ของการกระจายแบบคงที่หรือไม่
xDaizu

1
@xDaizu การถอยกลับไปที่ "วิธีการอื่น" อาจเกี่ยวข้องกับการทำงานพิเศษที่อาจพิสูจน์ว่าไม่จำเป็นหากฉันสามารถรับประกันวิธีแก้ปัญหาที่เสนอในคำถามที่เชื่อถือได้ในปัญหาสำคัญ ๆ หลายอย่างที่ฉันต้องการให้การสนับสนุน ในกรณีนี้.
w128

คำตอบ:


14

ระบบใด ๆ ที่รัน systemd ควรมี/etc/os-releaseซึ่งระบุไว้เป็นส่วนหนึ่งของ systemd บางระบบที่ไม่มี systemd อาจมีเช่นกัน ( เช่น Debian 8 โดยที่ systemd เป็นทางเลือก แต่/etc/os-releaseจะถูกติดตั้งในทุกกรณี)

ตามข้อกำหนดคุณสมบัติฟิลด์ทั้งหมดเป็นทางเลือกและบางฟิลด์มีค่าดีฟอลต์ ("Linux" สำหรับNAMEและPRETTY_NAME)

คุณจะได้รับคำพื้นหลังมากขึ้นในการประกาศ/etc/os-release

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