前回はdnfを使って簡単にソフトウェアのインストールや更新、アンインストールが出来ることを説明しました。
しかし、このインストールするソフトウェアはどこからダウンロードされた物なのでしょうか。
この答えがリポジトリとなります。
この記事で行うこと
1. リポジトリ(Repository)とは
リポジトリ(Repository)は英語で倉庫という意味です。
今回はリポジトリはソフトウェアを保管しておく倉庫という事ですね。
CentOSの中にはリポジトリファイルという物が保管されていて、このファイルにはそのリポジトリのURLが書かれています。
dnfがソフトウェアをインストールする際にはこのリポジトリファイルに記載されたURLからソフトウェアをダウンロードしてくるわけです。
リポジトリにはCentOSの開発元が提供しているリポジトリ以外にも、それぞれのソフトウェアの開発元が提供しているリポジトリもあります。
こういったリポジトリは動作の保証はないものの、最新バージョンのソフトウェアをダウンロードすることが出来ます。
これらのリポジトリからソフトウェアをダウンロードするためにはそのリポジトリのURLをサーバに教えてあげる必要があります。
一般的にこれを「リポジトリを追加する」と言います。
決して自分が新しいリポジトリを立ち上げるとかそういう意味じゃないので注意してください。
2. リポジトリを確認する
登録されているリポジトリの一覧は /etc/yum.repos.d/
内にあります。
試しに一つ中身を確認してみましょう。
[root@localhost ~]# vi /etc/yum.repos.d/CentOS-Base.repo
すると、以下のような表示になるかと思います。(上部に表示される#始まりの部分は省略しています)
[BaseOS]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
- []内はリポジトリの短縮名称です。
dnf info
で表示したときの提供元リポジトリに表示されます。ここが重複してはいけません。 - nameはリポジトリの正式名称です。
- mirrorlistはミラーリストの場所です。ミラーリストにはこのリポジトリがある場所のうち、物理的に近いURLを返してきます。その中で最も良さそうなところが選ばれてダウンロードしに行くというわけです。
- baseurlはリポジトリの場所です。リポジトリが一つしか無い場合や、特定の場所にあるリポジトリを使いたい場合はこちらに記載します。しかし、baseurlで指定した場合、そのリポジトリが何らかの理由で使えない場合にインストールや更新が出来なくなってしまいます。
- mirrorlistとbaseurlはどちらか片方だけを記載し、使わない方は消すかコメントアウトします。
- mirrorlistとbaseurlにある$から始まる部分は変数で、実行時に別の値に置き換えられます。例えば64bit環境では
$basearch
はx86_64
に変換されます。
- gpgcheckはソフトウェアが改竄されていないことを確認するかを指定する項目です。1で確認する、0は確認しないです。基本的には確認するようにします。
- gpgkeyはgpgcheckで改竄を確認する際に使う鍵の場所です。
- enabledはこのリポジトリが有効かを指定する項目です。有効な場合、dnfを使った時にオプションの指定をしなくても自動的にこのリポジトリが使われます。無効な場合はこのリポジトリからソフトウェアをインストールしたい場合にオプションを使う必要があります。(リポジトリが無効でも更新は問題なく行えます)
3. リポジトリを追加する
リポジトリの追加方法は大きく分けて2つあります。
すなわち、リポジトリファイルをダウンロードしてくるか、自分で作るかです。
基本的に公開元が推奨する通りの方法を取れば良いですが、今回はそれぞれ簡単に解説をします。
3-1. ダウンロードする
リポジトリを提供している公開元の多くはそのリポジトリを利用するためのリポジトリファイルを何かしらの方法で公開しています。
このファイルを /etc/yum.repos.d/
内にダウンロードしてくる事でそのリポジトリを使えるようになります。
3-1-1. dnfでインストール
リポジトリファイルそのものがRPMパッケージとして提供されている場合は、dnfを使ってリポジトリファイルをインストールできます。
以下はEPELというリポジトリをインストールする例です。
[root@localhost ~]# dnf install epel-release
EPELは利用は自己責任であるもののCentOS8の開発元と関連があるRed Hatが出しているリポジトリです。
このため、初期設定で利用できるリポジトリにEPELリポジトリのパッケージが存在していて、簡単にインストールができます。
これはごく一部のリポジトリだけで、通常はRPMパッケージのURLを指定してインストールすることになります。
以下はRemi’s RPM repositoryという主に最新のPHPを利用するために使われるリポジトリの追加方法です。
[root@localhost ~]# dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
RPMパッケージのURLを直接指定しているのが分かると思います。
このURLはリポジトリの公式サイトなどに載っているのでそれを探してください。
なお、dnfでインストールしたRPMパッケージは他のソフトウェア同様に remove
でアンインストールするすることが出来ます。
3-1-2. 直接ダウンロード
リポジトリファイルが一つだけといった場合、わざわざRPMパッケージにしないことが多いです。
こういった場合はwgetというファイルをダウンロードするためのコマンドで直接 /etc/yum.repos.d/
内にダウンロードしてくる事になります。
以下はownCloudというソフトウェアの開発元が提供するリポジトリの追加方法です。
[root@localhost ~]# wget https://download.owncloud.org/download/repositories/production/CentOS_8/ce:stable.repo -P /etc/yum.repos.d/
- wget : ファイルをダウンロードしてくるコマンドです。
- https://download…ce:stable.repo : ダウンロードしてくるファイルのURLです。リポジトリファイルのURLはそのリポジトリの公開元の公式ページで確認します。
- -P /etc/yum.repos.d/ : -Pは保存先を指定するオプションです。リポジトリファイルを格納する
/etc/yum.repos.d/
を指定しています。
3-2. リポジトリファイルを作成する
リポジトリファイルが公開されていないリポジトリもあります。
こういったリポジトリでもリポジトリファイルの作成例や、最悪URLとgpgkeyさえ分かれば直接リポジトリファイルを作成することで利用できます。
nginxの公式リポジトリでは、 nginx.repo
というファイル名で以下の内容のリポジトリファイルを作るように書かれています。
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
なので、この内容をコピペしたファイルを作成することでリポジトリの追加が出来ます。
ちなみに、上記設定内の module_hotfixes
というのはRPMのフィルタリングを無効化して全てのパッケージを使えるようにするというものだそうです。
恐らくAppStreamなど優先度の高いリポジトリに同じパッケージ名のパッケージが存在しても表示させるといったものかと思うのですが、まあ公式が付けろって言っているんですし付けておいた方が良いのではないでしょうか。
ちなみに、特定のアプリをインストールするときだけ使いたいという場合は enabled=0
を指定してリポジトリを無効化しておいてください。
4. 追加したリポジトリからソフトウェアをインストールする
リポジトリが有効化されている場合は特別な事をする必要は無くインストールが出来ます。
[root@localhost ~]# dnf install nginx
初めてインストールするリポジトリの場合、gpgcheck用の鍵のインストールで追加の確認がされますが、それだけです。
リポジトリが無効化されている場合は --repo
オプションを付けます。
[root@localhost ~]# dnf install nginx --repo nginx-stable
--repo
は指定したリポジトリを使用するというオプションになります。リポジトリを指定する際は[]で囲われた短縮名称を使ってください。
まとめ
今回はリポジトリについて説明しました。
超メジャーと言えるほど有名ではないソフトウェアや、最新版のソフトウェアなどをインストールする際には扱う必要が出てきます。
しっかりと意味を分かって使いこなす事で誤って古いアプリをインストールしたり、どこから何をインストールしたのか分からなくなることがないようにしましょう。