Linux
 Computer >> コンピューター >  >> システム >> Linux

CentOS/RHEL対応!YUMパッケージマネージャーの使い方徹底解説【基本コマンドから応用まで】

本記事では、RPMパッケージのインストール・削除・更新を管理し、依存関係を自動的に解決し、追加リポジトリも管理できるYUMパッケージマネージャーについて詳しく解説します。Linux管理者の初心者の方にとって、YUMコマンドのチートシートとしても活用できる内容になっています。

YUM(Yellowdog Updater Modified)は、RPMパッケージ(RedHat Package Manager)形式を採用するLinuxディストリビューション向けのコマンドライン型パッケージマネージャーです。Red Hat Enterprise Linux、CentOS、Fedora、Oracle Linux、Scientific Linuxなど、多くの人気ディストリビューションで利用されています。

YUMによるパッケージのインストール・更新・削除

まずは何はともあれ、ヘルプの確認から始めましょう。

yum help — YUMの完全なヘルプを表示します。

ここからは、特によく使われるYUMコマンドを紹介していきます。

キャッシュとリポジトリの操作

yum clean all — 全パッケージのキャッシュをクリアします(不具合が発生した際によく使用されます)。

yum makecache — パッケージキャッシュを再作成します。

yum repolist — 接続済みの全リポジトリ一覧を表示します。出力例は以下の通りです。

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base:
* extras:
* updates:
repo id repo name status
base/7/x86_64 CentOS-7 - Base 10,019
extras/7/x86_64 CentOS-7 - Extras 435
updates/7/x86_64 CentOS-7 - Updates 2,500
repolist: 12,954

この例では、標準のCentOS 7リポジトリ(Base、Extras、Updates)のみが登録されています。

パッケージの一覧と情報確認

yum list available — インストール可能な全パッケージの一覧を表示します。

yum list installed — システムにインストール済みの全パッケージ一覧を表示します。

yum list kernel — Linuxカーネル関連のパッケージ一覧を表示します。

特定のパッケージがサーバーにインストールされているか確認することもできます。たとえばApache(httpd)の状態を確認するには以下を実行します。

yum list installed httpd

Installed Packages
httpd.x86_64 2.4.6-89.el7.centos.1 @updates

特定のパッケージの詳細情報を取得することも可能です。たとえばMariaDBパッケージの詳細を見てみましょう。

yum info mariadb

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

パッケージをインストールするにはyum installを使用します。Apache Webサーバーをインストールするには、次のコマンドを実行します。

yum install httpd

なお、YUMコマンド実行時に「Traceback (most recent call last): thread.error: can't start new thread」というエラーが表示される場合は、サーバーのメモリ(RAM)が不足している可能性があります。RAMを増設するか、/etc/yum.confにplugins=0を指定してYUMプラグインを無効化してみてください。

インストール前に、以下のコマンドで依存関係を事前に確認できます。

yum deplist httpd

パッケージ名の一部しか思い出せない場合は、ワイルドカード「*」を使うと便利です。たとえば:

yum install epel-*

Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-11 will be installed
--> Finished Dependency Resolution
Install 1 Package
Total download size: 15 k
Installed size: 24 k
Is this ok [y/d/N]:

一方、フルネームを指定せずに以下のように入力すると:

yum install epel

No package epel available.
Error: Nothing to do

このように、該当するパッケージが見つからずエラーになります。

また、YUMは複数のパッケージを一度にインストールすることもできます。

yum install httpd php wget rsyslog

再インストールと削除

パッケージを再インストールする場合:

yum reinstall proftpd

インストール済みパッケージを削除するには、removeオプションを使用します。

yum remove httpd

パッケージを削除する前には、必ず依存関係を確認することをおすすめします(削除すると他のパッケージも一緒に削除されてしまうケースがあるためです)。

yum deplist proftpd

パッケージの検索

パッケージ名や説明文から検索するには:

yum search nginx

providesオプションを使うと、特定のファイルを含むパッケージを検索できます。たとえば:

yum provides */squid.conf

パッケージの更新とダウングレード

インストール済みの全パッケージを更新するには、次のコマンドを実行します。

yum update

特定のパッケージだけを更新することもできます。

yum update php

システムに適用可能なアップデートが存在するかどうかを確認するには:

yum check-update

セキュリティ関連のアップデート情報を取得するには:

yum updateinfo list security

パッケージやサービスの更新後に問題が発生することがあります。たとえば、PHPのバージョンを更新したらサイトが動かなくなった、といったケースです。そんなときは、YUMで以前のバージョンにロールバックできます。

yum downgrade php

パッケージグループの管理(grouplist)

YUMではgrouplistによるグループ単位のインストールも可能です。リポジトリには、用途別にまとめられた定義済みパッケージグループが用意されています。グループ一覧を表示するには:

yum grouplist

