CentOS 7 パッケージ管理(yum)

■yum-prioritiesのインストール
yum-plugin-prioritiesとは、サードパーティ製のリポジトリを追加した際にどちらを優先するか優先順位をつけるプラグイン。

[root@server1 ~]# yum -y install yum-plugin-priorities
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.fairway.ne.jp
* extras: mirror.fairway.ne.jp
* updates: mirror.fairway.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ yum-plugin-priorities.noarch 0:1.1.31-25.el7_0 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
====================================================================================================
インストール中:
yum-plugin-priorities noarch 1.1.31-25.el7_0 updates 23 k

トランザクションの要約
====================================================================================================
インストール 1 パッケージ

総ダウンロード容量: 23 k
インストール容量: 28 k
Downloading packages:
警告: /var/cache/yum/x86_64/7/updates/packages/yum-plugin-priorities-1.1.31-25.el7_0.noarch.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
yum-plugin-priorities-1.1.31-25.el7_0.noarch.rpm の公開鍵がインストールされていません
yum-plugin-priorities-1.1.31-25.el7_0.noarch.rpm | 23 kB 00:00:00
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 から鍵を取得中です。
Importing GPG key 0xF4A80EB5:
Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
Package : centos-release-7-0.1406.el7.centos.2.3.x86_64 (@anaconda)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : yum-plugin-priorities-1.1.31-25.el7_0.noarch 1/1
検証中 : yum-plugin-priorities-1.1.31-25.el7_0.noarch 1/1

インストール:
yum-plugin-priorities.noarch 0:1.1.31-25.el7_0

完了しました!

設定ファイル/etc/yum/pluginconf.d/priorities.confを変更

[root@server1 ~]# vi /etc/yum/pluginconf.d/priorities.conf
[main]
enabled = 1
check_obsoletes = 1 ← 追加

■CentOS-Base.repoの編集
CentOS-Base.repoは優先度を高く(priority=1)しておく。

[root@server1 ~]# vi /etc/yum.repos.d/CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
priority=1 ← 追加 priorityとは優先度で、1の方が優先度は高くなる。(未設定の場合は99)
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
priority=1 ← 追加
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
priority=1 ← 追加
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
priority=1 ← 追加
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=1 ← 0から1に変更
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

■EPELリポジトリのインストール

[root@server1 ~]# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
--2015-03-15 17:00:31--  http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
dl.fedoraproject.org (dl.fedoraproject.org) をDNSに問いあわせています... 209.132.181.24, 209.132.181.27, 209.132.181.25, ...
dl.fedoraproject.org (dl.fedoraproject.org)|209.132.181.24|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 14524 (14K) [application/x-rpm]
`epel-release-7-5.noarch.rpm' に保存中

100%[======================================>] 14,524      --.-K/s 時間 0.1s    

2015-03-15 17:00:31 (118 KB/s) - `epel-release-7-5.noarch.rpm' へ保存完了 [14524/14524]

[root@server1 ~]# rpm -ivh epel-release-7-5.noarch.rpm
警告: epel-release-7-5.noarch.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID 352c64e5: NOKEY
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:epel-release-7-5                 ################################# [100%]

[root@server1 ~]# rm -f epel-release-* ← ダウンロードしたファイルを削除

■epel.repoを確認

[root@server1 ~]# vi /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1 ← 1 に設定
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

EPELリポジトリからインストールする場合

[root@server1 ~]# yum --enablerepo=epel -y install パッケージ

■Repoforgeリポジトリのインストール

[root@server1 ~]# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
[root@server1 ~]# rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm を取得中
準備しています... ################################# [100%]
更新中 / インストール中...
1:rpmforge-release-0.5.3-1.el7.rf ################################# [100%]
[root@server1 ~]# rm -f rpmforge-release-*  ← ダウンロードしたファイルを削除

■Repoforgeを確認

[root@server1 ~]# vi /etc/yum.repos.d/rpmforge.repo
### Name: RPMforge RPM Repository for RHEL 7 - dag
### URL: http://rpmforge.net/
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el7/en/$basearch/rpmforge
mirrorlist = http://mirrorlist.repoforge.org/el7/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled=0 ← 1 に設定
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgchecki = 1

[rpmforge-extras]
name = RHEL $releasever - RPMforge.net - extras
baseurl = http://apt.sw.be/redhat/el7/en/$basearch/extras
mirrorlist = http://mirrorlist.repoforge.org/el7/mirrors-rpmforge-extras
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-extras
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

[rpmforge-testing]
name = RHEL $releasever - RPMforge.net - testing
baseurl = http://apt.sw.be/redhat/el7/en/$basearch/testing
mirrorlist = http://mirrorlist.repoforge.org/el7/mirrors-rpmforge-testing
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-testing
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

Repoforgeリポジトリからインストールする場合

[root@server1 ~]# yum --enablerepo=rpmforge -y install パッケージ

