私はMacOS Xで作業しています。これは、主に/usr/bin/
と/usr/sbin/
にあるいくつかのバイナリで出荷されます。一部のLinuxディストリビューションのようなネイティブパッケージマネージャーがないため、自分のバイナリの管理、/usr/local/<package_name>/
でのビルドとインストールに慣れました。
このようにして、.bashrc
ファイルのPATH
変数とMANPATH
変数を手動で更新する代わりに、システムからパッケージを完全に削除できます。
簡単な例を次に示します。
Mac OS Xには、/usr/bin
にあるant1.7.0が付属しています。最新バージョンを使用する必要があるので、Apacheからダウンロードしてから、/usr/local/Apache-ant-1.8.2
に解凍(ビルド)します。次に、.bashrc
ファイルを次のように更新します。
# Mac OS X original PATH
PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin"
# Apache Ant 1.8.2
PATH="$PATH:/usr/local/Apache-ant-1.8.2/bin"
export PATH
ant
以外にもオーバーライドしたくないバイナリが存在することが多いため、/usr/bin/
の前に/usr/sbin/
とant/bin/
を必ずエクスポートします。
問題は、which ant
と入力すると/usr/bin/
が表示されることです。そこで、最新のビルドで作業するために、/usr/bin/ant
の名前を/usr/bin/ant-old
に変更します。
これは機能しますが、システムバイナリを置き換えるためのより良いアプローチがあるかどうかを知りたいです(主に最後の名前変更を回避するため)。
システムバイナリの交換は最後の手段です。
私のアドバイスは次のとおりです。
/usr/local/bin
およびPATH
上の他のシステムディレクトリの前に/usr/bin
を配置します。/usr/local/bin/ant
を/usr/local/Apache-ant-1.8.2/bin/ant
へのシンボリックリンクにします。PATH
に/usr/local/Apache-ant-1.8.2/bin
を含めないでください。こちらです:
/usr/local/bin
内の)カスタマイズは、システムのデフォルトを上書きします。/usr/local/bin/ant
は、そのバージョンのant
をどこで入手したかを示します。PATH
から/usr/local/bin
を削除するだけです。システムバイナリをオーバーライドする通常の方法は、新しいバイナリを/usr/local/bin
(またはsbin
)にインストールし、パスの/usr/local/bin
の前に/usr/bin
が来るようにすることです。
通常、これを行うには、パッケージを--prefix=/usr/local
で構成します。これにより、パッケージごとに/usr/local/bin
にディレクトリを作成する代わりに、/usr/local
の下にバイナリをインストールします。
/usr/local/Apache-ant-1.8.2/bin
に使用したくないバイナリがあると言っていますか?その場合は、(現在行っているように)/usr/local/Apache-ant-1.8.2
の下にインストールすることをお勧めしますが、(パスに/usr/local/bin
を配置する代わりに)../Apache-ant-1.8.2/bin/ant
から/usr/local/Apache-ant-1.8.2/bin
へのシンボリックリンクを作成します。