Khi cài đặt các ứng dụng người dùng, nơi mà các thực tiễn tốt nhất của Wap đề nghị chúng được đặt ở đâu?


210

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 apthoặc trình quản lý gói khác.

Vị trí (gì /usr/, /usr/local/, /opt/, /home/, vv) được đề xuất bởi "thực hành tốt nhất" cho việc cài đặt các ứng dụng sử dụng?


Thường xuyên cài đặt mọi thứ từ nguồn, tôi đã viết một công cụ nhỏ để tự mình thực hiện các thay đổi cho tệp khởi động shell của mình (và cũng sửa đổi tiền tố thư viện của bạn, nếu bạn hỏi nó, cho các chương trình phụ thuộc vào thư viện dùng chung ). Không có nhiều tính năng phong phú, nhưng nó hoạt động 99% thời gian.
new123456

Bài đăng liên quan: Askubfox.com/q/138547/62483
Lucio

1
Cuộc thảo luận tuyệt vời về sự khác biệt giữa /opt/usr/local: unix.stackexchange.com/q/11544/11917
blong

Câu trả lời:


184

Điều đó phụ thuộc, thực sự. Nếu ứng dụng có setup.pytệp tạo tệp , hoặc ví dụ cho ứng dụng python nếu ứng dụng sử dụng distutils (ví dụ: có tệp) hoặc hệ thống xây dựng / cài đặt tương tự, bạn nên cài đặt nó vào /usr/local/. Đây thường là hành vi mặc định.

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/. Tuy nhiên, các thư mục như /usr/bin//usr/lib/thường được dành riêng cho các gói cài đặt qua apt. Vì vậy, một chương trình mong đợi được "cài đặt" vào /usr/sẽ hoạt động tốt /usr/local/.

Nếu bạn chỉ cần giải nén một tarball và chạy trực tiếp (ví dụ Firefox) thì hãy đặt nó vào /opt/. 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 một thư mục cho chính nó /opt/.


24
Dường như rất nhiều người quên mất opt/- theo ý kiến ​​của tôi, bạn đã đánh vào đầu như mục đích của nó.
Marco Ceppi

3
Tạo một liên kết tượng trưng từ / usr / bin hoặc thêm nó vào PATH trong ~ / .bashrc
Alex

1
Thế còn ~/.local/share? @Marco
Ultimatex

1
Bạn có thể cài đặt những thứ bên trong ~(thư mục chính của bạn), nhưng điều đó sẽ làm cho một ứng dụng chỉ có thể truy cập được đối với một người dùng. Những người dùng khác trên hệ thống của bạn sẽ phải cài đặt và duy trì cài đặt phần mềm đó. Đối với các thực tiễn tốt nhất về cài đặt ứng dụng cài đặt thư mục chính của bạn, tôi tin rằng không có hướng dẫn mạnh mẽ nào vì bạn sẽ không can thiệp vào các gói hệ thống.
Umang

1
Có sai không khi cài đặt các ứng dụng được 'giải nén từ tar' bên dưới / home / ubfox / myapp - điều này khác biệt gì so với / opt / myapp?
JARC

116

Thật tốt khi nhớ rằng /usrnó không đại diện cho người dùng mà là unix tài nguyên hệ thống .

Do đó, tôi có xu hướng hình dung rằng bất kỳ bản phân phối nào cũng có quyền dậm chân trên tất cả các nội dung /usr,và các bổ sung cụ thể của tôi cho hệ thống đi vào /usr/local, điều mà tôi bảo tồn trước khi thực hiện 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 đặt đồ vào /home, mặc dù tôi hiếm khi tuân theo quy ước đó.

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


35
Điều đáng ghi nhớ là 'unix tài nguyên hệ thống' là việc đổi tên được thực hiện SAU '/ home' đã được thêm vào. Vào thời xưa, cũ, cũ (Unix Phiên bản 6 và các bạn), bạn sẽ thấy các thư mục như / usr / jimmy, / usr / siobhan, / usr / ahmed, v.v. vì các thư mục "người dùng" được lưu trữ trong / usr .
Mark Leighton Fisher

5
OK tôi sẽ cắn: opt không dùng để làm gì?
Seth

3
@ Vì tôi nghĩ đó 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

5
/ usr là User. Đó là bởi vì người dùng linux là nhà phát triển. Đầu tiên khi nó bắt đầu phân chia thành các nhà phát triển và người dùng, /homethư mục đã được giới thiệu. Và sau đó, một người nào đó đã có ý tưởng để nói điều đó có nghĩa là Unix System Resources, điều đó không thực sự có ý nghĩa, bởi vì chúng ta có Unix system Resourcestrong/dev
Màn hình thông tin

2
Đúng, / usr là một từ viết tắt. Mục đích đã thay đổi kể từ ngày Unix chạy trên PDP-7 vào năm 1969.
Walt Stoneburner

34

Cài đặt các chương trình không ổn định như firefox devel in / home / user / opt / giúp việc gỡ bỏ dễ dàng hơn rất nhiều và không gây nhầm lẫn cho những người dùng khác về việc họ nên sử dụng phiên bản nào ... 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 nhà của bạn.

Không bao giờ cài đặt chương trình trong / usr /, nó có thể gây ra sự 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 / dành cho các gói được biên dịch cục bộ. Và cấu trúc 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 sẵn (Thunderbird, Eclipse, Netbeans, IBM NetSphere, v.v.) và tương tự. Nhưng nếu chúng chỉ dành cho một người dùng thì chúng nên được đặt trong thư mục nhà của bạn.

Nếu bạn muốn có thể chạy một chương trình được cài đặt ở mộ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 vào biến $ PATH của mình, 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 chứa tệp thực thi bạn cần chạy.


26

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-HVELy/html/usr.html :

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


1
Có vẻ mâu thuẫn với nội dung / usr / local này với thông tin trên trang opt: tldp.org/LDP/Linux-Filesystem-HVELy/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à tiện ích bổ sung mà 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 phải đượ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 cây thư mục riêng của mình C: \ Windows \ Progam Files \ "Tên chương trình ")"
Pod

6

Tôi thường có một thư mục có tên "Chương trình" trong nhà, nơi tôi cài đặt các chương trình đó, đủ lạ (hoặc không) chúng đều là những thứ 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, chúng sẽ được di chuyển cùng với phần còn lại của nhà tôi. Nó có một nhược điểm rõ ràng, những ứng dụng đó chỉ có sẵn cho người dùng của tôi.


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

1

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

Xin lưu ý rằng các tệp cấu hình thường sẽ không được xử lý như các 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ị rối, mặc dù vậy, nó sẽ cảnh báo bạn khi nó nghĩ deb sẽ có một kịch bản xấu trước hoặc sau khi cài đặt.

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.