remi と epel のリポジトリを削除する — 順番と、「無効にしたつもり」で残るもの

先に結論

リポジトリを消す前に、やりたいのは「無効化」なのか「削除」なのかを決めてください。 多くの場合、必要なのは無効化のほうです。

表1:無効化と削除の違い
無効化削除
やることdnf config-manager --set-disableddnf remove
設定ファイル残る(enabled=0 になる)消える
GPG鍵残る消える
入れたパッケージ残る残る
戻すとき--set-enabled だけ入れ直し
向いている場面一時的に使いたくない環境を作り直す

削除する場合、順番が決まっています。

表2:削除の順番
順やること理由
1入っているバージョンを確認rpm -qa | grep -E 'epel-release|remi-release'
2remi-release を先に消すremi が epel に依存しているため(詳しく)
3epel-release を消す依存元が無くなってから
4dnf clean all消えたリポジトリのメタデータを捨てる
5残ったパッケージを確認リポジトリを消しても消えない(詳しく)

remi は epel に依存している

いまの依存関係を確かめた

公式が配っている remi-release パッケージを実際にダウンロードして、 RPMヘッダの依存宣言を読みました。

表3:remi-release が要求しているもの(2026-10-25 時点の配布物)
パッケージepel への要求
remi-release-9.8-1.el9.remiepel-release = 9
remi-release-10.2-1.el10.remiepel-release = 10
remi-release-8.10-2.el8.remiepel-release = 8

3系統とも epel-release を要求しています。 だから epel を先に消そうとすると止まります。

# 入っているものを確認する
rpm -qa | grep -E 'epel-release|remi-release'

# 何に依存しているかを自分の環境で見る
rpm -q --requires remi-release | grep epel

昔より厳しくなっている

この依存自体は昔からありました。ただし書き方が変わっています。

表4:依存条件の書き方の変化
時期条件意味
2012年ごろ(EL5)epel-release >= 55以上なら何でもよい
いま(EL9)epel-release = 99ちょうどでなければならない

「以上」から「完全一致」になりました。 EL9 の環境に EPEL 8 の release パッケージが入っていると、remi-release 9 は入りません。 メジャーバージョンを混ぜられないということです。

「remi を無効にした」が効いていないことがある

remi が置く .repo は1本ではない

ここが一番の落とし穴です。パッケージの中身を展開して、何が置かれるかを数えました。

表5:remi-release-9.8 が置く設定ファイルと、既定の有効・無効
ファイルセクション既定
remi.repo[remi]無効
[remi-test]無効
[remi-debuginfo]無効
[remi-test-debuginfo]無効
remi-safe.repo[remi-safe]有効
[remi-safe-debuginfo]無効
remi-modular.repo[remi-modular]有効
[remi-modular-debuginfo]無効
[remi-modular-test]無効
[remi-modular-test-debuginfo]無効

3ファイル・10セクション。そして [remi] は既定で無効です。 実際に有効になっているのは remi-safe と remi-modular の2つ。 --set-disabled remi だけ実行して「止めた」と思っていると、何も止まっていません。

自分の環境で有効なものを数えるなら、これが早いです。

# 有効なリポジトリだけを一覧する
dnf repolist --enabled

# remi 系で有効なものだけ
dnf repolist --enabled | grep remi

なぜ [remi] だけ無効なのか

この並びには理由があります。パッケージが置く remi-safe.repo の冒頭に、 公式のコメントとして書いてあります。

「このリポジトリは RHEL/CentOS の base リポジトリと併用しても安全である。 PHPスタック向けの追加パッケージだけを提供し、 依存はすべて base か EPEL にある」
— remi-safe.repo の先頭コメント(要約)

つまり remi-safe は「足すだけ」で、OS標準のパッケージを置き換えません。 だから既定で有効でも危なくない。 一方 [remi] は標準のPHPを置き換えるので、 自分で有効にした人だけが使う形になっています。

表6:3つのリポジトリの違い
名前既定性格
remi-safe有効追加だけ。標準パッケージを置き換えない
remi-modular有効モジュール形式で複数バージョンを扱う
remi無効標準のPHPを置き換える。自分で有効にして使う
remi-test無効テスト版

