เมื่อติดตั้งแอปพลิเคชันผู้ใช้“ แนวทางปฏิบัติที่ดีที่สุด” แนะนำให้พวกเขาอยู่ที่ไหน?


210

ฉันติดตั้งแอปพลิเคชั่นด้วยตนเองเป็นครั้งคราวแทนที่จะใช้aptหรือตัวจัดการแพ็คเกจอื่น

สิ่งที่สถานที่ตั้ง ( /usr/, /usr/local/, /opt/, /home/ฯลฯ ) การแนะนำโดย "วิธีปฏิบัติที่ดีที่สุด" สำหรับการติดตั้งการใช้งานของผู้ใช้หรือไม่


ความชอบในการติดตั้งสิ่งต่าง ๆ จากแหล่งข้อมูลบ่อยครั้งฉันเขียนเครื่องมือเล็ก ๆ น้อย ๆ เพื่อทำสิ่งที่เปลี่ยนแปลงไฟล์เชลล์เริ่มต้นของคุณเอง (และปรับเปลี่ยนคำนำหน้าไลบรารีของคุณหากคุณถามโปรแกรมที่ขึ้นอยู่กับไลบรารีที่ใช้ร่วมกัน ) คุณสมบัติไม่รวยมาก แต่ใช้งานได้ 99%
new123456

โพสต์ที่เกี่ยวข้อง: askubuntu.com/q/138547/62483
Lucio

1
การอภิปรายที่ยอดเยี่ยมเกี่ยวกับความแตกต่างระหว่าง/optและ/usr/local: unix.stackexchange.com/q/11544/11917
blong

คำตอบ:


184

ขึ้นอยู่กับว่าจริงๆ หากโปรแกรมประยุกต์ที่มี Makefile หรือตัวอย่างสำหรับแอปหลามถ้าโปรแกรมประยุกต์ที่ใช้ distutils (เช่นมีsetup.pyไฟล์) หรือการสร้างคล้ายระบบ / /usr/local/ติดตั้งคุณควรติดตั้งลงใน นี่มักจะเป็นพฤติกรรมเริ่มต้น

จากสิ่งที่ฉันเข้าใจมีลำดับชั้นที่มีลักษณะคล้ายกับ/usr/local/ /usr/อย่างไรก็ตามไดเรกทอรีเช่น/usr/bin/และมักจะสงวนไว้สำหรับแพคเกจติดตั้งผ่านทาง/usr/lib/ aptดังนั้นโปรแกรมที่คาดหวังว่าจะได้รับ "ติดตั้ง" ใน/usr/ควรทำงาน/usr/local/ได้

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


24
ดูเหมือนว่ามีคนจำนวนมากลืมopt/- ในความคิดของฉันคุณได้ตอกตะปูลงบนศีรษะเพื่อจุดประสงค์
Marco Ceppi

3
ทำ symlink จาก / usr / bin หรือเพิ่มใน PATH ใน ~ / .bashrc
Alex

1
เกี่ยวกับ~/.local/shareอะไร @Marco
ultimatex

1
คุณสามารถติดตั้งสิ่งต่าง ๆ ภายใน~(โฮมไดเร็กตอรี่ของคุณ), แต่นั่นจะทำให้แอปพลิเคชั่นเข้าถึงได้โดยผู้ใช้เพียงคนเดียว ผู้ใช้รายอื่นในระบบของคุณจะต้องติดตั้งและบำรุงรักษาการติดตั้งซอฟต์แวร์ของตนเอง สำหรับแนวทางปฏิบัติที่ดีที่สุดในการติดตั้งแอพพลิเคชั่นติดตั้งโฮมไดเร็กตอรี่ของคุณฉันเชื่อว่าไม่มีแนวทางที่ดีเพราะคุณจะไม่เข้าไปยุ่งเกี่ยวกับแพ็คเกจระบบ
Umang

1
การติดตั้งแอพที่ 'แตกไฟล์จาก tar' ผิดปกติหรือไม่ภายใต้ / home / ubuntu / myapp - สิ่งนี้แตกต่างอะไรเมื่อเทียบกับ / opt / myapp?
JARC

116

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

เช่นนี้ฉันมักจะคิดว่าการแจกจ่ายใด ๆ มีสิทธิ์ในการกระทืบเนื้อหาของ/usr,และการเพิ่มเติมเฉพาะของฉันไปยังระบบเข้าไป/usr/localซึ่งฉันเก็บไว้ก่อนที่จะทำการอัพเกรด

แอปพลิเคชันและสิ่งอื่น ๆ จะเข้า/optมา

บางคนรู้สึกสะดวกสบายในการใส่สิ่งของ/homeแม้ว่าฉันจะไม่ค่อยทำตามแบบแผนนั้น

จากทั้งหมดที่กล่าวมาฉันปล่อยให้ผู้จัดการแพ็คเกจกระจายสินค้าทำสิ่งต่างๆก่อนแล้วค่อยทำสิ่งต่าง ๆ เมื่อมือกลิ้งไป


35
เป็นความทรงจำที่คุ้มค่าที่ 'ทรัพยากรระบบยูนิกซ์' เป็นการเปลี่ยนชื่อหลังจากดำเนินการ '/ home' ถูกเพิ่มเข้ามา ในเก่าเก่าวันเก่า (Unix เวอร์ชัน 6 et.al. ) คุณจะเห็นไดเรกทอรีเช่น / usr / jimmy, / usr / siobhan, / usr / ahmed เป็นต้นเนื่องจากไดเรกทอรี "ผู้ใช้" ถูกเก็บไว้ใน / usr .
Mark Leighton Fisher

5
ตกลงฉันจะกัด: การเลือกทำอะไร
เซท

