/ usr / local หรือ / opt?


43

โดยทั่วไปแล้วคุณจะดำเนินการติดตั้งแพ็คเกจบน Linux สำหรับแพ็คเกจที่ไม่ได้เป็นส่วนหนึ่งของ repos ของ distrib ได้อย่างไร

ในด้านของฉันฉันเคยติดตั้งใน / opt แต่เนื่องจากผมเห็นเอกสารนี้บนอินเทอร์เน็ต: http://www.pathname.com/fhs/ ตอนนี้ฉันสับสน: เห็นได้ชัดว่า / usr / ท้องถิ่นจะเป็นไปได้เช่นกัน

ความแตกต่างระหว่างทั้งสองคืออะไร? แนวทางปฏิบัติที่ดีที่สุดในการแบ่งปัน?

ขอบคุณ

SirFabel


ดินแดนสงครามศักดิ์สิทธิ์และไม่ใช่หัวข้อการเขียนโปรแกรมจริงๆในการบูต
dmckee

1
คำถามที่คล้ายกันในAsk Ubuntu , superuser , unix & linux
kenchew

คำตอบ:


32
  • ทุกสิ่งที่จะต้องรวบรวม & ติดตั้งยูนิกซ์สไตล์และสอดคล้องกับ FHS ->/usr/local
  • ทุกอย่างอื่น (เช่นเว็บแอปพลิเคชัน java ที่มาพร้อมกับเซิร์ฟเวอร์แอปพลิเคชันของตัวเองและโหลดทรัพยากรในไฟล์ zip -> /opt

lintian ไม่อนุญาตให้ติดตั้งแพ็กเกจบน / เลือกไม่ใช้ / usr / local อีกต่อไป
Cristiano

24

เช่นเดียวกับข้อมูลที่น่าสนใจเพิ่มเติม: ความหมายดั้งเดิมของ/usr/localคือถ้าหาก/usrมีการติดตั้งเครือข่าย ( /usrใช้ร่วมกันในคอมพิวเตอร์หลายเครื่อง) /usr/localจะเป็นระบบไฟล์ที่แยกต่างหากภายในเครื่องคอมพิวเตอร์ (พาร์ติชันบนดิสก์ภายใน)

และในขณะที่อยู่ในหัวข้อนั้นแม้ว่าจะไม่เกี่ยวข้องกับคำถาม: หากมีคอมพิวเตอร์หลายเครื่องที่มีสถาปัตยกรรมที่แตกต่างกันโดยปกติจะมีหนึ่งเครื่อง/usrสำหรับแต่ละ arch แต่/usr/shareจะเป็นระบบแฟ้มอื่นที่แยกจากกันซึ่งใช้ร่วมกันระหว่างสถาปัตยกรรม .


4
ไม่ ... ในอดีต (ใช่ฉันอยู่ที่นั่น!) / usr et al มีสิ่งที่ผู้จำหน่ายจัดหาให้ / usr / local ถูกติดตั้งแบบโลคัล (เช่น bash, gcc และสิ่งอื่น ๆ ที่ดี)
vonbrand

@ vonbrand คุณขัดแย้งกับคำตอบจริงๆเหรอ? ดูเหมือนว่าอะไรก็ตามที่ต้องแชร์ระหว่างโฮสต์จะเป็น / usr และอะไรก็ตามที่ไม่ต้องการก็จะอยู่ใน / usr / local
Didier A.

@Didier A. เมื่อฉันเริ่มใช้ Unix ('80es) มีหนึ่งเครื่องไม่มีเครือข่าย ... และพวกเขามี / usr และ / usr / local
vonbrand

@ vonbrand โอ้ฉันเห็นน่าสนใจ ดูเหมือนว่าเจตนาดั้งเดิมของการมี / usr และ / usr / local ยังคงเป็นปริศนา
Didier A.

@Didier A. อีกครั้ง: / usr เป็นสิ่งที่ถูกส่งมาพร้อมกับระบบปฏิบัติการสิ่ง "มาตรฐาน" / usr / local เป็นส่วนเพิ่มเติมในท้องถิ่น . ไม่ได้มาตรฐานแค่ใช้งานทั่วไป
vonbrand

7

วิธีที่ฉันทำก็คือถ้ามันต้องใช้คำนำหน้ากับตัวเองหรือเป็นแพคเกจไบนารีฉันไปสำหรับ / opt (ซึ่งเป็นวิธี Solaris สวยมาก) หากฉันรวบรวมจากแหล่ง / usr / local เป็นวิธีที่ฉันไป


6

ผมใส่ทุกอย่างในไดเรกทอรีส่วนตัวแล้วใช้GNU Stow

ดังนั้นฉันจะติดตั้งแพคเกจ X.ver /BASE/stow/X.verไป GNU stow จะรวมแพ็คเกจทั้งหมด (ที่มี symlink) เข้า/BASE/binด้วย/BASE/libกันเป็นต้น

ความขัดแย้งและการลบแพ็กเกจนั้นง่ายต่อการจัดการ


ฉันมักจะใช้ / usr / local / stow / <packagename> เป็นบ้านสำหรับเก็บ "แพ็คเกจ" และรู้สึกว่ามันเป็นวิธีปฏิบัติที่ดี - ถ้ามีคนอื่นดู / usr / local มันทำให้เห็นได้ชัดว่าเกิดอะไรขึ้นและอะไร ระบบกำลังดูแล symlink
สเตฟานี

3

นี่คือวิธีที่ฉันตีความมาตรฐาน FHS:

/ usr / local ใช้สำหรับไฟล์ที่ติดตั้งภายในเครื่องหรือภายในเครื่องไม่ว่าจะเป็นแพคเกจหรือไม่นั้นจะกลายเป็นส่วนหนึ่งของอินสแตนซ์ของระบบปฏิบัติการ

/ opt เป็นสถานที่สำหรับติดตั้งแพ็คเกจ "foreign" ซึ่งไม่ใช่ส่วนหนึ่งของระบบปฏิบัติการ

ตราบใดที่คุณใช้ไฟล์ในระบบเดียวที่คุณสร้างไฟล์ / usr / local ก็ใช้ได้และเป็นไดเรกทอรีฐานเริ่มต้นสำหรับซอฟต์แวร์โอเพ่นซอร์สส่วนใหญ่

หากคุณวางแผนที่จะแจกจ่ายแพคเกจของคุณอีกครั้งฉันขอแนะนำให้ใช้ไดเรกทอรีฐานที่กำหนดเองเช่น / opt / myPackage


2

โซลาริสใช้ / เลือกมาก Linux distros ที่ทันสมัยหลายรุ่นคาดว่าจะมีแพ็คเกจใน / usr / local / แนวคิดนี้เหมือนกัน - เป็นที่สำหรับวางซอฟต์แวร์ที่ทำให้เครื่องนี้ทำสิ่งที่มันทำตรงข้ามกับระบบปฏิบัติการ มันคล้าย ๆ กับ "Program Files" บนระบบ Windows

เลือกหนึ่งและติดกับมัน มันง่ายพอที่จะเชื่อมโยง / เลือกกับ / usr / local


ฉันชอบความคิดเห็นของลีวิธีที่ดีในการคิดถึงปัญหา มันจะรู้สึกแปลก ๆ สำหรับฉันที่จะมี / เลือกใช้เครื่อง Debian แต่นั่นอาจเป็นเพียงการตั้งค่าส่วนตัว
Kyle Hodgson

โปรดอย่า FHS อาจค่อนข้างล้าสมัย แต่เหตุผลใน / usr vs / usr / local vs / opt เป็นเสียง: มาตรฐานการแจกจ่ายที่ให้ไว้; ติดตั้งในเครื่องเช่นหน้าแรก homebrew หรือทดลองปิด github; สิ่งที่ไม่ได้มาตรฐานที่ผู้ขายจัดหาให้
vonbrand

0

หากคุณคอมไพล์ซอฟต์แวร์ที่มาจากการแจกจ่ายระบบปฏิบัติการของคุณเพื่อใช้ประโยชน์จากสถาปัตยกรรมที่หลากหลายสำหรับเครื่องของคุณเองให้ใช้ / usr / local

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

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