ฉันควรติดตั้งแอพพลิเคชัน Linux ใน / var หรือ / opt หรือไม่


83

ฉันเรียกใช้แอปพลิเคชั่นโอเพนซอร์ซจำนวนมากรวมถึงจาวาและทอมแคท ดูเหมือนว่าคำแนะนำส่วนใหญ่ทำให้แอปพลิเคชันของฉันทำงานจาก/varไดเรกทอรี แต่ทุกครั้งที่ฉันเห็น/optไดเรกทอรี ในขณะที่ฉันอยู่ที่นี่ฉันก็เห็น/usr/local/และก็/etcเช่นกัน

เมื่อใดที่ฉันควรติดตั้งแอปพลิเคชั่นในโฟลเดอร์หนึ่งหรืออื่น ๆ มีข้อดีข้อเสียของแต่ละคนหรือไม่ มันเกี่ยวกับประวัติรสชาติ (Solaris vs Linux หรือ Red Hat vs Ubuntu) หรือไม่?


8
/ etc เป็นสถานที่ที่แปลกและไม่เหมาะสมที่จะออกจากแอปพลิเคชัน ...
user5336

ฉันเคยเห็นคนใส่สิ่งต่าง ๆ ใน / etc เช่นโมดูล Perl มันแปลก แต่มันเกิดขึ้น ...
ℝaphink

6
สำหรับความไร้สาระทุกครั้งจะมีผู้ชนะเพื่อปกป้องมัน
womble

คำตอบ:


133

มาตรฐานสำหรับปัญหาเหล่านี้เป็นไฟล์ลำดับชั้นมาตรฐาน มันเป็นเอกสารที่ค่อนข้างใหญ่ โดยทั่วไป (และคร่าวๆ) เส้นทางมาตรฐานบน Linux คือ:

  • /bin& /sbinสำหรับโปรแกรมที่สำคัญสำหรับระบบปฏิบัติการ, sbin สำหรับผู้ดูแลระบบเท่านั้น;
  • /usr/bin& /usr/sbinไม่ใช่โปรแกรมที่มีความสำคัญ sbin สำหรับผู้ดูแลระบบเท่านั้น
  • /varมีไว้สำหรับข้อมูลการใช้ชีวิตสำหรับโปรแกรม มันอาจเป็นข้อมูลแคชข้อมูลสปูลข้อมูลชั่วคราว (ยกเว้นว่ามันอยู่ใน/tmpซึ่งจะถูกลบทุกครั้งที่รีบูต) ฯลฯ
  • /usr/localใช้สำหรับโปรแกรมที่ติดตั้งในเครื่อง โดยทั่วไปจะโฮสต์โปรแกรมที่เป็นไปตามมาตรฐาน แต่ไม่ได้จัดทำแพคเกจสำหรับระบบปฏิบัติการ แต่จะติดตั้งด้วยตนเองโดยผู้ดูแลระบบ (ใช้ตัวอย่าง./configure && make && make install) และสคริปต์ผู้ดูแลระบบ
  • /optสำหรับโปรแกรมที่ไม่ได้ทำแพคเกจและไม่เป็นไปตามมาตรฐาน คุณแค่เอาไลบรารี่ทั้งหมดมารวมกับโปรแกรม มันมักจะเป็นวิธีการแก้ปัญหาที่รวดเร็วและสกปรก แต่ก็สามารถใช้สำหรับโปรแกรมที่ทำด้วยตัวเองและที่คุณต้องการมีเส้นทางที่เฉพาะเจาะจง คุณสามารถสร้างเส้นทางของคุณเอง (เช่น/opt/yourcompany) ภายในเส้นทางได้และในกรณีนี้คุณควรลงทะเบียนเป็นส่วนหนึ่งของเส้นทางมาตรฐาน
  • /etc ไม่ควรมีโปรแกรม แต่ควรกำหนดค่า

หากโปรแกรมของคุณเฉพาะกับบริการที่ให้บริการ/srvอาจเป็นตำแหน่งที่ดีสำหรับพวกเขา ตัวอย่างเช่นฉันต้องการใช้/srv/wwwสำหรับเว็บไซต์มากกว่า/var/wwwเพื่อให้แน่ใจว่าไดเรกทอรีจะมีเฉพาะข้อมูลที่ฉันเพิ่มเองและไม่มีสิ่งใดที่มาจากแพ็คเกจซอฟต์แวร์

มีความแตกต่างบางอย่างระหว่างการแจกแจง ตัวอย่างเช่นระบบ RedHat ใช้libexecไดเรกทอรีเมื่อระบบ Debian / Ubuntu ไม่ทำ

FHS ส่วนใหญ่ใช้โดยลีนุกซ์ดิสทริบิวชั่น (จริง ๆ แล้วฉันไม่รู้จักระบบปฏิบัติการอื่นที่สอดคล้องกับมัน) ระบบ Unix อื่น ๆ ไม่ปฏิบัติตาม ตัวอย่างเช่นระบบ BSD มักจะใช้/usr/localสำหรับโปรแกรมสำเร็จรูปซึ่งไม่ใช่กรณีของ Linux Solaris มีเส้นทางมาตรฐานที่แตกต่างกันมาก

ฉันขอแนะนำให้คุณอ่านเอกสาร FHS ที่ฉันลิงค์ด้านบนหากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้


