NOTES : 2010-10-03 : WEB

さくらのVPS CentOSでサーバ構築 11 – yum

さくらのVPS CentOSでサーバ構築 作業ノート11回目。
今回はパッケージ管理システムの説明とリポジトリの追加をします。

CentOSの標準リポジトリは非常に安定しているバージョンを採用している為、少々バージョンが古いことがあります。この影響で、phpのバージョンが古くて phpmyadmin が動かなかったり、後でインストールする予定の Git がリストになかったりします。当然、ソースからコンパイルできますが、サードパーティ製のリポジトリを追加することで、標準ではサポートされていないパッケージも、簡単にインストール可能になります。

yum-prioritiesのインストール

リポジトリを追加する前に、リポジトリの優先順位を設定する必要があります。
アップデートした時に、追加リポジトリ内に公式パッケージよりも最新のバージョンがある場合、意図しない不安定な最新版がインストールされてしまう場合があります。そのような事故を避ける為に、インストール時以外はリポジトリを無効化しておいたほうが安全なのですが、無効化してしまうと追加リポジトリからインストールしたパッケージが自動アップデートされません。これを解決する為に標準リポジトリを最優先に設定できるyum-prioritiesをインストールします

[root@ ~]# yum -y install yum-priorities

標準リポジトリの優先度を変更します。

[root@ ~]# vi /etc/yum.repos.d/CentOS-Base.repo

「priority=優先度」の形式でプライオリティを設定します。優先度は1~99で、値が小さいほど優先度が高くなります。priorityが未設定のレポジトリは優先度99として動作します。標準リポジトリに小さい値を設定するだけで、後で追加するリポジトリの未設定値99より優先されるようになります。

[base]
priority=1 ← 追加

[updates]
priority=1 ← 追加

[addons]
priority=1 ← 追加

[extras]
priority=1 ← 追加

[centosplus]
priority=1 ← 追加

[contrib]
priority=2 ← 追加

追加リポジトリのインストール

続いてリポジトリのインストールです。

EPELリポジトリ

この中にはGitや最新版のMySQL他、多数のパッケージが含まれます。一覧はこちら

[root@ ~]# rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

Remiリポジトリ

この中には最新版のPHP他、多数のパッケージが含まれます。一覧はこちら

[root@ ~]# rpm -ihv http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

Remiリポジトリはインストール時に設定で無効になっているので、有効化させます。

[root@ ~]# vi /etc/yum.repos.d/remi.repo

[remi]
...
enabled=1

RPMforgeリポジトリ

その他、公式でサポートされていないパッケージが多数含まれます。一覧はこちら

[root@ ~]# rpm -ihv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS//rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

最新バージョンを調べる

アップデートで標準リポジトリのパッケージが上書きされないように設定しましたが、同時にinfolist等でパッケージの情報を調べる時も標準リポジトリが優先になってしまいます。追加リポジトリも含めて最新版を調べたい時は、オプションで priorities をOFFにして調べましょう。

[root@ ~]# yum --disableplugin=priorities info php

アップデートがうまく行かない時

理由があって更新パッケージをまとめてアップデートしたい時に、標準以外のリポジトリからインストールをしている場合は依存関係等でうまくいかない場合があります。その場合、うまくいかないパッケージを除いてアップデートするオプションを使います。

[root@ ~]# yum --skip-broke update

自動更新の設定

さくらのVPSでは最新版への自動更新デーモンのyum-updatesdがインストールしてありますが、常駐してメモリを使う為、標準ではOFFになってます。
なので、常駐せずに定期的に自動アップデートを起動してくれるyum-cron をインストールします。

[root@ ~]# yum -y install yum-cron

自動でインストールまでされると管理上問題がある場合は、以下のように更新チェックと更新ファイルのダウンロードのみを行うように設定します。

[root@ ~]# vi /etc/sysconfig/yum-cron

CHECK_ONLY=yes
DOWNLOAD_ONLY=yes

そして起動します。

[root@ ~]# service yum-cron start
Enabling nightly yum update:                               [  OK  ]

[root@ ~]# chkconfig yum-cron on
[root@ ~]# chkconfig --list yum-cron
yum-cron        0:off   1:off   2:on    3:on    4:on    5:on    6:off

キャッシュのクリア

インストールや、大量アップデートの後はキャッシュにファイルが残ってるので、気になる場合は消去しましょう。

yumのキャッシュサイズを表示

[root@ ~]# du -h /var/cache/yum

yumのキャッシュをクリア

[root@ ~]# yum clean all

今日のハマりポイント

  • 古い記事だとリポジトリのインストールの時にGPG keyファイルを別に入れるとあるが、rpm -ihv で入れたら、同時にGPG keyもインストールされてた。

更新

  • 2011/08/18 yum-cronの設定を追記しました
  • 2011/08/18 –skip-broke オプションの記述を追記しました

コメント (0件) - 表示・投稿 ▼