同様のプログラムを単一パスディレクトリにグループ化すると、どのような利点がありますか?

同様のプログラムを単一パスディレクトリにグループ化すると、どのような利点がありますか?

Webサーバーにprometheusを設定していますが、各エクスポートは独自のプログラムであり、$ PATHのディレクトリに追加する必要があることがわかりました。

私の質問は、これらの専用ディレクトリ(例:いくつかの例を作成するために "/usr/exporters/bin")を作成し、その中にすべてのエクスポートプログラムを置き、そのファイルを$ PATHに追加することにどのような利点がありますか?それとも、バイナリが格納されているデフォルトディレクトリにプログラムをプッシュする方が良いですか?

答え1

唯一の利点は、ディレクトリ数が少ない$PATHため、実行可能ファイルを見つけるときに検索するディレクトリも少ないことです。しかし、次のようになります。

  • このイベント(検索のすべてのディレクトリ$PATH)はほとんど発生しません。エントリ(実行ファイル)は、起動時または経由で更新される$PATHハッシュテーブルに保存されます。毎回見つける必要はありません。bashrehash$PATH

  • この活動は高価ではありません。必要なすべての情報(ファイルが存在し実行を許可する権限)は、ファイルのディレクトリエントリから収集できるため、各ファイルにアクセスする必要はありません。目次を読んでください。

実行可能ファイルをパブリックギターディレクトリに移動しない理由は次のとおりです。

  • 標準ではない環境を持つようになります。助けを求めるときは、これを説明するためにさらに努力してください。特に、非標準環境に起因する問題は解決しにくい。

  • 標準ではない環境を持つようになります。更新されたバージョンがリリースされると、ユーザーエクスペリエンスはアップデートで予想される環境と一致しません。

  • 標準ではない環境を持つようになります。今週、来週、来週…永遠に非標準環境アップデートを覚えておく必要があります。

これは利点がない猿の動きである。

答え2

一致するライブラリがあるディレクトリにバイナリを格納するのが一般的です。ユースケースはバージョン管理です。複数のバージョンのPythonがインストールされており(2.7、2.7、3 ...)すべてが必要ですが、標準を定義したいとしましょう。

通常、これはalternativesたとえばパッケージとバイナリへのソフトリンク/usr/bin(で定義されています/etc/alternatives)を使用します。

主な利点は、から左から右の順序を使用することです$PATH。たとえば、ローカルバージョンまたは事前確認を実行するスクリプト(たとえば、dingファイルの前に警告を表示するスクリプトshred)を介して標準コマンドをオーバーライドすると、そのコマンドは最初にリストされているディレクトリに配置されるため、$PATHローカル(ユーザーの)バージョンはStandard EditionとStandard Editionをフルパスでのみ実行します。

質問に関する追加情報:バイナリファイルを移動するのは良い考えではありません。バイナリファイルは、そのディレクトリ内の他のファイルによって異なります。できるだけソフトリンクしてください。あるいは、alternativesツールセットを使用すると、より多くの概要を維持するのに役立ちます。

答え3

時によって異なります...

何百ものそのようなプログラムがあれば、おそらく可能です。

それ以外の場合は/usr/local/bin/$ PATHにあるので、ユーザーディレクトリの適切な場所にプログラムを配置し、各プログラムに対応するソフトリンクを配置します/usr/local/bin/。完璧ではありませんが、PATHの損傷を防ぎます。

関連情報