CentOSの標準のdnf(yum)リポジトリは古いパッケージ、良く言えば枯れたパッケージを提供していることが多いです。
しかし、もっと新しいパッケージやCentOS標準のリポジトリでは提供されていないパッケージをdnf(yum)でインストールしたい場合もあるでしょう。例えば、最新のPerlやPHPのバージョンを使いたい場合などです。
そういうときは、サードパーティが提供するリポジトリを追加して利用します。この記事では、EPELとRemiというメジャーなサードパーディのリポジトリをCentOSに追加する方法を紹介します。
EPELリポジトリとRemiリポジトリとは
EPELリポジトリは、Red Hat Enterprise Linux (RHEL) やその互換ディストリビューションのために、Fedoraの先進的なパッケージを配布しているリポジトリです。
RemiはRemi Colletがメンテナンスするリポジトリです。PHPやMySQLなどの最新パッケージに強いのが特徴です。
ただし、これらが提供するのはあくまでもサードパーティのパッケージです。CentOSのサポートやパッケージのトラブルついては注意する必要があります。
リポジトリを追加する
リポジトリを追加するにはパッケージをインストールだけです。ここではEPEL、Remiリポジトリのインストール方法を説明します。
EPELリポジトリのインストール
EPELリポジトリを利用するには、CentOSの標準リポジトリからepel-releaseパッケージをインストールするだけです。
# dnf install epel-release
CentOS7、CentOS6ではyumでインストールします。
# yum install epel-release
Remiリポジトリのインストール
Remiリポジトリはrpmをインストールします。インストールするrpmはCentOSのバージョンによって異なります。
CentOS8ではdnfコマンドでインストールします。
・CentOS8 # dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
CentOS7やCentOS6では、yumでインストールできます。
・CentOS7 # yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm ・CentOS6 # yum install http://rpms.remirepo.net/enterprise/remi-release-6.rpm
これらは、上述のepel-releaseパッケージがインストールされていなければ、一緒にインストールされます。
リポジトリを無効化する
EPELやRemiのリポジトリは、追加した時点で有効になっています。 有効のままだと、意図せずこれらのリポジトリからパッケージをインストールしてしまうかもしれません。 そのため通常はこれらのリポジトリを無効化しておくことをおすすめします。
無効化しておいても、dfn(yum)コマンドでパッケージをインストールするときに、引数で有効化することができますので、使い勝手はあまり心配いりません。
リポジトリを確認する
まずは、現在有効なリポジトリを確認してみましょう。それには次のように実行します。
# dnf repolist repo id repo name appstream CentOS Linux 8 - AppStream baseos CentOS Linux 8 - BaseOS epel Extra Packages for Enterprise Linux 8 - x86_64 epel-modular Extra Packages for Enterprise Linux Modular 8 - x86_64 extras CentOS Linux 8 - Extras remi-modular Remi's Modular repository for Enterprise Linux 8 - x86_64 remi-safe Safe Remi's RPM repository for Enterprise Linux 8 - x86_64
すると有効なCentOS標準のリポジトリ、EPELレポジトリ、Remiリポジトリ表示されます。
全てのリポジトリを一覧表示するにはallをつけて実行します。これにはstatusにリポジトリが有効か無効かどうかも示されます。
# dnf repolist all
EPEL、Remiのリポジトリを無効化する
リポジトリを無効化したい場合、dnf config-managerを利用するのが簡単です。
# dnf config-manager --disable epel epel-modular remi-modular remi-safe
yumコマンドでは次のように実行します。
# yum-config-manager --disable epel epel-modular remi-modular remi-safe
無効化したら前述したコマンドで有効なリポジトリの確認してみましょう。無効化したリポジトリは表示されなくなっているはずです。
参考:設定ファイルを直接編集してリポジトリを無効化する
dnf(yum)リポジトリの設定ファイルを直接編集して無効化することもできます。
dnf(yum)リポジトリの設定ファイルは/etc/yum.repos.d/以下にあります。dnfに変わっても設定ファイルの場所は変わっていません。EPELとRemiのファイルはそれぞれepel、remiで始まるファイルです。
ファイルの中はいくつかのセクションが記述されており、「repo id 」を [ と ] で囲んだ部分がセクションの開始です。このセクションの各々がサブリポジトリの設定になります。
有効なサブリポジトリには「enabled=1」という行が見つかるはずです。これを全て「enabled=0」に変更します。
次のコマンドで「enabled=1」の記述があるファイルを探すのが簡単です。
# grep enabled=1 /etc/yum.repos.d/*
対象のファイルが見つかったら、viなどで「enabled=1」を「enabled=0」に修正します。
無効化したリポジトリからパッケージをインストールする方法
epelとremiリポジトリを無効化しましたが、dnf(yum)コマンドの--enablerepoオプションを使えば、 コマンドの実行時だけ指定したリポジトリを有効化することができます。
反対に特定のリポジトリを無効化したければ --disablerepo オプションを使います。
試しに先ほど無効化リポジトリのいくつかを有効化して表示してみましょう。複数のリポジトリを指定するときはカンマで区切ります。
# dnf --enablerepo=epel,remi-safe repolist
epelとremi-safeリポジトリが有効になっていることがわかるでしょう。
次の例はCentOS8でPHP7.4をインストールする例です。
# dnf --enablerepo=remi-safe install php74
なお、CentOS7では、PHPのバージョンごとにremi-php74などの名前のリポジトリになっていました。次の例はCentOS7にPHP7.4をインストールする例です。
# yum --enablerepo=remi-php74 install php
おしまい