ここが分かると、消し方の判断が変わります。 「PHPのバージョンを上げるために remi を有効にした」のなら、 戻したいのは [remi] を無効にすることであって、remi-release の削除ではないかもしれません。 remi-release を消すと remi-safe も一緒に消えます。

GPG鍵も、消すときに気づく人が多い部分です。13個置かれます。

表7:remi-release-9.8 が置くGPG鍵(13個)
鍵数用途
RPM-GPG-KEY-remi2017 〜 remi202610年ごとに署名鍵を更新しているため
RPM-GPG-KEY-remi.el9 / remi.el102OSのメジャーバージョン別
RPM-GPG-KEY-remi1共通

古い鍵が残っているのは、過去に署名されたパッケージを検証できるようにするためです。 手で /etc/yum.repos.d/remi.repo だけ消しても、この13個は残ります。 パッケージとして削除すれば一緒に消えます。

EPEL 側も2つ有効になる

EPEL も同じように数えました。

表8:epel-release-9-11.el9 が置く設定ファイル
ファイル有効なセクション無効なセクション
epel.repo[epel]epel-debuginfo / epel-source
epel-testing.repoなし3つとも無効
epel-cisco-openh264.repo[epel-cisco-openh264]2つ

EPEL を入れると epel-cisco-openh264 も一緒に有効になります。 H.264 のコーデックを配るためのもので、意識して入れた覚えがない人がほとんどだと思います。

表9:両方入れたときに有効になるリポジトリ
由来有効なもの数
epel-releaseepel / epel-cisco-openh2642
remi-releaseremi-safe / remi-modular2
合計4

消さずに無効化する

「いまは使いたくない」だけなら、削除より無効化のほうが安全です。 設定が残るので、戻すのが一行で済みます。

# remi 系をまとめて無効にする(* が使える)
dnf config-manager --set-disabled 'remi*'

# EPEL も止める
dnf config-manager --set-disabled 'epel*'

# 確認
dnf repolist --enabled

config-manager が無いと言われたら dnf install dnf-plugins-core を先に実行してください。 ワイルドカードを使うのは、表5のとおりセクションが複数あるからです。

表10:無効化のやり方
方法書き方備考
恒久的に止めるdnf config-manager --set-disabled 'remi*'推奨
1回のコマンドだけ外すdnf update --disablerepo='remi*'設定は変えない
1回だけ使うdnf install --enablerepo=remi ...無効のまま一時的に有効化
手で書き換えるenabled=1 → 010セクションある。消し漏らしやすい

削除する

順番

# 1) 何が入っているか
rpm -qa | grep -E 'epel-release|remi-release'

# 2) remi を先に消す
dnf remove remi-release

# 3) epel を消す
dnf remove epel-release

# 4) メタデータを捨てる
dnf clean all

順番を逆にすると、依存関係で止まります(表3)。 rpm -e を直接使った場合は Failed dependencies で弾かれます。

dnf remove epel-release は依存している remi-release も巻き込んで消そうとします。 実行前に「何が消えるか」の一覧が出るので、そこを読んでから y を押してください。 意図しないものが並んでいたら中止します。

消しても残るもの

リポジトリを消しても、そこから入れたパッケージは消えません。 消えるのは「どこから取ってくるか」の設定だけです。

表11:削除したあとの状態
ものどうなるか
/etc/yum.repos.d/ の .repo消える(remi は3本、epel は3本)
GPG鍵消える
remi から入れた PHP などそのまま残る
その残ったパッケージの更新止まる。取得先が無くなるため
キャッシュdnf clean all で消す

何が残っているかは、こう数えられます。

# remi 由来のパッケージを探す(リリース表記に remi が入る)
rpm -qa | grep remi

# epel 由来
rpm -qa | grep -E '\.el[0-9]+\.?.*epel'

残ったパッケージを放置すると、更新が来ない状態で動き続けます。 セキュリティ更新も届きません。 リポジトリを消すなら、残ったパッケージをどうするか(消すのか、標準のものに戻すのか)まで決めてから消してください。

EPEL 9 は release パッケージが2つある

これも消し忘れの原因になります。EPEL 9 には release パッケージが2種類あります。

