はじめに
あるライブラリやアプリケーションをインストールしたい場合,Webで検索してインストールするを調べる.その際にさまざまインストールする方法がヒットし,パッケージ管理システムでインストールしているものやソースからインストールしているものなどさまざまな方法が見つかるだろう.
いろいろなインストール方法があって,どれを参考にしたらいいかわからない
実際ところ,目的のライブラリが使用できるのであれば,インストール方法の違いなど気にする必要はない.ただ,これらの違いを理解しているか否かでは,Linuxの習熟度に大きな壁がある.
サーバ管理者に限って言うとこれらを知らないことは問題であるといえる.(後述するが,環境を壊しかねない)
個人的には,管理者ではないLinuxユーザにも知っていてほしい(サーバ管理者の苦労を).
この記事では,ライブラリのインストール方法として,「パッケージ管理システムを使ったインストール」と「ソースコードからビルドし,インストール」を比較し,どちらが適しているかまとめている.
先に結論を書くと
自分の環境にあったインストール方法を確認してください
どちらのインストール方法を選択すればいいか?
│
├ 管理者権限を持っていない人
│ └ ソースからインストール(もしくは管理者に依頼する)
│
└ 管理者権限を持っている人
├ 個人用PCを使っている人
│ ├ OSインストールした直後で,早めに環境構築を済ませたい人
│ │ └ パッケージ管理システムを使ってインストール
│ │
│ ├ できる限り環境を壊したくないが,最悪再インストールすればいいと思っている人
│ │ └ パッケージ管理システムを使ってインストール
│ │
│ └ 万が一にも,環境を壊したくない人
│ └ ソースからインストール
│
└ 共用PCを使っている人
├ 不具合が起きても対処できる自信がある人(上級者向け)
│ └ パッケージ管理システムを使ってインストール
└ システムを安定して動かしたい人
└ ソースからインストール
Linuxの勉強が目的なら,
「ソースコードからインストール」がおすすめです
パッケージ管理システムとは?
有名どころのLinuxディストリビューションには,apt (Debian系), yum (RHEL系), zypper (SUSE系)などパッケージ管理システムが用意されている.
ライブラリやアプリケーションをインストールしたい場合,次のコマンドで簡単にインストールできる.
# apt-get install <library> // DebianやUbuntuなど
# yum install <library> // RHEL, CentOSなど
# zypper install <library> // SLES, OpenSUSEなど
パッケージ管理システムが使えない状況
管理者権限がない場合,パッケージ管理システムからアプリケーションをインストールすることはそもそもできない.おとなしく管理者に依頼するかソースからインストールしよう.
ソースからインストールとは?
ここでは,「ソースからインストール」は
1. ソースコードをダウンロード
2. ビルド
3. インストールし,使用できるように環境設定する
という一連の流れを意味している.
以下は,ソースからインストールする一例である(解凍コマンドや細かい設定は省略)
// ライブラリをダウンロードする
$ wget <URL>
// ライブラリの詳細設定やインストール先を設定する
$ cmake -DCMAKE_INSTALL_PREFIX=/path/to/install/ .
// ビルド(コンパイル)する
$ make
// インストールする
$ make install
パッケージ管理システムかソースからビルドをどちらを選ぶべきか?
パッケージ管理管理システムを使用するメリット
- 簡単にインストールできる
最大のメリット.これがパッケージ管理システムの目的である.また,Web検索も容易で,Debian系なら”apt <インストールしたいパッケージ名>”で簡単に情報が見つかる. - インストール時間が短い
ソースコードからインストールする場合は,ビルドしないといけないが,パッケージ管理システムの場合それが必要ない.大規模なものでは数倍から数十倍速い.
パッケージ管理管理システムを使用するデメリット
- 特定のバージョンをインストールしたい場合,難しい
パッケージによってはさまざまなバージョンが用意されているが,ほとんどの場合決められたバージョンしかインストールできない.
最新バージョンに限っては,パッケージ方がのリリースが遅れている. - ネット回線につながっている必要がある.
aptやyum, zypperはインターネット経由でダウンロード,インストールの作業が一連の流れになっているため,ネット環境がない場合使用できない.
.debや.rpmファイルのみ別サーバでダウンロードし,USBメモリなどで持ってくることもできるが,経験上ソースコードよりパッケージを探すほうが少し面倒である. - 管理者権限が必要
上述したが,そもそも管理者用のコマンドなので,管理者でないユーザは使用できない - パッケージの依存関係
ほとんどの場合問題にならないが,ごく稀にパッケージの依存関係が他のパッケージに影響を与え,使用できないもしくは修正が必要となる.
ソースからインストールするメリット
- 特定のバージョンのライブラリをインストール可能
基本的にソースコードはバージョン管理されている場合が多いので,すべてのバージョンをインストールできる.
最新バージョンはソースコードのリリースが一番早い.
バグがあった場合,パッチなどですぐに修正できる - ライブラリの依存関係に詳しくなる
パッケージの依存関係など複雑なライブラリも多く,苦労しながらインストールすることになるので,いい勉強になる. - 管理者権限を持たないものに関しても,インストール可能になる
スパコンや共有マシンなどなど,管理者権限が与えられていない場合でも,インストール可能になる. - ビルドするため,最適化によって速度が速くなる
ビルド時にCPUやメモリに合わせた最適化をしようと思えばできるので,多少高速なライブラリになる.ほとんどの場合,重要ではないが...
ソースからインストールするデメリット
- 依存ライブラリを別途インストールする必要がある
インストールしようとしているライブラリが,別のオープンソースソフトウェアを利用している場合がある.そのような場合,その依存先のソフトウェアも同時にインストールする必要があり,手間がかかる. - インストール時間を要する
大規模なライブラリの場合,ビルドに数時間かかるものがある.パッケージ管理システムは,ビルドしないため圧倒的にインストール速度が速い.
ソースからインストールする場合の注意点
ライブラリやアプリケーションによっては,異なるバージョンの同じライブラリをインストールした際のサポートをしてない場合がある.
ほとんどのライブラリのデフォルトインストール先は/usr/local/であり,別バージョンをインストールする場合,上書きされ古いバージョンが使えなくなる問題が発生しかねない.
そういったことを回避するため,configure -prefix=
や -DCMAKE_INSTALL_PREFIX
= などで,インストール先を変更することを推奨する.インストール先は/opt/<library_name>/<version>が個人的に推奨している./opt/は管理者権限が必要なので,管理者でない場合は${HOME}/<library_name>/<version>などにすると良いだろう.
結論
インストールの難易度(難しさ):「ソースからインストール」>「パッケージ管理システム」
インストール時間(短さ) :「ソースからインストール」<「パッケージ管理システム」
安全性,拡張性 :「ソースからインストール」>「パッケージ管理システム」
パッケージ管理システムを使用したほうがいい人
すぐにライブラリを使用したい
少々環境が壊れても再インストールすればいいと考えている
ソースコードからインストールしたほうがいい人
絶対に環境を壊したくない
難しくてもLinuxの勉強だと思える
最後に
内容に誤りや不具合,ご意見があればコメントを残して頂けるとありがたいです
関連する議論
関連する議論を見つけ次第,こちらに随時更新していく.必要があれば記事を更新する予定.
https://askubuntu.com/questions/155491/advantages-disadvantages-of-installing-from-source-code
コメント
コメント一覧 (1件)
centos7をつかっていますがsambaは最新版がrpm形式で提供されていないためしぶしぶソースコードからビルドでインストールさせています
本当はらくしてインストールさせたいからrpm形式かyumでインストールさせたいけど古いのばっかりだし
あとやっぱりsamba はファイルサーバだからインターネットに繋がさせれいないからイントラネットワークを構築せざるを得ないしそうなると必然的にソースコードを手に入れてビルドしてインストールするしかないです