Tại sao tôi nên chuyển mọi thứ vào / opt?


16

Mỗi lần tôi đọc các mẹo để cài đặt SDK, IDE, một số tiện ích mở rộng, v.v., tôi nói rằng tôi nên giải nén chúng trong /optthư mục. Tại sao tôi cần phải làm điều đó?

Khi tôi đang cài đặt Ubuntu, tôi đọc rằng tôi chỉ nên đặt 10-20 GiB cho /hệ thống tệp và không gian còn lại được đặt cho /home. Vì vậy, tôi nên mở rộng không gian cho thư mục gốc, hoặc để lại tất cả mọi thứ tại /home? Có sự khác biệt nào không?


1
Bạn có hai câu hỏi ở đây. Chỉ có một câu hỏi cho mỗi bài viết được cho phép. Vui lòng chỉnh sửa bài đăng của bạn và nếu bạn muốn, bạn có thể đăng một câu hỏi khác liên quan đến kích thước hoặc thư mục nhà
Sergiy Kolodyazhnyy


Câu trả lời:


20

Trước tiên, hãy hiểu rằng bất kỳ thư mục nào không rõ ràng là một điểm gắn kết cho một phân vùng riêng (hoặc thư mục con của một điểm gắn kết như vậy) được lưu trữ trên /phân vùng gốc ( ). Do đó, nếu bạn đã có root ( /) và /home, và không có phân vùng nào khác, /optthư mục của bạn chỉ đơn giản là một thư mục trên root ( /). Tương tự như vậy cho /tmp, /sbinvà bất cứ điều gì khác. Do đó, câu hỏi ban đầu dựa trên tiền đề sai là bạn cần các phân vùng riêng cho mọi thư mục dẫn ra khỏi root ( /) và do đó không thể được trả lời trực tiếp.

Thứ hai, /optđược sử dụng cho phần mềm của bên thứ ba, trong ngữ cảnh của Ubuntu, có nghĩa là phần mềm được biên dịch trước không được phân phối qua các gói Debian. Thỉnh thoảng bạn sẽ thấy tài liệu chương trình chính thức đề cập đến /opt, nhưng các gói Debian có sẵn để thả các tệp này ở nơi khác. Trong các trường hợp như vậy, bạn nên bỏ qua tài liệu chính thức hoặc ít nhất là bỏ qua các tham chiếu vị trí tệp của nó, khi bạn sử dụng gói Debian. Ngoài ra, nếu bạn có lựa chọn sử dụng gói được biên dịch trước thông qua gói tarball hoặc gói Debian, thì tốt nhất là sử dụng gói Debian. Tất cả trong tất cả, sử dụng /optlà khá hiếm những ngày này. Nếu bạn vẫn nghĩ rằng bạn cần phải đặt các tệp vào /opt, bạn có thể làm tốt việc đặt tên cho phần mềm, vì mọi người ở đây có thể biết liệu gói Debian có sẵn cho phần mềm đó hay không.

Cuối cùng, kết hợp hai điểm trước đó, rất hiếm khi các bản cài đặt Ubuntu tách /optra thành một phân vùng riêng vì hiếm khi có một lượng dữ liệu đáng kể được lưu trữ ở đó. Hầu hết các phần mềm Ubuntu đi vào /usrvà các vị trí khác. Nó đã từng là phổ biến để phân chia /usrthành một phân vùng riêng biệt, nhưng thực tế đó là khá hiếm ngày nay. Nếu bạn xảy ra cần phải cài đặt nhiều phần mềm trong /opt, sau đó tạo ra một phân vùng riêng biệt cho nó sức mạnhcó ý nghĩa - nhưng trong nhiều trường hợp điều này sẽ không thực sự hữu ích. Các phân vùng riêng biệt có ý nghĩa nếu bạn cần xử lý bảo mật khác nhau, nếu các tính năng hệ thống tệp khác nhau sẽ hữu ích, để chia sẻ dữ liệu trên nhiều cài đặt hệ điều hành trong cấu hình đa khởi động và vì các lý do khác. Cài đặt phần mềm thường xuyên không có khả năng được hưởng lợi từ một phân vùng riêng; thực tế, việc tạo một phân vùng riêng /optcó thể gây ra vấn đề nếu kích thước được sử dụng bởi phần mềm được lưu trữ ở đó thay đổi hoặc nếu ban đầu bạn ước tính kích thước sai.


