Y's note

Web技術・プロダクトマネジメント・そして経営について

本ブログの更新を停止しており、今後は下記Noteに記載していきます。
https://note.com/yutakikuchi/

yumコマンド

概要

  • BSDのportコマンドのようにLinuxRPMパッケージを管理するプログラム。
  • パッケージインストーラとも言える。
  • パッケージの依存関係解消をある程度自動的に解消?

yum usage

List of Commands:

check-update   Check for available package updates
clean          Remove cached data
deplist        List a package's dependencies
downgrade      downgrade a package
erase          Remove a package or packages from your system
groupinfo      Display details about a package group
groupinstall   Install the packages in a group on your system
grouplist      List available package groups
groupremove    Remove the packages in a group from your system
help           Display a helpful usage message
info           Display details about a package or group of packages
install        Install a package or packages on your system
list           List a package or groups of packages
localinstall   Install a local RPM
makecache      Generate the metadata cache
provides       Find what package provides the given value
reinstall      reinstall a package
repolist       Display the configured software repositories
resolvedep     Determine which package provides the given dependency
search         Search package details for the given string
shell          Run an interactive yum shell
update         Update a package or packages on your system
upgrade        Update packages taking obsoletes into account


options:
  -h, --help            show this help message and exit
  -t, --tolerant        be tolerant of errors
  -C                    run entirely from cache, don't update cache
  -c  [config file]     config file location
  -R  [minutes]         maximum command wait time
  -d  [debug level]     debugging output level
  --showduplicates      show duplicates, in repos, in list/search commands
  -e  [error level]     error output level
  -q, --quiet           quiet operation
  -v, --verbose         verbose operation
  -y                    answer yes for all questions
  --version             show Yum version and exit
  --installroot=[path]  set install root
  --enablerepo=[repo]   enable one or more repositories (wildcards allowed)
  --disablerepo=[repo]  disable one or more repositories (wildcards allowed)
  -x [package], --exclude=[package]
                        exclude package(s) by name or glob
  --disableexcludes=[repo]
                        disable exclude from main, for a repo or for
                        everything
  --obsoletes           enable obsoletes processing during updates
  --noplugins           disable Yum plugins
  --nogpgcheck          disable gpg signature checking
  --disableplugin=[plugin]
                        disable plugins by name
  --enableplugin=[plugin]
                        enable plugins by name
  --skip-broken         skip packages with depsolving problems
  --color=COLOR         control whether color is used

  Plugin Options:
アップデート可能なパッケージ一覧取得
$ yum check-update
$ yum list updates
yumに関するデータを消去
$ yum clean <package> /headers / metadata / cache / dbcache / all
install済みパッケージの依存関係表示
$ yum deplist <package>
ダウングレード
$ yum downgrade <package>
パッケージを削除
$ yum remove <package>
$ yum erase <package>
パッケージgroup一覧の表示
$ yum grouplist
パッケージgroup情報表示
$ yum groupinfo <group>
パッケージgroupのインストール
$ yum groupinstall <group>
パッケージgroupのアップデート
$ yum groupupdate <group>
パッケージgroupの削除
$ yum groupremove <group>
ヘルプ表示
$ yum help
パッケージ情報の表示
$ yum info <package>
パッケージのinstall
$ yum install <package>
RPMパッケージ一覧を表示
$ yum list
install済みパッケージ一覧を表示
$ yum list installed
ローカルにあるパッケージをinstall
$ yum localinstall <package>
メタデータを生成
$ yum makecache
パッケージに含まれるファイル一覧表示
$ yum provides <package>
再度install
$ yum reinstall <package>
repositoryの情報を表示
$ yum repolist
パッケージの依存関係を解消
$ yum resolvedep <package>
指定文字列を含むパッケージの検索
$ yum search <string>
パッケージのupdate
$ yum update <package>
install済みパッケージのupgradeを行う
$ yum upgrade
コマンドalias設定

タイピングが面倒になりそうなコマンドはalias張って短くすると便利。

alias yum-ls='yum list'
alias yum-ls-i='yum list installed'
alias yum-li-u='yum list updates'
alias yum-pro='yum provides'
alias yum-i='yum info'
alias yum-rm='yum remove'

設定

設定ファイルパス

yumの設定は以下のパスに置かれている

/etc/yum/
/etc/yum.conf
/etc/yum.repos.d/
GPGで怒られた場合

おそらくCentOSの初期設定時や特殊RPMの更新時にしか発生しないと思うが、yumでの更新にはGPGキーが必要となる。これは公開鍵暗号方式による整合性チェックである。

You have enabled checking of packages via GPG keys

上のようなメッセージが表示された場合は以下の手順でimportと設定を確認する。

$ /bin/rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5    <-- import

$ /bin/rpm -qa "gpg-pubkey*"      <-- 設定済みGPGの確認
gpg-pubkey-e8562897-459f07a4
gpg-pubkey-0d4306ef-45f6bc30

$ /bin/rpm -qi "gpg-pubkey-e8562897-459f07a4"
Name        : gpg-pubkey                   Relocations: (not relocatable)
Version     : e8562897                          Vendor: (none)
Release     : 459f07a4                      Build Date: 2009年12月29日 23時50分45秒
Install Date: 2009年12月29日 23時50分45秒      Build Host: localhost
Group       : Public Keys                   Source RPM: (none)
Size        : 0                                License: pubkey
Signature   : (none)
Summary     : gpg(CentOS-5 Key (CentOS 5 Official Signing Key) <centos-5-key@centos.org>)
Description :
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: rpm-4.4.2.3 (NSS-3)

