มาดูกันว่า Debian มีโครงร่าง / การเลือก :
/ opt / Add-on แพคเกจซอฟต์แวร์แอปพลิเคชันที่รวบรวมไว้ล่วงหน้า, ไม่ใช่ ".deb" การกระจายแบบไบนารี (tar'ed .. ) ไปที่นี่
/ opt / bin /: เหมือนกับลำดับชั้นระดับสูงสุด
/ opt / include /: เหมือนกับลำดับชั้นระดับสูงสุด
/ opt / lib /: เหมือนกับลำดับชั้นระดับสูงสุด
/ opt / sbin /: เหมือนกับลำดับชั้นระดับสูงสุด
/ opt / share /: เหมือนกับลำดับชั้นระดับสูงสุด
ในทางปฏิบัติฉันได้เห็นแอปพลิเคชันที่ติดตั้ง.deb
แพ็คเกจด้วยเช่นกัน เป็นการดี/bin
และ/usr/bin
ควรจะสำรองไว้โดยเฉพาะ/bin
เพราะมันถูกกำหนดให้เป็น
คำสั่งที่จำเป็นสำหรับปฏิบัติการ (ไบนารี) สำหรับผู้ใช้ทั้งหมด (เช่น cat, ls, cp) (โดยเฉพาะอย่างยิ่งไฟล์ที่จำเป็นสำหรับการบูตหรือช่วยเหลือระบบ)
ในทางปฏิบัติมันเป็นเรื่องธรรมดาที่จะเห็นแพ็คเกจเดเบียนจากบุคคลที่สามที่ติดตั้ง /usr/bin
บนระบบที่ใช้เดเบียนอาจเป็นเพราะ/usr/bin
มักเป็นส่วนหนึ่งของPATH
ตัวแปรดังนั้นจึงสามารถเปิดใช้งานได้ง่ายผ่านทางบรรทัดคำสั่ง คุณได้กล่าวถึง: "ซอฟต์แวร์ที่อยู่ใน / bin หรือ / usr / bin อาจถูกเขียนทับโดยการอัพเกรดระบบ" อัปเกรดเป้าหมายการลบไฟล์เฉพาะใน/usr/bin
ดังนั้นใช่มันอาจถูกเขียนทับ แต่ไม่เว้นแต่ว่ามีบาง.deb
แพคเกจระบุการลบของคุณอย่างชัดเจน (เช่นฉันได้พบกับแพคเกจแอปเพล็ตที่ลบท่าเรือรุ่นเก่าที่ฉันใช้) อัพเกรดอาจเป็นอันตรายได้ถ้าซอฟต์แวร์ของคุณขึ้นอยู่กับไบนารีเฉพาะรุ่น/usr/bin
ที่จะนำเสนอใน
สิ่งที่พบเห็นได้ทั่วไปอีกอย่างหนึ่งคือการเชื่อมโยง: การเข้าสู่/usr/bin
คือการเชื่อมโยงไปยังตำแหน่งอื่น นี่อาจเป็นตัวเลือกที่ทำงานได้สำหรับการรวมไบนารีเข้า$PATH
กับที่คุณกล่าวถึงในคำถาม นอกจากนี้ยังสอดคล้องกับคู่มือบรรจุภัณฑ์ของ Debian เกี่ยวกับสถานะFHS :
4.4 / usr / bin: คำสั่งผู้ใช้ส่วนใหญ่
4.4.1 วัตถุประสงค์
นี่เป็นไดเรกทอรีหลักของคำสั่งที่รันได้บน
ระบบ
4.4.2 ความต้องการ
ต้องไม่มีไดเรกทอรีย่อยใน / usr / bin
ดังนั้นหากคุณมีแอปพลิเคชันที่คาดว่าจะมีไดเรกทอรีย่อย (เช่นโมดูล Python ที่มีไดเรกทอรี submodule) แนวทางปฏิบัติที่ดีที่สุดคือการวางแอปพลิเคชั่นที่อื่น ( ในกรณีของ Pythonนั่นคือ/usr/lib/python*/dist-packages
ไดเรกทอรี) พร้อมกับไดเรกทอรีย่อย/usr/bin/my_binary
อีก$PATH
บูรณาการที่ผมเคยเห็นถูกทำโดยผู้ขายบางคนคือการแก้ไขของผู้ใช้ตัวแปรและผนวกที่$PATH
~/.bashrc
(ใช่นี่เป็นวิธีปฏิบัติที่ไม่ดีและฉันไม่สนับสนุน - เพียงแค่ระบุความจริงว่าเป็นสิ่งที่ฉันเห็นว่าทำไปแล้ว)
"แต่ไม่ต้องลงทะเบียนไดเรกทอรีนี้เพื่อหลีกเลี่ยงความขัดแย้งกับผู้ขายรายอื่น" เอกสาร Debian ที่กล่าวถึงไม่ได้พูดอะไรเกี่ยวกับการลงทะเบียนไดเรกทอรีดังนั้นคำตอบคือไม่จำเป็นต้องทำแต่ถ้าคุณต้องการหลีกเลี่ยงความขัดแย้งคุณสามารถติดตาม schema /opt/vendor/package-v-1.2/bin
- นั่นคือระบุแพ็คเกจและรุ่นที่วางจำหน่ายอาจจะ หนึ่งปีเช่นกัน