早崎トップ 研究(気候気象) 研究(大気汚染) データリスト Linux Tips Mac Tips

yum_how2use

yum の使用方法

RPMパッケージをインストールするための, CentOS (RedHat系Linux distribution)でのパッケージ管理ツール. RPM関係の情報も参照.

問題解決の具体策の一部は, トラブル解決 # yum関連を参照.

依存パッケージも同時インストールされるし, パッケージの検索などもできるので便利.

使い方が分からなかったら... 掲示板への質問やGoogle検索の前に,まずは man yum してみること. それすらやりたくないのなら,あなたは UNIX系列のOS利用者として向いてません. とっとと使うのをやめるほうがいいでしょう.

 yum のレポジトリ関連設定

  • /etc/yum.repos.d/ 以下にある *.repo などのファイル (例: epel.repo, fedora.repo, thirs.repo など)
  • 参照するレポジトリの on/off をしたい場合は, 対象となる *.repo ファイル内の enabled 部分を修正

yum で参照する・有効化されているレポジトリの表示:

yum repolist all
yum repolist enabled
enabled = 1   # 参照する (on)
enabled = 0   # 参照しない (off)
  • 一時的な on/off ならば,yum のオプションで変更
# yum --disablerepo=epel --disablerepo=fedora ほげほげ
  • 以前使えていた repository が,ある時には使えなくなっている (あるいは,一部パッケージが欠落している,など)... という場面がある. その場合, yum update が途中で失敗し,アップデートできない.そんなときは, うまく取得できない情報元になっている repository を一時的に off にすればよかろう. 実際,そんな目に何度か遭遇したので.

EPEL レポジトリの追加

EPEL (Extra Packages for Enterprise Linux) レポジトリを追加. これを追加すれば,yum 一発でインストールできるものをかなり増やせる(はず). 例えば,denyhosts や MediaWiki はこれを追加しないと見つけてくれなかった.

  • 64-bit, CentOS 5.4 or 5.5 の場合
# wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/5/x86_64/epel-release-5-4.noarch.rpm
# rpm -ivh epel-release-5-4.noarch.rpm
  • CentOS 6.x の場合
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-6.noarch.rpm

上記以外にも,様々な レポジトリが存在する. 例の一つとして EPEL レポジトリについて掲載したが, その他の情報は数多くのサイトに掲載されているので省略.

ELrepo の追加

kernel module に特化したレポジトリ. munin 関連の設定で, 必要となる kernel module (kmod*)の導入が用意になるので追加.

rpm -Uvh http://elrepo.org/elrepo-release-0.1-1.el5.elrepo.noarch.rpm

例えば,CPUの温度計測に必要なモジュール (Intel Xeon 系なら coretemp, AMD Opteron 系 なら k10 など)の導入は 以下のように実行:

yum --disablerepo=\* --enablerepo=elrepo install kmod-coretemp lm_sensors
yum --disablerepo=\* --enablerepo=elrepo install kmod-k10temp lm_sensors

上記の場合,ELrepo のパッケージのみに限定してパッケージ導入. なお,ELrepo の kmod-* を入れる際には,対応する lm_sensors もELrepo から取ったものにしておく方が良さそう(情報は未確認だが)なので, lm_seonsors も同時導入.

  • Intel Xeon L5410 搭載の server (Dell PowerEdge R300)では,sensors-detect に失敗(最後のlm-sensors の再起動部分のみ).Xeon X3000 番台搭載のサーバでは, 問題無く成功.原因特定の時間が無いので,とりあえず pending.

Adobe yum レポジトリの追加

64bit版 Adobe flash プラグインの場合(checked 2015-05-30; CentOS 7.1.1503).

rpm -ivh http://linuxdownload.adobe.com/adobe-release/adobe-release-x86_64-1.0-1.noarch.rpm

yum search flash

yum install -y flash-plugin

Adobe Reader, flash などの yum インストールのために.

rpm -ivh http://linuxdownload.adobe.com/adobe-release/adobe-release-i386-1.0-1.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux

yum search Adobe

yum install -y AdobeReader_jpn

 OSインストール後の yum 使用

新規インストール時に不足するライブラリ・コマンドなどを yum でインストール. 基本的な流れは下記:

 CentOS 5.x 系列

NetCDF 3.x のコンパイル時に必要だったので, compat-libstdc++-33 を入れる. また,個人的によく使うツールとして ncftp や wgrib, wgrib2 なども追加.

yum groupinstall "Development Tools" "Development Libraries"
yum groupinstall "X Software Development"
yum -y install compat-libstdc++-33 ncftp wgrib wgrib2
yum -y install jasper jasper-devel

なお,Xの開発環境は, GMT のコンパイル時に xgrid でコケる(libXaw 関連)のがうざったいので付けてるだけ. xgrid 関連を除き,通常の自分の使い方では, X の開発環境が必要になった経験は無い(はず). 大多数のエンドユーザには、不要なパッケージ群だと思われる.

