ลินุกซ์เทียบเท่ากับไฟล์ C: \ Program คืออะไร


64

ฉันเข้าใจว่าใน Windows รวมถึง Linux และ Unix สามารถติดตั้งโปรแกรม | แอปพลิเคชั่น | ซอฟต์แวร์ในไดเรกทอรีใด ๆ นอกจากนี้หากมีการติดตั้งแพคเกจโดยใช้ระบบบรรจุภัณฑ์ของการกระจายมันจะวางไฟล์ในตำแหน่งที่ถูกต้อง

แต่ในบางครั้งการติดตั้งซอฟต์แวร์จะแจ้งให้พา ธ ไปวางไฟล์ ในกรณีของดิสทริบิวเตอร์ distro ที่นี่เป็นสถานที่เริ่มต้น ( C:\Program FilesหรือC:\progra~1เทียบเท่า)? มันแตกต่างกันสำหรับการแจกแจงต่าง ๆ หรือไม่? ถ้าใช่ที่นี้จะเป็นสำหรับRHEL, SuseและUbuntu?

คำตอบ:


60

โครงการเอกสารลินุกซ์มีคำอธิบายของลำดับชั้นระบบแฟ้มลินุกซ์ที่พวกเขาอธิบายโฟลเดอร์ที่แตกต่างกันและพวกเขา (ประวัติศาสตร์บางส่วน) ความหมาย

ในฐานะที่เป็น xenoterracide ชี้ให้เห็นแล้ว/binและ/optเป็นไดเรกทอรีมาตรฐานซึ่งสามารถเปรียบเทียบกับ "ไฟล์โปรแกรม" บน Windows

/binมีคำสั่งที่มีประโยชน์หลายอย่างที่ใช้กับทั้งผู้ดูแลระบบและผู้ใช้ที่ไม่มีสิทธิพิเศษ มันมักจะมีเปลือกเช่นbash, cshฯลฯ .... และคำสั่งที่ใช้ทั่วไปเช่นcp, mv, rm, ,catls

( อ้างจาก TLDP )

/optสงวนไว้สำหรับซอฟต์แวร์และแพ็คเกจเสริมทั้งหมดที่ไม่ได้เป็นส่วนหนึ่งของการติดตั้งเริ่มต้น ตัวอย่างเช่นแพคเกจ StarOffice, Kylix, Netscape Communicator และ WordPerfect พบได้ที่นี่

( อ้างจาก TLDP )


9
ไม่ / เลือกใช้เฉพาะกับแพ็คเกจที่ไม่มีใน repos หรือไม่ โฟลเดอร์แอปพลิเคชันสำหรับ inkscape, gimp, rhythmbox ฯลฯ ตั้งอยู่ใน / usr / share นั่นจะไม่เทียบเท่ากันใช่ไหม
c76c3r8c42b347r8

5
ดูlinuxfoundation.org/en/FHSสำหรับข้อมูลล่าสุดเกี่ยวกับลำดับชั้นของระบบไฟล์ (FHS) (หมายเหตุ: ไซต์นั้นหยุดทำงานในขณะนี้ แต่ควรสำรองข้อมูลในไม่ช้า)
jw013

@Toxicbits: อย่างน้อยใน Gentoo ใน / opt มีแพ็คเกจไบนารี - โดยเฉพาะที่ไม่สามารถติดตั้งไปยัง / usr เนื่องจากลำดับชั้นของระบบไฟล์ที่ไม่เป็นมาตรฐาน
Maciej Piechotka

TLDP ดูยอดเยี่ยม! ดีที่ทราบด้าน; ครั้งแรกที่ฉันเห็น TLDP ฉันคิดว่า: "นานเกินไปไม่ได้ ... ยอดเขาคืออะไร"
Ege Özcan

3
สิ่งนี้ไม่ถูกต้อง / bin ประกอบด้วยโปรแกรมที่ปฏิบัติการได้เท่านั้น ไดเรกทอรีไฟล์โปรแกรมของ Windows มีไดเรกทอรีย่อยสำหรับแต่ละแอปพลิเคชั่นที่ติดตั้งซึ่งมีไฟล์เรียกทำงานไฟล์ dll ไฟล์ข้อมูลและทุกอย่างที่จำเป็นโดย / มาพร้อมกับแอปพลิเคชัน
psusi

45

ไม่มีการเทียบเท่าโดยตรง โครงสร้างไดเรกทอรีแตกต่างกันมาก ใน Windows คุณมีไดเรกทอรีเดียวสำหรับแต่ละแพ็คเกจ / ซอฟต์แวร์ที่ติดตั้งซึ่งมีไฟล์ทั้งหมดที่เกี่ยวข้องกับ (เช่นC:\Program Files\MyProgram) ภายใต้ Linux ซอฟต์แวร์แต่ละตัวจะ "แยกย้ายกันไป" ในหลาย ๆ ไดเรกทอรีตามชนิดของไฟล์และกฎอื่น ๆ

