tarballからインストールしたソフトウェアを簡単に管理する
普通 tarball からインストールする時は
./configure
make
sudo make install
のようにインストールします。この場合は全てのファイルが /usr/local に入るわけですが、
これだと複数のソフトウェアをインストールした場合に、どのファイルがどのソフトウェアに所属するのか分からなくなって、アンインストールができなくなります。
なので僕はいつも tarball からソフトウェアをインストールする場合は、
例えば hoge というソフトウェアをインストールする場合、必ず /opt/hoge にインストールしています。
./configure --prefix=/opt/hoge
make
sudo make install
こうすると複数のソフトウェアをインストールしても、ソフトウェアごとにディレクトリが分かれるので、
とすれば一発でアンインストールできます。
環境変数 PATH の設定は、以前書いたエントリー環境変数 PATH を自動で設定する方法で自動で設定されるので、楽チンです。
さらに他の環境変数も次のように定義しています。
# MANPATH の設定
MANPATH=
add_env MANPATH "${HOME}/man" "${HOME}/opt/*/man/ja" "${HOME}/opt/*/man"
add_env MANPATH "/usr/local/man/ja" "/usr/local/man"
add_env MANPATH "/usr/local/*/man/ja" "/usr/local/*/man"
add_env MANPATH "/opt/local/man/ja" "/opt/local/man"
add_env MANPATH "/opt/local/*/man/ja" "/opt/local/*/man"
add_env MANPATH "/opt/*/man/ja" "/opt/*/man"
add_env MANPATH "/usr/share/jman"
add_env MANPATH "/usr/*/man/ja"
add_env MANPATH "/usr/*/man"
add_env MANPATH "/usr/man/ja" "/usr/man"
clean_env MANPATH
export MANPATH
# LD_LIBRARY_PATH の設定
LD_LIBRARY_PATH=
add_env LD_LIBRARY_PATH "${HOME}/lib" "${HOME}/opt/*/lib"
add_env LD_LIBRARY_PATH "/usr/local/lib" "/usr/local/*/lib"
add_env LD_LIBRARY_PATH "/opt/local/lib" "/opt/local/*/lib"
add_env LD_LIBRARY_PATH "/opt/*/lib"
add_env LD_LIBRARY_PATH "/lib"
add_env LD_LIBRARY_PATH "/usr/lib"
add_env LD_LIBRARY_PATH "/usr/*/lib"
clean_env LD_LIBRARY_PATH
export LD_LIBRARY_PATH
# LIBRARY_PATH の設定
LIBRARY_PATH=
add_env LIBRARY_PATH "${HOME}/lib" "${HOME}/opt/*/lib"
add_env LIBRARY_PATH "/usr/local/lib" "/usr/local/*/lib"
add_env LIBRARY_PATH "/opt/local/lib" "/opt/local/*/lib"
add_env LIBRARY_PATH "/opt/*/lib"
add_env LIBRARY_PATH "/lib"
add_env LIBRARY_PATH "/usr/lib"
add_env LIBRARY_PATH "/usr/*/lib"
clean_env LIBRARY_PATH
export LIBRARY_PATH
# C_INCLUDE_PATH の設定
C_INCLUDE_PATH=
add_env C_INCLUDE_PATH "${HOME}/include" "${HOME}/opt/*/include"
add_env C_INCLUDE_PATH "/usr/local/include" "/usr/local/*/include"
add_env C_INCLUDE_PATH "/opt/local/include" "/opt/local/*/include"
add_env C_INCLUDE_PATH "/opt/*/include"
add_env C_INCLUDE_PATH "/usr/include"
add_env C_INCLUDE_PATH "/usr/*/include"
clean_env C_INCLUDE_PATH
export C_INCLUDE_PATH
こうしておくと、/opt にインストールしたソフトウェアの man もちゃんと読めますし、
コンパイルする時にヘッダファイルもちゃんとインクルードしてくれるし、
ライブラリもちゃんとロードしてくれます。
既にシステムにパッケージがインストールされているんだけど最新バージョンを試してみたいときなんかは、
とりあえず /opt にインストールしてテストすることができます。
/opt のパスは /usr よりも先に設定されるので /opt にインストールしたものが優先されます。
/etc/ld.so.conf を書き換えない限りは /opt にインストールした環境はシステムに影響を与えないので、
他のプログラムの動作に影響を与えることはありません。
上記の方法を使うと複数バージョンをインストールすることも簡単です。
複数バージョンをインストールする場合は /opt/pkgs/hoge-x.x.x にインストールします。
./configure --prefix=/opt/pkgs/hoge-1.0.0
make
sudo make install
このままではパスが通りませんので、シンボリックリンクをはってあげます。
違うバージョンを使いたい場合はシンボリックリンクをはりなおす。