nơi để đặt nhị phân để chúng luôn ở trong đường dẫn và có thể dễ dàng tìm thấy


10

Tôi đang thực hiện một số nhị phân, tập lệnh vv mà tôi muốn cài đặt dễ dàng (sử dụng rpms của riêng tôi). Vì tôi muốn chúng có thể truy cập được cho mọi người, trực giác của tôi sẽ là đặt chúng vào / usr / bin;

  • không cần thay đổi

Tuy nhiên; thực thi của tôi bây giờ biến mất trong một nhóm của tất cả những người khác; làm thế nào tôi có thể tìm lại tất cả các thực thi mà tôi đặt ở đó một cách dễ dàng. Tôi đã suy nghĩ về:

  • thư mục con trong / usr / bin (Tôi biết tôi không thể làm điều này; chỉ để minh họa cho suy nghĩ của tôi)
  • một thư mục khác (/ opt / mình / bin) và liên kết từng tệp thực thi với / usr / bin (rất nhiều công việc)
  • một thư mục khác (/ opt / mình / bin) và liên kết thư mục với / usr / bin (điều này có thể không?)

"cách tốt nhất, phù hợp nhất với linux" để làm điều này là gì?

EDIT: chúng tôi đã thảo luận về vấn đề này trong công ty và đưa ra tùy chọn tối ưu phụ này: đặt nhị phân vào / usr / bin / công ty với một liên kết tượng trưng từ / usr / bin. Tôi không vui mừng với giải pháp này (sự xáo trộn đang diễn ra)

Câu trả lời:


7

Nếu bạn bó các nhị phân của mình vào RPM của riêng bạn thì việc lấy danh sách chúng là gì và chúng được cài đặt ở đâu là chuyện nhỏ.

Thí dụ

$ rpm -ql httpd| head -10
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d
/etc/httpd/conf.modules.d/00-base.conf

Tôi sẽ đề nghị đưa các tệp thực thi của bạn vào một trong hai /usr/binhoặc /usr/local/bincuộn RPM của riêng bạn. Việc thực hiện điều này khá đơn giản và bằng cách quản lý triển khai phần mềm của bạn bằng RPM, bạn sẽ có thể gắn nhãn một gói với số phiên bản giúp giảm bớt việc quản lý cấu hình phần mềm của bạn khi bạn triển khai phần mềm.

Xác định RPM nào là "của tôi"?

Bạn có thể xây dựng RPM của mình bằng một số thông tin đã biết mà sau đó có thể được thỏa thuận trước khi thực hiện việc xây dựng. Tôi thường xây dựng các gói trên các hệ thống thuộc sở hữu của tên miền của mình để tìm RPM một cách đơn giản bằng cách tìm kiếm thông qua tất cả các RPM được xây dựng trên máy chủ X.mydom.com.

Thí dụ

$ rpm -qi httpd
Name        : httpd
Version     : 2.4.7
Release     : 1.fc19
Architecture: x86_64
Install Date: Mon 17 Feb 2014 01:53:15 AM EST
Group       : System Environment/Daemons
Size        : 3865725
License     : ASL 2.0
Signature   : RSA/SHA256, Mon 27 Jan 2014 11:00:08 AM EST, Key ID 07477e65fb4b18e6
Source RPM  : httpd-2.4.7-1.fc19.src.rpm
Build Date  : Mon 27 Jan 2014 08:39:13 AM EST
Build Host  : buildvm-20.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://httpd.apache.org/
Summary     : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.

Đây sẽ là Build Hostdòng trong RPM.

Việc sử dụng / usr / bin / công ty?

Tôi có lẽ sẽ không khuyến khích việc sử dụng một vị trí như thế này. Chủ yếu là vì nó yêu cầu tất cả các hệ thống của bạn phải $PATHtăng cường để bao gồm nó và không chuẩn. Tùy chỉnh mọi thứ luôn là "quyền thông qua" đối với mọi quản trị viên Unix của Wannabee, nhưng tôi luôn không khuyến khích điều đó trừ khi thực sự cần thiết.

