ฉันควรติดตั้งโปรแกรมลงในไดเรกทอรีใดใน Linux?


43

ฉันต้องการติดตั้งโปรแกรมใน Linux และเรียกใช้เป็น daemon (ทีมพูด 3 ในกรณีนี้ แต่คำถามเป็นเรื่องธรรมดา) ไม่มีแพ็กเกจที่ให้บริการมีเพียงไบนารีไบนารี ฉันควรวางโปรแกรมไว้ในโครงสร้างของไดเร็กตอรี่ที่ไหน?

บนเว็บฉันพบว่า / opt ใช้สำหรับ "แอพเสริมเพิ่มเติม" ในขณะที่ / usr ใช้สำหรับ "โปรแกรมผู้ใช้" ฉันพบหนึ่งกวดวิชาแนะนำ / เลือกในขณะที่อีก sugested / usr

แล้วอันไหนที่ "ถูกกว่า"?


1
"ถูกต้องมากขึ้น" ขึ้นอยู่กับการกระจายของคุณ คุณควรตรวจสอบแนวทางการกระจายของคุณว่าจะวางซอฟต์แวร์ที่ไม่ได้รับการจัดการโดยผู้จัดการแพคเกจ (บ่อยครั้ง/usr/local) หรือวิธีสร้างแพ็คเกจของคุณเอง
Leiaz

ขอบคุณ Leiaz ความคิดเห็นของคุณช่วยให้ฉันค้นหาคำตอบ ( askubuntu.com/questions/1148/… ) ดังนั้นฉันคิดว่ามันควรจะเป็น / opt ในกรณีของฉัน (ใช้ Linux Mint ซึ่งเป็นพื้นฐานของ Ubuntu) และแอปพลิเคชันนั้นใช้โฟลเดอร์เดียว หากคุณแปลงความคิดเห็นของคุณเป็นคำตอบฉันจะยอมรับมัน
Eiver

คำตอบ:


27

"ถูกต้องมากขึ้น" ขึ้นอยู่กับการกระจายของคุณ คุณควรตรวจสอบแนวทางการกระจายของคุณว่าจะวางซอฟต์แวร์ที่ไม่ได้รับการจัดการโดยผู้จัดการแพคเกจ (บ่อยครั้ง/usr/local) หรือวิธีสร้างแพ็คเกจของคุณเอง

ดังที่คุณกล่าวว่า TeamSpeak ใส่ทุกอย่างไว้ในโฟลเดอร์เดียว (และอาจไม่ใช่เรื่องง่ายที่จะจัดระเบียบใหม่) ใช่/opt/อาจดีที่สุด

(ตัวอย่างเช่นใน Archlinux ผู้จัดการแพ็คเกจสามารถติดตั้งที่นั่นได้ดังนั้นฉันยังคงติดตั้ง PKGBUILD /optไว้)

นอกจากนี้การแจกแจงมักจะพยายามทำตามลำดับชั้นของระบบแฟ้มดังนั้นนี่คือที่ที่จะมองหาหลักการทั่วไปเพิ่มเติม


มีนามแฝงบางอย่างที่จะทราบว่าอยู่ที่ไหนแต่ละไดเรกทอรีตามการใช้งาน? (ตัวอย่างเช่นตำแหน่งที่จะวางการกำหนดค่ารูตตำแหน่งที่จะวางไบนารีการพึ่งพาแม่แบบ ... )
Sandburg

5

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

เมื่อคุณกำลังรวบรวมซอฟแวร์, สถานที่ติดตั้งสามารถระบุได้โดยใช้ตัวเลือกเมื่อทำงาน--prefix= ก็ขอแนะนำให้คุณดูที่ทั้งหมดของตัวเลือกที่ใช้ได้สำหรับแพคเกจของคุณโดยใช้./configure $ ./configure --help | lessนอกจากนี้การเรียกดูเอกสาร INSTALL และ README ที่มาพร้อมกับแพ็คเกจของคุณเป็นความคิดที่ดี พวกเขามักจะรวมถึงคำแนะนำในการติดตั้งและข้อมูลการพึ่งพาที่เฉพาะกับแพคเกจ

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

