本文へジャンプします。

ニフティクラウド探検隊 CentOSで手軽に最新のソフトウエアを使いたい!

こんにちは。
ニフティでインフラを守るお仕事をしている五月女です。

Photo_2

「前々回の記事」で紹介した通り、ニフティクラウドは標準提供OSとして「CentOS」や「RHEL」を提供してくれています。
中でもCentOSは、商用のRHELと完全互換を目指したフリーなOSとして、企業向けのサーバ構築で人気のディストリビューションです。
ただ、強いEnterprise指向が故に、標準状態では利用出来るソフトウエアのパッケージが古かったり、欲しいソフトウエアのパッケージが無かったりと多少不便な所があります。

そこで今回は、そんなCentOSで最新のソフトウエアを手軽に利用する簡単な手順を紹介したいと思います。( ̄ー ̄)bグッ!

※内容は、2011年08月現在時点の情報です。
※ニフティクラウドで提供されている「CentOS 5.6 64bit Plain」を対象とした記事です

■標準提供のCentOSで不便な所

CentOSが標準で提供するソフトウエアのパッケージを見てみると、必要とするバージョンが提供されてない場合があります。
例えば、LAMP環境の構築を考えた場合、標準では下記のバージョンが提供されています。

  • Aapache
    • 2.2.3
  • MySQL
    • 5.0.77
  • PHP
    • 5.1.6
    • 5.3.3
  • Ruby
    • 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 --import http://ftp.riken.jp/Linux/dag/RPM-GPG-KEY.dag.txt
[root@localhost ~]# rpm -ivh http://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 --import http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL
[root@localhost ~]# rpm -ivh http://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 --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
[root@localhost ~]# rpm -ivh http://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は自作ソフトウエアをパッケージ化する際にも役に立ちます。
むしろ、ソフトウエアだけでなく、設定ファイルやアプリケーションのパッチをパッケージ化して配布する!なんて事にも使えます。
ある程度の自家製パッケージが揃ったら、個人的なリポジトリや社内向けのリポジトリを作るってのもチャレンジしてみてはいかがでしょうか。

ニフティクラウド 導入相談窓口
ニフティクラウド 無料セミナー

閉じる

閉じる

クラウドブログ編集部

クラウドブログ編集部

ニフティクラウド ユーザーブログ編集部のアカウントです。 編集部からのお知らせや、レギュラーライター以外のゲストによる寄稿記事を掲載していきます。

浜中 慶

浜中 慶

1980年、神奈川県生まれ。2003年ニフティ入社。 ポータルサイト開発を中心に、音楽配信サービス、CGMサービスなど様々なプロジェクトに企画/デザイン/システム担当として参加。現在は@niftyのポータルサービス向けコンテンツ管理システムの企画/開発/運用を担当。

吉田 雄哉

吉田 雄哉

株式会社co-meetingの創業メンバー。「取締役&External- facing Technologist」と名乗り新しいIT技術を広く伝える活動とWebアプリケーション開発を行う毎日。パッケージベンダーでのSaaS立上げ・製造業の情報システム部門で企画やPM・受託開発と従事してきたため、ベンダーサイドとユーザサイド の両方の視点を持ち合わせる。

石田 健亮

石田 健亮

株式会社ドリーム・アーツで小売事業者向けSaaS「Shopらん」を企画、開発。メインの仕事はプログラマーだがサーバー管理や営業もこなすユーティリティプレイヤー。最近好きな事はパフォーマンスチューニング。特に並列化プログラミングがマイブーム。キライなことはデータセンターでの作業。騒音と乾燥が弱点。ニフティクラウドでデータセンターに行く必要が無くなったことが本当の利点だ と思っている。

五月女 雄一

五月女 雄一

ニフティでは「インフラを守る簡単な様で奥が深いお仕事」をしています。 夢はインフラの気持ちが読めるエンジニアになること。

わたなべ かずひろ

わたなべ かずひろ

専門学校卒業後、ソフトウェア開発会社で電力系統制御システムの開発に従事。その後、CD-ROM等マルチメディア系PCソフトの開発を経て、1998年フリーランスに。 2000年8月に株式会社イーツーの設立に参画。携帯を含む様々なWeb系のシステム開発に携わる。現在はiPhone/Androidアプリなどの開発も手がけている。

市角

市角

ニフティクラウドのコントロールパネル設計・開発をメインに、たまにインフラの運用やお手伝いもやっていたりします。コントロールパネルや新機能の活用方法、アイデアなどを中心に書いていく予定です。

仲山 昌宏

仲山 昌宏

歌って踊れるインフラエンジニア兼、PHPもRubyもJavaも書くPerl使い。 物理サーバの運用に飽きて、フルラックに格安サーバ詰めて自宅プライベートクラウドを構築中。 今年は個人的には分散処理を攻めていきます。

猪飼 賢広

猪飼 賢広

1984年、愛知県名古屋市生まれ。大学は福島県にある某大学。2008年ニフティに入社。 開発系部署に配属後、主に各種テーマサイト開発のシステム面調整、開発進行管理役などとして参加。 現在もPC・ガラケーサイトの開発まわりを担当。インフラまわりを触る案件にも携わっており、日々修行中。 好きな芸人はなかやまきんに君とレイザーラモンRG。

久江 裕之

久江 裕之

ニフティクラウドのインフラ運用、OS提供の仕事をしています。 新しいOSやイメージが出る時にこのブログでご紹介いたします。入社5年目。一流のインフラエンジニアを目指して日々勉強中。

竹内 豪

竹内 豪

ニフティクラウド エンジニア

山口

山口

ニフティクラウドの基盤設計、新サービス/アライアンス/インフラ企画、その他雑用全般を担当しています。 クラウドに欲しい機能や、こんなふうに使ってほしいという想いが共有できれば良いですね。

芳中 隆幸

芳中 隆幸

ニフティクラウドの開発、運用を担当しています。

酒井 浩平

酒井 浩平

ニフティクラウドの中にいます。 ネットワークまわりの運用・開発や自動化などに取り組んでいます。 すべてのエンジニアを幸せにすることを目指しています。

higebu

higebu

ニフティクラウド IaaSのエンジニアです。 ネットワーク、DRサービス with VMware vCloud® Air™ Technology辺りの担当をしています。

武田

武田

ニフティクラウドの開発・運用を担当しています。 各種機能の内容についてなどで執筆させていただく予定です。

森藤 大地

森藤 大地

データに関する仕事が好きです。

宮原徹

宮原徹

日本仮想化技術株式会社 代表取締役社長兼CEO。仮想化技術に関するコンサルタントとして長年活動しており、特にベンチマークテストによる性能評価を得意としている。

荒谷翔

荒谷翔

株式会社はてなでMackerelのセールスデベロッパーとして勤務しています

東條 望

東條 望

2014年にニフティへ中途入社。 入社後から現在まで、ニフティクラウドのサービス企画・開発を担当しています。 各サービスの紹介を執筆させていただく予定です。