ตัวอย่างเช่นเราสามารถตรวจสอบว่าxscreensaverมีการติดตั้งไฟล์ต่าง ๆ ที่เกี่ยวข้องกับโปรแกรมไว้หรือไม่:

/etc/pam.d/xscreensaver
/etc/xscreensaver
/etc/xscreensaver/README
/usr/bin/xscreensaver
/usr/bin/xscreensaver-command
/usr/bin/xscreensaver-demo
/usr/bin/xscreensaver-gl-helper
/usr/share/X11/app-defaults/XScreenSaver
/usr/share/applications/xscreensaver-properties.desktop
/usr/share/doc/packages/xscreensaver
/usr/share/doc/packages/xscreensaver/README
/usr/share/locale/ca/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/da/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/de/LC_MESSAGES/xscreensaver.mo
[ ... ]
/usr/share/locale/zh_TW/LC_MESSAGES/xscreensaver.mo
/usr/share/man/man1/xscreensaver-command.1.gz
/usr/share/man/man1/xscreensaver-demo.1.gz
/usr/share/man/man1/xscreensaver.1.gz
/usr/share/man/man6/xscreensaver-gl-helper.6x.gz
/usr/share/pixmaps/xscreensaver.xpm
/usr/share/xscreensaver
/usr/share/xscreensaver/glade
/usr/share/xscreensaver/glade/screensaver-cmndln.png
/usr/share/xscreensaver/glade/screensaver-colorselector.png
[ ... ]

ไม่ต้องกังวลโดยปกติเมื่อติดตั้งถามว่าจะติดตั้งไปยังคำตอบที่ถูกต้องคือหนึ่งต่อไปนี้: /, /opt, /usr,/usr/local

อย่างที่คุณเห็นไฟล์ทั้งหมดของ (1) xscreensaverติดตั้งอยู่ภายใต้/usrกฎง่ายๆ: executables ใน/usr/bin, หน้าคู่มือใน/usr/share/manเอกสารประกอบ/usr/share/doc/packages/PROGRAMNAMEและอื่น ๆ

เมื่อมีการติดตั้งขอติดตั้งprefix, มักจะมันต้องการที่จะตอนนี้ฐานเส้นทางตามที่ติดตั้งโปรแกรม ในของฉันตัวอย่างเช่นมันเป็นxscreensaver/usr

ตามกฎง่าย ๆ : /ควรมีเฉพาะโปรแกรมที่จำเป็นสำหรับการบู๊ตระบบ (ตามC:\windows\system32), /usr/localควรมีโปรแกรมที่จำเป็นสำหรับคอมพิวเตอร์ที่ไม่ซ้ำกันเท่านั้น, /opt(2) โปรแกรมเสริมทั้งหมดที่มีโครงสร้างไดเรกทอรีมาตรฐานและซอฟต์แวร์มาตรฐาน/usrทั้งหมด.

ไม่ว่าในกรณีใดก็ตามจะมีมาตรฐานที่กำหนดรายละเอียดกฎเหล่านี้ทั้งหมด: ระบบไฟล์ลำดับชั้นมาตรฐาน

(1) ไฟล์การกำหนดค่าทั้งระบบจะต้องอยู่ใน /etc

(2) ค่อนข้างล้าสมัยภายใต้ Linux


/optเป็นที่ต้องการสำหรับซอฟต์แวร์ของบุคคลที่สามใน/usr/localช่วงระยะเวลาหนึ่ง
Steve-o

7
เพียงคำอธิบาย/usr/shareเรียกว่า "ใช้ร่วมกัน" เพราะมันถูกใช้ร่วมกันระหว่างสถาปัตยกรรมที่แตกต่างกัน (เอกสาร, สคริปต์, รูปภาพ) ในขณะที่ใช้/usr/lib*สำหรับไฟล์ที่ขึ้นอยู่กับสถาปัตยกรรม (และไม่ใช่ไฟล์ที่เรียกทำงานได้/usr/bin)
eudoxos

12

Ususually, /bin, /usr/bin, หรือ/usr/local/bin /opt/binฉันคิดว่า/usr/binและ/opt/binใกล้เคียงที่สุดกับ Program Files เพราะโดยปกติแล้วพวกเขาจะใช้สำหรับไบนารีระบบที่ไม่สำคัญซึ่งติดตั้งโดยผู้ดูแลระบบ ที่ไหน/usr/local/binเป็นซอฟแวร์ที่ไม่ใช่ distro บรรจุ สำหรับระบบไบนารีที่สำคัญเช่น/bin/bin/sh


