【CentOS 8】yum を愛するあなたに送る、dnf 乗り換え講座
目次
こんにちは。
開発チームのワイルド担当、まんだいです。
少し前の話になりますが、 CentOS 8 がリリースされましたね。
株式会社ビヨンドは一般的には MSP の会社(MSP以外の事業もあります! ビヨンドのサービス案内 | 株式会社ビヨンド を見てください!)なので、 Linux ディストリビューションの新バージョンが出たとなれば、触らなければ。
今回は、 CentOS を使うならみんな使っている yum コマンドがなくなるよ、というお話をします。
yum コマンドが廃止になります
これはご存じの方ならば「やっとか」といったところかも知れませんが、 yum コマンドが廃止されます。
パッケージはどうやって管理するんだ、というところが心配になりますが、安心してください。
ちゃんと後継のパッケージ管理システムがちゃんと用意されています!
その後継ツールが dnf です。
dnf に聞き覚えがない方もおられるかも知れません。
ですが、ポッと出のツールではないことだけお伝えしておきましょう。
dnf は同じ Redhat 互換の、Fedora というディストリビューションで使われてきているパッケージ管理システムで、これが CentOS にも導入されたというわけです。
なぜ変えたのか。
yum は Python 2 系なのでいつまでも使い続けられない、という問題があります。
dnf は Python 3 系で動くため、 CentOS 8 はシステムが利用する Python のバージョンも Python 3 系に上がっています。
OS インストール直後は platform-python という、システム用途の Python だけがインストールされている状態なので、ユーザーが利用する Python は、改めてインストールする必要があるようです。
dnf コマンドを理解したいので、 yum でよくやるコマンドを dnf でやってみました
パッケージ管理でよくやる処理を、 dnf コマンドでやってみました。
パッケージのリストを見る
パッケージを探すときは yum list | grep [パッケージ名] でいつも探しています。
yum list を dnf でやるとどうなるかというと
dnf list
yum の名前が変わっただけですね。
ちなみにインストール済みのパッケージリストを見る場合も
dnf list installed
で、確認できます。
パッケージをインストールする
それでは、パッケージをインストールする場合はどうでしょう。
yum install を dnf でやるとどうなるかというと、
dnf install [パッケージ名]
コチラも yum が dnf になっただけですね。
パッケージをアンインストールする
そろそろ分かってきた頃かも知れませんが、 yum remove を dnf でやるとどうなるかというと
dnf remove [パッケージ名]
どうも基本的な使い方は、そう変わらないということが分かってきましたね!
epel リポジトリを使いたい
epel リポジトリを使う場合はどうでしょうか?
epel リポジトリをインストールするには、次のコマンドでインストールします。
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm # もしくは dnf install epel-release
リポジトリの設定が書いてある epel.repo ファイルはというと、ここまでの流れから dnf 用のディレクトリが /etc 以下にありそうですね。
ls -al /etc/dnf total 16 drwxr-xr-x. 8 root root 128 Nov 17 05:03 . drwxr-xr-x. 80 root root 8192 Nov 25 01:18 .. drwxr-xr-x. 2 root root 6 May 13 2019 aliases.d -rw-r--r--. 1 root root 82 May 13 2019 dnf.conf drwxr-xr-x. 2 root root 59 Nov 25 01:18 modules.d drwxr-xr-x. 2 root root 6 May 13 2019 modules.defaults.d drwxr-xr-x. 3 root root 89 Nov 17 05:04 plugins drwxr-xr-x. 2 root root 59 Nov 17 05:04 protected.d drwxr-xr-x. 2 root root 37 Nov 17 05:03 vars
ん? repos.d のようなディレクトリは見当たりません。
それもそのはず。
なんと、 repo ファイル用のディレクトリは、変わらず /etc/yum.repos.d なのでした。
ややこしい!
ls -al /etc/yum.repos.d/ total 84 drwxr-xr-x. 2 root root 4096 Nov 17 05:15 . drwxr-xr-x. 80 root root 8192 Nov 25 01:18 .. -rw-r--r--. 1 root root 731 Nov 17 05:15 CentOS-AppStream.repo -rw-r--r--. 1 root root 712 Nov 17 05:15 CentOS-Base.repo -rw-r--r--. 1 root root 798 Nov 17 05:15 CentOS-centosplus.repo -rw-r--r--. 1 root root 1357 Nov 17 05:08 CentOS-CR.repo -rw-r--r--. 1 root root 668 Aug 14 06:42 CentOS-Debuginfo.repo -rw-r--r--. 1 root root 756 Nov 17 05:15 CentOS-Extras.repo -rw-r--r--. 1 root root 356 Nov 17 05:08 CentOS-fasttrack.repo -rw-r--r--. 1 root root 976 Nov 17 05:08 CentOS-Media.repo -rw-r--r--. 1 root root 736 Nov 17 05:15 CentOS-PowerTools.repo -rw-r--r--. 1 root root 1382 Aug 14 06:42 CentOS-Sources.repo -rw-r--r--. 1 root root 78 Nov 17 05:08 CentOS-Vault.repo -rw-r--r--. 1 root root 1400 Nov 17 05:08 epel-playground.repo -rw-r--r--. 1 root root 1249 Oct 10 16:15 epel-playground.repo.rpmnew -rw-r--r--. 1 root root 1206 Nov 17 05:15 epel.repo -rw-r--r--. 1 root root 1104 Oct 10 16:15 epel.repo.rpmnew -rw-r--r--. 1 root root 1354 Nov 17 05:08 epel-testing.repo -rw-r--r--. 1 root root 1203 Oct 10 16:15 epel-testing.repo.rpmnew
といった感じで、repo ファイルを見つけることができました。
ファイルの中身は以前と変わらないようです。
ちなみに、リポジトリの有効 / 無効をコマンドで指定する場合の、--enablerepo / --disablerepo オプションの使い方は、yum と変わらないようです。
PHPer が大好きな(と勝手に思っている) remi リポジトリは、 epel リポジトリをインストールした上で、以下のコマンドでインストールできます。
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
remi リポジトリのサイトに書いてあったことですが、 yum と少し違ったインストール方法ができるようです。
dnf にはモジュールという概念が追加され、 PHP と指定しただけで、 php-cli・php-common・php-fpm・php-json・php-mbstring・php-xml と基本的なパッケージがインストールされました。
マルチバイト圏に済んでいる我々には当たり前のことですが、php-mbstring もデフォルトでインストールされるようになったのはちょっと意外。
なお、このモジュールが導入されたことによる恩恵が、複数バージョンのパッケージの入れ替えが簡単になったこと。
dnf module reset php:remi-7.3 dnf module install php:remi-7.2
とすると、サクッとバージョンが変わります。
普段使いすることはないでしょうか、知っておくとイザという時何かの役に立つかも知れません。
また、 CentOS8 の AppStream リポジトリに登録されている、PHP のバージョンも7.2 に上がっているので、そこまで使う頻度が高くなさそう。
ただし、PHP7.2 もセキュリティアップデートが「2020年11月いっぱい」までなので、そう長い間使っていられない事情もあります。
まとめ
今回は、 CentOS 8 で初めて搭載された dnf というパッケージ管理ツールをご紹介しました。
概ね yum と変わらない印象で、読んでいただいた皆さんの心理的障壁を少しでも下げられたら幸いです。
CentOS 7 に systemd がやってきた時の、ゾッとした気持ちを思い出したもんですが、 dnf はとっつきやすくていいですね。
最後に一言、すぐに yum が使えなくなるわけではなく、CentOS 8 でも yum コマンドは健在です。
ただ、CentOS 8 の yum は、 dnf のラッパーコマンドのようなものになっていて、 /usr/bin/yum の中でもキーボード入力の処理と、dnf のモジュール呼び出ししかしていません。
すでにこの状況ですので、近い将来 yum コマンドは消えていくのは間違いないでしょう。
その時は、この世から消えてなくなったパッケージ管理システムを偲ぶ記事でも書きたいですね。
以上です。