search
LoginSignup
144

More than 5 years have passed since last update.

posted at

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

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 に置き換えてやればよい。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
144