ทำไมสี่ตัวเลือก /bin, /usr/bin, หรือ/usr/local/bin /opt/binไม่มีตำแหน่งมาตรฐานเดียวใช่ไหม เหตุผลที่ฉันถามคือเพราะฉันกำลังติดตั้งซอฟต์แวร์บน VM ไม่กี่แห่งและตำแหน่งเริ่มต้นที่พาร์ติชันเคยมีพื้นที่มากที่สุด ฉันต้องการเปลี่ยนพื้นที่พาร์ติชันเป็นไดเรกทอรีที่ซอฟต์แวร์มักจะไปและไม่มีซอฟต์แวร์ที่วางแตกต่างกันใน VM ทั้งหมด
โทมัส

1
มาตรฐานระบุที่ตั้งหลาย ๆ idk ทำไมชื่อพา ธ ลดลง แต่นี่คือลิงค์ไปยังFHS ที่แคชไว้ซึ่งจะมีคำจำกัดความเพิ่มเติมเกี่ยวกับสิ่งเหล่านี้และจริงๆแล้วมันขึ้นอยู่กับสิ่งที่คุณกำลังติดตั้ง นอกจากนี้ RHEL, Suse และ Ubuntu ก็มีความแตกต่างกันดังนั้นพวกเขาอาจวางสิ่งเดียวกันในที่ต่างกันเล็กน้อย /optตัวอย่างมักจะใช้สำหรับซอฟต์แวร์ที่เป็นกรรมสิทธิ์
xenoterracide

โดยปกติแล้ว ... โดยทั่วไปแล้วสิ่งเหล่านี้ล้วนอยู่ในพาร์ติชั่นเดียวกัน ... บางครั้ง/usr/ก็เป็นพาร์ติชั่นแยกต่างหาก
xenoterracide

1
บางคน (เช่นโครงการ Hurd) ยืนยันว่า/binและ/usr/binการเลือกปฏิบัติเป็นล้าสมัยไปแล้ว ในอดีตสิ่งที่ระบบที่มีความสำคัญจะอยู่ใน/bin, /lib... (โดยตรงในราก) ในขณะที่/usr(มี/usr/bin, /usr/lib, ... ) จะได้รับการติดตั้งในภายหลัง (อาจจะผ่านเครือข่าย) ไม่เป็นสิ่งที่จำเป็นสำหรับการทำงานของระบบพื้นฐาน
eudoxos

1
@ โทมัส/optไม่ควรออก บางคนเคยคิดว่าในอดีตเป็นความคิดที่ดีที่จะมีแอพพลิเคชั่นบางตัวในตำแหน่งที่แตกต่างจากแอพอื่นทั้งหมด /binอยู่บนพาร์ติชันรูท เนื่องจากในระบบบางพื้นที่บนพาร์ทิชันรากจะถูก จำกัด ไบนารีที่ไม่จำเป็น (เช่นทุกการใช้งานของผู้ใช้) /usr/binถูกย้ายไป
Jan


3

ดังที่คนอื่น ๆ ได้ชี้ให้เห็นโปรแกรมที่ติดตั้งผ่านตัวจัดการแพคเกจจะกระจัดกระจายอยู่ในหลายไดเรกทอรี แม้ว่าโดยทั่วไปจะพบไบนารี/usr/binไฟล์กำหนดค่าทั้งระบบจะอยู่ใน/etcและต่อไป

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

หากคุณถูกขอเส้นทางการติดตั้งตัวเลือกที่พบได้บ่อยที่สุดคือ /usr/local/appname


3

พิมพ์echo $PATHเทอร์มินัลของคุณเพื่อดูเส้นทางเชลล์จะค้นหาเพื่อค้นหาคำสั่ง มันจะตรวจสอบไฟล์ตามลำดับที่พิมพ์


1
สิ่งนี้ไม่ตอบสนองต่อสิ่งที่ OP ขอ
Francesco Turco

1

คุณจะไม่พบคำตอบทั้งหมดของคุณ/binและsbinเพราะพวกเขามีคำสั่งระบบเป็นส่วนใหญ่ (เช่นคำสั่งที่ใช้โดยระบบ)

/usr/binสามารถเรียกได้ว่าเป็นอุดมคติ"Program Files"ของโลกยูนิกซ์ เกี่ยวกับ/optแพคเกจน้อยมากเลือกที่จะใช้ตำแหน่งนั้นสำหรับการติดตั้งเช่นเดียวกับแพคเกจที่ใช้/etc/หรือ/varเป็นสถานที่

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