1
"Việc sử dụng / opt là khá hiếm trong những ngày này" Bạn có chắc không?
Pacerier

@Pacerier vì một số lý do / opt dường như sẽ quay trở lại, / usr / local chắc chắn đã phổ biến hơn trong Ubuntu vài năm trước. Ở mọi mức độ, IMHO, / opt và / usr / local là tương đương. Xem thêm linuxjournal.com/magazine/pointcountpoint-opt-vs-usrlocaltldp.org/LDP/Linux-Filesystem-HVELy/html/usr.html "Những ngày này, '/ usr / local' được coi là một nơi tốt trong đó giữ các chương trình tự biên dịch hoặc bên thứ ba. "
Panther

8

Phải không

Thực tế là bạn không cần phải làm điều đó. Sử dụng /optlà một quy ước. Tôi sẽ khuyên bạn nên sử dụng nó nhưng nó không thực sự cần thiết.

Từ phân cấp hệ thống tập tin Linux: Chương 1. Phân cấp hệ thống tập tin Linux :

1.13. /opt

Thư mục này đượ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. Để tuân thủ FSSTND, tất cả các ứng dụng của bên thứ ba nên được cài đặt trong thư mục này. Bất kỳ gói nào được cài đặt ở đây phải định vị các tệp tĩnh của nó (ví dụ: phông chữ bổ sung, tệp clipart, tệp cơ sở dữ liệu) phải định vị các tệp tĩnh của nó trong cây thư mục riêng / opt / 'gói' hoặc / opt / 'của nhà cung cấp (tương tự như cách Trong đó Windows sẽ cài đặt phần mềm mới vào cây thư mục riêng của mình C: \ Windows \ Progam Files \ "Tên chương trình"), trong đó 'gói' là tên mô tả gói phần mềm và 'nhà cung cấp' là tên đã đăng ký LANANA của nhà cung cấp.

Mặc dù hầu hết các bản phân phối bỏ qua việc tạo các thư mục / opt / bin, / opt / doc, / opt / include, / opt / information, / opt / lib và / opt / man chúng được dành riêng cho sử dụng quản trị viên hệ thống cục bộ. Các gói có thể cung cấp các tệp "front-end" dự định được đặt trong (bằng cách liên kết hoặc sao chép) các thư mục dành riêng này bởi quản trị viên hệ thống, nhưng phải hoạt động bình thường trong trường hợp không có các thư mục dành riêng này. Các chương trình được người dùng gọi ra được đặt trong thư mục / opt / 'gói' / bin. Nếu gói bao gồm các trang hướng dẫn UNIX, chúng được đặt trong / opt / 'gói' / man và cấu trúc tương tự như / usr / share / man phải được sử dụng. Các tệp gói có thể thay đổi phải được cài đặt trong / var / opt. Các tệp cấu hình dành riêng cho máy chủ được cài đặt trong / etc / opt.

Trong mọi trường hợp, các tệp gói khác tồn tại bên ngoài phân cấp / opt, / var / opt và / etc / opt ngoại trừ các tệp gói phải nằm trong các vị trí cụ thể trong cây hệ thống tệp để hoạt động chính xác. Ví dụ: các tệp khóa thiết bị trong / var / lock và các thiết bị trong / dev. 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ộ.

