สถานที่ถาวรในการติดตั้งสคริปต์ทุบตีที่กำหนดเองอยู่ที่ไหน


32

ฉันกำลังจะติดตั้ง "leiningen" ซึ่งเป็นสคริปต์ทุบตีสำหรับภาษาการเขียนโปรแกรม clojure ที่มีประโยชน์มากมาย ... ... แต่ฉันไม่แน่ใจว่ามันเหมาะสมที่จะ -put- สคริปต์ปฏิบัติการใน linux ระบบเพื่อให้มันใช้ได้อย่างถาวรและมีเสถียรภาพ

ฉันไม่คิดว่าที่ใดก็ได้ในบ้าน / เหมาะสม แต่ฉันไม่รู้ว่าควรจะใช้ไดเรกทอรี / ไดเรกทอรีใด

/ usr / share?


คำตอบ:


45

(หมายเหตุ: ~แปลเหมือน/home/userในโพสต์นี้)

ส่วนตัวผมใส่ทุกสคริปต์ระบบที่กำหนดเองทำของฉันในและทั้งหมดของสคริปต์ทุบตีส่วนตัวของฉันใน/usr/local/bin ~/binโปรแกรมน้อยมากที่ฉันติดตั้งวางใน/usr/local/binไดเรกทอรีดังนั้นจึงไม่รกมากและมันก็เป็น$PATHตัวแปรในเครื่องส่วนใหญ่ของฉันแล้ว

หากต้องการเพิ่ม/usr/local/binในเส้นทางของระบบของคุณ (หากยังไม่ได้อยู่ที่นั่น) ให้เพิ่มสิ่งนี้ใน/etc/profile:

PATH=$PATH:/usr/local/bin
export PATH

หากต้องการเพิ่ม~/binเส้นทางของผู้ใช้ของคุณให้เพิ่มสิ่งนี้ใน~/.bash_profile:

PATH=$PATH:$HOME/bin
export PATH

บางครั้งเริ่มต้น.bash_profileไฟล์จะมีถ้ามีคำสั่งว่าจะเพิ่ม~/binไป$PATHถ้ามันมีอยู่เพื่อสร้าง~/binและเปิดอาคารผู้โดยสารแห่งใหม่เพื่อดูว่าคุณทำอย่างนี้อยู่แล้ว


BSD ดำเนินการตามค่าเริ่มต้น
Chris S

@Chris: BSDs ใส่ของจำนวนมากใน / usr / local / bin
Dan Andreatta

อะไรคือความแตกต่างระหว่างสคริปต์ทุบตีและสคริปต์ระบบและมีเหตุผลที่คุณแยกทั้งสองออกจากกันหรือไม่
Hashim

@Hashim ฉันไม่สามารถพูดได้ว่า Trey แน่นอน แต่เครื่องมือที่คุณพัฒนาสำหรับความต้องการส่วนบุคคลของคุณมักจะ "เปลี่ยน" เป็นเครื่องมือระบบเมื่อคุณสังเกตเห็นว่าพวกเขาแก้ปัญหาที่คนอื่นกำลังลำบากหรือคุณมีการติดตั้งทั่วทั้งระบบ ในหนึ่งในเครื่องมือเหล่านี้ ฉันสงสัยว่า threshold จะติดตั้งบางสิ่งบางอย่างทั้งระบบค่อนข้างสูงสำหรับโปรแกรมเมอร์ส่วนใหญ่ นอกจากนี้เครื่องมือที่คุณแบ่งปันต้องมีเอกสารเป็นต้นซึ่งนักพัฒนาหลายคนไม่ค่อยเขียน
tripleee

นอกจากนี้คุณไม่จำเป็นต้องexportใช้ตัวแปรหลาย ๆ ครั้ง (และระบบของคุณอาจถูกทำเครื่องหมายPATHเพื่อส่งออกอยู่แล้วดังนั้นคุณไม่จำเป็นต้องทำเองเลย)
tripleee

9

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

ดูhttp://www.pathname.com/fhs/pub/fhs-2.3.htmlสำหรับการอภิปรายเกี่ยวกับ / opt

สำหรับ / usr / local / เป็นสำหรับ "ใช้โดยผู้ดูแลระบบ" อย่าลืมเรื่องในนั้น - บันทึกไว้


