Các thư mục có tệp nhị phân trong Linux


8

Tôi nhận thấy rằng khi tôi cài đặt ứng dụng mới, có một vài thư mục có thể có tệp nhị phân kết quả sẽ được đặt.

Bạn có thể cài đặt với trình quản lý đóng gói, biên dịch với make, easy_installcho Python, v.v.

Ngoại hình của tôi $PATHnhư sau:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Có một số quy ước hoặc quy tắc xác định trong thư mục nào nên đặt nhị phân (hoặc thư viện)?

Tôi nhận thấy rằng khi bạn biên dịch mã nguồn, kết quả thường nằm trong /usr/local/bin/. Đây có phải là quy tắc?

Bạn có thể viết câu trả lời giải thích triết lý Unix (quyết định thiết kế và quy ước) theo nhị phân không và tại sao lại theo cách này (tại sao không chỉ sử dụng một thư mục cho tất cả các nhị phân)

Câu trả lời:


9

Không có quy tắc cứng và nhanh nhưng mỗi phân phối có logic riêng đằng sau việc đặt những thứ họ làm. Nói chung, /binđược sử dụng cho các nhị phân hệ thống, /usr/bincho các ứng dụng mặc định đi kèm với phân phối và /usr/local/bincho những thứ được cài đặt bên ngoài phân phối bình thường. Bạn có thể thêm một X11vào bất kỳ cái nào cho các nhị phân X11 - /usr/X11/bin/usr/local/X11/binkhá phổ biến. Một số phần mềm sẽ cài đặt /optlà tốt.

Bài viết này có một lời giải thích sâu hơn cho những điều trong /. Và tất nhiên, wikipedia có một trang.


6

Ngoài câu trả lời của @Sardathrion , các sbinthư mục thường được sử dụng cho các tệp nhị phân cho các loại công cụ quản lý hệ thống, ứng dụng hệ thống cấp thấp và thường là các loại trình nền hệ thống.

Ví dụ: trong số sbincác bạn sẽ tìm thấy những thứ như /sbin/init(điều khiển quá trình khởi động khi kernel đã hoàn thành khởi tạo bên trong), /sbin/hdparm(đọc và đặt tham số vận hành đĩa cứng), /usr/sbin/cupsd(in daemon), /usr/sbin/smartctl(đọc dữ liệu SMART từ đĩa cứng), và như thế.

Quy ước chung cũng /usrđược quản lý bởi người quản lý gói và /usr/localđược quản lý bởi người dùng hoặc quản trị viên hệ thống (trong trường hợp hai không phải là một và giống nhau). Điều này có tiền lệ lịch sử: khi không gian đĩa đắt tiền, / usr có thể được gắn chỉ đọc qua mạng và được chia sẻ giữa nhiều máy trạm ngay cả với các hệ thống không hỗ trợ khởi động mạng hoàn toàn. Mỗi máy trạm sau đó có thể có một hệ thống tập tin gốc (tương đối nhẹ), tương đối nhỏ, cũng như có thể là một hệ thống tập tin gốc (tương đối nhẹ /). Sự khác biệt giữa / usr và / usr / local rất có thể là lý do tại sao hầu hết các gói mặc định để cài đặt vào / usr / local khi được xây dựng từ mã nguồn.


2

Các hệ thống tập tin tiêu chuẩn cấp bậc xác định nơi phân phối Linux nên đặt file .

binthư mục chứa các tệp thực thi dự định sẽ được sử dụng bởi bất kỳ người dùng nào, trong khi các sbinthư mục chứa các tệp thực thi chỉ dành cho người quản trị hệ thống sử dụng. sbinthư mục thường chỉ có trong root $PATH.

/bin(và /sbin) chứa các chương trình cần thiết sớm trong quá trình khởi động, bởi vì /usrcó thể được gắn trên một phân vùng riêng (mặc dù điều này rất hiếm khi xảy ra).

/usr/bin(và /usr/sbin) chứa các chương trình được cung cấp bởi bản phân phối và không có trong /binhoặc /sbin. Trên một hệ thống điển hình, phần lớn các tệp thực thi được đặt vào /usr/bin.

Hệ /usr/localthống phân cấp là lĩnh vực của quản trị viên. Các thư mục /lib, /bin, /sbin/usrthường được dành cho phân phối, và thường chỉ chứa tập tin được cung cấp bởi người quản lý gói hệ thống. /usr/local(và đặc biệt /usr/local/bin/usr/local/sbin) không bị người quản lý gói xử lý, vì vậy đây là nơi quản trị viên cục bộ có thể đặt các tệp thực thi được cài đặt thủ công.

/usr/gamescó thể chứa các tệp thực thi được cung cấp bởi phân phối và được coi là hoàn toàn giải trí. Nó phần lớn là một sự sống sót trong lịch sử (một thời gian dài trước đây, /usr/gamescó thể vượt quá giới hạn vào một số thời điểm nhất định trong ngày, nhưng loại thực hành này - dù dễ dàng để làm việc xung quanh - dù sao cũng đã chết).

Các vị trí thực thi phổ biến khác trên hệ thống Linux bao gồm:

  • /usr/X11R6/binhoặc /usr/bin/X11cho các chương trình X. Việc thực hành tách các chương trình X khỏi các chương trình không phải X đã không còn nữa; hiện nay tất cả họ đều sống trong /usr/bin.
  • /usr/bin/mhđối với các tệp thực thi của ứng dụng email MH , thao tác email thông qua các lệnh shell đơn mục đích ( showđể hiển thị thư, forwđể chuyển tiếp thư, thì) Chỉ người dùng MH mới đưa /usr/bin/mhvào $PATH.
  • /opt/bin, nếu nó tồn tại, sẽ chứa các liên kết tượng trưng đến các ứng dụng được cài đặt trong /opt.

Các quy tắc cho Linux được lấy cảm hứng từ các hướng dẫn chung theo hầu hết các hệ thống unix, nhưng mỗi biến thể unix có các đặc điểm riêng. Ví dụ:

  • Trên * BSD //usrchỉ chứa lõi của phân phối: các dịch vụ và ứng dụng cơ bản được duy trì trực tiếp bởi các nhà duy trì phân phối. Các chương trình của bên thứ ba (các gói của các ứng dụng trên các gói của các ứng dụng của các gói của chúng tôi được cài đặt /usr/local, ngay cả khi chúng được quản lý bởi một người quản lý gói. Không có vị trí riêng biệt thường được chấp nhận cho các chương trình được cung cấp bởi quản trị viên hệ thống.
  • Một số hệ thống unix không có /binthư mục, đó là một liên kết tượng trưng đến /sbinhoặc /usr/bin.
  • Một số hệ thống có thể có các thư mục bổ sung chứa gói tùy chọn, mỗi thư mục sẽ đặt binthư mục riêng vào $PATH.
  • Một số hệ thống có thể có các thư mục phụ mà có thể hoặc không thể được đặt trên $PATHtùy thuộc vào những gì các môi trường thực thi phải phù hợp với, ví dụ /usr/bin/posixhay /usr/xpg4/binhay /usr/xpg6/binđể tương thích với POSIX / Single Unix, hoặc /usr/ucbđể tương thích với các hệ thống di sản BSD.

Một điểm khởi đầu cho điều này là man hier.
Phục hồi Monica - M. Schröder
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.