yumにリポジトリを追加・変更する方法|EPELの設定とyum.repos.dの書き方

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxサーバー構築 > yumにリポジトリを追加・変更する方法|EPELの設定とyum.repos.dの書き方
「yumで入れたいパッケージが見つからない」「EPELやRemiを追加したいが、設定方法がよくわからない」
「/etc/yum.repos.dに.repoファイルを作ったのに、yumで認識されない」

標準リポジトリにないパッケージをインストールしようとすると、こうした壁にぶつかります。
リポジトリの仕組みを理解していれば、EPELやサードパーティのリポジトリを安全に追加・管理できますが、GPGキーの扱いや .repoファイルの書き方を間違えると、システムが不安定になるリスクもあります。

この記事では、yumのリポジトリを追加・変更する方法を、/etc/yum.repos.dの書き方からGPGキーの設定、EPEL・Remiリポジトリの追加手順、不要なリポジトリの削除まで体系的に解説します。
CentOS 7 / RHEL 9 / AlmaLinux 9 / Rocky Linux 9 で動作確認済みです。

この記事のポイント

・yumのリポジトリは /etc/yum.repos.d/ 以下の .repo ファイルで管理する
・GPGキーを登録しないとインストール時に警告が出て安全性が下がる
・EPELは yum install epel-release で簡単に追加できる
・サードパーティリポジトリは普段 enabled=0 にして必要時だけ有効化するのが安全


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

yumのリポジトリとは——仕組みを理解する

yumのリポジトリは、インストール可能なパッケージの集合体です。
yumはリポジトリのサーバーにアクセスして、パッケージの一覧や依存関係の情報を取得し、インストール・アップデートを行います。

標準リポジトリ(base/updates/extras)だけでは提供されないパッケージは、追加のリポジトリを登録することで利用できるようになります。

代表的なサードパーティリポジトリは以下のとおりです。

EPEL(Extra Packages for Enterprise Linux):Fedoraプロジェクトが提供。phptop、htop、zeromqなど多数のパッケージ
Remi:PHPの最新バージョンを提供。PHP 8.x系をCentOS/RHELに入れる際によく使う
CentOS SCL(Software Collections):標準版と並行して新しいバージョンのPython・Ruby等をインストールできる
ELRepo:カーネルやドライバー関連のパッケージを提供

現在のリポジトリ設定を確認する

1. 有効なリポジトリを一覧表示する(yum repolist)

# 有効なリポジトリを一覧表示する # yum repolist repo id repo name status base/7/x86_64 CentOS-7 - Base 10,019 extras/7/x86_64 CentOS-7 - Extras 448 updates/7/x86_64 CentOS-7 - Updates 2,181 repolist: 12,648

`status` の数字は、そのリポジトリで利用可能なパッケージ数です。

2. 全リポジトリ(有効・無効)を確認する

# 有効・無効含めてすべてのリポジトリを表示する # yum repolist all repo id repo name status base/7/x86_64 CentOS-7 - Base enabled: 10,019 base-debuginfo/x86_64 CentOS-7 - Debuginfo disabled extras/7/x86_64 CentOS-7 - Extras enabled: 448 # enabled が有効、disabled が無効

3. /etc/yum.repos.dの.repoファイルを確認する

# リポジトリ設定ファイルの一覧を確認する # ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-Sources.repo CentOS-Vault.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-x86_64-kernel.repo

/etc/yum.repos.d/.repoファイルの書き方

リポジトリの設定は /etc/yum.repos.d/ 以下の .repo ファイルに記述します。
標準的な.repoファイルの書式を確認しましょう。

.repoファイルの基本構造

# /etc/yum.repos.d/myrepo.repo の例 [myrepo] # リポジトリのID(ユニークな名前) name=My Custom Repository # リポジトリの表示名 baseurl=https://example.com/repo/7/x86_64/ # パッケージの取得先URL enabled=1 # 1=有効、0=無効 gpgcheck=1 # 1=GPGチェックあり、0=なし gpgkey=https://example.com/RPM-GPG-KEY # GPGキーのURL

各設定項目の意味は次のとおりです。

