Linux tương đương với C: \ Program Files là gì?


64

Tôi hiểu rằng trong Windows cũng như Linux và Unix, một phần mềm chương trình | ứng dụng | có thể được cài đặt trong bất kỳ thư mục nào. Ngoài ra, nếu các gói được cài đặt bằng hệ thống đóng gói của nhà phân phối, nó sẽ đặt các tệp vào đúng vị trí.

Nhưng đôi khi, cài đặt phần mềm sẽ nhắc đường dẫn đến đặt tệp. Trong trường hợp phân phối Linux, nơi này mặc định ( C:\Program Fileshoặc C:\progra~1tương đương)? Có khác nhau cho các bản phân phối khác nhau? Nếu có, cái này sẽ ở đâu RHEL, SuseUbuntu?

Câu trả lời:


60

Các Dự án Tài liệu Linux có một mô tả về hệ thống tập tin hệ thống phân cấp Linux nơi họ giải thích các thư mục khác nhau và (một phần lịch sử) ý nghĩa của chúng.

Như xenoterracide đã chỉ ra /bin/optlà các thư mục tiêu chuẩn có thể được so sánh với "Tệp chương trình" trên Windows.

/binchứa một số lệnh hữu ích được sử dụng cho cả quản trị viên hệ thống cũng như người dùng không có đặc quyền. Nó thường chứa các vỏ như bash, csh, vv .... và thường được sử dụng lệnh như cp, mv, rm, cat, ls.

( trích dẫn từ TLDP )

/optđược dành riêng cho tất cả các gói phần mềm và phần bổ trợ không phải là một phần của cài đặt mặc định. Ví dụ: các gói StarScript, Kylix, Netscape Communicator và Worderinf thường được tìm thấy ở đây.

( trích dẫn từ TLDP )


9
Không / opt chỉ được sử dụng cho các gói không có trong repos? Các thư mục ứng dụng cho inkscape, gimp, nhịp điệu, vv được đặt trong / usr / share. Điều đó có tương đương không?
c76c3r8c42b347r8

5
Xem linuxfoundation.org/en/FHS để biết thêm thông tin gần đây về phân cấp hệ thống tập tin (FHS). (Lưu ý: Trang web hiện đang ngừng hoạt động nhưng sẽ sớm sao lưu).
jw013

@Toxicbits: Ít nhất trên Gentoo trong / opt có các gói nhị phân - đặc biệt là các gói không thể cài đặt thành / usr do phân cấp hệ thống tệp không chuẩn.
Maciej Piechotka

TLDP có vẻ tuyệt vời! Vâng, trên một lưu ý phụ; Lần đầu tiên tôi nhìn thấy TLDP, tôi đã nghĩ: "quá lâu không ... đỉnh? sao?"
Ege Özcan

3
Điều này là không đúng. / bin chỉ chứa các chương trình thực thi. Thư mục Tệp chương trình Windows chứa thư mục con cho mỗi ứng dụng đã cài đặt, chứa tất cả các tệp thực thi, dlls, tệp dữ liệu và mọi thứ khác cần thiết bằng / vận chuyển cùng với ứng dụng.
psusi

45

Không có tương đương trực tiếp. Cấu trúc thư mục rất khác nhau. Trong Windows, bạn có một thư mục duy nhất cho mỗi gói / phần mềm được cài đặt có chứa tất cả các tệp liên quan đến (ví dụ C:\Program Files\MyProgram). Trong Linux, mỗi phần mềm được "phân tán" trong nhiều thư mục theo loại tệp và một số quy tắc khác.

Ví dụ, chúng ta có thể kiểm tra nơi các tệp khác nhau liên quan đến xscreensaverchương trình được cài đặt:

/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
[ ... ]

Đừng lo lắng, thường là khi một trình cài đặt yêu cầu nơi để cài đặt vào, câu trả lời chính xác là một trong những cách sau: /, /opt, /usr,/usr/local

Như bạn có thể thấy, khá tất cả (1) tệp xscreensaverđược cài đặt /usrtheo một số quy tắc đơn giản: tệp thực thi trong /usr/bin, trang hướng dẫn trong /usr/share/man, tài liệu trong /usr/share/doc/packages/PROGRAMNAMEvà vv.

Khi một trình cài đặt yêu cầu cài đặt prefix, thông thường nó muốn bây giờ là đường dẫn cơ sở để cài đặt chương trình. Trong xscreensaverví dụ của tôi , nó là /usr.

Theo quy tắc đơn giản: /chỉ nên chứa chương trình cần thiết để khởi động hệ thống (như C:\windows\system32), /usr/localnên chứa các chương trình chỉ cần trên máy tính duy nhất đó, /opt(2) tất cả các chương trình tùy chọn có cấu trúc thư mục không chuẩn và /usrtất cả phần mềm tiêu chuẩn .

Trong mọi trường hợp, nó tồn tại một tiêu chuẩn xác định tất cả các quy tắc này một cách chi tiết: Tiêu chuẩn phân cấp hệ thống tập tin

(1) tập tin cấu hình trên toàn hệ thống phải nằm trong /etc

(2) khá lỗi thời trong Linux


/optđược ưa thích cho phần mềm bên thứ ba trong /usr/localmột thời gian khá lâu.
Steve-o

7
Chỉ là một lời giải thích, /usr/shaređược gọi là "chia sẻ" bởi vì nó được chia sẻ giữa các kiến ​​trúc khác nhau (tài liệu, tập lệnh, hình ảnh), trong khi /usr/lib*dành cho các tệp phụ thuộc vào kiến ​​trúc (và không phải là tệp thực thi /usr/bin).
eudoxos

12

Ususually, /bin, /usr/bin, /usr/local/bin, hoặc /opt/bin. Tôi nghĩ /usr/bin/opt/binlà gần nhất với Tệp chương trình, vì thông thường chúng dành cho các tệp nhị phân không quan trọng của hệ thống được cài đặt bởi quản trị viên hệ thống, mặc dù không giống như các cửa sổ này đều chứa các chương trình được cài đặt với trình quản lý gói. Trường hợp /usr/local/bindành cho phần mềm đóng gói không phân phối. /binlà cho hệ thống nhị phân quan trọng như /bin/sh.


Tại sao bốn lựa chọn? /bin, /usr/bin, /usr/local/binHoặc /opt/bin. Không có một vị trí tiêu chuẩn? Lý do tôi hỏi là vì tôi đang cài đặt phần mềm trên một vài máy ảo và vị trí mặc định sẽ phân vùng có không gian lớn nhất. Tôi muốn thay đổi không gian phân vùng thành thư mục nơi phần mềm thường đến và không để phần mềm được đặt khác nhau trong tất cả các máy ảo.
Thomas

1
tiêu chuẩn chỉ định nhiều vị trí idk tại sao tên đường dẫn không hoạt động nhưng đây là một liên kết đến FHS được lưu trong bộ nhớ cache để hiểu rõ hơn về những thứ này là gì và thực sự nó phụ thuộc rất nhiều vào những gì bạn đang cài đặt. Ngoài ra, RHEL, Suse và Ubuntu cũng khác nhau nên họ có thể đặt cùng một thứ ở những vị trí hơi khác nhau. /optví dụ thường được sử dụng cho phần mềm độc quyền.
xenoterracide

Ngoài ra, thông thường ... thông thường tất cả đều nằm trên cùng một phân vùng ... đôi khi /usr/là một phân vùng riêng.
xenoterracide

1
Một số người (ví dụ dự án Hurd) cho rằng /binvà sự /usr/binphân biệt đối xử đã lỗi thời; lịch sử, công cụ hệ thống quan trọng sẽ được /bin, /lib... (trực tiếp trong thư mục gốc), trong khi /usr(với /usr/bin, /usr/lib...) sẽ được gắn sau (có lẽ qua mạng), không phải là cần thiết cho chức năng hệ thống cơ bản.
eudoxos

1
@Thomas, /optkhông nên thoát. Một số người thường nghĩ rằng trước đây nên có một số ứng dụng ở một vị trí khác với tất cả các ứng dụng khác. /binlà trên phân vùng gốc. Vì trên một số hệ thống, không gian trên phân vùng gốc bị giới hạn, các nhị phân không thiết yếu (tức là tất cả các ứng dụng người dùng) đã được chuyển đến /usr/bin.
Ngày

8

Hãy xem man hierđó là "Mô tả hệ thống phân cấp tệp".


3

Như những người khác đã chỉ ra, các chương trình được cài đặt thông qua trình quản lý gói nằm rải rác trên một số thư mục. Mặc dù nhị phân thường được tìm thấy /usr/bin, các tệp cấu hình trên toàn hệ thống /etc, v.v.

Nếu một ứng dụng không được cài đặt thông qua trình quản lý gói, các tệp sẽ được cài đặt ở nơi chúng không can thiệp vào trình quản lý gói. Nơi này là /usr/local.

Nếu bạn được yêu cầu một đường dẫn cài đặt, lựa chọn phổ biến nhất sẽ là /usr/local/appname


3

Nhập echo $PATHvào thiết bị đầu cuối của bạn để xem (các) đường dẫn mà shell sẽ nhìn vào để tìm lệnh. Nó đi kiểm tra một tập tin theo thứ tự nó được in.


1
Điều này không đáp ứng với những gì OP đã yêu cầu.
Francesco Turco

1

Vâng, bạn sẽ không tìm thấy tất cả các giải pháp của mình /binsbinvì chúng chứa hầu hết các lệnh hệ thống (tức là các lệnh được sử dụng bởi hệ thống).

/usr/binlý tưởng có thể được gọi là "Program Files"thế giới unix. Về /optrất ít gói lựa chọn sử dụng vị trí đó để cài đặt, áp dụng tương tự cho các gói sử dụng /etc/hoặc /varlàm vị trí

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.