「Basic Web Server」グループを例に見てみましょう。グループとその構成パッケージの詳細を確認するには:

yum groupinfo "Basic Web Server"

確認すると、Webサーバーに必要なパッケージとサービスのセットがインストールされることがわかります。

もうひとつ便利なのが「System Administration Tools」グループです。

yum groupinfo "System Administration Tools"

このリストには、監視ツールやデバッグツールが含まれています。

グループをインストールするには、次のコマンドを使用します。

yum groupinstall "System Administration Tools"

インストール済みのグループは、「Installed Groups」として別ブロックに表示されます。

YUM履歴コマンド(history)の活用

YUMのインストール履歴(トランザクション一覧)は、次のコマンドで表示できます。

yum history list

出力は5つのカラムで構成され、最初の列にはトランザクションIDが表示されます。このIDを使うと、インストールされたパッケージや依存関係など、トランザクションの詳細を確認できます。

たとえば:

yum history info 10

さらに、トランザクションを取り消すことも可能です。

yum history undo 10

この例では、4つのパッケージが削除対象となります。

また、YUMによるパッケージのインストール・削除の記録は、/var/log/yum.logでも確認できます。

cat /var/log/yum.log

覚えておきたいYUMの便利なオプション

YUMには、パッケージ管理で頻繁に役立つ便利なオプションがいくつか用意されています。-yオプションを使うと、エラー以外の出力を抑制してすべての問い合わせに自動的に「yes」で回答します。たとえば:

yum update -y
yum install httpd -y

逆に、すべての問い合わせに「no」と答えさせたい場合は、次のオプションを使用します。

--assumeno

プラグインを一切使わずにYUMを実行したり、特定のプラグインだけを無効化したりするには、次のパラメータを使用します。

--noplugins
--disableplugin=fastestmirror

無効化されているプラグインを有効化するには:

--enableplugin=fastestmirror

無効化されているリポジトリを一時的に使うには:

yum update --enablerepo=atomic

特定のリポジトリを無効化するには:

yum update --disablerepo=atomic

YUM設定ファイル /etc/yum.conf の解説

YUMの設定ファイルは/etc/yum.confです。主な設定項目は以下の通りです。

  • cachedir — ローカルのパッケージキャッシュディレクトリ(デフォルト:/var/cache/yum)
  • logfile — YUMログファイルへのパス
  • obsoletes — 廃止(obsolete)されたパッケージを更新するかどうか(1=はい、0=いいえ)
  • gpgcheck — インストール前にGPG署名でパッケージを検証するかどうか(1=はい、0=いいえ)
  • keepcache — ダウンロード後のキャッシュを保持するかどうか(1=はい、0=いいえ)
  • debuglevel — デバッグレベル(1〜10)
  • plugins — YUMプラグインを有効化するかどうか(1=はい、0=いいえ)
  • bugtracker_url — YUMのエラー報告先URL
  • installonly_limit — 1パッケージあたりにインストールを許可する最大バージョン数

便利なYUMプラグイン

なぜYUMにプラグインが必要なのでしょうか? 他のツールと同様、プラグインは日々の運用作業を効率化してくれます。

代表的なプラグインとその説明は以下の通りです。

yum-plugin-fastestmirror — ミラーサーバーの速度を測定し、最速のミラーからパッケージをダウンロードできるようにします。

yum-plugin-security — セキュリティアップデートのみの一覧を提供します。

yum-plugin-keys — keys、keys-info、keys-data、keys-removeなどの鍵管理パラメータを使用可能にします。

yum-plugin-versionlock — 指定したパッケージの更新を防止(ロック)します。

すべてのプラグインが格納されているディレクトリは/etc/yum/です。

利用可能なYUMプラグインの一覧を表示するには、次のコマンドを実行します。

yum search yum-plugin

