btoメモ

なんか適当に書く

tarballからインストールしたソフトウェアを簡単に管理する

普通 tarball からインストールする時は

./configure

make

sudo make install

のようにインストールします。この場合は全てのファイルが /usr/local に入るわけですが、

これだと複数のソフトウェアをインストールした場合に、どのファイルがどのソフトウェアに所属するのか分からなくなって、アンインストールができなくなります。

なので僕はいつも tarball からソフトウェアをインストールする場合は、

例えば hoge というソフトウェアをインストールする場合、必ず /opt/hoge にインストールしています。

./configure --prefix=/opt/hoge

make

sudo make install

こうすると複数のソフトウェアをインストールしても、ソフトウェアごとにディレクトリが分かれるので、

sudo rm -rf /opt/hoge

とすれば一発でアンインストールできます。

環境変数 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

このままではパスが通りませんので、シンボリックリンクをはってあげます。

sudo ln -s /opt/pkgs/hoge-1.0.0 /opt/hoge

違うバージョンを使いたい場合はシンボリックリンクをはりなおす。

sudo ln -s /opt/pkgs/hoge-2.0.0 /opt/hoge

複数バージョンのインストールなんかは RPM のようなパッケージ管理システムを使ってもできないので、かなり便利です。