単純なプログラムをインストールするとき、それはしばしばmake && make install
を使用します 多くの場合、アンインストールもありません ターゲット。
プログラムをアップグレードしたい場合、古いプログラムをシームレスに書き換えるだけだと想定するのは標準的なプロトコルですか?
これらのプログラムを追跡するにはどうすればよいですか。ほとんどの人は「解雇して忘れる」だけで、アンインストールがない場合は ターゲットが与えられているので、すべてを手動で削除する必要がありますか?
承認された回答:
各プログラムを専用のディレクトリツリーにインストールし、StowまたはXStowを使用して、すべてのプログラムを共通の階層に表示します。 Stowは、プログラム固有のディレクトリから共通ツリーへのシンボリックリンクを作成します。
詳細については、/usr/local/stow
などの最上位ディレクトリを選択してください。 。 /usr/local/stow/PROGRAM_NAME
の下に各プログラムをインストールします 。たとえば、実行可能ファイルを/usr/local/stow/PROGRAM_NAME/bin
にインストールするように調整します。 、/usr/local/stow/man/man1
のmanページ 等々。プログラムがautoconfを使用している場合は、./configure --prefix /usr/local/stow/PROGRAM_NAME
を実行します。 。 make install
を実行した後 、stow
を実行します :
./configure --prefix /usr/local/stow/PROGRAM_NAME
make
sudo make install
cd /usr/local/stow
sudo stow PROGRAM_NAME
そして今、あなたはこれらのようなシンボリックリンクを持っているでしょう:
/usr/local/bin/foo -> ../stow/PROGRAM_NAME/bin/foo
/usr/local/man/man1/foo.1 -> ../../stow/PROGRAM_NAME/man/man1/foo.1
/usr/local/lib/foo -> ../stow/PROGRAM_NAME/lib/foo
stow
の内容を一覧表示することで、インストールしたプログラムを簡単に追跡できます。 ディレクトリであり、ファイルがどのプログラムに属しているかは常にわかります。これは、そのプログラムのディレクトリの下にある場所へのシンボリックリンクであるためです。 stow -D PROGRAM_NAME
を実行してプログラムをアンインストールします 次に、プログラムのディレクトリを削除します。 stow -D PROGRAM_NAME
を実行すると、プログラムを一時的に使用できなくなります。 (stow PROGRAM_NAME
を実行します 再び利用できるようにします。
同じプログラムの異なるバージョンをすばやく切り替えることができるようにする場合は、/usr/local/stow/PROGRAM_NAME-VERSION
を使用します。 プログラムディレクトリとして。バージョン3からバージョン4にアップグレードするには、バージョン4をインストールしてから、stow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4
。
古いバージョンのStowは、この回答で説明した基本をはるかに超えていません。新しいバージョン、およびXStow(最近は保守されていません)には、特定のファイルを無視する機能などのより高度な機能があり、stowディレクトリ外の既存のシンボリックリンク(man -> share/man
)、いくつかの競合を自動的に処理します(2つのプログラムが同じファイルを提供する場合)。
ルートアクセスがない、または使用したくない場合は、ホームディレクトリの下にあるディレクトリを選択できます。 ~/software/stow
。この場合、~/software/bin
を追加します PATH
へ 。 man
の場合 マニュアルページは自動的に見つかりません。~/software/man
を追加してください MANPATH
に 。 ~/software/info
を追加します INFOPATH
に 、~/software/lib/python
PYTHONPATH
に 、など必要に応じて。