======================================================================= N/S matched: yum-plugin =======================================================================
PackageKit-yum-plugin.x86_64 : Tell PackageKit to check for updates when yum exits
fusioninventory-agent-yum-plugin.noarch : Ask FusionInventory agent to send an inventory when yum exits
kabi-yum-plugins.noarch : The CentOS Linux kernel ABI yum plugin
yum-plugin-aliases.noarch : Yum plugin to enable aliases filters
yum-plugin-auto-update-debug-info.noarch : Yum plugin to enable automatic updates to installed debuginfo packages
yum-plugin-changelog.noarch : Yum plugin for viewing package changelogs before/after updating
yum-plugin-copr.noarch : Yum plugin to add copr command
yum-plugin-fastestmirror.noarch : Yum plugin which chooses fastest repository from a mirrorlist
yum-plugin-filter-data.noarch : Yum plugin to list filter based on package data
yum-plugin-fs-snapshot.noarch : Yum plugin to automatically snapshot your filesystems during updates
yum-plugin-keys.noarch : Yum plugin to deal with signing keys
yum-plugin-list-data.noarch : Yum plugin to list aggregate package data
yum-plugin-local.noarch : Yum plugin to automatically manage a local repo. of downloaded packages
yum-plugin-merge-conf.noarch : Yum plugin to merge configuration changes when installing packages
yum-plugin-ovl.noarch : Yum plugin to work around overlayfs issues
yum-plugin-post-transaction-actions.noarch : Yum plugin to run arbitrary commands when certain pkgs are acted on
yum-plugin-pre-transaction-actions.noarch : Yum plugin to run arbitrary commands when certain pkgs are acted on
yum-plugin-priorities.noarch : plugin to give priorities to packages from different repos
yum-plugin-protectbase.noarch : Yum plugin to protect packages from certain repositories.
yum-plugin-ps.noarch : Yum plugin to look at processes, with respect to packages
yum-plugin-remove-with-leaves.noarch : Yum plugin to remove dependencies which are no longer used because of a removal
yum-plugin-rpm-warm-cache.noarch : Yum plugin to access the rpmdb files early to warm up access to the db
yum-plugin-show-leaves.noarch : Yum plugin which shows newly installed leaf packages
yum-plugin-tmprepo.noarch : Yum plugin to add temporary repositories
yum-plugin-tsflags.noarch : Yum plugin to add tsflags by a commandline option
yum-plugin-upgrade-helper.noarch : Yum plugin to help upgrades to the next distribution version
yum-plugin-verify.noarch : Yum plugin to add verify command, and options
yum-plugin-versionlock.noarch : Yum plugin to lock specified packages from being updated

プラグインは、他のパッケージと同じようにyum installでインストールできます。

yum install yum-plugin-changelog
yum -y install yum-versionlock

versionlockプラグインでパッケージの更新を禁止するには、次のコマンドを実行します。

yum versionlock nginx

ロック中のパッケージ一覧を表示するには:

yum versionlock list

ロックを解除するには:

yum versionlock delete nginx

プラグインを使いたくない場合は、YUMコマンドに次のオプションを付けて個別に無効化できます。

--disableplugin=fastestmirror

すべてのYUMプラグインを無効化することも可能です。

--noplugins

YUMにプロキシを設定する方法

YUMはHTTP/1.1プロトコルを使ってパッケージリポジトリと通信します。LinuxサーバーがHTTPプロキシ経由でしかインターネットにアクセスできない環境では、/etc/yum.confファイルの[main]セクションにプロキシサーバー名を指定します。

proxy=https://proxy_server_name:3128

プロキシサーバーが認証を必要とする場合は、以下の行も追記してください。

proxy_username=proxy_user
proxy_password=proxy_user_passw0rd

YUMがプロキシ経由で正しく動作しているか確認するには、次のコマンドを使用します。

yum clean all && yum search nginx

検証のため、ドイツの公開プロキシサーバーのアドレスを指定してみたところ、fastestmirrorプラグインが起動し、最速のミラーが自動的に検出されました。

なお、一部のリポジトリにだけプロキシを適用したい場合は、/etc/yum.confを変更する必要はありません。代わりに、リポジトリごとの設定ファイル/etc/yum.repos.d/your_config.repo内にプロキシ設定を記述すればOKです。

以上、CentOS/RHELにおけるRPMパッケージマネージャーYUMの基本的な機能について解説しました。次回の記事では、YUM/DNFリポジトリのより詳細な管理方法をご紹介します。

  1. CentOS/RHELでBashの自動補完(タブ補完)をインストールして有効化する方法

    Bash(Bourne Again Shell)は、間違いなく最も広く使われているLinuxシェルです。多くのLinuxディストリビューションでデフォルトシェルとして採用されているのも納得でしょう。Bashの魅力的な機能の一つが、組み込みの「自動補完(オートコンプリート)」機能です。 この機能は「TAB補完」とも呼ばれ、コマンドの入力を簡単に完成させることができます。コマンドの一部を入力した状態で[Tab]キーを押すと、残りのコマンドや引数が自動的に補完されます。候補が複数ある場合は、すべての候補が一覧表示されます。 Bashだけでなく、近年のほぼすべてのモダンなLinuxシェルにはコマンド補

  2. Windows 10向けパッケージマネージャー「Chocolatey」のインストールと使い方ガイド

    新しいソフトウェアをWindows PCにインストールする場面を想像してみてください。おそらく、公式サイトにアクセスし、ページ上の広告や不要なリンクを避けながらダウンロードボタンを探し、グラフィカルなインストーラーをデフォルト設定のままクリックして進んでいく——そんな流れになるでしょう。この一連の手順は、ソフトウェアがオンラインで配布されるようになって以来、Windowsの歴史の中でほとんど変わっていません。一方、Unix系システムでは、パッケージマネージャーによるインストールが主流です。ユーザーの操作は最小限で済み、多くの場合コマンドラインから制御されます。近年は、こうしたメリットをサードパ