目次

yumコマンド

Version CentOS 7.2

y2sunlight 2020-05-29

CentOS パッケージ管理に戻る

yum は rpm パッケージを対象とした RHEL や CentOS などで標準として採用されているパッケージ管理システムです。もともとは、Fedoraの前身である Yellow Dog Linux で開発されたツールです。yum の名前の用来は、この Yellowdog から来ており、Yellowdog Updater Modified の略称です。

RPMがパッケージ単体を管理しているのに対して、yum は RPMパッケージの依存関係などの情報を保持した統合的管理運用システムです。yum は RHEL系のソフトウェアですが、Debian系(Ubuntu,Raspbianなど)でいうところの APT と同じ位置づけになり、パッケージのインストール、アップデート、検索、削除、情報表示などができます。

CentOS7のパッケージ管理全般についてもう少し知りたい場合は、本章の前に CentOS パッケージ管理の基礎知識 をご覧ください。

関連記事

リンク


yumの設定ファイル

yum全般の設定ファイルは以下にあります。

/etc/yum.conf

ほとんど触る機会はないと思いますが、以下で説明するリポジトリ設定ファイルの既定値となる項目(例えば:gpgcheck など)もあるので、一度目を通しておく方が良いかもしれません。

リポジトリ設定ファイル

リポジトリに関する設定ファイルは、以下ようにリポジトリ毎にファイルに保存されています。

/etc/yum.repos.d/REPOSITORY_NAME.repo

ius.repoの例でファイルの概要を説明します。

ius.repo
[ius]
name=IUS Community Packages for Enterprise Linux 7 - $basearch
#baseurl=https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/$basearch
mirrorlist=https://mirrors.iuscommunity.org/mirrorlist?repo=ius-centos7&arch=$basearch&protocol=http
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY
...
項目内容
[ID]リポジトリのID
nameリポジトリの名前
baseurlリポジトリへのパス
mirrorlistbaseurl相当のURLを複数記述する
通常、baseurlよりもこちらが記述されている場合が多い
enabledyumコマンド使用時にこのリポジトリを使用する(1)か否(0)かの設定
詳細はリポジトリの有効化/無効化を参照
gpgcheckパッケージにGPG署名確認を実行する(1:Default)か否(0)かの設定
gpgkeyリポジトリのGPG署名ファイルを指定

リポジトリの有効化/無効化

複数のリポジトリを使用していると、同じパッケージが複数のリポジトリから提供されていることも少なくありません。この状況は必ずしも良いものではありません。不用意に yum install を実行してしまうと目的のリポジトリでない方からパッケージがインストールされてしますからです。従って yum の運用では、既定のリポジトリを設け、それ以外の利用を普段は無効化しておくことをお薦めします。無効化したリポジトリでも、明示的にyumコマンドで有効なリポジトリとして指定することができるので、不便を感じることは少ないと思います。

リポジトリを無効化する方法は、リポジトリ設定ファイルの項で述べたように、.repo ファイルで enabled=0 と設定します。

ius.repo
[ius]
...
enabled=0
...

無効化されたリポジトリを yumで一時的に有効にする場合は、下例のようにオプション –enablerepo REPOSITORY_ID を付けて yum を実行します。

yum --enablerepo=ius search git2


ユースケース

一覧・検索

リポジトリの一覧

yum perolist        # 有効なリポジトリ
yum perolist all    # 全てのリポジトリ

パッケージの一覧

yum list            # インストール済み/可能
yum list installed  # インストール済み
yum list updates    # アップデート可能
yum list available  # インストール可能

パッケージの情報表示

yum info PACKAGE_NAME

パッケージの検索

yum search PATTERN   # 検索文字列を指定可

導入・更新・削除

パッケージのインストール

yum install PACKAGE_NAME

パッケージのアップデートチェック

yum check-update               # 全てのインストール済みパッケージ
yum check-update PACKAGE_NAME  # 指定したパッケージ

パッケージのアップデート

yum update                     # 全てのインストール済みパッケージ
yum update PACKAGE_NAME        # 指定したパッケージ

パッケージの削除

yum remove PACKAGE_NAME


EPELリポジトリの登録

最初に、EPEL を yum に登録します。EPEL は EPELの目的 にもあるように CentOSの公式リポジトリの拡張と思われるので(これは筆者の考えです)、常に有効化して yum を運用することにしています。