■yumのデータベース情報更新
ローカルに保存されているrpmヘッダ情報を最新の情報に更新。

yumのデータベース情報更新
[root@server1 ~]# yum list
インストールパッケージの確認
[root@server1 ~]# yum list installed

■アップデート情報の確認

アップデート情報の確認
[root@server1 ~]# yum check-update

■一括アップデート
インストールされているパッケージを全てアップデート。

パッケージの一括アップデート
[root@server1 ~]# yum update

アップデートしてよいかの問い合わせに全て” y “で回答するためには -y オプションを指定。

パッケージの一括アップデート
[root@server1 ~]# yum -y update

■yumによるパッケージ更新時にエラーが表示される場合
yumコマンドでパッケージの更新を行った際に、エラーが表示されることがある。これはyumのデータベースが壊れていることが考えられるので、以下のコマンドを実行してyumのデータベースをクリアしてみる。

[root@server1 ~]# yum clean all
[root@server1 ~]# yum update

■その他のコマンド

[root@server1 ~]# /bin/yum --help
読み込んだプラグイン:fastestmirror, langpacks, priorities
Usage: yum [options] COMMAND

List of Commands:

check          rpmdb の問題を確認する
check-update   更新に利用できるパッケージを確認する
clean          キャッシュデータを削除する
deplist        パッケージの依存性の一覧を表示する
distribution-synchronization 最新の利用可能なバージョンへインストール済みパッケージを同期する
downgrade      パッケージのダウングレード
erase          システムから削除するパッケージ
fs             Creates filesystem snapshots, or lists/deletes current snapshots.
fssnapshot     Creates filesystem snapshots, or lists/deletes current snapshots.
groups         グループ情報の表示または使用
help           役立つ使い方のメッセージを表示する
history        トランザクション履歴を表示、使用する
info           パッケージもしくはパッケージのグループについての詳細を表示する
install        システムにパッケージをインストールする
langavailable  Check available languages
langinfo       List languages information
langinstall    Install appropriate language packs for a language
langlist       List installed languages
langremove     Remove installed language packs for a language
list           パッケージグループの一覧を表示する
load-transaction filename から保存済みトランザクションを読み込む
makecache      メタデータキャッシュを生成する
provides       指定値を提供するパッケージを検索する
reinstall      パッケージの再インストール
repo-pkgs      Treat a repo. as a group of packages, so we can install/remove all of them
repolist       ソフトウェアリポジトリーの構成を表示する
search         指定した文字列でパッケージの詳細を検索する
shell          対話型の yum シェルを実行する
swap           Simple way to swap packages, instead of using shell
update         システムのパッケージを更新する
update-minimal Works like upgrade, but goes to the 'newest' package match which fixes a problem that affects your system
updateinfo     Acts on repository update information
upgrade        不要になったパッケージを考慮しながらパッケージを更新する
version        ホストの利用できるリポジトリーのバージョンを表示する


Options:
  -h, --help            このヘルプ メッセージを表示して終了する
  -t, --tolerant        エラーを黙認する
  -C, --cacheonly       キャッシュから完全に実行し、キャッシュを更新しません
  -c [config file], --config=[config file]
                        構成ファイルの場所
  -R [minutes], --randomwait=[minutes]
                        コマンドの最大待ち時間
  -d [debug level], --debuglevel=[debug level]
                        デバッグ情報の出力レベル
  --showduplicates      一覧/検索コマンドのリポジトリーの重複の表示
  -e [error level], --errorlevel=[error level]
                        エラー出力レベル
  --rpmverbosity=[debug level name]
                        rpm のデバッグ情報の出力レベル
  -q, --quiet           静かに処理をする
  -v, --verbose         冗長に処理をする
  -y, --assumeyes       すべての問い合わせに「yes」で答える
  --assumeno            すべての質問にいいえを回答します
  --version             Yum のバージョンを表示して終了する
  --installroot=[path]  インストールのベース ディレクトリーを設定する
  --enablerepo=[repo]   ひとつ以上のリポジトリーを有効にする (ワイルドカード許可)
  --disablerepo=[repo]  ひとつ以上のリポジトリーを無効にする (ワイルドカード許可)
  -x [package], --exclude=[package]
                        名前かワイルドカードでパッケージを除外する
  --disableexcludes=[repo]
                        main、あるリポジトリー、またはすべてからの除外を無効にします。
  --disableincludes=[repo]
                        disable includepkgs for a repo or for everything
  --obsoletes           更新中に不要な処理を有効にします
  --noplugins           Yum プラグインを無効にする
  --nogpgcheck          GPG 署名の確認を無効にする
  --disableplugin=[plugin]
                        名前でプラグインを無効にする
  --enableplugin=[plugin]
                        名前でプラグインを有効にする
  --skip-broken         依存性関連に問題があるパッケージを飛ばす
  --color=COLOR         色を使うかどうか制御する
  --releasever=RELEASEVER
                        yum 設定と repo ファイルに $releasever の値を設定する
  --downloadonly        don't update, just download
  --downloaddir=DLDIR   specifies an alternate directory to store packages
  --setopt=SETOPTS      全体設定とリポジトリー オプションの任意に設定する
  --bugfix              Include bugfix relevant packages, in updates
  --security            Include security relevant packages, in updates
  --advisory=ADVS, --advisories=ADVS
                        Include packages needed to fix the given advisory, in
                        updates
  --bzs=BZS             Include packages needed to fix the given BZ, in
                        updates
  --cves=CVES           Include packages needed to fix the given CVE, in
                        updates
  --sec-severity=SEVS, --secseverity=SEVS
                        Include security relevant packages matching the
                        severity, in updates

  プラグインのオプション:
    --samearch-priorities
                        Priority-exclude packages based on name + arch

