Làm thế nào để tổ chức / lựa chọn?
Tôi muốn đặt một script thủ công ở vị trí và cấu trúc thư mục thông thường của nó. Nó hiện được đặt tại /opt/chkobm/chkobm, nhưng có vẻ như đây là một phương pháp không tốt vì nó yêu cầu $PATHbao gồm các đường dẫn ký tự đại diện ( /opt/*/)
Từ TLDP (phần "Hệ thống phân cấp hệ thống tệp Linux"):
Các chương trình được gọi bởi người dùng được đặt trong thư mục / opt / 'package' / bin.
Thứ nhất, có một quy tắc thống nhất về nơi đặt các tập tin như vậy không? ( /usr/binđối với tôi giống như một nơi thay thế khả thi) Thứ hai, tôi có nên đặt các script thủ công vào /opt/*/bin/và xuất đường dẫn này sang $PATHkhông?
Trả lời
/usr/local/bin là nơi thành ngữ để đặt điều này.
Theo thứ tự hệ thống tệp Linux :
Ý tưởng ban đầu đằng sau
/usr/locallà có một thư mục riêng biệt ('cục bộ')/usrtrên mọi máy tính bên cạnh đó/usr, thư mục này có thể chỉ được gắn kết 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 nhiều người coi là nơi tốt để lưu giữ các chương trình tự biên soạn hoặc của bên thứ ba. Hệ thống phân cấp / usr / local đượ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 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 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ó đang được cài đặt để thay thế hoặc nâng cấp phần mềm trong / usr.
Tôi có xu hướng dựa vào FHS như được định nghĩa là Debian. Debian khá tốt trong việc thực thi các tiêu chuẩn. Đây là những gì họ phải nói về opt :
Các thư mục / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib và / opt / man được dành riêng cho 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 quản trị viên hệ thống cục bộ đặt vào (bằng cách liên kết hoặc sao chép) các thư mục dành riêng này, nhưng phải hoạt động bình thường khi không có các thư mục dành riêng này.
...
Nói chung, tất cả dữ liệu cần thiết để hỗ trợ một 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ấu trúc của các thư mục bên dưới / opt / tùy thuộc vào trình đóng gói của phần mềm, mặc dù chúng tôi khuyến nghị rằng 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 /. Lý do hợp lệ cho việc phân tách khỏi cấu trúc này là vì các gói hỗ trợ có thể có tệp được cài đặt trong / opt // lib hoặc / opt // bin.
Định nghĩa của Debian /usr/localgiống hệt với định nghĩa trước đó từ liên kết TLDP.