Tôi nên đặt ứng dụng vào / usr / local hoặc / usr / local / share?


21

"Tiêu chuẩn" là gì - tôi nên đặt ứng dụng (không chỉ nhị phân, mà toàn bộ phân phối) thành / usr / local hoặc / usr / local / share.

Ví dụ scala hoặc weka - nó chứa các ví dụ, nhị phân, thư viện, v.v. Vì vậy, nó sẽ là

/usr/local/scala-2.9.1 

hoặc là

/usr/local/share/scala-2.9.1

Vì tôi là quản trị viên duy nhất, nó không phải là vấn đề lớn đối với tôi, nhưng tôi thích sử dụng một cái gì đó được sử dụng rộng rãi, không phải với phong tục của riêng tôi.

Quan trọng: Tôi không hỏi về các trường hợp, nơi bạn nên chia ứng dụng thành / usr / local / bin, / usr / local / lib, v.v. Thay vào đó tôi đang hỏi về trường hợp khi bạn phải giữ một thư mục chính cho toàn bộ ứng dụng.


6
Tôi nghĩ / opt là thông thường hơn trong loại bối cảnh này.
Faheem Mitha

@Faheem Mitha, điểm rất tốt. Nhờ có bạn, tôi đã tìm thấy cây thư mục "/ opt / 'nhà cung cấp" giải thích như vậ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" từ linuxtopia.org/ online_books / linux_beginner_books / ' Bạn có thể vui lòng gửi bình luận của bạn dưới dạng câu trả lời, vì vậy tôi sẽ đánh dấu nó là câu trả lời? Cảm ơn bạn.
greenoldman

@greenoldman: cũng xin vui lòng nhận ra rằng việc giữ tất cả các tệp trong một thư mục không phải là cách "chuẩn" để cài đặt các ứng dụng trong Unix. /optthực sự là câu trả lời đúng, nhưng nó không được "sử dụng rộng rãi" bởi phần mềm Unix / Linux truyền thống. Có nhiều lý do tuyệt vời để phân chia các tệp của bạn thành nhiều thư mục và cũng để phân biệt /usrvới/usr/local
MestreLion

Ví dụ: giữ tất cả các tệp thực thi từ tất cả các ứng dụng trong một /usr/bin(hoặc /usr/local/bin) cho phép $ PATH của bạn tiếp cận tất cả phần mềm mà không cần chỉnh sửa phần mềm cho mỗi phần mềm, một khái niệm không tồn tại trong Windows
MestreLion

Câu trả lời:


19

Tôi nghĩ / opt là tiêu chuẩn hơn trong loại bối cảnh này. Phần có liên quan trong Tiêu chuẩn phân cấp hệ thống tập tin được trích dẫn dưới đây.

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

Đặt vấ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 /, bao gồm các tệp dự định được sao chép vào / etc / opt / và / var / opt / cũng như các 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 / được để lại cho trình đóng gói của phần mềm, mặc dù các gói được cài đặt trong / opt // 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 // lib hoặc / opt // bin.


5

Bạn chỉ nên sử dụng /usr/local/sharecho các tệp không dành riêng cho phiên bản kiến ​​trúc / HĐH cụ thể.

Sau đó nó tùy thuộc vào bạn cho dù bạn phân phối các tập tin giữa các subdirs hiện có của /usr/localhoặc nếu bạn tạo một thư mục dành riêng mới trong /usr/local(nhưng ý chí sau không tồn tại trên thực thi PATH, các LD_LIBRARY_PATH, cũng không phải MANPATH).

Hãy nhìn vào FHS


Cảm ơn bạn. Vì vậy, nếu nó là một sự tương tự từ Windows, thì nó phải là / usr / local / SPECIAL_APP và bên trong nên có các thư mục con của nó, phải không?
greenoldman

@ Greensoldman: không. Không tương đồng sẽ phù hợp vì Windows và Linux sử dụng mô hình khác nhau: Trong cửa sổ, bạn thường giữ tất cả các tập tin trong một thư mục duy nhất, nơi trong Linux bạn thường chia chúng qua bin, share, lib, vv
MestreLion

3

Cho đến khi /opttrở nên phổ biến, nơi thông thường là /usr/local/lib/<package>.


1
Từ những gì tôi đọc được, / opt khá phổ biến, chỉ không được sử dụng rộng rãi, nhưng đây không phải là một sự bất ngờ nếu bạn nghĩ về số lượng các gói có sẵn trong kho.
greenoldman

0

Khi cài đặt các ứng dụng cục bộ, có nhiều tùy chọn tùy thuộc vào cách bạn muốn truy cập và cập nhật. Cũng cần lưu ý rằng một số phương pháp trông giống như hệ thống bạn đã có và một số phương pháp đặc biệt hơn. Tôi muốn đề xuất rằng các giải pháp "tốt nhất" là những giải pháp giúp mọi thứ dễ quản lý hơn.

Tôi đã phân chia câu trả lời này dựa trên số lượng gói để thực hiện cài đặt tùy chỉnh cho. Việc chia tách dựa trên kinh nghiệm của riêng tôi. Những kinh nghiệm này cân nhắc thời gian cần thiết để quản lý các gói và rủi ro làm hỏng thứ gì đó. Tôi không có nghĩa là tôi có kiến ​​thức về các tiêu chuẩn chung nhưng có nghĩa đây là điểm tham chiếu cần xem xét khi đưa ra quyết định.

Đối với chỉ một vài gói , tôi sẽ đặt các gói bổ sung vào /opt, nơi chúng nằm ngoài mọi thứ khác để không có gì có thể làm chúng rối tung lên và chúng có thể làm hỏng thứ khác. Đây là phương pháp tôi sử dụng trên NAS của mình. Tuy nhiên, phương pháp này giữ cho các nhị phân tắt PATH của bạn, vì vậy bạn sẽ cần thêm chúng theo cách thủ công. Điều này hoạt động tốt nếu chỉ có vài gói để cài đặt, nhưng trở nên khá lộn xộn nếu có nhiều gói.

Cập nhật ở đây khá dễ dàng khi bạn chỉ cần ghi đè lên thư mục.

Ưu điểm:

  • đơn giản
  • nhanh chóng để thiết lập
  • không có cơ hội ảnh hưởng đến các bộ phận khác của hệ thống
  • gỡ cài đặt dễ dàng như cài đặt

Nhược điểm:

  • Trở nên khá tẻ nhạt nếu số lượng gói cần cài đặt lớn
  • Làm cho PATHtrông lộn xộn

Đối với nhiều gói , tôi khuyên bạn nên sử dụng /usr/local/<your package>và liên kết sym có thể thực thi từ /usr/local/binhoặc /usr/local/sbintùy thuộc vào việc bạn có cần quyền root hay không. Điều này giúp bạn không phải thay đổi PATH của mình mỗi khi thêm một cái gì đó mới để PATH luôn sạch sẽ. Đây là phương pháp tôi sử dụng trên máy tính xách tay Arch của mình cho tất cả các gói không phải pacman và các gói AUR.

Việc cập nhật được thực hiện bằng cách ghi đè thư mục gói và kiểm tra xem symlink có còn hiệu lực không và sửa nếu không.

Ưu

  • Không làm cho PATHlộn xộn
  • Không ảnh hưởng đến hệ thống cơ sở
  • Vẫn rất đơn giản để loại bỏ tất cả các tiện ích bổ sung và trở về hệ thống cơ sở sạch

Nhược điểm:

  • Thêm công việc để thiết lập
  • Chỉ xóa một gói có một số tìm kiếm để làm

Đối với nhiều gói . Vì đây không phải là trường hợp bạn muốn, tôi sẽ nói ngắn gọn. Tôi muốn giới thiệu tách gói vào bin, lib, share, vv và cài đặt chúng vào /usr/local. Điều này là để giữ cho cấu trúc sạch sẽ. Bạn cũng có thể chỉ định ai có thể viết ở đâu và hơn thế nữa. Ví dụ, bạn không muốn những người khác ngoài việc sửa đổi root thực thi.

Ở đây việc cập nhật trở nên khó khăn hơn một chút khi bạn cần ghi vào nhiều hơn một thư mục. Tôi sẽ đề nghị đóng gói toàn bộ và để người quản lý gói xử lý phần còn lại.

Chia sẻ

Các sharethư mục riêng của mình là dành cho kiến trúc file độc lập như đã nêu trong Faheem của liên kết và các tập tin phụ thuộc kiến trúc nên đến lib, lib32, lib64vv


Đưa ra lời khuyên dựa trên số lượng gói không hữu ích; Làm thế nào để tôi biết gói của tôi thuộc về nhóm nào?
Alois Mahdal

Ngoài ra, khi bạn nói "khuyến nghị", nguồn tham khảo hoặc nêu rõ rằng đó là đề xuất của bạn (tôi đoán là sau ...?)
Alois Mahdal

Và nhân tiện, tôi không thấy làm thế nào trong / opt sẽ có ít khả năng xảy ra sự cố với ứng dụng của bạn hơn là khi nó lan sang / usr, v.v. Làm rối tung các ứng dụng khác là nhiều hơn về cách đặt tên đúng và không có lỗi trong cài đặt tập lệnh.
Alois Mahdal

Nó chắc chắn là về việc đặt tên làm cho mọi thứ rối tung lên. Đó là điều mà tôi đã trải nghiệm trong quá khứ và đó là lý do tại sao tôi muốn giữ các gói "thêm" của mình khỏi mọi thứ khác. Tôi vẫn không muốn nó làm mọi thứ trông xấu xí.
Lauri Tšili

Và vâng, bạn đúng về "nó được khuyến nghị" như bạn có thể thấy từ câu trả lời của tôi, tôi đã sử dụng "Tôi muốn giới thiệu" ở mọi nơi khác. Bây giờ tôi đã sửa lỗi chính tả của mình và xóa lý do tại sao tôi muốn giới thiệu một cái gì đó. Một lần nữa, đó chỉ là quan điểm của tôi và không có nghĩa là một câu trả lời dứt khoát.
Lauri Tšili
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.