3
@ เซ็ทฉันคิดว่ามันเป็น 'ตัวเลือก' - แต่เดิมมีไว้สำหรับซอฟต์แวร์ที่ไม่ได้เป็นส่วนหนึ่งของการติดตั้งเริ่มต้น
Carl H

5
/ usr Userคือ นั่นเป็นเพราะผู้ใช้ linux เป็นผู้พัฒนา ครั้งแรกเมื่อมันเริ่มที่จะแบ่งออกเป็น devs และผู้ใช้/homedir ได้รับการแนะนำ และแล้วคนที่มีความคิดที่จะบอกว่ามันหมายถึงการUnix System Resourcesที่ไม่ได้จริงๆที่ทำให้รู้สึกเพราะเรามีUnix system Resourcesใน/dev
ข้อมูลหน้าจอ

2
ถูกต้อง / usr คือ backronym จุดประสงค์มีการเปลี่ยนแปลงตั้งแต่วันที่ Unix ทำงานบน PDP-7 ในปี 1969
Walt Stoneburner

34

ติดตั้งโปรแกรมที่ไม่เสถียรเช่น firefox devel ใน / home / user / opt / ทำให้ง่ายต่อการลบและไม่มีความสับสนสำหรับผู้ใช้รายอื่นว่าควรใช้เวอร์ชันใด ... ดังนั้นหากไม่ใช่โปรแกรมสำหรับใช้ทั่วโลกให้ติดตั้ง มันในโฟลเดอร์ย่อยในไดเรกทอรีบ้านของคุณ

ไม่เคยติดตั้งโปรแกรมใน / usr / อาจทำให้เกิดความสับสนวุ่นวายสิ่งที่ติดตั้งใน / usr / นั้นมีไว้สำหรับแพ็คเกจการกระจายเท่านั้น / usr / local / ใช้สำหรับแพ็คเกจที่คอมไพล์แล้ว และโครงสร้าง srt ทำงานในลักษณะเดียวกัน! ไฟล์ใน / usr / local / จะถูกจัดลำดับความสำคัญมากกว่าไฟล์ใน / usr /

/ opt / ควรใช้สำหรับการติดตั้งแพคเกจ pre-compiled (ไบนารี) (Thunderbird, Eclipse, Netbeans, IBM NetSphere ฯลฯ ) และอื่น ๆ ที่คล้ายกัน แต่ถ้าพวกเขามีไว้สำหรับผู้ใช้คนเดียวพวกเขาควรจะใส่ไว้ในไดเรกทอรีบ้านของคุณ

หากคุณต้องการให้สามารถรันโปรแกรมที่ติดตั้งในตำแหน่ง "แปลก" (เช่น / home / user / opt / firefox /) โดยไม่ต้องพิมพ์พา ธ ทั้งหมดที่คุณต้องการเพิ่มลงในตัวแปร $ PATH คุณสามารถทำได้ เพิ่มบรรทัดเช่นนี้ใน /home/user/.profile ของคุณ

export PATH=/home/user/opt/firefox:$PATH

ชื่อโฟลเดอร์ควรเป็นชื่อที่มีไฟล์เรียกทำงานที่คุณต้องการเรียกใช้


26

/usr/localลินุกซ์ระบบแฟ้มลำดับชั้นมาตรฐานบ่งชี้

จากhttp://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html :

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


1
ดูเหมือนว่าจะขัดแย้งกับสิ่งนี้ / usr / local ด้วยข้อมูลในหน้า opt: tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html "" ไดเรกทอรีนี้สงวนไว้สำหรับซอฟต์แวร์และแพ็คเกจเพิ่มเติมทั้งหมด ไม่ได้เป็นส่วนหนึ่งของการติดตั้งเริ่มต้น ตัวอย่างเช่นแพคเกจ StarOffice, Kylix, Netscape Communicator และ WordPerfect พบได้ที่นี่ เพื่อให้สอดคล้องกับ FSSTND ควรติดตั้งแอปพลิเคชันของบุคคลที่สามทั้งหมดในไดเรกทอรีนี้ "... " (คล้ายกับวิธีที่ Windows จะติดตั้งซอฟต์แวร์ใหม่ให้กับแผนผังไดเรกทอรีของ C: \ Windows \ Progam Files \ "ชื่อโปรแกรม ")"
พ็อด

6

ฉันมักจะมีโฟลเดอร์ชื่อ "โปรแกรม" ในบ้านของฉันที่ฉันติดตั้งโปรแกรมเหล่านั้นแปลกมากพอ (หรือไม่) พวกเขาเป็นสิ่งจาวาทั้งหมดในขณะนี้

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


ฉันจะติดตั้ง Ubuntu 16.04 ใหม่โดยไม่สูญเสียข้อมูลในโฮมโฟลเดอร์ได้อย่างไร ฉันพยายามทำโดย/สร้างไดเรกทอรีจากนั้นพิมพ์ชื่อผู้ใช้และรหัสผ่านเดิม แต่ฉันพบว่า Ubuntu สร้างโฟลเดอร์หลักขึ้นใหม่
Ibrahim Disouki

1

ใช้ "checkinstall" เพื่อแปลงแพ็กเกจเอเลี่ยนของคุณเป็น deb เพื่อให้สามารถถอนการติดตั้งได้โดยใช้ตัวจัดการแพ็กเกจ

โปรดทราบว่าไฟล์การกำหนดค่ามักจะไม่ได้รับการจัดการเป็นไฟล์กำหนดค่า (อาจถูกเพิกเฉยหรืออาจถือว่าเป็นส่วนหนึ่งของแอป) และสคริปต์ก่อนและหลังการติดตั้งบางครั้งอาจเกิดข้อผิดพลาดแม้ว่าปกติจะเตือนคุณ deb จะมีสคริปต์ก่อนหรือหลังการติดตั้งที่ไม่ดี

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