【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【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 コマンドは消えていくのは間違いないでしょう。
その時は、この世から消えてなくなったパッケージ管理システムを偲ぶ記事でも書きたいですね。

以上です。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
2
読み込み中...
2 票, 平均: 1.00 / 12
69,374
X facebook はてなブックマーク pocket
【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

萬代陽一

ソーシャルゲームのウェブ API などの開発がメイン業務ですが、ありがたいことにマーケティングなどいろんな仕事をさせてもらえています。
なおビヨンド内での私の肖像権は CC0 扱いになっています。