it-swarm-vi.com

/ usr / bin vs / usr / local / bin trên Linux

Tại sao có nhiều nơi để đặt nhị phân trong Linux? Có ít nhất năm điều này:

  1. /bin/
  2. /sbin/
  3. /usr/bin/
  4. /usr/local/bin/
  5. /usr/local/sbin/

Và trên hộp văn phòng của tôi, tôi không có quyền ghi vào một số trong số này.

Loại nhị phân nào đi vào loại nào trong số bins này?

487
Lazer
  1. /bin (Và /sbin) Được dành cho các chương trình cần có trên một phân vùng nhỏ / Trước khi phân vùng /usr, V.v. Ngày nay, nó chủ yếu phục vụ như một vị trí tiêu chuẩn cho các chương trình chính như /bin/sh, Mặc dù mục đích ban đầu vẫn có thể có liên quan cho ví dụ: cài đặt trên các thiết bị nhúng nhỏ.

  2. /sbin, Khác với /bin, Dành cho các chương trình quản lý hệ thống (thường không được người dùng thông thường sử dụng) cần thiết trước khi /usr Được gắn kết.

  3. /usr/bin Dành cho các chương trình người dùng thông thường được quản lý phân phối.

  4. /usr/sbin Có cùng mối quan hệ với /usr/bin/sbin Phải /bin.

  5. /usr/local/bin Dành cho các chương trình người dùng thông thường không được quản lý bởi người quản lý gói phân phối, ví dụ: gói biên dịch địa phương. Bạn không nên cài đặt chúng vào /usr/bin Vì các nâng cấp phân phối trong tương lai có thể sửa đổi hoặc xóa chúng mà không cần cảnh báo.

  6. /usr/local/sbin, Như bạn có thể đoán vào thời điểm này, là /usr/local/bin Dưới dạng /usr/sbin Thành /usr/bin.

Ngoài ra, cũng có /opt Dành cho các gói không phân phối nguyên khối, mặc dù trước khi chúng được tích hợp chính xác, các bản phân phối khác nhau đặt Gnome và KDE ở đó. Nói chung, bạn nên dành nó cho các gói bên thứ ba lớn, hoạt động kém như Oracle.

600
geekosaur

Tôi khuyên bạn nên xem trang người đàn ông phân cấp hệ thống tệp:

man hier

cũng có sẵn trực tuyến, ví dụ: http://linux.die.net/man/7/hier . Các phần có liên quan đã được sao chép dưới đây. Tùy thuộc vào hệ thống của bạn, nó có thể nói điều gì đó khác nhau.

Tên

    hier - mô tả hệ thống phân cấp tập tin

Sự miêu tả

    Một hệ thống Linux điển hình có các thư mục sau:

    [.__.] /bin [.__.]
      Thư mục này chứa các chương trình thực thi cần thiết trong chế độ người dùng đơn lẻ và để đưa hệ thống lên hoặc sửa chữa nó.
      [.__.]
    [.__.] /sbin [.__.]
      Giống /bin, thư mục này chứa các lệnh cần thiết để khởi động hệ thống, nhưng thường không được thực thi bởi người dùng thông thường.
      [.__.]
    [.__.] /usr/bin [.__.]
      Đây là thư mục chính cho các chương trình thực thi. Hầu hết các chương trình được thực thi bởi người dùng bình thường không cần thiết để khởi động hoặc sửa chữa hệ thống và không được cài đặt cục bộ nên được đặt trong thư mục này.
      [.__.]
    [.__.] /usr/local/bin [.__.]
      Binaries cho các chương trình địa phương đến trang web.
      [.__.]
    [.__.] /usr/local/sbin [.__.]
      Các chương trình cài đặt cục bộ cho quản trị hệ thống.
      [.__.]
    [.__.] /usr/sbin [.__.]
      Thư mục này chứa các tệp nhị phân chương trình để quản trị hệ thống, không cần thiết cho quá trình khởi động, để gắn /usr, hoặc để sửa chữa hệ thống.
69
davitenio

Mục nhập Tiêu chuẩn phân cấp hệ thống tập tin trong Wikipedia đã giúp tôi trả lời câu hỏi tương tự khi tôi có nó, cộng với nó có một bảng rất giải thích.

Trích từ trang đó1:

/bin        Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp.
/usr/bin    Non-essential command binaries (not needed in single user mode); for all users.
/usr/local  Tertiary hierarchy for local data, specific to this Host. Typically has further subdirectories, e.g., bin, lib, share
/usr/sbin   Non-essential system binaries, e.g., daemons for various network-services.
/sbin       Essential system binaries, e.g., fsck, init, route.

1Truy cập ngày 19 tháng 6 năm 2019; permalink .

36
Humphrey Bogart

Các thư mục sbin chứa các chương trình thường chỉ quản trị hệ thống. Các chương trình cho người dùng thường xuyên không bao giờ nên đi trong đó.

Một vài chương trình là cần thiết trong quá trình khởi động, và kết thúc bằng /bin/ hoặc là /sbin/. Chúng phải có sẵn trước khi hệ thống tập tin được gắn kết. Những thứ như mountfsck được yêu cầu để kiểm tra và gắn kết các hệ thống tệp phải ở đó.

Hầu hết các chương trình đóng gói kết thúc bằng /usr/bin//usr/sbin/. Chúng có thể nằm trên một hệ thống tệp khác với hệ thống tệp gốc. Trong một số trường hợp, chúng có thể nằm trên một ổ đĩa gắn trên mạng.

Các chương trình và tập lệnh cục bộ thuộc về /usr/local/bin//usr/local/sbin/. Điều này xác định chúng rõ ràng là không chuẩn và có thể chỉ có sẵn trên trang web.

Để được giải thích thêm, hãy thử chạy lệnh man hier sẽ cung cấp mô tả về phân cấp hệ thống tệp được đề xuất cho phân phối của bạn. Bạn cũng có thể muốn đọc về Phân cấp hệ thống tệp trên Wikipedia

17
BillThor

Vào những năm 1970, UNIX có tất cả các tệp thực thi chính thức trong /bin/usr/bin là một vị trí bên dưới thư mục nhà của người dùng (ví dụ: /usr/dmr) đã có sẵn cho bất kỳ người dùng nào để lưu trữ nhị phân của riêng họ mà có thể cũng được người khác quan tâm.

Kết quả của việc mở /usr/bin là một bãi rác của phần mềm không có giấy tờ và vì vậy Stephen Bourne đã viết một cron script đã kiểm tra các tệp nhị phân mới mỗi đêm và xóa tất cả các tệp nhị phân không có tài liệu hoặc đã được cập nhật mà không cập nhật tài liệu của chúng.

Vào cuối những năm 1970, /usr/bin đã được tích hợp vào phân phối cơ sở HĐH và mọi người bắt đầu sử dụng /usr/local/bin cho mục đích mở trước /usr/bin.

Sau một thời gian, sysadmin đã sử dụng /usr/local/bin để lưu trữ non-local phần mềm được nhập từ mạng (ví dụ: USENET) và vì các công ty UNIX không muốn lặp lại lỗi tương tự như với /usr/bin một lần nữa, có một hội nghị phân cấp hệ thống tệp vào khoảng năm 1987 nơi tất cả các công ty UNIX đồng ý từ bỏ /usr/local/bin và sử dụng /opt/<vendor>/bin thay thế.

Thật không may, các bản phân phối Linux đã không tuân theo quyết định này ....

11
schily