Tại sao gói của tôi được cài đặt để / opt?


8

Một lúc trước, tôi đã cài đặt couchdb từ nguồn trên máy debian của mình. Nó dường như để cài đặt ổn và mọi thứ đã làm việc.

Vài tuần sau tôi muốn nâng cấp và cài đặt từ một .deb bằng dpkg. Tất cả mọi thứ bây giờ dường như đã được cài đặt dưới /opt. Tất cả dường như hoạt động tốt, nhưng tôi không thực sự hiểu tại sao tất cả được cài đặt bên dưới /opt. Nó không cảm thấy như "mịn" như khi mọi thứ đã được cài đặt trực tiếp vào /usr/local/bin/etc/var/log. Cấu hình phức tạp hơn so với khi trước đây tôi chỉ chỉnh sửa các tệp cấu hình được cài đặt trong / etc / couchdb

Ai đó có thể giải thích cho tôi tại sao cài đặt /optlà "một điều tốt" và tại sao đây là cách làm tốt hơn so với cài đặt trước đó từ nguồn?

Tôi biết đây là một câu hỏi khá mơ hồ nhưng tôi chỉ có năng lực với Linux chứ không phải là một chuyên gia và không hiểu được suy nghĩ đằng sau việc cài đặt vào /opt


Có lẽ thiếu thẻ / debian?
D4RIO

Bạn đang nói rằng một gói Debian được cài đặt trong / opt? Nếu vậy, nó đang làm điều sai trái. Tôi cũng có một ứng dụng Google Chrome (hiện chưa được cài đặt) được cài đặt trong / opt. Tất cả mọi thứ được quản lý bởi hệ thống gói nên đi vào hệ thống chính.
Faheem Mitha

Khi xem xét kỹ hơn, tôi không thể tìm thấy một tuyên bố rõ ràng trong chính sách rằng cài đặt gói Debian (bất kể đó là chính thức hay không) không nên cài đặt trong / opt, mặc dù tôi có ấn tượng mạnh mẽ rằng điều này không nên được thực hiện và ở đó là những bình luận khác nhau trên mạng rằng làm như vậy là điều sai. Nếu tôi tìm thấy bất cứ điều gì chắc chắn hơn, tôi sẽ đăng nó. AFAIK, Debian không mong đợi hoặc yêu cầu các gói không chính thức để cài đặt ở một nơi khác với các gói chính thức.
Faheem Mitha

Câu trả lời:


10

Các hệ thống tập tin tiêu chuẩn cấp bậc cho các định nghĩa này:

  • /opt : Gói phần mềm ứng dụng bổ trợ
  • /usr/local : Phân cấp cục bộ (để quản trị viên hệ thống sử dụng khi cài đặt phần mềm cục bộ)

Cách tôi đọc rằng:

  • Các ứng dụng hệ thống tiêu chuẩn nên đi vào /bin/usr/bin(ngụ ý)
  • Các gói của bên thứ ba nên đi vào /opt
  • Một cái gì đó chỉ nên được cài đặt vào /usr/localnếu quản trị viên hệ thống muốn nó

Theo tiện ích mở rộng, nếu sysadmin cài đặt một cái gì đó bằng cách sử dụng dpkghoặc rpm, nó không nên đi vào /usr/localmặc định.

Vì vậy, nó được cho là làm đúng.


Máy chủ ứng dụng Websphere của IBM đi vào / opt. Ngoài ra, khi tôi cài đặt một cái gì đó như IBM JDK, tôi đặt nó vào / opt / java.
djangofan

5

Chính sách Debian nói

9.1.2 Chương trình dành riêng cho trang web

Theo quy định của FHS, các gói không được đặt bất kỳ tệp nào vào /usr/local, bằng cách đưa chúng vào kho lưu trữ hệ thống tệp để được giải nén bởi dpkg hoặc bằng cách thao tác chúng trong các tập lệnh bảo trì của chúng.

Không có sự cấm đoán cụ thể như vậy chống lại /opt. Chính sách cũng cho biết thêm

Vị trí của tất cả các tệp và thư mục đã cài đặt phải tuân thủ Tiêu chuẩn phân cấp hệ thống tệp (FHS), phiên bản 2.3, với các ngoại lệ được ghi chú bên dưới và ngoại trừ trường hợp làm như vậy sẽ vi phạm các điều khoản khác của Chính sách Debian.

Tiêu chuẩn phân cấp tệp cho biết

Các thư mục /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib, và /opt/manđược dành riêng cho sử dụng quản trị hệ thống của địa phương.

và sau đó tiếp tục xuống

Phân phối có thể cài đặt phần mềm /opt, nhưng không được sửa đổi hoặc xóa phần mềm được cài đặt bởi quản trị viên hệ thống cục bộ mà không có sự đồng ý của quản trị viên hệ thống cục bộ.

