Câu hỏi Khi cài đặt các ứng dụng của người dùng, "thực hành tốt nhất" ở đâu đề xuất chúng được đặt?


Thỉnh thoảng tôi cài đặt các ứng dụng theo cách thủ công, thay vì sử dụng apt hoặc một người quản lý gói khác.

Vị trí nào (/usr/, /usr/local/, /opt/, /home/, vv) được đề xuất bởi "các phương pháp hay nhất" để cài đặt các ứng dụng của người dùng?


184
2017-08-05 14:42


gốc


Thích cài đặt mọi thứ từ nguồn mọi lúc, tôi viết một công cụ nhỏ để làm điều đó có những thay đổi đối với tệp khởi động shell của bạn (và cũng sửa đổi tiền tố thư viện của bạn, nếu bạn yêu cầu nó, cho các chương trình phụ thuộc vào thư viện được chia sẻ). Không phải là rất giàu tính năng, nhưng nó hoạt động 99% thời gian. - new123456
Bài liên quan: askubuntu.com/q/138547/62483 - Lucio
Thảo luận tuyệt vời về sự khác biệt giữa /opt và /usr/local : unix.stackexchange.com/q/11544/11917 - blong


Các câu trả lời:


Điều đó phụ thuộc, thực sự. Nếu ứng dụng có một makefile, (đối với các ứng dụng python) sử dụng các distutils (có một setup.py tệp) hoặc hệ thống cài đặt / cài đặt tương tự, đưa nó vào /usr/local/ (hành vi mặc định).

Nếu bạn chỉ cần trích xuất một tarball và chạy trực tiếp (ví dụ: Thunderbird, Firefox) thì hãy đưa nó vào /opt/.

Tại sao? Từ những gì tôi hiểu, /usr/local/ có một hệ thống phân cấp tương tự như /usr/. Vì vậy, một chương trình mong đợi để có được "cài đặt" vào /usr/ nên làm việc tốt trong /usr/local/. Một chương trình chỉ cần một thư mục và sẽ nhận được tất cả các tệp / thư viện liên quan đến thư mục đó có thể nhận được một thư mục cho chính nó trong /opt/.


163
2017-08-05 14:53



Có vẻ như rất nhiều người quên đi opt/ - theo ý kiến ​​của tôi, bạn đã chạm vào cái đinh trên đầu vì mục đích của nó. - Marco Ceppi♦
Tôi đã tải xuống eclipse & trích xuất / opt. Làm thế nào tôi có thể làm cho nó chạy từ thiết bị đầu cuối giống như các chương trình khác như javac, java. Tôi đã làm với cập nhật lựa chọn thay thế như sau, sudo cập nhật-lựa chọn thay thế - cài đặt "/ usr / bin / eclipse" "nhật thực" "/ opt / eclipse / eclipse" 1 NHƯNG NÓI SAYS COMMAND KHÔNG FOUND tôi LOẠI sudo eclipse - Deepen
Tạo liên kết tượng trưng từ / usr / bin hoặc thêm nó vào PATH trong ~ / .bashrc - Alex


Thật tốt khi nhớ rằng /usr không đứng cho người dùng mà đúng hơn là tài nguyên hệ thống unix.

Như vậy, tôi có xu hướng cho rằng bất kỳ phân phối nào đều có quyền dồn toàn bộ nội dung của /usr, và những bổ sung cụ thể của tôi cho hệ thống /usr/localmà tôi bảo quản trước khi nâng cấp.

Trong khi đó, các ứng dụng và những thứ khác đi vào /opt.

Một số người cảm thấy thoải mái khi đưa nội dung vào /home, mặc dù tôi hiếm khi làm theo quy ước đó.

Tất cả những gì đã nói, tôi để cho người quản lý gói phân phối làm mọi thứ theo cách của mình trước, và sau đó làm như trên khi các công cụ lăn tay.


99
2017-09-17 17:39



Điều đáng ghi nhớ là 'tài nguyên hệ thống unix' là việc đổi tên được thực hiện SAU '/ home' đã được thêm vào. Trong cũ, cũ, cũ ngày (Unix Phiên bản 6 et.al.) bạn sẽ thấy thư mục như / usr / jimmy, / usr / siobhan, / usr / ahmed, vv bởi vì "người dùng" thư mục được lưu trữ trong / usr . - Mark Leighton Fisher
OK, tôi sẽ cắn: opt hiện định làm gì? - Seth
@ Tôi nghĩ rằng đó là 'tùy chọn' - ban đầu nó dành cho phần mềm không phải là một phần của cài đặt mặc định. - Carl H
/ usr là User. Đó là bởi vì người dùng Linux là các nhà phát triển. Đầu tiên khi nó bắt đầu chia thành các nhà phát triển và người dùng /home dir đã được giới thiệu. Và sau đó ai đó đã có ý tưởng để nói nó có nghĩa là Unix System Resources, điều này thực sự không có ý nghĩa, bởi vì chúng tôi có Unix system Resources trong /dev - Info-Screen
Đúng, / usr là một từ viết tắt. Mục đích đã thay đổi kể từ những ngày mà Unix đang chạy trên PDP-7 vào năm 1969. - Walt Stoneburner


