Linuxでのパッケージのインストールはいくつか方法がある。年々簡単になっていく傾向だ。
しかし、時には古い方法を用いないといけない場合もあり、知識としては全体像を知っておいたほうがいいだろう。
このページではLinuxパッケージのインストール方法についてまとめてお伝えした。参考にしていただければ幸いだ。
目次
Linuxでのパッケージのインストール
依存関係
Linuxでは、ソースコードからコンパイルしてアプリケーションを導入するときは「configure」「make」「make install」とコマンドを入力するのが一般的だ。これは基本的にどのディストリビューションでも変わらない方法となっている。
しかしこの方法の場合、それぞれのパッケージの依存関係はユーザが自己解決しなければならない。依存関係とは「このパッケージにはあのパッケージのあのバージョンが必要で、先にこちらをインストールしないといけない」などパッケージ同士の関係のことだ。
依存関係問題の解決は大規模なアプリケーションの導入のとき、とても骨が折れる作業となる。
パッケージ管理
そこで大概の場合ディストリビューションにパッケージを管理する仕組みが備わっている。
パッケージを個別管理する場合rpmやdebなどが存在し、依存関係などが記述された、言うなれば「依存表」のようなものを持っている。それを元にyumやaptといったツールを使用して、依存関係を解決し、コマンドひとつでパッケージ郡をインストール出来るようになっている。
日常的にはyumやaptを使用して、パッケージをインストールした方が綺麗にパッケージを管理できるだろう。
このページではrpmやdebといったパッケージ毎のインストール、yumやaptといったパッケージ統合管理システムを使用した、パッケージのインストールについて紹介する。
configureなどを使ったベーシックなインストール
ベーシックな方法で、そのためむしろこの方法でインストールする機会は少ない。しかし、なんだかんだと必要なときがあり、知っておくと良いだろう。
CentOSでの下準備
CentOSの場合デフォルトでは開発環境などがインストールされていないため、コンパイルなどの作業ができない。そこで下準備をする。インストール時に大量のパッケージが導入されるので、仮想のスナップショットをとっておくか、とりあえず流れだけを把握しよう。
# yum groupinstall "Development Tools"
$ yumdownloader --source gzip
# yum-builddep gzip-1.5-8.el7.src.rpm
特殊な下準備はここまで。
実際にやってみる
実際に最新のgzipのソースをwgetでもってきて自力でコンパイルインストールしてみよう。
ソースの入手と展開
$ wget http://ftp.gnu.org/gnu/gzip/gzip-1.8.tar.xz
ダウンロードしたファイルのあるディレクトリにて
$ tar -xvf gzip-1.8.tar.xz
$ cd gzip-1.8
configureを実行してみる
$ ./configure --help
とするとconfigureに引渡しができるオプションが表示される。configureで諸々の引数を指定してmakeファイルを生成する。
またconfigureは環境の検査をする役割をもっている。現状のLinux環境で「ヘッダやライブラリは揃っているか?」などのチェックをしてくれる。
しかしconfigureも完璧ではないので検査にかからない、ユーザが自己判断しなければならない依存ライブラリなども多数存在している。基本的に必要なものはINSTALLやREADMEなどに記述されていることが多い。
今回はとりあえず何も指定せずにconfigureを実行してみる。
$ ./configure
configureが無事終了するとMakefileというファイルが生成される。これはmakeコマンドが読むレシピである。makeコマンドを実行してみよう。
$ make
これでバイナリが生成されるので、あとは所定の位置にできあがったバイナリ、プログラムやライブラリの類を設置すればよい。ひとつづつ手動で設置することは基本的にはなくMakefileの中にインストールするためのオプションが記述されている。
システムに書き込みを行うのでroot権限で
# make install
とすればよい、適切にプログラムがインストールされる。今回はconfigureの段階でなにも指定していなかったので「/usr/local/」の下に全てインストールされる。
アンインストールする場合は
# make uninstall
とすればよい。
しかしこの方法だとソースディレクトリを残しておかなければならないのが難点だろう。そのため後述するパッケージ管理システムを利用した方がOS内を綺麗に保つことが出来る。
CentOSの場合rpmとyum
CentOSに限らずRedhat系ディストリビューションは、rpmを採用していることがほとんどだ。このページでも概要はわかるが、下記などで詳しく説明している。
「spec」ファイルいわばパッケージ構築のレシピを元にパッケージが作成される。specファイルには依存関係の解決情報も含まれており、yumなどがそれをもとにパッケージを統合管理する形をとっている。
rpm個々のインストール
# rpm -ivh <パッケージ名>.rpm
yumによる統合管理
yumでrpmを管理する場合はリポジトリ、パッケージを集中管理するプールにパッケージ保存され、その中でyumがrpmの依存関係を解決し、必要なパッケージがインストールされるようになっている。
インストールされているパッケージを最新の状態にたもつ
# yum update
依存関係を解決しながら指定パッケージをインストールする。
# yum install <パッケージ名>
Debianの場合debとapt
Debian系ディストリビューションはパッケージをdeb形式のパッケージで管理する。レシピが複数に分割されており、rpmファイルと比較すると複雑な作りをしている。こちらも、依存関係情報を内包しておりaptなどを利用すると依存関係を自動解決しながらインストールを行ってくれる。
deb形式のパッケージを個々に扱うコマンドとしてdpkgコマンドがあり、aptコマンドで統合管理することになる。このページでも軽く解説をするが詳しくは下記の2ページをご参考に。
deb個々のインストール
# dpkg -i <パッケージ名>.deb
aptによる統合管理
debパッケージはaptにより強力に管理することが可能となっている。丁度yumと同じ立ち位置にあるシステムだ。
データベースにあるリポジトリの情報を更新
# apt-get update
インストールされているパッケージをアップグレード
# apt-get upgrade
パッケージをインストールする
# apt-get install <パッケージ名>
まとめ
このページではLinuxパッケージのインストール方法についてお伝えをしてきた。yumとaptだけでほとんどはインストール可能だが、できなかったときのために他の方法も概要は理解しておこう。