yum repolist で、現在有効なリポジトリの一覧を表示します。

yum repolist
...
リポジトリー ID      リポジトリー名        状態
!base/7/x86_64      CentOS-7 - Base      9,007
!extras/7/x86_64    CentOS-7 - Extras    392
!updates/7/x86_64   CentOS-7 - Updates   2,507
repolist: 11,906

yum install で、EPELリポジトリを yum に登録します。

yum install epel-release

インストールの途中で、インストールしても良いか確認される (Is this ok [y/d/N]:) ので y と回答します。正常にインストールされると最後に、完了のメッセージが表示されます。

yum repolist で、再び有効なリポジトリの一覧を表示して EPEL の有効化を確認します。

yum repolist
...
リポジトリー ID     リポジトリー名                                    状態
base/7/x86_64      CentOS-7 - Base                                  10,070
epel/x86_64        Extra Packages for Enterprise Linux 7 - x86_64   13,300
extras/7/x86_64    CentOS-7 - Extras                                397
updates/7/x86_64   CentOS-7 - Updates                               671
repolist: 24,438


RemiによるPHP7.3の導入

Remi リポジトリは最新版を含め各種PHPの蓄積場なので是非とも追加しておきたいリポジトリです。Remi リポジトリは登録が終わったら無効化しておき、必要に応じて yumコマンドで有効化することにします。

Remi から PHP7.3 をインストール手順を以下に示します。Remi では EPEL を使用するので、先にEPELリポジトリの登録を済ませて下さい。

ここではPHPがまだインストールされていないものとして説明します。既にPHPがインストールされている環境では、古いPHPを yum remove php php-* で削除することができます。

1. PHPのインストール状況の確認 

yum list でPHPのインストール状況を調べます。

yum list php
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.yz.yamagata-u.ac.jp
 * epel: ftp.yz.yamagata-u.ac.jp
 * extras: ftp.yz.yamagata-u.ac.jp
 * updates: ftp.yz.yamagata-u.ac.jp
利用可能なパッケージ
php.x86_64    5.4.16-48.el7   base

PHPはインストールされておらず、PHP5は公式リポジトリ(base)からインストール可能ですが、PHP7はありません。

2. Remi リポジトリの登録 

yum install で、Remi リポジトリを yum に登録します。

yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

インストールの途中で、インストールしても良いか確認される (Is this ok [y/d/N]:) ので y と回答します。正常にインストールされると最後に、完了のメッセージが表示されます。

yum repolist で、インストールされた remi リポジトリの一覧を表示します。

yum repolist all | grep remi
...
remi         Remi's RPM repository for Enterpri 無効
remi-php54   Remi's PHP 5.4 RPM repository for  無効
remi-php55   Remi's PHP 5.5 RPM repository for  無効
remi-php56   Remi's PHP 5.6 RPM repository for  無効
remi-php70   Remi's PHP 7.0 RPM repository for  無効
remi-php71   Remi's PHP 7.1 RPM repository for  無効
remi-php72   Remi's PHP 7.2 RPM repository for  無効
remi-php73   Remi's PHP 7.3 RPM repository for  無効
remi-php74   Remi's PHP 7.4 RPM repository for  無効
remi-safe    Safe Remi's RPM repository for Ent 有効:  3,805
remi-test    Remi's test RPM repository for Ent 無効
...

上の表示例は、抜粋ですが、多くのPHPがバージョン毎にリポジトリ化されているのが分かります。有効になっているのは remi-safe だけです。この状態でも、php7.4のインストールはできますが、PHPのバージョンを指定する方が分かり易いので、yum コマンドで、PHPバージョン毎のリポジトリを指定してインストールすることにします。

3. Remi リポジトリの無効化 

/etc/yum.repos.d/emi-safe.repo を編集してremi-safeリポジトリを無効化します。

cd /etc/yum.repos.d/
vi remi-safe.repo

[remi-safe]enabled=0 と設定します。

remi-safe.repo
[remi-safe]
...
enabled=0
...

yum repolist で remi が無効になっているかを確認して下さい。

4. PHP7.3のインストール 

最初に yum install でPHP7.3の本体をインストールします。使用するリポジトリは remi-php74です。

yum install --enablerepo=remi,remi-php73 php
リポジトリしては remiremi-php73 の2つを指定しました。バージョン共通のパッケージが remi には含まれているようです。