Cài đặt các chương trình không ổn định như firefox devel trong / home / user / opt / làm cho việc xóa dễ dàng hơn nhiều và không có sự nhầm lẫn nào với người dùng khác về phiên bản họ nên sử dụng ... Vì vậy, nếu đó không phải là chương trình để sử dụng toàn cầu, hãy cài đặt nó trong một thư mục con trong thư mục chính của bạn.

Không bao giờ cài đặt các chương trình trong / usr /, nó có khả năng gây ra hỗn loạn, những thứ được cài đặt trong / usr / chỉ dành cho các gói phân phối. / usr / local / là các gói được biên dịch cục bộ. Và srtucture hoạt động chính xác theo cùng một cách! các tệp trong / usr / local / sẽ được ưu tiên hơn các tệp trong / usr /

/ opt / nên được sử dụng để cài đặt các gói (nhị phân) được biên dịch trước (Thunderbird, Eclipse, Netbeans, IBM NetSphere, v.v.) và tương tự. Nhưng nếu họ chỉ cho một người dùng duy nhất họ nên được đặt trong thư mục nhà của bạn.

Nếu bạn muốn có thể chạy chương trình được cài đặt ở vị trí "lạ" (như / home / user / opt / firefox /) mà không cần nhập toàn bộ đường dẫn, bạn cần thêm nó vào biến $ PATH, bạn có thể làm điều này thêm một dòng như thế này trong /home/user/.profile của bạn

export PATH=/home/user/opt/firefox:$PATH

Tên thư mục phải là tên nơi tệp thực thi bạn cần chạy.


30
2017-08-07 08:40





Tiêu chuẩn phân cấp hệ thống tập tin Linux chỉ ra /usr/local.

Từ http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html:

Ý tưởng ban đầu đằng sau '/ usr / local' là có một riêng biệt ('địa phương')   Thư mục '/ usr' trên mỗi máy bên cạnh '/ usr', có thể chỉ là   được gắn chỉ đọc từ một nơi khác. Nó sao chép cấu trúc của   '/ usr'. 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 soạn hoặc của bên thứ ba. / Usr / local   hệ thống phân cấp được sử dụng bởi người quản trị hệ thống khi cài đặt   phần mềm cục bộ. Nó cần phải được an toàn khi bị ghi đè khi   phần mềm hệ thống được cập nhật. Nó có thể được sử dụng cho các chương trình và dữ liệu   có thể chia sẻ giữa một nhóm máy chủ nhưng không tìm thấy trong / usr. Cục bộ   phần mềm đã cài đặt phải được đặt trong / usr / local thay vì / usr   trừ khi nó đang được cài đặt để thay thế hoặc nâng cấp phần mềm trong / usr.


25
2017-08-05 14:45



Dường như mâu thuẫn với công cụ này / usr / local với thông tin trên trang chọn: tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html "" 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 StarOffice, Kylix, Netscape Communicator và WordPerfect 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 sẽ được cài đặt trong thư mục này. "..." (tương tự như cách Windows sẽ cài đặt phần mềm mới vào thư mục C: \ Windows \ Progam Files \ " ")" - Pod


Tôi thường có một thư mục có tên là "Chương trình" trong nhà của tôi, nơi tôi cài đặt các chương trình, đủ lạ (hoặc không) họ là tất cả các công cụ java ngay bây giờ.

Nó có một lợi thế lớn đối với tôi, khi tôi cài đặt lại hoặc thay đổi máy tính, họ được chuyển đi với phần còn lại của nhà tôi. Nó có một bất lợi rõ ràng, những ứng dụng đó chỉ có sẵn cho người dùng của tôi.


5
2017-08-05 14:57



Làm thế nào tôi có thể cài đặt lại Ubuntu 16.04 mà không làm mất dữ liệu trong thư mục gốc? Tôi đã cố gắng làm bằng cách định dạng / thư mục chỉ sau đó gõ tên người dùng và mật khẩu cũ nhưng tôi thấy rằng Ubuntu tạo ra một thư mục nhà. - Ibrahim Disouki


Sử dụng "checkinstall" để chuyển đổi gói người ngoài hành tinh của bạn thành deb để có thể gỡ cài đặt bằng trình quản lý gói.

Lưu ý rằng các tệp cấu hình thường không được xử lý dưới dạng tệp cấu hình (có thể bị bỏ qua hoặc có thể được coi là một phần của ứng dụng) và các tập lệnh trước và sau khi cài đặt đôi khi bị bungled, mặc dù thường sẽ cảnh báo bạn khi nó nghĩ deb sẽ có tập lệnh trước hoặc sau khi cài đặt không đúng.


1
2017-08-16 01:41