[リポジトリID]:yum repolistで表示されるID。ユニークである必要がある
name:リポジトリの説明名。日本語も使えるが英語が推奨
baseurl:パッケージのURLまたはファイルパス(mirrorlistとどちらか一方を使う)
mirrorlist:ミラーサーバーのリストURL(baseurlの代わりに使う)
enabled:1で有効、0で無効。0にしても削除はしない(必要時だけ有効化)
gpgcheck:1でGPG署名を検証する(セキュリティのため必ず1を推奨)
gpgkey:GPG公開鍵のURL(gpgcheck=1の場合は必須)

baseurl変数(プラットフォーム対応)

.repoファイルでは変数を使うことができます。

# よく使う変数 $releasever # OSのメジャーバージョン(例: 7, 8, 9) $basearch # CPUアーキテクチャ(例: x86_64, aarch64) $arch # $basearchと同じ # 変数を使った例 baseurl=https://example.com/repo/el$releasever/$basearch/

EPELリポジトリを追加する

EPELはFedoraプロジェクトが提供する追加パッケージリポジトリです。
htop、netcat(ncat)、phptop、zeromqなど、標準リポジトリにないパッケージが多数含まれています。

方法1:yum install epel-releaseで追加する(CentOS 7推奨)

# EPELリポジトリをインストールする # yum install epel-release # 追加されたことを確認する # yum repolist | grep epel epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,719

方法2:RPMファイルを直接インストールする(RHEL 9系推奨)

RHEL 9やAlmaLinux 9/Rocky Linux 9では `epel-release` パッケージが標準リポジトリにない場合があります。

# RHEL 9系でのEPEL追加 # dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm # または以下でも可能 # dnf install epel-release # AlmaLinux/Rocky Linuxではこれで追加できることが多い # 確認 # dnf repolist | grep epel epel Extra Packages for Enterprise Linux 9 - x86_64

GPGキーの確認

EPELインストール後、GPGキーが正しく登録されているか確認します。

# EPELのGPGキーを確認する # rpm -qi gpg-pubkey | grep -A 2 "Summary.*EPEL" Name : gpg-pubkey Summary : Fedora EPEL (8) public key

カスタムリポジトリを手動で追加する

企業内の独自リポジトリや、標準では提供されていないサードパーティリポジトリを手動で追加する手順です。

1. .repoファイルを作成する

# viで.repoファイルを新規作成する # vi /etc/yum.repos.d/mycompany.repo

以下の内容を記入します。

[mycompany-base] name=My Company Base Repository baseurl=https://repo.mycompany.com/centos/7/x86_64/ enabled=1 gpgcheck=1 gpgkey=https://repo.mycompany.com/RPM-GPG-KEY-mycompany

2. GPGキーをインポートする

gpgcheck=1 を設定した場合、GPGキーをインポートしないとパッケージのインストール時に警告が出ます。

# GPGキーをURLから直接インポートする # rpm --import https://repo.mycompany.com/RPM-GPG-KEY-mycompany # インポート済みのGPGキーを確認する # rpm -qa gpg-pubkey gpg-pubkey-xxxxxxxx-xxxxxxxx gpg-pubkey-yyyyyyyy-yyyyyyyy

GPGキーのインポートを省略して `gpgcheck=0` にすることも可能ですが、パッケージの改ざんチェックが無効になるためセキュリティリスクが高くなります。本番環境では必ず gpgcheck=1 + GPGキーのインポートを行ってください。

3. リポジトリのキャッシュを更新して確認する

# yumのキャッシュをクリアして再構築する # yum clean all # yum makecache # 追加されたリポジトリを確認する # yum repolist | grep mycompany mycompany-base My Company Base Repository 215

リポジトリを一時的に有効・無効にする

サードパーティリポジトリは常に有効にしていると、標準リポジトリのパッケージと競合するリスクがあります。
普段は `enabled=0` にしておき、必要なときだけ `--enablerepo` オプションで有効化するのが安全です。

特定のリポジトリだけを使ってインストールする

# EPELを一時的に有効化してhtopをインストールする # yum install --enablerepo=epel htop # 複数のリポジトリを一時的に有効化する場合 # yum install --enablerepo=epel,remi パッケージ名 # 特定のリポジトリを無効化してインストールする場合 # yum install --disablerepo=epel パッケージ名