インストールの途中で、インストールしても良いか確認される (Is this ok [y/d/N]:) ので y と回答します。正常にインストールされると最後に、完了のメッセージが表示されます。

引き続いて、PHPモジュールをインストールします。

必要に応じて追加して下さい。

yum install --enablerepo=remi,remi-php73 php-devel php-mbstring php-pdo php-gd php-mysqlnd

現在のPHPバージョンを確認します。

php -v
PHP 7.3.18 (cli) (built: May 12 2020 08:04:33) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.18, Copyright (c) 1998-2018 Zend Technologies


IUSによるgit2の導入

IUS リポジトリは python や git の最新版をインストールする場合に必要になります。IUS リポジトリは登録が終わったら無効化しておき、必要に応じて yumコマンドで有効化することにします。

IUS から git2.x をインストール手順を以下に示します。IUS では EPEL を使用するので、先にEPELリポジトリの登録を済ませて下さい。

1. gitのインストール状況の確認 

yum list でgitのインストール状況を調べます。

yum list git*
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.yz.yamagata-u.ac.jp
 * epel: ftp.yz.yamagata-u.ac.jp
 * extras: ftp.yz.yamagata-u.ac.jp
 * updates: ftp.yz.yamagata-u.ac.jp
インストール済みパッケージ
git.x86_64          1.8.3.1-6.el7_2.1     @updates
利用可能なパッケージ
GitPython.noarch    1.0.1-8.el7           epel
git.x86_64          1.8.3.1-22.el7_8      updates
git-all.noarch      1.8.3.1-22.el7_8      updates
git-annex.x86_64    5.20140221-1.2.el7    epel
...

git1.8がインストールされているようです。

2. git1.xの削除 

yum remove で、インストール済のgit1.8を削除します。

yum remove git

削除の途中で、削除しても良いか確認される (上記の処理を行います。よろしいでしょうか? [y/N]:) ので y と回答します。正常に削除されると最後に、完了のメッセージが表示されます。

3. IUS リポジトリの登録 

yum install で、IUS リポジトリを yum に登録します。

yum install https://repo.ius.io/ius-release-el7.rpm

インストールの途中で、インストールしても良いか確認される (Is this ok [y/d/N]:) ので y と回答します。正常にインストールされると最後に、完了のメッセージが表示されます。

yum repolist で、インストールされた iusリポジトリの一覧を表示します。

yum repolist all | grep ius
ius/x86_64                       IUS for Enterprise Linux 7 - x86_6 有効:    609
ius-archive/x86_64               IUS for Enterprise Linux 7 - Archi 無効
ius-archive-debuginfo/x86_64     IUS for Enterprise Linux 7 - Archi 無効
ius-archive-source               IUS for Enterprise Linux 7 - Archi 無効
ius-debuginfo/x86_64             IUS for Enterprise Linux 7 - x86_6 無効
ius-source                       IUS for Enterprise Linux 7 - Sourc 無効
ius-testing/x86_64               IUS for Enterprise Linux 7 - Testi 無効
ius-testing-debuginfo/x86_64     IUS for Enterprise Linux 7 - Testi 無効
ius-testing-source               IUS for Enterprise Linux 7 - Testi 無効

4. IUS リポジトリの無効化 

/etc/yum.repos.d/ius.repo を編集してiusリポジトリを無効化します。

cd /etc/yum.repos.d/
vi ius.repo

[ius]enabled = 0 と設定します。

ius.repo
[remi-safe]
...
enabled = 0
...

yum repolist で ius が無効になっているかを確認して下さい。

4. gitのインストール 

yum search でGit2.xのパッケージ名を調べます。

yum search --enablerepo=ius git2
...
git222.x86_64 : Fast Version Control System
git222-all.noarch : Meta-package to pull in all git tools
git222-core.x86_64 : Core package of git with minimal functionality
...
git224.x86_64 : Fast Version Control System
git224-all.noarch : Meta-package to pull in all git tools
git224-core.x86_64 : Core package of git with minimal functionality
...

上の表示例は、抜粋ですが、git2.22 と git2.24 があることが分かります。

yum install でGit2.24をインストールします。

yum install --enablerepo=ius git224

インストールの途中で、インストールしても良いか確認される (Is this ok [y/d/N]:) ので y と回答します。正常にインストールされると最後に、完了のメッセージが表示されます。

現在のGitバージョンを確認します。

git --version
git version 2.24.2