ลิงก์ที่คุณให้ไว้จะบอกว่า "ไดเรกทอรี / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib และ / opt / man ถูกสงวนไว้สำหรับผู้ดูแลระบบท้องถิ่นใช้" ไม่มีอะไรเกี่ยวกับ / usr / local มีการกล่าวถึง / usr / local / share เท่านั้น ในทางกลับกันโปรแกรมที่คอมไพล์แล้วมักจะติดตั้งลงใน / usr / local บน Linux คุณไม่คิดว่า / opt / bin เป็นสถานที่ที่ดีกว่าสำหรับการใช้งานโดยผู้ดูแลระบบ?
raacer

1
@raacer ประสบการณ์ของฉันคือ/usr/local- เหมือนชื่อที่แสดง - มีไว้สำหรับผู้ดูแลระบบในท้องถิ่นและ/optสำหรับสิ่งที่ไม่ได้รับการเผยแพร่อย่างเป็นทางการเช่นซอฟต์แวร์บุคคลที่สามเชิงพาณิชย์ที่จัดการโดยกระบวนการที่คล้ายกัน (อาจถูกแทนที่หรือเช็ดในการอัพเกรดจาก ต้นน้ำ) แต่ไม่ได้รับการจัดการโดยผู้จัดการแพคเกจของ distro หรืออาจแจกจ่ายเป็น RPM หรือ.debแพ็คเกจจริง ๆแต่ไม่ได้จัดระเบียบและจัดแพคเกจตามนโยบายและแบบแผนของ distro ทั้งหมด
tripleee

1
@raacer มีส่วนแยกกันโดยสิ้นเชิงเกี่ยวกับ/usr/localในภายหลังในเอกสาร
tripleee

@raacer tripleee ถูกต้อง นี่คือลิงค์: pathname.com/fhs/pub/… .. ถูกต้องโปรแกรมที่คอมไพล์แล้ว (มักจะเป็นโอเพ่นซอร์ส) ที่รวบรวม / สร้างขึ้นเป็นพิเศษสำหรับระบบนั้นหรือใช้ร่วมกันระหว่างระบบต่าง ๆ (แต่ไม่ใช่ส่วนหนึ่งของบรรจุภัณฑ์ / การจัดจำหน่ายระบบปฏิบัติการปกติ แต่ที่ต้องพึ่งพา libs ที่ใช้ร่วมกันอย่างมาก) ควรติดตั้งลงใน / usr / local (โดยทั่วไปจะแสดงถึงลำดับชั้นของ / usr) ซอฟต์แวร์ของบุคคลที่สามที่รวบรวมในระบบที่แตกต่างกันซึ่งอาจมีการสนับสนุนห้องสมุดของตนเอง (เช่น firefox, userify) ควรเข้า / opt
Jamieson Becker

3

ในอดีตคุณจะใช้สิ่งที่ต้องการ / เลือก ทุกอย่างดีตราบใดที่มีการอัปเดตเป็น $ PATH สำหรับผู้ใช้ที่ควรจะมีมัน (ดังนั้นทุกอย่างในบ้านเป็นแนวคิดที่ไม่ดี)


2

/usr/share/clojureดูเหมือนว่าเป็นสถานที่ทั่วไปที่จะวางไบนารีและห้องสมุดของ clojure - ทำไมฉันไม่รู้มันเป็นเรื่องธรรมดา/usr/local/share/clojure- ดังนั้นการสร้างsiteไดเรกทอรีย่อยภายใต้สิ่งนี้สำหรับสคริปต์ทุบตีเหล่านี้ดูเหมือนดี

ประเด็นทั่วไปคือมันเหมาะสมกว่าที่จะจัดระเบียบสคริปต์ตามฟังก์ชั่นไม่มีสคริปต์ทุบตีทั้งหมดในที่เดียวกัน


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

2

/usr/localฉันเชื่อว่ามีความสับสนกับความหมายของ "ท้องถิ่น"

ตามที่ฉันเข้าใจ "ท้องถิ่น" ไม่ได้หมายถึง "กำเนิดจาก / จากเครื่องจักรท้องถิ่น" แต่ยิ่ง "เฉพาะเครื่องท้องถิ่น" ซึ่งอาจหรือไม่อาจเกิดจาก / จากเครื่องท้องถิ่น

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