自分でソフトウェアをビルド・インストールするときに/usrや/usr/localへインストールしない

  • 81
    Like
  • 0
    Comment
More than 1 year has passed since last update.

Linux系OSやcygwinに、自分でソフトウェアのソースコードを入手してきてをビルド・イ
ンストールするときに、/usrや/usr/localへインストールしないようにしている。

  • apt-get/apt-cache 等のパッケージ管理用のが使っている領域に自分で手を入れ
    て問題が起きたとき、原因の切り分けが面倒になる

  • 自分ひとり、ユーザアカウントひとつの端末にソフトを導入するために、root所有
    の領域を使う不自然さ

などの理由から。

./configure && make && make install でインストールする、といった手順がよく紹
介されているが、ほとんどの場合は make install でroot権限を要求され、 /usr
/usr/local 配下にコンパイルされたソフトやファイルがコピーされることになる
が、この行き先をホームディレクトリ配下にする。

前提

どこかから入手してビルド・インストールするソフトのインストール先を、
$HOME/usr としておく。

ヘッダファイルは $HOME/usr/include, 共有ライブラリは $HOME/usr/lib, 実行ファ
イルは $HOME/usr/bin に置かれることになる。

ちなみに自分で作ったスクリプトやソフトの置き場は $HOME/bin としている。

準備

bashやzshなどのシェルの設定ファイル (たいていは ~/.bashrc, ~/.bash_profile,
~/.profile というファイル名) を編集する。

次の1行を追加する。

export PATH=$PATH:$HOME/usr/bin

configureスクリプトが用意されたソフトウェアのビルド

ほとんどの場合、 prefix でインストール先を指定できる。

$ ./configure --prefix=$HOME/usr

これで make install によるインストール先を $HOME/usr 配下にできる。

Makefileしかないソフトウェアの場合

どうするのが正解なんでしょうね。Makefileの中身を見なければわからないと思うけど……。

たとえば、youtube-dl という動画サイトの動
画データを抽出するためのソフトの場合、Makefileに次のような設定箇所がある。

PREFIX=/usr/local
BINDIR=$(PREFIX)/bin
MANDIR=$(PREFIX)/man
PYTHON=/usr/bin/env python

この場合、PREFIX=/usr/localPREFIX=$(HOME)/usr に置き換えてやればよい。