ตำแหน่งการติดตั้งแบบเดิมสำหรับแอปพลิเคชันใน Linux คืออะไร


72

ฉันกำลังติดตั้ง NetBeans /home/thomasowens/netbeans-6.8และติดตั้งเริ่มต้นไดเรกทอรี ฉันไม่ได้เป็นแฟนของสถานที่นั้น ๆ ดังนั้นฉันกำลังมองหาที่/etc, /bin, และ/usr/bin /sbinลินุกซ์มีสถานที่ตามแบบแผนเดียวกันกับC:\Program Filesไดเรกทอรีของ Windows หรือไม่?

คำตอบ:


98

ตามFilesystem Hierarchy Standardมีหลายที่ที่ยอมรับได้ขึ้นอยู่กับแอ็พพลิเคชัน ฉันอ้างจากมันอย่างกว้างขวางที่นี่

  • bin สั้นสำหรับ "ไบนารี่" แน่นอน
  • sbin สั้นสำหรับ "เซิร์ฟเวอร์ไบนารี" มิฉะนั้นนิยามเป็น:

    ยูทิลิตี้ที่ใช้สำหรับการบริหารระบบ (และคำสั่งรูทอื่นเท่านั้น)

  • /usr มีไว้สำหรับข้อมูลที่แชร์ได้แบบอ่านอย่างเดียวและควรแบ่งปันได้ระหว่างโฮสต์ที่เข้ากันได้กับ FHS (หากคุณมีเครื่องจำนวนมากในเครือข่ายของคุณและเป็นสถาปัตยกรรมเดียวกันทั้งหมดคุณควรแชร์โฟลเดอร์ / usr เดียวได้ กับทุกเครื่องในเครือข่าย)

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

นำสิ่งเหล่านี้มารวมกัน:

  • /usr/bin เป็นไดเร็กทอรีหลักของคำสั่งที่รันได้บนระบบ
  • /usr/sbin มีไว้สำหรับไบนารีที่ไม่จำเป็นที่ใช้โดยผู้ดูแลระบบเท่านั้น
  • โปรแกรมบริหารระบบที่จำเป็นสำหรับการซ่อมแซมระบบการกู้คืนระบบการติดตั้ง / usr หรือฟังก์ชั่นที่จำเป็นอื่น ๆ จะต้องอยู่ใน/sbinแทน (กล่าวคือสิ่งที่คุณต้องการในการเข้าถึงในการสั่งซื้อที่จะติด/usr/sbinไปใน/sbin)
  • ในทำนองเดียวกันคำสั่งของผู้ใช้ที่สำคัญที่อาจจำเป็นต้องใช้ก่อนที่จะ/usrถูกเมาท์เข้าไป/bin
  • สิ่งใดก็ตามที่ติดตั้งบนเครื่องโลคัลควรเข้าไป/usr/local/binหรือ/usr/local/sbin

มีอีกหนึ่งการใช้งานสำหรับ / usr / local แม้ว่า สิ่งที่คุณติดตั้งผ่านตัวจัดการแพคเกจของ distro จะอยู่ภายใต้ / usr; หลายคนใส่สิ่งที่พวกเขารวบรวมด้วยมือภายใต้ / usr / local แทน สิ่งนี้ทำให้พวกเขาออกจากระบบการจัดการบรรจุภัณฑ์และช่วยให้คุณเห็นสิ่งที่คุณติดตั้งจาก distro (และไม่จำเป็นต้องสำรองข้อมูลเพราะคุณสามารถคว้ามันได้อีกครั้ง) และสิ่งที่คุณรวบรวมด้วยมือ นอกจากนี้ยังช่วยให้คุณสามารถรันเวอร์ชันที่แตกต่างกันในเวลาเดียวกัน (เช่น / usr / bin / firefox vs / usr / local / bin / firefox)


เมื่อคุณคิดว่าสิ่งต่าง ๆ ถูกตัดสินมีอีกที่หนึ่งซึ่งอาจเทียบเท่ากับc:\Program Files- /opt:

/opt สงวนไว้สำหรับการติดตั้งแพ็กเกจซอฟต์แวร์แอพพลิเคชั่นเสริม '

/optน่าจะเป็นเทียบเท่าที่อยู่ใกล้c:\program filesในการที่จะเป็นสถานที่หนึ่งที่คุณคาดหวังที่จะพบการประยุกต์ใช้กับไฟล์ทั้งหมดร่วมกันในโฟลเดอร์เดียวแทนที่จะกระจัดกระจายไปทั่ว/usr/bin, และ/var /etcโดยปกติแล้วจะใช้งานโดยแพ็คเกจที่มีขนาดใหญ่มากเท่านั้น แต่ในกรณีนี้เนื่องจาก Netbeans ต้องการมีโฟลเดอร์ของตัวเองจึงอาจเหมาะสมที่สุดที่จะวางไว้ใต้ / opt / netbeans