■yumのパッケージ自動更新設定
yum-cron のインストール

[root@server1 ~]# yum -y install yum-cron
読み込んだプラグイン:fastestmirror, langpacks, priorities
base | 3.6 kB 00:00:00
centosplus | 3.4 kB 00:00:00
epel/x86_64/metalink | 5.9 kB 00:00:00
epel | 4.4 kB 00:00:00
extras | 3.4 kB 00:00:00
rpmforge | 1.9 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/3): epel/x86_64/group_gz | 250 kB 00:00:00
(2/3): centosplus/7/x86_64/primary_db | 1.8 MB 00:00:00
(3/3): epel/x86_64/primary_db | 3.1 MB 00:00:01
(1/3): epel/x86_64/updateinfo | 1.7 kB 00:00:00
(2/3): epel/x86_64/pkgtags | 1.1 MB 00:00:00
(3/3): rpmforge/primary_db | 125 kB 00:00:00
Loading mirror speeds from cached hostfile
* base: mirror.fairway.ne.jp
* centosplus: mirror.fairway.ne.jp
* epel: mirror.premi.st
* extras: mirror.fairway.ne.jp
* rpmforge: ftp.kddilabs.jp
* updates: mirror.fairway.ne.jp
61 packages excluded due to repository priority protections
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ yum-cron.noarch 0:3.4.3-118.el7.centos を インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
====================================================================================================
インストール中:
yum-cron noarch 3.4.3-118.el7.centos base 53 k

トランザクションの要約
====================================================================================================
インストール 1 パッケージ

総ダウンロード容量: 53 k
インストール容量: 50 k
Downloading packages:
yum-cron-3.4.3-118.el7.centos.noarch.rpm | 53 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告: RPMDB は yum 以外で変更されました。
インストール中 : yum-cron-3.4.3-118.el7.centos.noarch 1/1
検証中 : yum-cron-3.4.3-118.el7.centos.noarch 1/1

インストール:
yum-cron.noarch 0:3.4.3-118.el7.centos

完了しました!

■yum-cron設定

[root@server1 ~]# vi /etc/yum/yum-cron.conf ← yum-cron設定
# Whether updates should be applied when they are available. Note
# that download_updates must also be yes for the update to be applied.
apply_updates = no
↓
apply_updates = yes

■パッケージ自動更新 yum-cron の起動

[root@server1 ~]# systemctl start yum-cron

■パッケージ自動更新 yum-cron の自動起動設定

[root@server1 ~]# systemctl enable yum-cron
[root@server1 ~]# systemctl status yum-cron
yum-cron.service - Run automatic yum updates as a cron job
Loaded: loaded (/usr/lib/systemd/system/yum-cron.service; enabled)
Active: active (exited) since 火 2014-07-15 21:21:52 JST; 1min 45s ago
Main PID: 5382 (code=exited, status=0/SUCCESS)

7月 15 21:21:52 server2.yokensaka.com systemd[1]: Started Run automatic yum updates as a cron job.
Hint: Some lines were ellipsized, use -l to show in full.

■サーバ管理に必要なベースパッケージ群と開発ツールパッケージ群をインストール

[root@server1 ~]# yum -y groupinstall base "Development tools"

yum updateでのエラーメッセージ

/etc/cron.hourly/0yum-hourly.cron:

Not using downloaded repomd.xml because it is older than what we have:
Current : Wed Oct 29 11:09:46 2014
Downloaded: Tue Sep 23 20:43:25 2014
Not using downloaded repomd.xml because it is older than what we have:
Current : Wed Oct 29 08:44:59 2014
Downloaded: Thu Oct 23 21:18:58 2014

対応策

[root@server1 ~]# yum clean all
読み込んだプラグイン:fastestmirror, langpacks, priorities
リポジトリーを清掃しています: base centosplus epel extras rpmforge updates
Cleaning up everything
Cleaning up list of fastest mirrors

これで解決するはず