こんにちは。
ニフティでインフラを守るお仕事をしている五月女です。
「前々回の記事」で紹介した通り、ニフティクラウドは標準提供OSとして「CentOS」や「RHEL」を提供してくれています。
中でもCentOSは、商用のRHELと完全互換を目指したフリーなOSとして、企業向けのサーバ構築で人気のディストリビューションです。
ただ、強いEnterprise指向が故に、標準状態では利用出来るソフトウエアのパッケージが古かったり、欲しいソフトウエアのパッケージが無かったりと多少不便な所があります。
そこで今回は、そんなCentOSで最新のソフトウエアを手軽に利用する簡単な手順を紹介したいと思います。( ̄ー ̄)bグッ!
※内容は、2011年08月現在時点の情報です。
※ニフティクラウドで提供されている「CentOS 5.6 64bit Plain」を対象とした記事です
■標準提供のCentOSで不便な所
CentOSが標準で提供するソフトウエアのパッケージを見てみると、必要とするバージョンが提供されてない場合があります。
例えば、LAMP環境の構築を考えた場合、標準では下記のバージョンが提供されています。
- Aapache
- 2.2.3
- 5.0.77
- 5.1.6
- 5.3.3
- 1.8.5
この状態では、「MySQL5.5」でビルドインされたInnoDBを利用したり、より高速化された「Ruby1.9」を利用するといった事が出来ません。
また、最近人気のバージョン管理システムである「git」や、LAMPにおけるMySQLの管理フロントエンドとしてよく利用される「phpMyAdmin」についても、パケージ提供されてないため自前で導入する必要があります。
こうした点の解決策として、最新パッケージや便利なパッケージが追加されている「サードパーティリポジトリ」と、ソースコードからソフトウエアのパケージを作成する「chekinstall」のセットアップを行います。
■便利なCentOS環境のセットアップ
サードパーティリポジトリの追加
今回は著名な3つのリポジトリを追加したいと思います。
RPMforgeリポジトリを追加
RPMforgeは元々CentOSの開発チームにいたDag Wieersさんらが公開されているレポジトリです。
※本家はhttp://apt.sw.be/ですが、今回は速度も考慮し、国内ミラーであるhttp://ftp.riken.jp/Linux/dag/を使います。
[root@localhost ~]# rpm --importhttp://ftp.riken.jp/Linux/dag/RPM-GPG-KEY.dag.txt
[root@localhost ~]# rpm -ivhhttp://ftp.riken.jp/Linux/dag/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
http://ftp.riken.jp/Linux/dag/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
を取得中 準備中... ########################################### [100%] 1:rpmforge-release ########################################### [100%] [root@localhost ~]#
デフォルトでは利用しない様に設定変更する
[root@localhost ~]# vi /etc/yum.repos.d/rpmforge.repo enabled=1 ↓書き換える enabled=0
EPELリポジトリを追加
EPEL(Extra Packages for Enterprise Linux)は先進的な取り組みを行っているFedoraで開発・テストされている最新のパッケージを、CentOS等のEnterpriseLinuxでも利用出来る様に取り組んでいるリポジトリです。
※本家はhttp://download.fedora.redhat.com/pub/epel/
ですが、今回は速度も考慮し、国内ミラーであるhttp://ftp.riken.jp/Linux/fedora/epel/を使います。
[root@localhost ~]# rpm --importhttp://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL
[root@localhost ~]# rpm -ivhhttp://ftp.riken.jp/Linux/fedora/epel/5/x86_64/epel-release-5-4.noarch.rpm
http://ftp.riken.jp/Linux/fedora/epel/5/x86_64/epel-release-5-4.noarch.rpm
を取得中 準備中... ########################################### [100%]> 1:epel-release ########################################### [100%] [root@localhost ~]#
デフォルトでは利用しない様に設定変更する
[root@localhost ~]# vi /etc/yum.repos.d/epel.repo enabled=1 ↓書き換える enabled=0
Remiリポジトリを追加
Remiは元々Fedoraのパッケージ開発者でもあるRemiさんが、Fedoraにも含まれない、さらに先進的なパッケージをテストするために公開しているレポジトリです。
[root@localhost ~]# rpm --importhttp://rpms.famillecollet.com/RPM-GPG-KEY-remi
[root@localhost ~]# rpm -ivhhttp://rpms.famillecollet.com/enterprise/remi-release-5.rpm
http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
を取得中 準備中... ########################################### [100%] 1:remi-release ########################################### [100%] [root@localhost ~]#
追加したリポジトリを確認する
追加したリポジトリを有効した状態でリポジトリの一覧を取得する
[root@localhost ~]# yum --enablerepo=rpmforge,epel,remi repolist all Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: ftp.kddilabs.jp * extras: ftp.iij.ad.jp * remi: rpms.famillecollet.com * rpmforge: fr2.rpmfind.net * updates: ftp.iij.ad.jp epel | 3.7 kB 00:00 remi | 2.5 kB 00:00 remi/primary_db | 259 kB 00:01 rpmforge | 1.1 kB 00:00 repo id repo name status ・ ・ 省略 ・ ・ base CentOS-5 - Base enabled: 3,535 epel Extra Packages for Enterprise Linux 5 - x86_64 enabled: 6,642 extras CentOS-5 - Extras enabled: 299 remi Les RPM de remi pour Enterprise Linux 5 - x86_64 enabled: 625 rpmforge RHEL 5 - RPMforge.net - dag enabled: 10,695 updates CentOS-5 - Updates enabled: 765 ・ ・ 省略 ・ ・ repolist: 22,561 [root@localhost ~]#
パッケージ総数22,561個!!
ちなみに標準のパッケージだけだと・・・
[root@localhost ~]# yum repolist all ・ ・ 省略 ・ ・ repolist: 4,599 [root@localhost ~]#
4,599個と表示されていますので、今回のリポジトリ追加によって約5倍のパッケージが選択出来る様になった事が分かります。
パッケージ作成ツール「chekinstall」のインストール
追加したサードパーティリポジトリにも存在しないソフトウエアはソースコードからコンパイルしてインストールする事になります。
しかし、この場合もchekinstallを利用して一旦パッケージ化してからインストールする事で、
rpmコマンドやyumコマンドを使って他のパッケージと同様に管理する事が可能になります。
ソフトウエアを、単純にソースコードからコンパイルしてインストールした場合、
最初は問題無いのですが、インストールするソフトウエアが増え、
さらには、インストールしたソフトウエアのバージョンが上がったりすると管理の煩雑さが上昇します。
管理の煩雑さから開放されるためにもchekinstallを利用したパケージ化をお勧めします。
chekinstallのソースコードを取得
chekinstall自体がソースコードで頒布されているソフトウエアになります。まずはソースコードを取得します。
[root@localhost ~]# wget 'http://www.asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz
' --2011-08-24 00:49:07--http://www.asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz
www.asic-linux.com.mx をDNSに問いあわせています... 208.75.85.226 www.asic-linux.com.mx|208.75.85.226|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 129577 (127K) [application/x-tar]checkinstall-1.6.2.tar.gz' に保存中 100%[============================================================================================================>] 129,577 52.0K/s 時間 2.4s 2011-08-24 00:49:11 (52.0 KB/s) -
checkinstall-1.6.2.tar.gz' へ保存完了 [129577/129577] [root@localhost ~]#
解凍
[root@localhost ~]# tar vzxf checkinstall-1.6.2.tar.gz
依存パッケージのインストール
checkinstallをコンパイルするのに必要なパッケージをインストールします。
[root@localhost ~]# yum -y install gcc readline-devel gettext rpm-build
chekinstallののインストール
コンパイルしてインストールを実施する
[root@localhost ~]# cd checkinstall-1.6.2 [root@localhost checkinstall-1.6.2]# make [root@localhost checkinstall-1.6.2]# make install
chekinstall自体をパッケージ化する
[root@localhost checkinstall-1.6.2]# checkinstall -R ・ ・ 省略 ・ ・ このパッケージは以下の内容で構成されます: 1 - Summary: [ CheckInstall installations tracker, version 1.6.2 ] 2 - Name: [ checkinstall ] 3 - Version: [ 1.6.2 ] 4 - Release: [ 1 ] 5 - License: [ GPL ] 6 - Group: [ Applications/System ] 7 - Architecture: [ x86_64 ] 8 - Source location: [ checkinstall-1.6.2 ] 9 - Alternate source location: [ ] 10 - Requires: [ ] 11 - Provides: [ checkinstall ] 変更するものの番号を入力してください。Enterで続行します: [Enter] ・ ・ 省略 ・ ・
Done. The new package has been saved to /usr/src/redhat/RPMS/x86_64/checkinstall-1.6.2-1.x86_64.rpm You can install it in your system anytime using: rpm -i checkinstall-1.6.2-1.x86_64.rpm
[root@localhost checkinstall-1.6.2]#
chekinstallを作成したパッケージで上書きインストールする
[root@localhost checkinstall-1.6.2]# rpm -ivh /usr/src/redhat/RPMS/x86_64/checkinstall-1.6.2-1.x86_64.rpm 準備中... ########################################### [100%] 1:checkinstall ########################################### [100%] [root@localhost checkinstall-1.6.2]#
chekinstallの確認
パッケージで管理されているか確認する
[root@localhost checkinstall-1.6.2]# rpm -qa | grep checkinstall checkinstall-1.6.2-1
インストールされたバージョンを確認する
[root@localhost ~]# checkinstall -v checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran このソフトウェアはGNU GPLの下でリリースしています。
■セットアップしたCentOSを使ってみる
最新のパッケージを導入する
実際にサードパーティリポジトリを追加した事で、どの様な変化があったのか確認してみます。
MySQLをインストール
標準状態では「5.0系」しかインストール出来ません。
[root@localhost ~]# yum info mysql.x86_64 mysql-server.x86_64 ・ 省略 ・ Name : mysql Arch : x86_64 Version : 5.0.77 Release : 4.el5_6.6 Size : 4.8 M Repo : updates ・ 省略 ・ Name : mysql-server Arch : x86_64 Version : 5.0.77 Release : 4.el5_6.6 Size : 9.8 M Repo : updates
しかし、追加したリポジトリを利用すると「5.5系」のインストールがパッケージから簡単に行える様になっています。
[root@localhost ~]# yum --enablerepo=rpmforge,epel,remi info mysql.x86_64 mysql-server.x86_64 ・ 省略 ・ Name : mysql Arch : x86_64 Version : 5.5.15 Release : 1.el5.remi Size : 7.4 M Repo : remi ・ 省略 ・ Name : mysql-server Arch : x86_64 Version : 5.5.15 Release : 1.el5.remi Size : 12 M Repo : remi
gitをインストール
標準状態ではパッケージが存在しないgitですが
[root@localhost ~]# yum info git Error: No matching Packages to list
追加リポジトリを利用する事でパッケージからインストールが出来る様になります
[root@localhost ~]# yum --enablerepo=rpmforge,epel,remi info git ・ 省略 ・ Name : git Arch : x86_64 Version : 1.7.6 Release : 1.el5.rf Size : 6.5 M Repo : rpmforge
ソースコードからパッケージを作成する
追加したサードパーティリポジトリにも存在しないパッケージは自前でパッケージ化してインストールします。
ruby1.9のパッケージを作成
Rubyはサードパーティリポジトリを追加しても、「1.8系」しか利用出来ません。
さらに高速で正規表現が強化された「1.9系」を利用するために、ソースコードからパッケージを作成します。
ソースコードを取得
[root@localhost ~]# wget 'ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.bz2
' --2011-08-24 01:51:39--ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.bz2
=>ruby-1.9.2-p290.tar.bz2' ftp.ruby-lang.org をDNSに問いあわせています... 221.186.184.68 ftp.ruby-lang.org|221.186.184.68|:21 に接続しています... 接続しました。 anonymous としてログインしています... ログインしました! ==> SYST ... 完了しました。 ==> PWD ... 完了しました。 ==> TYPE I ... 完了しました。 ==> CWD /pub/ruby/1.9 ... 完了しました。 ==> SIZE ruby-1.9.2-p290.tar.bz2 ... 8811237 ==> PASV ... 完了しました。 ==> RETR ruby-1.9.2-p290.tar.bz2 ... 完了しました。 長さ: 8811237 (8.4M) 100% [============================================================================================================>] 8,811,237 4.31M/s 時間 1.9s 2011-08-24 01:51:42 (4.31 MB/s) -
ruby-1.9.2-p290.tar.bz2' へ保存終了 [8811237]
解凍
[root@localhost ~]# tar lxvf ruby-1.9.2-p290.tar.bz2
依存パッケージをインストール
[root@localhost ~]# yum -y --enablerepo=rpmforge,epel,remi install gcc zlib-devel rpm-build openssl-devel readline-devel
パッケージを作成
[root@localhost ~]# cd ruby-1.9.2-p290 [root@localhost ruby-1.9.2-p290]# ./configure --prefix=/usr [root@localhost ruby-1.9.2-p290]# make && make test [root@localhost ruby-1.9.2-p290]# checkinstall -R --fstrans=no ・ ・ 省略 ・ ・
* RPM package creation selected
このパッケージは以下の内容で構成されます: 1 - Summary: [ Package created with checkinstall 1.6.2 ] 2 - Name: [ ruby-1.9.2 ] 3 - Version: [ p290 ] 4 - Release: [ 1 ] 5 - License: [ GPL ] 6 - Group: [ Applications/System ] 7 - Architecture: [ x86_64 ] 8 - Source location: [ ruby-1.9.2-p290 ] 9 - Alternate source location: [ ] 10 - Requires: [ ] 11 - Provides: [ ruby-1.9.2 ] 変更するものの番号を入力してください。Enterで続行します: [Enter] ・ ・ 省略 ・ ・
Done. The new package has been saved to /usr/src/redhat/RPMS/x86_64/ruby-1.9.2-p290-1.x86_64.rpm You can install it in your system anytime using: rpm -i ruby-1.9.2-p290-1.x86_64.rpm **********************************************************************
作成したパッケージからインストール
[root@localhost ruby-1.9.2-p290]# rpm -ivh /usr/src/redhat/RPMS/x86_64/ruby-1.9.2-p290-1.x86_64.rpm 準備中... ########################################### [100%] 1:ruby-1.9.2 ########################################### [100%] [ root@localhost ruby-1.9.2-p290]#
インストールを確認
[root@localhost ruby-1.9.2-p290]# ruby --version ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
■まとめ
いかがだったでしょうか。
手軽に最新のソフトウエアが利用出来る環境を用意する事で、アプリケーションの可能性が広がり、新しいアイデアが生まれる事があります。
また、「つくろう!」と思っていたツールが、意外と追加したパッケージの中に見つかったりして、余計な車輪の再発明を防ぐ事もあります(^_^;)
さらに、今回導入したchekinstallは自作ソフトウエアをパッケージ化する際にも役に立ちます。
むしろ、ソフトウエアだけでなく、設定ファイルやアプリケーションのパッチをパッケージ化して配布する!なんて事にも使えます。
ある程度の自家製パッケージが揃ったら、個人的なリポジトリや社内向けのリポジトリを作るってのもチャレンジしてみてはいかがでしょうか。