« データベースで大文字と小文字の区別に注意を | Main | 【雑記】 PCをしばらく使わないときにはモニターの電源を切ろう »

May 12, 2007

アプリケーションをインストールする方法の比較

※一番下に補足を加えました。(2007/5/13)

昔(WEBが登場する10年ほど前くらいまで)はUNIXシステムにアプリケーションをインストールする際はソースコードを持ってきてコンパイルするのが当たり前でしたが、現在は主要アプリケーションがパッケージ化されインストールが非常に簡単になりました。しかし、にも関らずプロのシステム管理の現場では未だに相変わらずアプリケーションをコンパイルして導入することが多いです。そこで今回はアプリケーションのインストール方法の比較をしてみたいと思います。

【yumやrpmなどでインストール】
Redhat系のLinuxでは他の人が作ってくれたパッケージを使ってアプリケーションをインストールすることができます。これらを利用してインストールするメリットは導入、アップデート、アンインストールが簡単ということに尽きます。例えば

# yum install httpd
# yum update httpd
# yum remove httpd

というような感じでアプリケーションを簡単に扱うことができます。

(ちなみにSolarisであればCompanion CDからのインストールになりますね)

【コンパイルしてインストール】
一方コンパイルしてインストールする場合は結構大変です。ソース配布元からソースコードをダウンロードしてきてインストールします。昔はアプリケーション毎にインストール方法が異なっていたのでREADMEファイルをしっかり読み込まないとコンパイルすらうまくいかなかったですが、最近では大抵の場合はconfigureしてmakeしてmake installするとインストールできるようになったので結構楽になりました。

コンパイルしてインストールする場合に大変なことはいろいろあります。まずは依存関係のあるライブラリがある場合です。単体で動かないアプリケーション、例えばphpなどがいい例ですが、最新版のphpをコンパイルしようとすると場合によっては依存関係のあるライブラリが足りないだとかバージョンが古いので最新バージョンを入れろだとかでコンパイルがストップします。この作業は非常に面倒くさいです。次にアップデートやアンインストールをする場合です。アップデートの場合は上書きで対応すると危険なので最新バージョンを別にコンパイルしておいて後で入れ替えたりします。アンインストールの場合はmake cleanした後残された設定ファイルを手動で消したりしていきます。

【プロが未だにコンパイルしてインストールする理由】
yumなどを使うと非常に簡単であることがおわかりいただけたかと思いますが、それでもプロが未だにコンパイルしてインストールする理由がいくつかあります。

まずは最新バージョンを使いたいからです。最新版のアプリケーションがrpm化されるまでには結構時間がかかる場合があります。特にセキュリティ案件だとそういったものがrpm化されるまで待っていられない場合もあるので、自分でコンパイルしてインストールしたほうが結果的には楽というのがあります。LAMP環境であればApache、MySQL、PHPだけはこうしてコンパイルして使う場合が多いです。

それから依存関係のあるライブラリのバージョンを管理したいからです。rpmの場合、誰かが一番最後にパッケージ化したときのバージョンがそのrpmの最新バージョンとなるため、必ずしもアプリケーション全てが最新バージョンのrpmが提供されているわけではありません。そういうのは管理がとても難しいので依存関係のあるライブラリも結局は自分でコンパイルしてインストールしたほうがバージョン管理ができて楽なのです。

が、当然のことながらこういった対応の仕方はシステム管理者にとってかなりの負担で、特に大規模サイトにもなるとサーバ台数がものすごく多いので現実的でなくなってきます。いわば職人技的なこういった仕事ぶりを近代的にしていくことがこれからのシステム管理には必要なことだと強く思います。

※補足(2007/5/13)
このエントリーに対して数名の方から「いや、プロであればむしろ自分でrpm作るのが普通ではないか?」という意見をいただきましたのでこの件補足します。

まず「yumやrpmなどを使ってアプリケーションをインストールする」という意味は誰かがrpm化してくれるのを待ってインストールするという意味で用いました。その意味では「自分でrpm化する」というのは「自分でコンパイルする」という範囲に(このエントリーの趣旨としては)含まれています。

あと「プロが」と一般化しましたがこれは「私が」としたほうが良かったかもです。何故私が自らrpmなどのパッケージを作らなかったかについてですが、
  1.管理していたOSが多岐に渡っていたこと(&Linuxの比率が低かった)
  2.サービスによって利用するアプリケーションを変える必要があった
というのがその理由です。昔のことなのでうろ覚えですが、たしか30種類くらいのパターンがあった記憶があります。そんなに種類があるものをいちいちパッケージ化していられないという事情があり、当時はパターン毎にインストールメモを作る程度で済ませていました。

|

« データベースで大文字と小文字の区別に注意を | Main | 【雑記】 PCをしばらく使わないときにはモニターの電源を切ろう »

サーバ・OS」カテゴリの記事

Comments

自分で RPM 作成は無しですか?
SRPMS が用意されてると結構簡単だと思うんですけど。
少なくともアップデートやアンインストールの問題は軽減されます。

Posted by: b-wind | May 13, 2007 at 04:59 PM

コメントありがとうございます。

補足を記しましたのでそちらをご覧いただければと思います。

Posted by: sanonosa | May 13, 2007 at 10:20 PM

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/32004/15058750

Listed below are links to weblogs that reference アプリケーションをインストールする方法の比較:

» これは違うと思うなぁ [よくきたblog]
いつも愛読しているsanonosaですが,プロがなぜソースをコンパイルするか? というエントリがありました.rnしかしその内容に違和感があります. [Read More]

Tracked on May 14, 2007 at 09:38 AM

» アプリケーションをインストールする方法の比較 [*Backtrace*]
これは意外。大規模だったら自前でrpmを作るもんだと想像してた。あるいはcfengineやpuppet方面で逃げ道でもあるのかと。 仮に一回こっきりでも時間的制約と政治的制約をクリアできるなら自前でrpmなりdebなりports skeletonなりを作って入れるよオレは。インストールじゃなくてアンインストールの手間を省くのが目的。 作ったあとはupsteamに配布の手間を押し付けると楽。 俺はFreeBSDでしかできてねーけどな。 p5-Cryp... [Read More]

Tracked on May 14, 2007 at 11:09 PM

« データベースで大文字と小文字の区別に注意を | Main | 【雑記】 PCをしばらく使わないときにはモニターの電源を切ろう »