ตำแหน่งมาตรฐานสำหรับเก็บไฟล์ต้นฉบับของซอฟต์แวร์


16

มีตำแหน่งมาตรฐานใน Linux สำหรับเก็บไฟล์ต้นฉบับเช่นOpenSSLหรือไม่ ฉันกำลังสร้าง Nginx จากแหล่งที่มาด้วย OpenSSL เวอร์ชันที่ไม่ใช่ค่าเริ่มต้น ฉันต้องการดาวน์โหลดและไม่ใช้ OpenSSL และฉันทำไว้ในโฮมไดเร็กตอรี่ ตอนนี้ฉันสงสัยว่าอาจมีตำแหน่งมาตรฐานใน Linux /optหรือไม่


1
ในฐานะที่เป็น terdon wrote / usr / src เป็นสถานที่มาตรฐานและที่นี่คุณอาจพบไดเรกทอรีสำหรับแหล่งเคอร์เนล (/ usr / src / linux เชื่อมโยงกับ / usr / src / linux-version) และตัวอย่างเช่น X11 ซอร์สโค้ดสำหรับแพ็คเกจที่ติดตั้งแบบโลคัล (/ usr / local) เหมาะสมกว่าใน / usr / local / src หากคุณต้องการสร้างแพ็คเกจ "ด้วยตนเอง" ด้วยตัวคุณเองการสร้างไดเรกทอรี src ใน homedir ของคุณน่าจะเป็นความคิดที่ดี ... จำไว้ว่าคุณไม่ควรดาวน์โหลดแยกหรือสร้างเป็นราก - ติดตั้งเพียง! หากคุณสร้าง deb / rpm-packages มักจะใช้ไดเรกทอรีการสร้างชั่วคราว (เช่นภายใต้ / var / tmp) แทน TBC
Baard Kopperud

หากคุณสร้างและติดตั้งแพ็คเกจ - หรือสร้างแพ็คเกจ (rpm / dem) - ด้วยตัวคุณเองคุณไม่จำเป็นต้องใช้ซอร์สโค้ดอีกต่อไปหลังจากติดตั้งแล้ว เหตุผลที่คุณอาจมีซอร์สโค้ดสำหรับบางแพ็กเกจ - เช่นเคอร์เนลหรือ X11 - ภายใต้ / usr / src (หรือ / usr / local / src ถ้ามันถูกสร้างขึ้นภายในเครื่อง) ส่วนใหญ่เป็นเพราะคุณอาจต้องการมันถ้าคุณ ' กำลังสร้าง (หรือเขียน) ชุดซอฟต์แวร์บางตัวด้วยตัวคุณเอง (เช่นไฟล์บางส่วนที่คลุมเครือจากเคอร์เนลจับคู่การตั้งค่าระบบจริงของคุณ) (แน่นอนคุณจะต้องใช้มันหากคุณต้องการสร้างเคอร์เนลของคุณเองด้วย ... ) แต่สิ่งนี้ใช้ได้กับแพ็คเกจบางตัว
Baard Kopperud

คำตอบ:


20

เมื่อใดก็ตามที่คุณถามตัวเองเช่นนี้ให้ตรวจสอบFilesystem Hierarchy Standard (FHS) ที่นั่นคุณจะพบรายการต่อไปนี้:

usr / src: ซอร์สโค้ด (ตัวเลือก)

วัตถุประสงค์

รหัสแหล่งที่มาอาจถูกวางไว้ในไดเรกทอรีย่อยนี้เพียงเพื่อวัตถุประสงค์ในการอ้างอิง

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

สรุป: /usr/srcเป็นสถานที่มาตรฐานสวย แต่รู้สึกอิสระที่จะเลือกของคุณเองหากคุณต้องการ


6
เพิ่งทราบว่าคุณจริงๆไม่ต้องการที่จะล้อเล่นกับ/usr/srcบนไม่ใช่ระบบลินุกซ์ BSD จะเก็บระบบฐานไว้ที่นั่นเป็นค่าเริ่มต้นและคุณไม่ต้องการผสมผสานกับซอฟต์แวร์ของบุคคลที่สาม เพียงแค่สร้างในที่ของคุณ$HOME...
Kusalananda

1
เช่นเดียวกับไดเรกทอรีย่อยบางส่วนของ/usr/srcตราสารอนุพันธ์ Debian หากคุณมีแพคเกจบางอย่างที่ติดตั้ง ( gcc-6-source,, binutils-sourceแพ็คเกจ DKMS, ส่วนหัวเคอร์เนล ฯลฯ ) บนเดเบียนมีฟีเจอร์ที่ดีที่คุณสามารถเพิ่มตัวเองลงในsrcกลุ่มที่เป็นเจ้าของ/usr/srcและจากนั้นก็เขียนเป็นตัวคุณเอง (โดยไม่จำเป็นต้องใช้sudoหรืออะไรก็ตาม)
Stephen Kitt