Việc sử dụng / opt cho phần mềm bổ trợ là một thông lệ được thiết lập tốt trong cộng đồng UNIX. Giao diện nhị phân ứng dụng System V [AT & T 1990], dựa trên Định nghĩa giao diện System V (Phiên bản thứ ba) và Tiêu chuẩn tương thích nhị phân Intel v. 2 (iBCS2) cung cấp cho cấu trúc / opt rất giống với cấu trúc được xác định ở đây.

Nói chung, tất cả dữ liệu cần thiết để hỗ trợ gói trên hệ thống phải có trong / opt / 'gói', bao gồm các tệp dự định được sao chép vào / etc / opt / 'gói' và / var / opt / 'gói' cũng như thư mục dành riêng trong / opt. Các hạn chế nhỏ đối với các bản phân phối sử dụng / opt là cần thiết vì có thể xảy ra xung đột giữa phần mềm được cài đặt và cài đặt cục bộ, đặc biệt là trong trường hợp tên đường dẫn cố định được tìm thấy trong một số phần mềm nhị phân.

Cấu trúc của các thư mục bên dưới / opt / 'nhà cung cấp' tùy thuộc vào trình đóng gói của phần mềm, mặc dù các gói được cài đặt trong / opt / 'nhà cung cấp' / 'gói' và tuân theo cấu trúc tương tự như hướng dẫn cho / opt / gói. Một lý do hợp lệ để chuyển hướng khỏi cấu trúc này là vì các gói hỗ trợ có thể có các tệp được cài đặt trong / opt / 'nhà cung cấp' / lib hoặc / opt / 'nhà cung cấp' / bin.


Điều này thật lạ, bởi vì hầu hết mọi người khuyên nên chia một phần không gian nhỏ cho thư mục gốc và tôi nghĩ vì nó sẽ không bị thay đổi nhiều. Có vẻ như tôi cần phải nhắc nhở những lời khuyên đó để tuân theo các quy ước?
Cầu nguyện

2
@Praytic Không hẳn. Trong quá khứ /optthường là một ổ đĩa riêng biệt. Nó sẽ được sử dụng để cài đặt phần mềm độc quyền, thường có yêu cầu dung lượng ổ đĩa lớn do gói tất cả các thư viện cần thiết và các tài nguyên khác. Trong thời hiện đại, các ổ đĩa lớn đến mức có thể khả thi và dễ dàng hơn khi chỉ sử dụng một root trên một ổ đĩa.
Bain

4

/optđược sử dụng cho (đôi khi là độc quyền) các ứng dụng bên ngoài không được coi là một phần của bản phân phối Linux. Các ứng dụng này có thể có các đường dẫn được mã hóa cứng và do đó sẽ chỉ chạy chính xác khi được cài đặt /opt- nhưng nếu không có đường dẫn được mã hóa cứng thì bạn có thể cài đặt chúng vào bất kỳ đường dẫn nào. Một chương trình được cài đặt trong /optđược cho là độc lập.

Lý do chính để sử dụng /optlà để cung cấp một đường dẫn tiêu chuẩn chung nơi phần mềm bên ngoài có thể được cài đặt mà không can thiệp vào phần còn lại của hệ thống được cài đặt. /optkhông xuất hiện trong đường dẫn trình biên dịch hoặc trình liên kết chuẩn ( gcc -print-search-dirshoặc /etc/ld.so.confv.v.), do đó, các tiêu đề và thư viện được cài đặt có phần tách biệt với hệ thống chính và không nên can thiệp vào các chương trình đã được cài đặt.

Việc sử dụng /optđược chỉ định bởi Tiêu chuẩn phân cấp hệ thống tập tin : / opt , ghi chú /optban đầu đến từ Unix.

/ opt: Gói phần mềm ứng dụng bổ trợ

Mục đích

/ opt được dành riêng cho việc cài đặt các gói phần mềm ứng dụng bổ trợ.

