にわか大学生の技術ノート

「そうだ、グーグル先生に聞いてみよう」

Yumについて

はじめに

CentOS6.7でyumを使いソフトウェアをインストールすると、大抵古いバージョンがインストールされます。

私が知る限りでは新しいバージョンをインストールするには

  1. ソースをダウンロードしコンパイルしてインストール
  2. rpmをダウンロードしてインストール
  3. 新しいバージョンが登録されているyumリポジトリを登録しyumでインストール

などの方法でインストールする必要があります。

しかし、ソースをコンパイルしてインストールするとアンインストールが面倒だったり、rpmyumについて詳しい知識がなく理解ができなかったので調べてみることにしました。

RPM Package Manager

Red Hat社が開発したソフトウェアのパッケージ管理システム及びコマンド。パッケージの拡張子は.rpmで「rpm」コマンドを使ってパッケージのインストールなどを行う。

パッケージ管理システムとは、ソフトウェアの導入と削除を管理するシステムのことで、インストールやアンインストールの際に他パッケージとの依存関係を調べて通知してくれたり、インストール済みのパッケージのアップグレードもできるシステム。いわゆるWindowsインストーラーのようなものかな?

パッケージのインストールにはローカルパッケージの他にネットワークにあるパッケージにも対応しているので、パッケージのURLがわかっていればそれを指定してインストールすることもできます。

このRPMパッケージはソースファイルから作成することが可能なので目的のRPMパッケージが見つからない場合は自前で用意することが可能らしい。(まだ試したことがない)

なので、ソースからインストールした場合にmakeファイルにuninstallが用意されていなくてアンインストール時に大変な思いをすることはこれで解決できるはず。

この様にRPMは非常に便利ですが、他のパッケージとの依存関係については通知をするだけで依存関係のパッケージをインストールすることはしてくれないので、自分で個別にインストールしなければなりません。

そこで、依存関係のパッケージも一緒にインストールして管理してくれるのがYumです。

Yum

YumRPM Package Managerのパッケージを管理するメタパッケージ管理システムで、米デューク大学の物理学科で運用していたRed Hatベースのシステムを管理するために作られたものだそうです。

つまり先程のRPMパッケージの集合体がYumです。

このRPMパッケージを集めたものはリポジトリと呼ばれサーバーにアップロードされていて、「yum」コマンドでsearchやinstallなどを行うとこのサーバーに問い合わせて目的のパッケージを入手する仕組みです。

Yumの便利なところは、依存関係のパッケージも一緒にインストールして依存関係を解決する機能があるのでYumでソフトウェアをインストールするのが一番安定すると思います。また、リポジトリにインストールしているものよりも新しいパッケージが登録された場合、yum update を行うことで該当するソフトウェアを一気に更新することができます。

このリポジトリは自分で作成することもでき、中にはサードパーティリポジトリとして公開されていて、それらのリポジトリを追加することでインストールできるソフトウェアを増やすことができます。

依存関係も解決してくれてアップデートも楽にできて大変便利なYumですが、冒頭で述べたように標準リポジトリに登録されているソフトウェアはバージョンが古い場合が多く、新しいバージョンが含まれているサードパーティリポジトリを登録してインストールする必要があります。

サードパーティリポジトリについて

有名で信頼性の高いサードパーティリポジトリにはRemi Repository、Extra Package for Enterprise Linux (EPEL)があります。

Remi RepositoryはRed Hat社に在籍しているRemi Collet氏がメンテナンスしているリポジトリで、比較的新しいPHPMySQLを利用したい場合に利用します。Remiを利用するにはEPELが必要です。

EPELはFedoraで開発、テスト、改良された高品質のパッケージをRHELCentOSなどの互換ディストリビューション上でも利用できるようにするのを目的に管理されているリポジトリです。

この2つのリポジトリは信頼性が高く、特にEPELは標準リポジトリに登録されており、 yum install epel-release で追加することができます。

使用上の注意事項

サードパーティリポジトリは最新のソフトウェアを入手することができますが、CentOS標準のコアパッケージを書き換えてしまい互換性や安定性に問題がでたり、最新故に思わぬセキュリティ上の問題が出たりします。CentOSのパッケージが古のはそこらへんに理由があると思います。

なので、標準リポジトリに目的のソフトウェアがない場合に限り追加したサードパーティリポジトリから入手するように設定したほうがいいと思います。

リポジトリの[有効/無効]設定

リポジトリを追加すると /etc/yum.repos.dリポジトリの設定ファイルが追加されます。例えばEPELだと epel.repo が追加されます。

それをviで開き、enableの項目を0にすればyumのオプションに --enablerepo=リポジトリ名 としない限り検索やインストールがされないようになります。

  • 例:EPEL
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=0   # ここを1から0に変える
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

おわり

以上がyumについて個人的にまとめたものです。新しいソフトウェアを使いたい場合はCentOS自体のバージョンを上げたほうがいいかと思います。

参考文献