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/local
を PREFIX=$(HOME)/usr
に置き換えてやればよい。