Gói được cài đặt trong / opt phải định vị các tệp tĩnh của nó trong cây thư mục riêng / opt / <gói> hoặc / opt / <nhà cung cấp>, trong đó <gói> là tên mô tả gói phần mềm và <nhà cung cấp> là tên Tên đăng ký LANANA của nhà cung cấp.

Yêu cầu

Các thư mục / opt / bin, / opt / doc, / opt / include, / opt / information, / opt / lib và / opt / man được dành riêng cho sử dụng của quản trị viên hệ thống cục bộ. Các gói có thể cung cấp các tệp "front-end" dự định được đặt trong (bằng cách liên kết hoặc sao chép) các thư mục dành riêng này bởi quản trị viên hệ thống cục bộ, nhưng phải hoạt động bình thường trong trường hợp không có các thư mục dành riêng này.

Các chương trình được người dùng gọi ra phải được đặt trong thư mục / opt / <gói> / bin hoặc theo phân cấp / opt / <nhà cung cấp>. Nếu gói bao gồm các trang hướng dẫn UNIX, chúng phải được đặt trong / opt / <gói> / share / man hoặc theo phân cấp / opt / <nhà cung cấp> và phải sử dụng cấu trúc tương tự như / usr / share / man.

Các tệp gói có thể thay đổi (thay đổi trong hoạt động bình thường) phải được cài đặt trong / var / opt. Xem phần trên / var / opt để biết thêm thông tin.

Các tệp cấu hình dành riêng cho máy chủ phải được cài đặt trong / etc / opt. Xem phần trên / etc để biết thêm thông tin.

Không có tệp gói nào khác có thể tồn tại bên ngoài phân cấp / opt, / var / opt và / etc / opt ngoại trừ các tệp gói phải nằm trong các vị trí cụ thể trong cây hệ thống tệp để hoạt động chính xác. Ví dụ: các tệp khóa thiết bị phải được đặt trong / var / lock và các thiết bị phải được đặt trong / dev.

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ộ.

Cơ sở lý luận

Việc sử dụng / opt cho phần mềm bổ trợ là một thông lệ được thiết lập tốt trong cộng đồng UNIX. Giao diện nhị phân ứng dụng System V [AT & T 1990], dựa trên Định nghĩa giao diện System V (Phiên bản thứ ba), cung cấp cấu trúc / opt rất giống với cấu trúc được xác định ở đây.

Tiêu chuẩn tương thích nhị phân Intel v. 2 (iBCS2) cũng cung cấp cấu trúc tương tự cho / opt.

Nói chung, tất cả dữ liệu cần thiết để hỗ trợ gói trên hệ thống phải có trong / opt / <gói>, bao gồm các tệp dự định được sao chép vào / etc / opt / <gói> và / var / opt / <gói> cũng như thư mục dành riêng trong / opt.

Các hạn chế nhỏ đối với các bản phân phối sử dụng / opt là cần thiết vì có thể xảy ra xung đột giữa phần mềm được cài đặt phân phối và cài đặt cục bộ, đặc biệt là trong trường hợp tên đường dẫn cố định được tìm thấy trong một số phần mềm nhị phân.

Cấu trúc của các thư mục bên dưới / opt / <nhà cung cấp> tùy thuộc vào trình đóng gói của phần mềm, mặc dù các gói được cài đặt trong / opt / <nhà cung cấp> / <gói> và tuân theo cấu trúc tương tự như hướng dẫn cho / opt / gói. Một lý do hợp lệ để chuyển hướng khỏi cấu trúc này là vì các gói hỗ trợ có thể có các tệp được cài đặt trong / opt / <nhà cung cấp> / lib hoặc / opt / <nhà cung cấp> / bin.


3

