Linuxにおいてリポジトリとは、ダウンロードのためにパッケージ(.rpm, .deb)などを配置してくれているサーバのこと。
例えば、ニフクラさんは、rhui-rhel-8-for-x86_64-baseos-rhui-rpms
やrhui-rhel-8-for-x86_64-appstream-rhui-rpms
というリポジトリ(サーバ)に、さまざまなパッケージ(aajohan-comfortaa-fonts.noarch
とか)を置いていて、ユーザーがダウンロードできるようにしてくれている。ちなみに、.noarch
というのはアーキテクチャに依存しないよ、という意味で、パッケージを作成する人がi386(32bit)やらx86_64(64bit)とか気にしないでいずれのアーキテクチャでも使用できるよ、とお知らせしてくれている。
で、このリポジトリをLinuxマシンに追加しておかないと、リポジトリに配置されているパッケージをダウンロードできない。
yum repolist # リポジトリの一覧表示 yum-config-manager --add-repo repository_url # リポジトリの追加 yum-config-manager --enable repository # リポジトリの有効化
追加したリポジトリは/etc/yum.repos.d/
ディレクトリにファイル(.repo)として保存される。
試しに、.repo
ファイルの中身をみてみると、ini形式で記述されている。enabled=1
はリポジトリが有効化されていることを意味している。gpgkey
は公開鍵ファイルのパスで、RPMに含まれた暗号化された署名を公開鍵ファイルで復号できれば、RPMファイルが偽物でないことがわかるようになっている。gpgcheck=1
だと、リポジトリー内の全パッケージでGPG署名を確認し、パッケージの真正性を検証する。
[code] name=Visual Studio Code baseurl=https://packages.microsoft.com/yumrepos/vscode enabled=1 gpgcheck=1 gpgkey=https://packages.microsoft.com/keys/microsoft.asc
リポジトリを無効化したい場合は、--disable
で無効化する。
yum-config-manager --disable repository # リポジトリの無効化
追加したリポジトリを削除するには、/etc/yum.repos.d/
ディレクトリにある.repo
ファイルを削除する。
リポジトリにあるパッケージをインストール、またはアップデートするには、次のコマンドを実行する。
yum list # インストール可能なパッケージの一覧 yum list installed # インストール済みのパッケージ一覧 yum install [パッケージ名] # パッケージのインストール yum check-update # インストール済みのパッケージのうち、アップデートのあるパッケージの一覧 yum update [パッケージ名]
実際にリポジトリを追加し、リポジトリ上のパッケージをインストールしてみる
CentOS Stream9のDockerイメージを使用して、リポジトリの追加とインストールを試してみる。ちなみに、Stream9のイメージはDocker Hubではなくて、quay.io
にある。
docker pull quay.io/centos/centos:stream9 docker run --name centos_stream9 -it quay.io/centos/centos:stream9 /bin/bash
yum-config-managerがインストールされていないので、yum-utils
をインストールする。
# yum install -y yum-utils
VScodeをインストールしてみたい。公式をみてみると、リポジトリはhttps://packages.microsoft.com/yumrepos/vscode
の模様。リポジトリを追加すると、/etc/yum.repos.d/
配下にpackages.microsoft.com_yumrepos_vscode.repo
が作成されている。
# yum-config-manager --add-repo https://packages.microsoft.com/yumrepos/vscode # ls /etc/yum.repos.d/ centos-addons.repo centos.repo packages.microsoft.com_yumrepos_vscode.repo
.repoファイルの中身を見るとこんな感じ。
# cat /etc/yum.repos.d/packages.microsoft.com_yumrepos_vscode.repo [packages.microsoft.com_yumrepos_vscode] name=created by dnf config-manager from https://packages.microsoft.com/yumrepos/vscode baseurl=https://packages.microsoft.com/yumrepos/vscode enabled=1
これでyum install code
とすればVScodeをインストールできるのだが、.repoファイル名がなんだかかっこ悪いし、gpgcheckもされないので、ファイル名を変更してgpgcheckとgpgkeyを追加する。こんな感じ↓。
/etc/yum.repos.d/vscode.repo
[vscode] name=Visual Studio Code baseurl=https://packages.microsoft.com/yumrepos/vscode enabled=1 gpgcheck=1 gpgkey=https://packages.microsoft.com/keys/microsoft.asc
このように手動で.repoファイルを設定し、yum installでパッケージをインストールすることもできる。例えば、公式のgcloud CLIのインストール手順だと、次のように手動で.repoファイルを作成する。
sudo tee -a /etc/yum.repos.d/google-cloud-sdk.repo << EOM [google-cloud-cli] name=Google Cloud CLI baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el9-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=0 gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOM
ちなみにVScodeの正式なインストール方法でやれば、手動で.repoファイルを作ったりしないで大丈夫です。
今回はyumを使用したけれど、dnf
というコマンドもある。これは「yum」の後継となるコマンドで、yumと同じサブコマンド、オプションを使用できる。実際のところyum
にしろ、dnf
にしろシンボリックリンク先がdnf-3
となっているので、結局dnf-3
コマンドを実行していることになる。
$ ls -l /usr/bin/yum /usr/bin/dnf lrwxrwxrwx 1 root root 5 Oct 26 05:16 /usr/bin/dnf -> dnf-3 lrwxrwxrwx 1 root root 5 Oct 26 05:16 /usr/bin/yum -> dnf-3
今日のところはこんな感じ。おわり。
参考
https://xtech.nikkei.com/it/article/COLUMN/20061031/252339/
https://onoredekaiketsu.com/yum-command-and-repository/#toc36
https://eng-entrance.com/linux-package-yum
https://qiita.com/sksmnagisa/items/05a6f8a707010b8bea56
https://atmarkit.itmedia.co.jp/ait/articles/2001/31/news006.html