Vấn đề lớn nhất với việc tùy chỉnh như thế này là chúng trở thành gánh nặng trong cả việc duy trì môi trường của bạn và giúp mọi người mới tăng tốc về cách sử dụng môi trường của bạn.

Tôi có thể lấy danh sách các tập tin từ RPM không?

Có, bạn có thể đạt được điều này nhưng nó sẽ yêu cầu 2 cuộc gọi đến RPM. Đầu tiên sẽ xây dựng một danh sách các gói được xây dựng trên máy chủ X.mydom.com. Sau khi nhận được danh sách này, bạn sẽ cần gọi lại truy vấn RPM cho các tệp thuộc sở hữu của từng gói này. Bạn có thể đạt được điều này bằng cách sử dụng một lớp lót này:

$ rpm -ql $(rpm -qa --queryformat "%-30{NAME}%{BUILDHOST}\n" | \
    grep X.mydom.com | awk '{print $1}') | head -10
/etc/pam.d/run_init
/etc/sestatus.conf
/usr/bin/secon
/usr/bin/semodule_deps
/usr/bin/semodule_expand
/usr/bin/semodule_link
/usr/bin/semodule_package
/usr/bin/semodule_unpackage
/usr/sbin/fixfiles
/usr/sbin/genhomedircon

và làm thế nào để có được danh sách tất cả các nhị phân đã được cài đặt bởi tất cả các rpms tôi đã cài đặt? May mắn thay, chúng tôi đã đồng ý đặt tên công ty của chúng tôi trong tên vòng / phút; vì vậy một cái gì đó như "rpm -qa | grep company" liệt kê các rpms của tôi được cài đặt
Chris Maes

@ChrisMaes - xem cập nhật. Tôi sử dụng máy chủ lưu trữ để xác định pkgs nào là "của tôi".
slm

Cảm ơn các cập nhật; nếu bạn chỉ có thể thêm một lệnh để tìm tất cả các nhị phân thuộc sở hữu của rpms của tôi (có "công ty" trong tên của họ) thì thật tuyệt vời
Chris Maes

@ChrisMaes - xem cập nhật, LMK nếu bạn cần hướng dẫn thêm.
slm

câu trả lời bằng văn bản rất hay; đầy đủ và được định dạng tốt. Cảm ơn rất nhiều!
Chris Maes

4

Một gợi ý rõ ràng là đặt tên nhị phân hoặc các gói của bạn theo một cách đặc biệt. Vì vậy, ví dụ bạn có thể đặt tiền tố cho chúng cm-, theo tên viết tắt của bạn như được đưa ra trong bài viết này. Nếu bạn đang cài đặt rpms họ cần phải đi vào /usr/bin(nếu họ là người thực thi ở cấp độ người dùng), theo FHS. Họ không nên đi vào /usr/local/binví dụ. Đó là chỉ cho cài đặt địa phương.

Đối với hồ sơ, tôi không tìm thấy ý tưởng đặt nhị phân vào một thư mục đặc biệt và liên kết chúng hấp dẫn, mặc dù tôi cho rằng những việc như vậy đôi khi được thực hiện. Cũng lưu ý rằng nếu bạn cần tìm ra nhị phân thuộc về gói nào, bạn chỉ cần truy vấn hệ thống đóng gói.


3

Các nhị phân không phải là một phần của hệ thống hoặc phân phối thường ở trong

/usr/local/bin

thư mục thường ở trong tiêu chuẩn $PATHđể các nhị phân của bạn sẽ được tìm thấy.


thông thường / usr / local / bin dành cho các tệp nhị phân chỉ tồn tại "cục bộ" trên máy đó; không phải cho nhị phân tôi sẽ phân phối trên các máy khác bằng vòng / phút ...?
Chris Maes

2
Trong Linux, /usr/local/bindành cho các tệp thực thi được cài đặt thủ công. Thực thi được quản lý bởi người quản lý gói đi vào /usr/bin.
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles, cách giải thích đầu tiên của tôi về câu hỏi là cài đặt trên một máy duy nhất để cung cấp các tệp nhị phân cho mọi người dùng (không cài đặt trong $ HOME). Bây giờ tôi thấy rằng nó không thực sự là những gì tôi hiểu.
Matteo
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.