「EPEL 9 には2つの異なるリリースパッケージがあります。RHEL 9 を使っているなら epel-release だけを、 CentOS Stream 9 を使っているなら epel-release と epel-next-release の両方を入れてください」
— Getting started with EPEL(Fedora Docs・要約)

表12:環境別に入っているはずのもの
OS入っているもの
RHEL 9epel-release
CentOS Stream 9epel-release と epel-next-release
RHEL 10 / CentOS Stream 10epel-release
RHEL 8epel-release

CentOS Stream 9 で epel-release だけ消すと、epel-next-release が残ります。 最初の確認コマンドを grep epel にしておけば、両方見つかります。

なお EPEL を入れるときに crb(RHEL 8 では powertools)を有効にしているはずです。 EPEL をやめるなら、これを戻すかどうかも決めてください。

# 入れたときに有効にしたもの(EL9 の例)
dnf config-manager --set-enabled crb

# 戻すなら
dnf config-manager --set-disabled crb

crb を無効に戻すのは、他に crb のパッケージを使っていない場合だけにしてください。 EPEL 以外のものが crb に依存していると、そちらの更新が止まります。

表13:いま使われている版(Remi 公式の対応表から)
区分対応しているもの
RHEL10.2 / 9.8 / 8.10
CentOS Stream10 / 9
Fedora45(開発版)/ 44 / 43
EPEL 7 以前サポート終了。アーカイブ送り

AIに任せるときの注意

表14:AIへの頼み方
頼むこと向くか理由
dnf repolist --enabled の出力を貼って「消すとどうなる?」向く手元の事実から判断できる
rpm -qa | grep remi の結果を貼って仕分けさせる向く一覧の整理は得意
rpm -q --requires の読み方向く書式の説明
「remi を無効にして」向かない--set-disabled remi だけ返りやすい。実際に有効なのは別の2つ
「epel を消すコマンドを教えて」向かない順番と、残るパッケージの話が落ちる
バージョン番号そのもの向かない自分の環境の rpm -qa が正本

判定の目安です。答えに remi-safe と remi-modular が出てこなかったら、その回答は足りていません。 CentOS 6 や 7 を前提にした yum の手順が返ってきた場合も、いまの環境とは違います。

よくある質問

epel を先に消せないのはなぜですか

remi-release が epel-release を要求しているからです(表3)。 remi を先に消してください。

無効化と削除、どちらにすべきですか

一時的に使いたくないだけなら無効化です(表1)。 設定が残るので戻すのが一行で済みます。

--set-disabled remi を実行したのに止まりません

[remi] はもともと無効だからです。 有効なのは remi-safe と remi-modular です(表5)。 'remi*' とワイルドカードで指定してください。

リポジトリを消せば、入れたPHPも消えますか

消えません。消えるのは取得先の設定だけです(表11)。 残ったパッケージは更新が届かない状態になります。

自分が remi から何を入れたか分かりません

rpm -qa | grep remi で出ます。リリース表記に remi が含まれるためです。

epel-cisco-openh264 とは何ですか

EPEL を入れると一緒に有効になるリポジトリです(表8)。 H.264 のコーデックを配るためのもので、意識して入れていなくても有効になっています。

CentOS Stream 9 で消し残しが出ます

epel-next-release が残っていませんか(詳しく)。 CentOS Stream 9 では release パッケージが2つです。

EL8 と EL9 を混ぜられますか

できません。依存条件が完全一致になっているためです(表4)。

まとめ

同じく yum / dnf でつまずく話は CentOS 6 で yum localinstall が通らないときの切り分け、 サーバーが止まる側の話は MySQLが「No space left on device」で止まったとき、 どのサーバーを借りるかは レンタルサーバーおすすめ8選 に書きました。

この記事の依存関係とファイル構成は、2026年10月25日に公式が配布している remi-release-9.8-1.el9.remi・remi-release-10.2-1.el10.remi・ remi-release-8.10-2.el8.remi・epel-release-9-11.el9 を取得して、 パッケージの中身を直接読んで確かめたものです。 release パッケージは更新されるので、作業の前に自分の環境で rpm -qa と dnf repolist --enabled を実行して確認してください。