3
น่าสนใจ ถ้าฉันออกแบบลีนุกซ์ฉันจะใส่แอปที่แชร์เครือข่ายไว้ใน / usr / shared แล้วจึงใส่แอปโฮสต์ในเครื่องส่วนตัวใน / usr วิธีนั้นฉันสามารถแชร์ / usr / share ได้โดยไม่ต้องผ่านการสืบทอดการแบ่งปัน / usr
djangofan

1
คำตอบที่ดีจริงๆ ฉันชอบความคิดเห็นเกี่ยวกับการป้องกันไม่ให้สิ่งต่าง ๆ เข้าสู่ระบบการจัดการบรรจุภัณฑ์
DaveParillo

1
แน่นอน / เลือกใช้ "แพคเกจบุคคลที่สามเต็ม" การติดตั้งส่วนใหญ่จะแบ่งไบนารีไฟล์ไลบรารีและอื่น ๆ ออกเป็นไดเรกทอรีต่าง ๆ แต่เมื่อคุณมีไดเรกทอรี "all in one" / opt ทำให้จัดการได้ง่าย
Avery Payne

คำถามสั้น ๆ เกี่ยวกับ: 1) ถ้า / usr ควรจะแบ่งปันระหว่างเครื่องทั้งหมดในเครือข่ายไม่ได้หมายความว่าไดเรกทอรีลูกทั้งหมดจะสามารถแชร์ได้ด้วยเหตุนี้จึงทำให้ / usr / local สามารถมองเห็นได้กับเครื่องอื่น ๆ ในเครือข่าย 2) FHS คืออะไร 3) เมื่อคุณพูดถึงคำสั่งที่จำเป็นสำหรับการติดตั้ง / usr คุณกำลังพูดถึงวิธีที่ระบบปฏิบัติการบูทขึ้นมาพูดว่าปิดเครื่องหรือไม่? ฉันขอโทษสำหรับการทิ้งระเบิดคำถาม 7 ปีต่อมา แต่ฉันใหม่กับ Linux และมีคำถามเดียวกันนี้หลังจากเห็นคู่มือการติดตั้งบอกว่าจะนำสิ่งใดไปวางที่ไหน แต่ทำไมไม่ใส่ +1 btw
Ungeheuer

5

จริงๆมันลงมาเพื่อการตั้งค่าส่วนตัว ฉันจะอธิบายของฉันสำหรับสิ่งที่คุ้มค่า

/ usr, / usr / bin มักเป็นที่สำหรับซอฟต์แวร์ที่ติดตั้งโดยระบบที่จะติดตั้ง เมื่อฉันติดตั้งสิ่งต่าง ๆ ด้วยตัวเองฉันจะติดตั้งสิ่งเหล่านี้ในหลายแห่ง:

  1. หากเป็นสคริปต์หรือโปรแกรมขนาดเล็กเท่านั้นที่ฉันจะใช้ฉันจะติดตั้งใน ~ / bin - นี่คือสิ่งที่ส่วนใหญ่ของฉันจบลง
  2. หากเป็นสิ่งที่คุณอธิบาย (NetBeans) ด้วยต้นไม้ไฟล์เต็มของตัวเองฉันจะติดตั้งใน / opt
  3. หากเป็นไฟล์ปฏิบัติการตัวเดียวฉันจะติดตั้งใน / usr / local / bin

ทำไมฉันถึงแยกแยะระหว่าง # 2 & # 3 ไม่มีความคิดมันเป็นเพียงนิสัยที่ฉันพัฒนาขึ้นตามกาลเวลา มันทำงานที่ / opt มักจะกลายเป็นต้นไม้ใหญ่ของไฟล์ แต่มีเพียง 2 หรือ 3 จริง 'ติดตั้ง' สิ่งที่ ในขณะนี้ฉันมี lampp และ Lotus Notes ติดตั้งอยู่ใน opt, 2 ไดเรกทอรีที่แต่ละแห่งมีต้นไม้ขนาดใหญ่อยู่ข้างใต้ ใน / usr / local / bin ฉันมี 20 หรือ 30 รายการ แต่ไม่มีไดเรกทอรีย่อย

ฉันไม่ได้ติดตั้งสิ่งต่าง ๆ ใน / usr / bin หรือ / usr / sbin เพราะฉันต้องการแยกสิ่งต่าง ๆ ที่ฉันเพิ่มด้วยตนเอง (ไม่ใช่ส่วนหนึ่งของการติดตั้งจากที่เก็บมาตรฐาน) แยกต่างหาก


