さくらの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
最新バージョンを調べる
アップデートで標準リポジトリのパッケージが上書きされないように設定しましたが、同時にinfoやlist等でパッケージの情報を調べる時も標準リポジトリが優先になってしまいます。追加リポジトリも含めて最新版を調べたい時は、オプションで 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 オプションの記述を追記しました