$PATHสุดท้ายคุณก็ต้องให้แน่ใจว่าสถานที่ติดตั้งของคุณจะถูกรวมอยู่ในของคุณ หากคุณตัดสินใจที่จะติดตั้งแพคเกจของคุณ/optแต่มันไม่ได้อยู่ใน$PATHเปลือกของคุณจะไม่พบไฟล์ปฏิบัติการและคุณจะต้องใช้พา ธ สัมบูรณ์เพื่อเรียกใช้โปรแกรมของคุณ นี่คือการสนทนาที่ยอดเยี่ยมจากAUเกี่ยวกับการกำหนดค่าของคุณ$PATH

อ่านเพิ่มเติม: man hier


5

ลินุกซ์ฐานมาตรฐานและระบบแฟ้มลำดับชั้นมาตรฐานมี arguably มาตรฐานของสถานที่และวิธีการที่คุณควรติดตั้งซอฟต์แวร์บนระบบ Linux และขอแนะนำให้วางซอฟแวร์ที่ไม่ได้รวมอยู่ในการกระจายของคุณทั้งใน/optหรือ/usr/local/หรือมากกว่านั้นไดเรกทอรีย่อย ( /opt/<package> /opt/<provider> /usr/local/bin)

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


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

1

ไบนารีไปในbinโฟลเดอร์โดยการประชุมทั่วไปวิธีที่คุณจะจัดโครงสร้างแพ็คเกจขึ้นอยู่กับคุณฉันคิดได้/opt/<prog_name>/ว่ามันเป็นเพียงรายการไบนารี


ฉันกลัวว่าพวก Team Speak 3 สร้างโปรแกรมในแบบที่ทุกอย่างที่มันต้องการอยู่ในโฟลเดอร์เดียว (ไบนารี, ไฟล์ปรับแต่ง, บันทึก) ดังนั้นมันจึงไม่ใช้ / bin หรือ / etc หรือ / var / log
รับ

1

ฉันมีคำถามเดียวกันขณะติดตั้ง Eclipse ผ่านตัวติดตั้ง Eclipse

ฉันสังเกตเห็นว่ามีการติดตั้ง Gimp, Perl และ Vim ใน/usr/shareโฟลเดอร์และตัดสินใจติดตั้งที่นั่น


0

มีสองวิธีที่โปรแกรมสามารถติดตั้งได้ขึ้นอยู่กับวิธีการบรรจุ

  1. ผ่านโปรแกรมจัดการซอฟต์แวร์ (apt, synaptic, Gdebi เป็นต้น) - โปรแกรมอยู่ในรูปแบบของแพ็คเกจโดยปกติคือ. deb หรือ rpm ผู้จัดการซอฟต์แวร์ในกรณีส่วนใหญ่จัดการการขึ้นต่อกันและจะติดตั้งไบนารีลงใน/usr/binไฟล์กำหนดค่า/etcและอื่น ๆ พวกเขายังสามารถสร้างไฟล์ปรับแต่งสำหรับโปรแกรมในบ้านของคุณได้เช่น~/.fooกัน หากคุณสามารถแก้ไขไฟล์นี้คุณยังสามารถเปลี่ยนการตั้งค่าสำหรับเซสชันของคุณได้อย่างง่ายดาย เมื่อคุณลบแพ็คเกจผู้จัดการจะค้นหาไฟล์ทั้งหมดและลบออกอย่างหมดจด (จะเก็บตำแหน่งทั้งหมดไว้ในไฟล์ข้อความพิเศษ) แต่มันอาจเก็บไฟล์ปรับแต่งบางไฟล์ไว้ตัวอย่างเช่นไฟล์ในโฟลเดอร์โฮมของคุณ

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

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