1

ในขณะที่ลำดับชั้นของมาตรฐานระบบไฟล์ให้คำแนะนำบางอย่าง /usr/shareฉันพบว่าการกระจายส่วนใหญ่ต้องการที่จะติดตั้งแพคเกจเข้า

ด้วยเหตุนี้ฉันจึงนำแนวทางปฏิบัติของการติดตั้งแอปพลิเคชันใด ๆ ที่ไม่ได้ติดตั้งผ่านตัวจัดการแพคเกจ (rpm / apt-get / emerge) มา/usr/localใช้ สิ่งนี้ทำให้ฉันสามารถเก็บแอปพลิเคชันและไลบรารีที่ไม่ได้รับการจัดการผ่านการจัดการแพคเกจแยกจากที่อยู่

เป็นเทคนิคที่ช่วยให้ฉันจัดการระบบของฉันภายใต้ทั้ง Fedora Core และ Gentoo


0

ฉันคิดว่าตำแหน่งเริ่มต้นคือ/binทุกอย่างที่ติดตั้งเป็นค่าเริ่มต้นหากใช้ apt-get หรือคล้ายกัน ...

... แต่เมื่อมันมาถึงโปรแกรมที่ทันสมัยมากขึ้น (หรือคนโดยไม่ต้องติดตั้ง) /binที่มีจำนวนมากของไฟล์เพิ่มเติมผมชอบที่จะวางไว้ในไดเรกทอรีของตัวเองของพวกเขาภายใน


3
ความแตกต่างระหว่าง / bin, / usr / bin และ / sbin คืออะไร? / bin เหมาะสมที่สุดเนื่องจากเป็นไฟล์ BINary
โธมัสโอเวนส์

0

โดยทั่วไปแล้วพวกเขาจะติดตั้งในหลาย ๆ โฟลเดอร์ส่วนใหญ่ / usr, / local, / bin ฯลฯ คุณสามารถค้นหาว่าโปรแกรมนั้นติดตั้งจาก GDebi Installer ได้อย่างไร (ใต้แท็บไฟล์) หากคุณต้องการย้าย Netbeans ฉันขอแนะนำให้ย้ายไปที่ / opt เพราะนั่นคือสิ่งที่ Google ดูเหมือนจะติดตั้งสิ่งของ


0

เห็นด้วยกับคำตอบของ James Polley แต่อันที่จริงแล้วไดเรกทอรีเริ่มต้นมีเหตุผลหลายอย่างเว้นแต่ว่าคุณต้องการแบ่งปันแอปพลิเคชันระหว่างหลายบัญชี ตัวอย่างเช่นฉันจำเป็นต้องติดตั้ง Eclipse 3.0 (ล้าสมัย) เพื่อให้ Flex ทำงานภายใต้ Linux และฉันวางไว้ใน $ HOME / eclipse3


0

ฉันชอบที่จะใช้ / แอพสำหรับแอพส่วนใหญ่ที่ฉันติดตั้งบนเซิร์ฟเวอร์หลายเครื่อง ฉันเก็บสำเนาของโฟลเดอร์ไว้ใน / installs / apps บนเซิร์ฟเวอร์ nfs ของฉัน เมื่อฉันสร้างเซิร์ฟเวอร์ linux ใหม่ฉันเมานต์โฟลเดอร์การติดตั้งและคัดลอก / แอพและฉันมีแอพทั่วไปมากมายบนเซิร์ฟเวอร์ใหม่ ฉันลบรายการเหล่านั้นที่ฉันไม่ต้องการสำหรับเซิร์ฟเวอร์ใหม่นี้และฉันทำเสร็จแล้ว บางทีฉันอาจต้องเรียกใช้สคริปต์หนึ่งหรือสามตัวเพื่อตั้งค่าตัวแปรสภาพแวดล้อมหรือคำสั่งพา ธ แต่นั่นก็เป็นสิ่งที่ใช้ในการตั้งค่าเซิร์ฟเวอร์ใหม่ ๆ

ฉันมาจากพื้นหลัง Windows และ. net หนึ่งในสัญญาของ. net คือแอปส่วนใหญ่สามารถติดตั้งได้โดยใช้ Windows xcopy ฉันมองหาสิ่งเดียวกันใน Linux หากมีให้เลือกฉันเลือก tarball ผ่าน RPM หรือ yum เป็นต้นดังนั้นฉันสามารถปรับใช้กับ / apps ด้วย cp -r และเพิ่มแอปไปยังเซิร์ฟเวอร์ nfs ของฉันสำหรับการปรับใช้ในอนาคต


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