ただし,私の場合はLinuxインストールの直後にGMTを入れるので, それ以降の tar ball コンパイル時にはX開発環境がインストール済みになっている. つまり,気づいていないだけかもしれない.

 CentOS 6.x 系列

CentOS 6.x では,compat-libstdc++-33 は必須ではなかった. 入れても問題ないが. CentOS 5.x 同様,ncftp, wgrib, wgrib2, jasper 関連なども追加.

yum groupinstall "Additional Development" "Desktop Platform Development"
yum groupinstall "Development tools"
yum -y install ncftp wgrib wgrib2 jasper jasper-devel

 CentOS 7.x 系列

CentOS 7.x では,GNOME がどうしても好きになれず不採用. 代わりにXfceを使う. CentOS 5.x & 6.x 同様,ncftp, wgrib, wgrib2, jasper 関連なども追加.

yum groupinstall "Compatibility Libraries"
yum groupinstall "Development tools" "Xfce"
yum -y install ncftp wgrib wgrib2 jasper jasper-devel

yum -y install libXt-devel libXaw-devel
  (GMT セットアップ時に必要)

 関連ページ (hysk 内)

  主なオプション

yum check-update
アップデート可能なパッケージ一覧の表示
yum clean all
ダウンロード済みのパッケージや古いヘッダを削除.
yum clean oldheaders
古いヘッダを削除.
yum clean packages
ダウンロード済みのパッケージを削除.
yum deplist パッケージ名
指定したパッケージが依存する他のパッケージをリスト表示. udunits2 を yum で入れたら netcdf まで突っ込まれるのが嫌だったので確認した(2016-02-28). CDO の更新インストール時(See CDOセットアップ).
yum info
yum info パッケージ名
yum install パッケージ名
yum list
利用可能なパッケージ一覧の表示
yum list installed
インストール済みのパッケージ一覧の表示
yum list updates
アップデート可能なパッケージ一覧の表示
yum provides 検索対象
検索対象が含まれるパッケージ情報を表示
yum remove パッケージ名
yum repolist [all|enabled|disabled]
レポジトリの表示.全てか有効なものだけか,など.
yum search キーワード
キーワードでパッケージ検索. 検索対象は,RPMファイルの Name, Packager, Summary, Description の各フィールド
yum update
yum update パッケージ名
yumのキャッシュ用ディスク
/var/cache/yum/ (サイズの確認 du -h /var/cache/yum )

group 関連オプション

 yum group* 使い方

grouplist, groupinstall, groupremove, groupupdate, groupinfo

yum grouplist
グループリストの表示. なお,単なる個人的好みだが,私はコマンドラインで日本語を使いたくないので, root の LANG は C にしてる.
yum groupinfo "group name"
グループ内のパッケージをリスト表示.
yum groupinstall "group name"
グループ内のパッケージ全部インストール
yum groupremove "group name"
グループ内のパッケージ全削除

 yum group 関連メモ

  • 新規インストール後,必要ソフト・コマンドを一括操作するときに使う.
  • CentOS 6.5 でのGNOME のトラブル時にも, ウィンドウシステムの一括再インストールで利用 (See GNOMEアプリが落ちる; 2014-02-22).

yum プラグイン

fastestmirror, versionlockなど

 fastestmirror

fastest と名乗っている割には,とてつもなく遅い事がたびたびある. そんな時には,fastestmirror の判断規準となっているキャッシュファイルを削除してみる.

# cat /etc/yum/pluginconf.d/fastestmirror.conf
(略)
hostfilepath=/var/cache/yum/timedhosts.txt    <= こいつ
(略)
# rm /var/cache/yum/timedhosts.txt

これでサーバとの通信に要する時間を再計測してくれるので, 大抵の場合は早いサーバを見つけてくれて,ストレスが大幅に軽減されるだろう. それでも遅い場合は,fastestmirror に任せるのをやめるしかない. 早そうなサーバを調べて,決め打ちしてしまえば良いだろう. その方法はいろんな人が書いてあるので割愛.

See also トラブル解決 # yum 関連

 versionlock

  • yum によるアップデートをしたくないものを指定. ユーザが望まないパッケージのアップデートを防ぐために使う. セキュリティパッチなどへの対応は自己責任でおこなうこと.
  • /etc/yum/pluginconf.d/versionlock.list に, アップデートしたくない RPM パッケージ名を書く.
$ cat /etc/yum/pluginconf.d/versionlock.list
kernel-2.6.18-128.7.1.el5.centos.plus
kernel-headers-2.6.18-128.7.1.el5.centos.plus
kernel-devel-2.6.18-128.7.1.el5.centos.plus
kernel-xen-devel-2.6.18-128.4.1.el5.centos.plus

自分が経験したトラブル

Move to トラブル解決 # yum 関連

情報源

更新履歴

Date Changes
2016-02-27 yum のトラブルとその解決法を, トラブル解決 # yum関連に移設.
ページ内の参照用IDを付け替え. 番号付けのルールは, Linux tips (hysk) # 自分専用ルール・HTML に従う.
2009-xx-xx 多分,このくらいの時期に記載開始.