常にパスにあり、簡単に見つけるためにバイナリをどこに置くべきですか?

常にパスにあり、簡単に見つけるためにバイナリをどこに置くべきですか?

私は(自分のrpmを使って)簡単にインストールしたいバイナリ、スクリプトなどを作成しています。私は誰もがそれにアクセスできるようにしたいので、本能的に/ usr / binに入れます。

  • パスを変更する必要はありません。

しかし、私の実行可能ファイルは他のすべての実行可能ファイルプールに消えています。そこに置いたすべての実行可能ファイルを簡単に見つける方法は何ですか?私は考えています:

  • / usr / binのサブディレクトリ(これは実行できないことを知っています。私のアイデアを説明するためだけのものです)
  • 別のディレクトリ(/opt/myself/bin)を作成し、各実行可能ファイルを/usr/binにリンクします(多くのタスク)。
  • 別のディレクトリ(/opt/myself/bin)を作成し、そのディレクトリを/usr/binに接続します(これは可能ですか?)

これを行うための「最高のLinux互換の方法」とは何ですか?

編集:私たちは会社でこれについて議論した後、2番目に良い選択肢を思い出しました。バイナリを/usr/bin/companyに入れ、/usr/binのシンボリックリンクを使用することです。この解決策は満足できません(議論中)。

答え1

バイナリを自分のRPMにまとめると、バイナリとは何か、どこにインストールされているのかを簡単にリストできます。

はい

$ 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

実行可能ファイルを挿入するか、独自のRPMをローリングすることをお勧めします/usr/bin/usr/local/binこれは非常に簡単で、RPMを使用してソフトウェア配布を管理すると、バージョン番号でバンドルにタグを付けることができ、ソフトウェア配布時の構成管理がさらに簡素化されます。

どのRPMが「私」であるかを確認しますか?

既知の情報を使用してRPMを構築し、構築する前に同意することができます。私はしばしば自分のドメインが所有しているシステムからパッケージを構築するので、ホストX.mydom.comに構築されているすべてのRPMを検索するだけで簡単にRPMを見つけることができます。

はい

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

Build HostこれはRPM内の行になります。

/usr/bin/companyを使用しますか?

おそらくそのような場所の使用をお勧めしません。主にこれを含めるには、すべてのシステムを改善する必要があり、非標準である$PATHためです。カスタマイズは常にUnix管理者になることを望むすべての人の「パスポート」でしたが、必ずしも必要でない限り、常にお勧めしませんでした。

このようなカスタマイズの最大の問題は、環境を維持し、新しい人が使い方をすばやく習得するのに負担がかかることです。

RPMからファイルのリストをインポートできますか?

はい、これは達成できますが、RPMを2回呼び出す必要があります。最初は、ホストX.mydom.comに構築されたパッケージのリストを作成します。このリストがある場合は、RPMクエリを再度呼び出して各パッケージが所有するファイルを見つける必要があります。これを達成するには、次のライナーを使用できます。

$ 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

答え2

明らかな提案は、バイナリまたはパッケージの名前を特別な方法で指定することです。たとえば、cm-この資料に示されているように追加できます。 rpmsをインストールするには、/usr/binFHSに従ってそれを入力する必要があります(ユーザーレベルの実行可能ファイルの場合)。/usr/local/binたとえば、入力しないでください。これはローカルインストールでのみ機能します。

ちなみに、バイナリを特別なディレクトリに入れて接続するアイデアはまったく魅力的ではないと思います。また、どのバイナリがどのパッケージに属しているかを調べるには、パッケージングシステムに問い合わせてください。

答え3

システムやディストリビューションに属さないバイナリは通常、次の場所にあります。

/usr/local/bin

$PATHこのディレクトリは通常、バイナリを見つけるために標準ディレクトリにあります。

関連情報