mQGiBEWfB6MRBACrnYW6yKMT+MwJlCIhoyTxGf3mAxmnAiDEy6HcYN8rivssVTJk
CFtQBlBOpLV/OW2YtKrCO2xHn46eNfnMri8FGT8g+9JF3MUVi7kiV1He4iJynHXB
+F2ZqIvHf3IaUj1ys+p8TK64FDFxDQDrGQfIsD/+pkSGx53/877IrvdwjwCguQcr
Ioip5TH0Fj0OLUY4asYVZH8EAIqFHEqsY+9ziP+2R3/FyxSllKkjwcMLrBug+cYO
LYDD6eQXE9Mq8XKGFDj9ZB/0+JzK/XQeStheeFG75q3noq5oCPVFO4czuKErIRAB
qKbDBhaTj3JhOgM12XsUYn+rI6NeMV2ZogoQCC2tWmDETfRpYp2moo53NuFWHbAy
XjETA/sHEeQT9huHzdi/lebNBj0L8nBGfLN1nSRP1GtvagBvkR4RZ6DTQyl0UzOJ
RA3ywWlrL9IV9mrpb1Fmn60l2jTMMCc7J6LacmPK906N+FcN/Docj1M4s/4CNanQ
NhzcFhAFtQL56SNyLTCk1XzhssGZ/jwGnNbU/aaj4wOj0Uef5LRGQ2VudE9TLTUg
S2V5IChDZW50T1MgNSBPZmZpY2lhbCBTaWduaW5nIEtleSkgPGNlbnRvcy01LWtl
eUBjZW50b3Mub3JnPohkBBMRAgAkBQJFnwekAhsDBQkSzAMABgsJCAcDAgMVAgMD
FgIBAh4BAheAAAoJEKikR9zoViiXKlEAmwSoZDvZo+WChcg3s/SpNoWCKhMAAJwI
E2aXpZVrpsQnInUQWwkdrTiL5YhMBBMRAgAMBQJFnwiSBYMSzAIRAAoJEDjCFhY5
bKCk0hAAn134bIx3wSbq58E6P6U5RT7Z2Zx4AJ9VxnVkoGHkVIgSdsxHUgRjo27N
F7kBDQRFnwezEAQA/HnJ5yiozwgtf6jt+kii8iua+WnjqBKomPHOQ8moxbWdv5Ks
4e1DPhzRqxhshjmub4SuJ93sgMSAF2ayC9t51mSJV33KfzPF2gIahcMqfABe/2hJ
aMzcQZHrGJCEX6ek8l8SFKou7vICzyajRSIK8gxWKBuQknP/9LKsoczV+xsAAwUD
/idXPkk4vRRHsCwc6I23fdI0ur52bzEqHiAIswNfO521YgLk2W1xyCLc2aYjc8Ni
nrMX1tCnEx0/gK7ICyJoWH1Vc7//79sWFtX2EaTO+Q07xjFX4E66WxJlCo9lOjos
Vk5qc7R+xzLDoLGFtbzaTRQFzf6yr7QTu+BebWLoPwNTiE8EGBECAA8FAkWfB7MC
GwwFCRLMAwAACgkQqKRH3OhWKJfvvACfbsF1WK193zM7vSc4uq51XsceLwgAoI0/
9GxdNhGQEAweSlQfhPa3yYXH
=o/Mx-----END PGP PUBLIC KEY BLOCK-----

$ less /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]
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-5

※ GPGの設定を読み込む仕組みは/etc/yum.repos.d/*.repo というファイルを読み込むようだ。このルールに従えばファイルを自由に追加できる。

自動更新

yum -y updateで手動で毎回実行するのも手間がかかるので、更新を自動的にすることも可能。ただし勝手にOSだけでなくパッケージもアップデートされてしまうと元々のシステム動作が保証されない可能性もあるので、導入する場合は要検討。

  • 自動更新を設定する

checkconfig(自動起動スクリプトを管理するコマンド)でon / offの設定が可能。

$ yum install -y yum-cron    <-- 自動更新設定RPMのインストール
$ /etc/init.d/yum-cron start
Enabling nightly yum update:                               [  OK  ]
$ chkconfig yum-cron on
$ chkconfig --list yum-cron   
yum-cron       	0:off	1:off	2:on	3:on	4:on	5:on	6:off 
  • パッケージ更新のyum-updatedsdをoffにする
$ /etc/init.d/yum-updatesd stop
$ chkconfig yum-updatesd off
$ chkconfig --list yum-updatesd  
yum-updatesd   	0:off	1:off	2:off	3:off	4:off	5:off	6:off
特定のRPM更新を対象から外す
  • yumの設定ファイルにexcludeを記述して更新対象から外す
$ vi /etc/yum.conf

installonly_limit = 5 

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

# 更新対象から外す(ワイルドカード指定可能)
exclude=kernel* gain*
OSバージョン情報

自動でOSの更新が掛かると現在のバージョンが分からなくなるが、以下のファイルパスに情報が格納されている。

$ less -r /etc/redhat-release
CentOS release 5.7 (Final)