/ usr / địa phương hoặc / opt?


43

Làm thế nào để bạn thường tiến hành cài đặt gói của bạn trên Linux, cho các gói không phải là một phần của kho của nhà phân phối của bạn?

Về phía tôi, tôi được sử dụng để cài đặt trong / opt. Nhưng kể từ đó, tôi đã thấy tài liệu này trên Internet: http://www.pathname.com/fhs/ . Bây giờ tôi bối rối: rõ ràng / usr / local cũng sẽ là một khả năng.

Sự khác biệt giữa cả hai là gì? Bất kỳ thực hành tốt nhất để chia sẻ?

Cảm ơn

SirFabel


Lãnh thổ thánh chiến không thực sự là một chủ đề lập trình để khởi động.
dmckee

1
Câu hỏi tương tự trong Hỏi Ubuntu , superuser , unix & linux
kenchew 7/10/2016

Câu trả lời:


32
  • Mọi thứ phải được biên dịch và cài đặt theo kiểu Unix và tuân thủ FHS ->/usr/local
  • Mọi thứ khác (ví dụ: ứng dụng web java đi kèm với máy chủ ứng dụng của riêng nó và tải tài nguyên trong kho lưu trữ zip -> /opt

lintian không cho phép các gói được cài đặt trên / opt nor / usr / local nữa
Cristiano

24

Cũng giống như thông tin thú vị bổ sung: Ý nghĩa ban đầu của /usr/localnó là nếu /usrđược gắn kết mạng ( /usrchia sẻ đơn trên nhiều máy tính), /usr/localsẽ là một hệ thống tệp riêng biệt cục bộ với máy tính (phân vùng trên đĩa cục bộ).

Và trong khi về chủ đề đó, ngay cả khi nó lạc đề với câu hỏi: Nếu có nhiều máy tính có kiến ​​trúc khác nhau, tự nhiên sẽ có một máy tính /usrcho mỗi vòm, nhưng /usr/sharesẽ là một hệ thống tệp riêng biệt khác được chia sẻ giữa các kiến ​​trúc (do đó là 'chia sẻ') .


4
Không ... trong lịch sử (vâng, tôi đã ở đó!) / Usr et al có những thứ do nhà cung cấp cung cấp, / usr / local là những thứ được cài đặt cục bộ (ví dụ: bash, gcc và những thứ hay ho khác).
vonbrand

@vonbrand Bạn có thực sự mâu thuẫn với câu trả lời? Có vẻ như bất cứ điều gì cần được chia sẻ giữa máy chủ sẽ là / usr và bất cứ điều gì không cần cũng vậy, sẽ ở / usr / local
Didier A.

@Didier A., ​​khi tôi bắt đầu sử dụng Unix ('80es), có một máy, không có mạng ... và họ có / usr và / usr / local.
vonbrand

@vonbrand ơi tôi hiểu rồi, thú vị. Sau đó, có vẻ như mục đích ban đầu của việc có / usr và / usr / local vẫn còn là một bí ẩn.
Didier A.

Tài khoản . Không chuẩn, chỉ sử dụng thông thường.
vonbrand

7

Cách tôi làm là nếu nó yêu cầu tiền tố cho chính nó HOẶC đó là gói nhị phân, tôi chọn / opt (khá giống với cách của Solaris). Nếu tôi đang biên dịch từ nguồn / usr / local là cách tôi đi.


6

Tôi đặt mọi thứ trong một thư mục riêng và sau đó sử dụng GNU stow .

Vì vậy, tôi sẽ cài đặt gói X.ver tới /BASE/stow/X.ver. GNU Stow sau đó sẽ kết hợp tất cả các gói (với liên kết tượng trưng) vào /BASE/bin, /BASE/libvv

Xung đột và loại bỏ các gói dễ dàng hơn để giải quyết.


Tôi thường sử dụng / usr / local / stow / <packagename> làm ngôi nhà cho "gói" stow và cảm thấy như đó là một cách thực hành tốt - nếu ai đó nhìn vào / usr / local thì rõ ràng điều gì đang xảy ra và những gì đang diễn ra hệ thống đang duy trì các liên kết tượng trưng.
Stephanie

3

Đây là cách tôi diễn giải tiêu chuẩn FHS:

/ usr / local dành cho các tệp được cài đặt cục bộ hoặc được cài đặt cục bộ, cho dù được đóng gói hay không phần nào trở thành một phần của phiên bản đó của Hệ điều hành.

/ opt là nơi để cài đặt các gói "nước ngoài" không phải là một phần của Hệ điều hành.

Miễn là bạn chỉ sử dụng các tệp trên một hệ thống duy nhất nơi bạn xây dựng chúng, / usr / local là ổn, và đó là thư mục cơ sở mặc định cho phần lớn phần mềm nguồn mở.

Nếu bạn dự định phân phối lại gói của mình, tôi sẽ khuyên bạn nên sử dụng thư mục cơ sở tùy chỉnh như / opt / myPackage.


2

Solaris đã sử dụng / opt rất nhiều. Nhiều bản phân phối Linux hiện đại hiện đang mong đợi các gói trong / usr / local /. Ý tưởng là như nhau - một nơi để đặt phần mềm làm cho cỗ máy này làm những gì nó làm, trái ngược với hệ điều hành. Nó gần giống với "Tệp chương trình" trên hệ thống Windows.

Chọn một và dính vào nó. Nó đủ dễ để symlink / opt to / usr / local.


Tôi thích bình luận của Lee, cách hay để suy nghĩ về vấn đề này. Tôi cảm thấy hơi kỳ lạ khi có / opt trên máy Debian, nhưng đó có lẽ chỉ là sở thích cá nhân.
Kyle Hodgson

Xin đừng. FHS có thể có một chút thời gian, nhưng lý do của / usr vs / usr / local vs / opt là âm thanh: Tiêu chuẩn, phân phối được cung cấp; cài đặt cục bộ, như homebrew hoặc các công cụ thử nghiệm ngoài github; nhà cung cấp công cụ không chuẩn.
vonbrand

0

Nếu bạn biên dịch lại một phần mềm do phân phối hệ điều hành của bạn cung cấp, để tận dụng một số lợi thế kiến ​​trúc dành riêng cho máy của chính bạn, hãy sử dụng / usr / local.

Nếu bạn thêm một phần mềm từ các nguồn khác, ngoài phân phối hệ điều hành của bạn, hãy đặt nó vào / opt.

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.