1
รายการกระสุนหนึ่งในไม่กี่รายการที่ฉันอาจต้องการพิมพ์เป็นแผ่นโกง ...
stimpy77

6
+1 /srvสำหรับ ผมกำลังมองหาสถานที่สำหรับเก็บ Git ของฉันและไม่ชอบเนื้อหา Apache /var/wwwของฉันอยู่ใน /srvดูเหมือนว่าเป็นสถานที่ที่สมบูรณ์แบบ
Mr. Hedgehog

@ ℝaphinkดังนั้นทำไมมันเรียกvarแทนdata?
Pacerier

@ Mr.Hedgehog คุณหมายถึงอะไร "ไม่ชอบ"? สนใจที่จะอธิบาย?
Pacerier

@Pacerier ย้อนกลับไปในยุค 90 คุณจะได้รับการบอกเล่า/varเพราะเป็น "ข้อมูลหลากหลาย" ในวันแรก ๆ Unix โฮสต์บนไดรฟ์เดียว เมื่อไม่พอพวกเขาได้รับใหม่ติดตั้ง/usrและย้ายข้อมูลผู้ใช้ทั้งหมดที่นั่น แต่มันก็ไม่เพียงพอและไดรฟ์เก่าก็เต็มอีกครั้งในไม่ช้า ดังนั้นพวกเขาจึงย้ายไบนารีทุกระบบสามารถบูตได้โดยไม่ต้องจากไป/bin /usr/binพวกเขาหมดพื้นที่ ต่อมาพวกเขาต้องการแบ่งปันข้อมูลระหว่างผู้ใช้ดังนั้นพวกเขาจึงสร้าง/varและใช้เป็นกล่องดรอป FHS เต็มไปด้วยการตัดสินใจแบบดั้งเดิมและควรใช้เกลือนิดหน่อย
cprn

4

optย่อมาจากซอฟต์แวร์เสริม varย่อมาจากไฟล์ระบบตัวแปร /optดังนั้นการใช้งานของคุณควรจะไป


8
/varใช้สำหรับการเปลี่ยนแปลงไฟล์ระบบไม่ใช่ "หลากหลาย"
womble

4
/ var ใช้สำหรับ "ไฟล์ข้อมูลแบบแปรผัน" บอกว่ามันเป็นเพราะ "ไฟล์ระบบต่าง ๆ " นั้นคลุมเครือและอาจทำให้เข้าใจผิด o_O คุณถูกต้องเกี่ยวกับ "ยกเลิก"
phoenix8

@Eduard แล้วเกี่ยวกับ / opt / var แล้ว? และ </ usr / var>, </ usr / local / var> ...
Pacerier

@ womble มันเป็นนิรุกติศาสตร์เท็จ มันคือสิ่งที่ FHS พูด แต่มันไม่เป็นความจริง ย้อนกลับไปในยุค 90 คุณจะได้รับการบอกเล่า/varเพราะเป็น "ข้อมูลหลากหลาย" ฉันยังมีบันทึกจากหนังสือก่อนอินเทอร์เน็ตที่ฉันอ่านตอนนั้น
cprn

2

ขึ้นอยู่กับว่ามาตรฐานท้องถิ่นของคุณคืออะไร

ส่วนตัวผมไม่ได้ติดตั้งอะไรลงใน / var โดยไม่มีเหตุผลที่ดี My / usr / local ของฉันเกือบจะติดตั้งเครือข่ายเสมอดังนั้นสิ่งใดก็ตามที่ไม่ได้รับการบรรจุจะถูกติดตั้งลงใน / opt


1
คุณจะใส่อะไรใน / var อย่างไรก็ตามยกเว้นข้อมูล
ℝaphink

1
โดยปกติโปรแกรมจะติดสิ่งต่าง ๆ ใน / var ผู้จำหน่ายส่วนใหญ่จัดหา - บันทึก, ไลบรารี, ไฟล์ควบคุม, ไฟล์. pid, สิ่งนั้น
David Mackintosh

2
ฉันไม่ค่อยเห็นด้วย /usrไลบรารี่ถ้าพวกเขาคงที่ควรเข้ามา libs สร้างแบบไดนามิกจะจบลงใน/var/libบางครั้ง แต่ฉันไม่เห็นสิ่งที่คุณจริงจะติดตั้งใน/varจากจุดผู้ดูแลระบบของมุมมอง โปรแกรมอาจใช้อย่างกว้างขวาง แต่ควรจะค่อนข้างว่างเปล่าก่อนที่คุณจะเปิดโปรแกรม
ℝaphink

1
ตอนนี้สิ่งเดียวที่ฉันตั้งใจติดตั้งลงใน / var คือ nfsen / nfdump และนั่นเป็นเพราะรอยเท้าของแอปพลิเคชันคือไฟล์ nfdump ทั้งหมดที่มันสะสม (และเพราะนี่คือการทดสอบการติดตั้งที่ทำให้การผลิตเป็นอย่างนั้น - "สำหรับเราไม่มีเหตุผลที่ดี") แต่นั่นก็ค่อนข้างมาก แน่นอนเพราะฉันไม่ได้แบ่งพาร์ติชันฮาร์ดดิสก์ของฉัน / var, / opt และ / usr ทั้งหมดอยู่ในระบบไฟล์เดียวกันอย่างไรก็ตาม
David Mackintosh

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