Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
141
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

自分でソフトウェアをビルド・インストールするときに/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 に置き換えてやればよい。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
141
Help us understand the problem. What are the problem?