みなさんはソースコードからビルドしてインストールするとき、どこにインストールしているだろうか。

一番多そうなのは /usr/local の下にインストールするという意見である。確かに FHS (Filesystem Hierarchy Standard) を読むとここはシステム管理者が独自にビルドしたソフトウェアを配置する場所になっているようだ。

しかしちょっと待ってほしい。ここには /usr の下と同じく bin lib share etc といったサブディレクトリが存在するのが通例である。これらに並んで /usr/local/product_name が存在するとすると美しくないのではないだろうか。ましてや /usr/local/product_name の下にも bin や etc があった場合、ますます美観を損ねるように思えてならない。

ここは思い切って以下のようにしてみてはどうだろう。

プロダクトは /opt の下にインストールする。第二階層は product_name とし第三階層は version とする。さらに、実際に利用するバージョンは current というシンボリックリンクを貼ることにする。

すなわちこのようになる。

# ソフトウェアのインストール先
/opt/product_name/2.0

# シンボリックリンクを貼る
cd /opt/product_name
ln -s 2.0 current

# 実際のパスは current に通す
which product_bin
# -> /opt/product_name/current/bin/product_bin

こうしておけばシステム管理者は /opt の下だけ意識しておけば良く、ソフトウェアのアンインストールも容易である。副次的効果として複数バージョンの切り替えもラクになる。

プロダクト全体で独立しているようなものについてはこのように /opt の下にインストールすることにしてはどうだろうか。システム全体で利用するライブラリのようなものをビルドしたときは /usr/local の各サブディレクトリに配置すれば良い。

そんなわけで ./configure の引数に以下のオプションを追加することを提案する。

./configure --prefix /opt/product_name/version

[追記]
書いてて思ったのですが /opt/product_name_version にインストールして /opt の下にシンボリックリンクを貼っても良さそうですね。

# ソフトウェアのインストール先
/opt/product_name_2.0

# シンボリックリンクを貼る
cd /opt
ln -s product_name_version product_name

投稿日: 作成者: 774