Không có gì là thiêng liêng cả /opt, đó chỉ là thực tế phổ biến để đặt phần mềm được biên dịch sẵn mà tất cả người dùng của một hệ thống trong thư mục này có thể truy cập được. Nếu bạn là người dùng duy nhất của hệ thống, không có gì sai khi trích xuất nó trong thư mục chính của bạn. Và ngay cả khi có một số người dùng trên hệ thống cần truy cập vào phần mềm này nhưng bạn muốn sử dụng không gian trên /homephân vùng của mình , không có gì sai khi tạo /home/softwarenamethư mục có thể truy cập công khai và trích xuất phần mềm của bạn ở đó (chỉ có một sự cố là nếu bạn xảy ra để có tên người dùng softwarename, bạn sẽ không thể sử dụng nó trong thư mục nhà của người dùng).


2

Các câu trả lời chi tiết rất tốt, nhưng (ngoài phần mềm có thể có đường dẫn tuyệt đối được mã hóa cứng trong đó - không phải là thực tiễn lập trình tốt nhất), điểm chính là phần mềm không phân phối / không phân phối không được lưu trữ trộn lẫn với tập tin hệ thống thường xuyên.

Đưa mọi thứ vào /opthoặc /usr/localgiữ mọi thứ sạch sẽ và an toàn hơn.

Cụ thể, đường dẫn tìm kiếm phần mềm của bạn ($ PATH) xác định thứ tự các vị trí được tìm kiếm khi tìm kiếm một chương trình của một tên cụ thể để thực hiện. Thông thường, những nơi thích /opt/usr/localở cuối danh sách.

Nếu bạn cài đặt gói có chương trình có tên cptrong đó, thứ tự tìm kiếm mặc định đi kèm với bản phân phối của bạn sẽ tìm thấy gói bình thường vì thư mục được lưu trong đó được tìm kiếm trước khi tìm địa điểm /opt.

Nếu nó không hoạt động theo cách đó, ai biết cái gì có thể phá vỡ hoặc mở lỗ hổng bảo mật nếu một chương trình có tên cpkhác sẽ chạy khi bạn nghĩ rằng bạn chỉ đang cố sao chép một số tệp.

Nếu một cái gì đó như thế này xảy ra, có thể mất một lúc trước khi ai đó nghĩ chạy một lệnh như thế type cp(điều này thậm chí không đủ để chỉ ra rằng có gì đó không ổn) để tìm ra rằng những gì đang được chạy không phải là những gì bạn nghĩ. Cho đến thời điểm đó, bạn bị mắc kẹt tại "Mọi thứ chính xác là cách nó nên nằm ngoài chi tiết nhỏ mà nó không hoạt động!"

Về cơ bản, nó giúp ngăn chặn những điều không mong muốn xảy ra và cũng tránh các tình huống trong đó các bản cập nhật hệ thống có thể loại bỏ hoặc thay thế một số hoặc tất cả các gói được cài đặt "tùy chỉnh" của bạn. Hoặc ngược lại, một số chương trình "tùy chỉnh" có thể ghi đè lên các chương trình do hệ thống cung cấp mà nhiều chương trình hoặc tập lệnh khác có thể dựa vào.

Từ quan điểm quản trị, việc trộn các chương trình / tệp "hệ thống" và "tùy chọn" trong cùng một vị trí sẽ đặt hệ thống của bạn ở trạng thái "không xác định" hoặc ít nhất là "mơ hồ".

Nếu bạn gặp vấn đề với hệ thống hoặc chương trình của mình và cần trợ giúp, một trong những câu hỏi đầu tiên được hỏi là "Bạn đã thay đổi điều gì?" và "Chúng tôi có thể tạm thời vô hiệu hóa một số trong những thay đổi đó để chúng tôi biết rằng chúng tôi đang xem xét vấn đề thực sự và không chỉ là một triệu chứng của một điều gì khác."

Với các vị trí riêng biệt, những thay đổi này có thể được xác định nhanh chóng và tất cả những gì bạn phải làm (ít nhất là đối với chính các chương trình) tạm thời xóa thư mục của chúng khỏi đường dẫn.

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.