選択肢を使用するか、PATHに追加しますか?

選択肢を使用するか、PATHに追加しますか?

端末でスクリプトをグローバルに使用できるようにする正しい方法(たとえば、コマンド)については少し混乱しています。 2つの方法があります。alternativesユーティリティを使用することです。デフォルトでは、/ usr / binへのシンボリックリンクを作成してから追加します。追加とは、ディレクトリ全体を追加することを意味し、ユーザーごとに機能することをPATH理解しています。PATHしかし、私が嫌いなのはその過程の混乱です。 (少なくとも私の観点では)すべてのディストリビューションには独自の特徴があるようです。他のバージョンのディストリビューションでも何かを追加するのが難しく、PATHオンラインでこれを行う方法について議論する答えがあり、もっと重要なことはしません。します。

alternativesJavaをインストールするときは、通常、次のようにJavaとjavacをグローバルに使用できるようにするガイドラインを見つけます。

代替 --install /usr/bin/java java /opt/jdk1.7.0_79/bin/java 2

alternatives今より頻繁に使用することは問題がありますか?主にJava設定チュートリアルにありますか? Typesafe Activatorを世界中で使用できるようにするためにこれを使用します。また、Ansibleのような自動化ツールがより簡単だと思います。管理者の立場では問題ありませんか?

ベストアンサー1

まず、代替は Debian から来ており、redhat、freebsd、または他の多くのシステムでは動作しません。第二に、標準的な推奨事項は、ベンダーパッケージの場合は/usr/bin、サードパーティのパッケージの場合は/opt、ローカルの実行可能ファイルの場合は/usr/local/binを使用し、ユーザーの実行可能ファイルへのパスを設定することです。

別の目的は、同じ機能を提供する複数のパッケージを持つことです。たとえば、debianには少なくとも3つのmailxパッケージ、2つのawkパッケージ、および複数のjavaパッケージがあります。

今質問の核心です。チュートリアルであなたが示す代替案を使用するのはなぜですか?代替案は Debian パッケージと密接に連携するため、サードパーティのパッケージは主にベンダーパッケージとして機能します。インストールする代わりに代替手段を使用する必要がありますか?絶対ではありません。交換は権限を設定しません。


Unixの重要なアイデアの1つは、すべてがファイルであることです。 (厳密に言えば、これはもはや真実ではありませんが、設計目標として多くを形成しました。)これで、権限に関連するファイルで実行できる3つのことがあります。読み、書き、実行されます。読み取りまたは書き込み時に開くファイルを指定する方法は2つあります。絶対パス(ルートディレクトリへの相対パス)または相対パス(現在のディレクトリへの相対パス)。実行はもう少し複雑で、実行するファイルを指定する3つの方法があります。絶対パス、純粋なファイル名、相対パス。絶対パスは上記と同じです。相対パスは上記と似ていますが、明示的に指定されている場合(名前にスラッシュが含まれている)、パスに相対パスが含まれている場合にのみ使用されます。パスは、PATH環境変数(フォーク中に親プロセスから継承されます)の各プロセスに対して指定されます。名前にスラッシュなしで実行可能ファイルを指定した場合、パスは実行可能ファイルを見つけることができるディレクトリのリストです。管理を簡素化し、実行可能ファイルの場所を高速化するために、実行可能ファイルは少数のディレクトリに収集されます。ほとんどの実行可能ファイルは/bin、/usr/bin、または/usr/local/binにあり、特殊目的の実行可能ファイルは/sbin、/usr/sbin、/usr/local/sbin、および/usr/にあります。ゲーム。一部のユーザーは個人的な目的のために別の場所に追加のバイナリを配置します。私は~/.binに私のディレクトリを置くのが好きですが、~/binも一般的で、ユーザーのニーズに応じて他のディレクトリが使用されることがあります。

共有する実行可能ファイルを配置するとき、各ユーザーは他のユーザーにバイナリの場所を知らせたり、公開場所に配置したりできます。実行可能ファイルを公開場所に配置するときは、ファイルをコピーしてその権限を手動で設定するか、インストールを使用して詳細をより簡単な方法で処理できます。場合によっては、複雑なサードパーティのパッケージをインストールし、関連するすべてのファイル(ライブラリなど)でファイルシステムの主要部分を複雑にし、それを/opt/packageまたは/opt/vendor/packageに配置したくありません。パスに関連ディレクトリを追加したり、標準ディレクトリにラッパースクリプトまたはシンボリックリンクを配置したりできます。代わりに、同じ基本機能と同じ実行可能ファイル名で複数のプログラムを使用できる場合は、正しいプログラムが使用されるようにシンボリックリンクとデータベースエントリを配置することです。

おすすめ記事