Lưu ý rằng Chính sách dành cho chính Debian, nhưng nó thường tương ứng với khuyến nghị thực hành tốt nhất. Kết quả cuối cùng, nếu tôi đọc chính xác điều này, thì việc cài đặt các gói nhị phân (deb) là không ổn /usr/local, nhưng cài đặt trong /optchừng nào nó không ảnh hưởng đến việc sử dụng không gian của sysadmin.

Ý kiến ​​cá nhân của tôi là một ý tưởng tồi khi có các gói deb trong một /usr/localhoặc /opt. Tôi không đồng ý với D4RIO khi anh ấy nói:

Có một gói Couchdb cho Debian (ý tôi là chính thức), vì vậy nếu bạn đã tải xuống một gói khác, thì Ok, nó phải được cài đặt trong /opthoặc /usr/local/binmột trong hai.

Nói chung, bạn không muốn hai gói gỡ lỗi khác nhau tương ứng với cùng một phần mềm được cài đặt và nếu chúng thực sự là cùng một tên gói, dpkg sẽ không cho phép nó. Các gói phần mềm Debian không chính thức có sẵn như một gói chính thức thông thường (nhưng không phải luôn luôn) có cùng tên với các gói chính thức; bạn chỉ cần cài đặt cái này hoặc cái kia, không phải cả hai.

Đối với những gì đáng giá, tôi nghĩ rằng việc đưa các gói deb vào /optlà một ý tưởng tồi và sự xuất hiện gần đây duy nhất của điều này tôi đã thấy là với Google Chrome. Tuy nhiên, Google không phải lúc nào cũng tuân theo các thực tiễn tốt nhất.


Hoàn toàn đồng ý rằng một gói không nên cài đặt vào / opt, đặc biệt là nếu nó đặt các tệp ở nơi khác giống như trong / usr / bin. Imho / opt nên chứa phần mềm hoàn toàn độc lập để bạn có thể nuke nó khỏi quỹ đạo bằng cách chỉ cần xóa nó khỏi / opt.
Arrowmaster

Được rồi, phản hồi tuyệt vời cảm ơn nhưng nó được cài đặt để / opt theo mặc định. Nếu không / opt thì tôi nên cài đặt nó ở đâu? Và làm thế nào để sử dụng dpkg?

@Duke: Nếu bạn có thể lấy nguồn của gói deb, bạn có thể xây dựng lại deb để cài đặt vào hệ thống như các gói thông thường. Điều này sẽ đòi hỏi một chút công việc nếu bạn chưa quen với thủ tục, nhưng imo đó là điều chính xác để làm ở đây.
Faheem Mitha

1
không đồng ý với câu trả lời này Có rất nhiều tình huống bạn muốn cài đặt hai phiên bản phần mềm, bạn có thể dễ dàng muốn có một con trăn cụ thể cho một ứng dụng cụ thể. Một sysadmin địa phương có thể muốn gói con trăn này, nó nên đi đâu? Phần mềm được cài đặt cục bộ (cài đặt) đi vào / usr / local, phần mềm đóng gói thứ 3 đi vào / opt / - định nghĩa của các gói được giữ rộng: qua dpkg, qua trình cài đặt, qua PIP, thông qua (chèn hệ thống đóng gói tùy chọn). Tôi đồng ý rằng đó là thông lệ tốt về "nhà cung cấp / gói" khép kín.
tro gỗ

4

/optdành cho phần mềm của bên thứ ba. Có một gói couchdb cho debian (ý tôi là chính thức), vì vậy nếu bạn đã tải xuống một gói khác, thì Ok, nó phải được cài đặt trong /opthoặc /usr/local/binmột trong hai.


2

Mặc dù không phải là Debian, nhưng Nguyên tắc đóng gói của Fedora khá rõ ràng về điều này:

Gói không có Fedora có thể có bất kỳ tệp hoặc thư mục nào dưới / opt hoặc / usr / local

Lý do cho các gói không đưa mọi thứ vào / opt khá đơn giản: Như đã được chỉ ra trước đó, Tiêu chuẩn phân cấp tệp tuyên bố rằng

Phân phối có thể cài đặt phần mềm trong / opt, nhưng không được sửa đổi hoặc xóa phần mềm được cài đặt bởi quản trị viên hệ thống cục bộ mà không có sự đồng ý của quản trị viên hệ thống cục bộ.

Đó là điều không thể được đảm bảo bởi các gói vì cài đặt hoặc cập nhật có thể sửa đổi dữ liệu đó.

Tôi biết Fedora không phải là Debian, nhưng tôi đoán rằng trong trường hợp này, chúng khá giống nhau. Đặc biệt là từ Lintian, công cụ kiểm tra gói cho Debian, có một lỗi đặc biệt cho việc này: dir-hoặc-file-in-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.