และใน Fedora คุณไม่ควรแตะต้อง/usr/src/debugและ/usr/src/kernels(AFAICS)
Stephen Kitt

"อาจวางซอร์สโค้ด" "สถานที่อยู่" พิมพ์ผิดหรือฉันขาดอะไรบางอย่าง?
Faheem Mitha

3
ฉันจะไปต่อและบอกว่าคุณไม่ควรแตะต้อง/usrระบบใด ๆ เลย /usr/localคุณควรจะวางสิ่งที่อยู่ใน BSD คิดว่าคุณใช้/usr/local/srcหรือไม่?
Muzer

13

/usr/local/srcเป็นสถานที่ที่ปลอดภัยในการเก็บซอร์สโค้ดและสร้างด้วย FHS พูดว่า :

Directory   Description  
src         Local source code

และนอกจากนี้ยังมี

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

ไม่ชัดเจนว่า "Local source code" หมายถึงอะไร แต่ชัดเจนว่าระบบจะไม่พยายามวางสิ่งใดในสิ่งที่/usr/local/srcแตกต่าง/usr/srcดังนั้นจึงมีข้อเสียเล็กน้อยในการใส่รหัส

ในความเป็นจริงฉันมีของฉันในระบบไฟล์แยก:

Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/data-local_src     79G   46G   30G  61% /usr/local/src

หมายเหตุ: อย่างน้อยใน Debian ผู้ใช้ของคุณจะต้องเพิ่มไปยังกลุ่มเพื่อที่จะเขียนไปstaff/usr/local


+1 สำหรับการชี้ให้เห็น/usr/local/srcในขณะที่คำตอบอื่น ๆ พูดคุยเท่านั้น/usr/src
MattSturgeon

เป็นสิ่งที่ "รหัสแหล่งท้องถิ่น" หมายถึงโดยทั่วไปจะหมายถึงการควบคุมโดยผู้ดูแลระบบในท้องถิ่นมากกว่าโดยการจัดจำหน่าย เหมือนกับทุกสิ่งทุกอย่างภายใต้/usr/local(ในทางทฤษฎี) โดยพื้นฐานแล้วมันหมายถึงสิ่งที่คุณอธิบาย
MattSturgeon

9

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

หากคุณไม่ต้องการที่จะให้พวกเขาหลังจากนั้นสำหรับการอ้างอิงที่ " ระบบแฟ้มลำดับชั้นมาตรฐาน " /usr/srcแนะนำ อย่างไรก็ตามนี่เป็นคู่มือที่ไม่ใช่กฎหมาย และหากคุณต้องติดนิสัยนี้แล้วลองเข้าสู่ระบบที่ไม่ใช่ Linux คุณมีแนวโน้มที่จะสร้างปัญหาโดยการติดตามมัน ตัวอย่างเช่นในระบบ BSD แหล่งที่มาของระบบพื้นฐานจะถูกเก็บไว้ที่นั่นและคุณไม่ต้องการยุ่งกับสิ่งเหล่านั้น แม้กระทั่งบน Linux คุณอาจเสี่ยงต่อการปะปนกับแหล่งข้อมูลใด ๆ ที่จัดเก็บโดยผู้จัดการแพคเกจซึ่งไม่เป็นที่ต้องการ

ฉันจะแนะนำให้หลีกเลี่ยง/usr/srcโดยรวม ไม่มีประโยชน์ชัดเจนในการรักษาทุกสิ่งและความเสี่ยงที่อาจเกิดขึ้นหากคุณสับสนในความหมายที่ตั้งใจไว้


5

คุณสามารถใช้/usr/srcเป็นสถานที่นี้เสียงที่เหมาะสมและการกระจายตามรอบต่อนาทีใช้มันเพื่อเก็บเนื้อหาของแพคเกจ srpm แต่สถานที่อื่น ๆ เช่น/opt, /usr/local, ~/srcเป็นสิ่งที่ดี


"การกระจายแบบอิงรอบต่อนาทีใช้เพื่อจัดเก็บเนื้อหาของแพ็คเกจ srpm" นั่นคือเหตุผลที่คุณไม่ควรจัดเก็บแหล่งที่มาที่ไม่ใช่ distro ของคุณเองและใช้ / usr / local - "นั่นจะต้องเป็นสถานที่ที่ดีในการจัดเก็บสิ่งต่าง ๆ ด้วยรถฟอร์คลิฟต์เหล่านี้รอบ ๆ ซึ่งดูเหมือนจะมีความคิดเห็นแบบเดียวกัน .... "
rackandboneman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.