yum.reposファイルで恒久的に無効化する

# epel.repoを編集してデフォルトを無効にする # vi /etc/yum.repos.d/epel.repo [epel] name=Extra Packages for Enterprise Linux 7 - $basearch #baseurl=https://download.fedoraproject.org/pub/epel/7/$basearch metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch failovermethod=priority enabled=0 # ←ここを 1 から 0 に変更 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

不要なリポジトリを削除する

リポジトリが不要になった場合は、.repoファイルを削除します。

# リポジトリの設定ファイルを削除する # rm /etc/yum.repos.d/mycompany.repo # GPGキーも削除する場合 # rpm -qa gpg-pubkey # 削除対象のキーIDを確認する gpg-pubkey-xxxxxxxx-xxxxxxxx # キーを削除する # rpm -e gpg-pubkey-xxxxxxxx-xxxxxxxx # キャッシュを再構築する # yum clean all

RHEL 9/AlmaLinux/Rocky Linuxでのdnf設定との関係

RHEL 8以降では、yumの後継として dnf が標準になっています。
dnfでもリポジトリの設定場所は同じ `/etc/yum.repos.d/` ですが、設定ファイルは `/etc/dnf/dnf.conf` になります。

# dnfでもyum repolistと同じコマンドが使える # dnf repolist repo id repo name appstream AlmaLinux 9 - AppStream baseos AlmaLinux 9 - BaseOS extras AlmaLinux 9 - Extras # dnfのリポジトリ詳細情報を表示する # dnf repoinfo appstream Repo-id : appstream Repo-name : AlmaLinux 9 - AppStream Repo-revision : 9.4.20240505 Repo-updated : Mon May 6 09:05:44 2024 Repo-pkgs : 5,842 Repo-available-pkgs: 5,773 Repo-size : 8.3 G Repo-baseurl : https://repo.almalinux.org/almalinux/9/AppStream/x86_64/os/

トラブルシュート——よくあるエラーと対処法

「Cannot find a valid baseurl for repo」が出る場合

ネットワーク接続の問題か、リポジトリのURLが古くなっている可能性があります。

# まずDNSとネットワークを確認する # ping -c 3 8.8.8.8 # curl -sI https://mirror.centos.org/ # CentOS 7はEOL後にミラーURLを変更する必要がある # sed -i 's/mirrorlist=/#mirrorlist=/g' /etc/yum.repos.d/CentOS-*.repo # sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*.repo

「GPG check FAILED」が出る場合

GPGキーが正しくインポートされていないか、パッケージが改ざんされている可能性があります。

# GPGキーを再インポートする # rpm --import https://example.com/RPM-GPG-KEY # インポート済みのキーを確認する # rpm -qa gpg-pubkey --qf "%{name}-%{version}-%{release} --> %{summary} "

セキュリティ上、GPGチェックを `gpgcheck=0` で無効化することは避けてください。本番環境では特に重要です。

「yum clean all でも解消しない」キャッシュ問題

# キャッシュディレクトリを直接削除して再構築する # rm -rf /var/cache/yum/* # yum clean all # yum makecache

「Error: Multilib version problems」が出る場合

32bit(i686)と64bit(x86_64)のパッケージが混在していると発生します。

# インストール済みの32bitパッケージを確認する # rpm -qa --qf "%{name}.%{arch} " | grep i686 # 32bitが不要なら削除して解消する # yum remove パッケージ名.i686

本記事のまとめ

やりたいこと コマンド・手順
有効なリポジトリを確認する yum repolist
全リポジトリ(無効含む)を確認する yum repolist all
EPELリポジトリを追加する yum install epel-release
GPGキーをインポートする rpm --import GPGキーのURL
リポジトリを一時的に有効化してインストール yum install --enablerepo=epel パッケージ名
キャッシュをクリアして再構築 yum clean all && yum makecache
リポジトリを削除する rm /etc/yum.repos.d/リポジトリ名.repo

yumの設定をマスターしたら、次はサーバー構築の「型」を身につけませんか?

リポジトリの管理を正しく理解できれば、パッケージ管理のトラブルで詰まることが激減します。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。