「/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 にして必要時だけ有効化するのが安全
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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
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
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} "
「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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます