Windowsではソフトウェアをインストールする際には、そのソフトウェアの公式サイトに行ってインストールすることが基本だと思います。(最近はWindowsストアというのも出てきたので一概にそうとも言えないですが)
しかし、Linuxではよく使われる大半のソフトウェアはコマンド一つでインストールすることができます。
これがdnfというコマンドになります。
dnfはDandified Yumの略で、直訳すると「おめかししたYum」となります。
実はCentOS7まではdnfではなくyumというコマンドがこの役割を果たしていました。
ちなみにyumはYellowdog Updater Modifiedの略なのですが、まあyum yum(もぐもぐ)の略って事で覚えた方が覚えやすいんじゃないでしょうか。こう、擬人化したLinuxちゃんがソフトウェアをもぐもぐしてる感じで。
なお、この記事で触れるレベルではdnfもyumも使い方は同じなので、CentOS7を使っている方はdnfをyumと置き換えれば問題なく使えます。
この記事で行うこと
1. dnfとは
Red Hat系のLinuxでは基本的にソフトウェアをRPMパッケージという単位で管理しています。
Windowsにおいて「プログラムと機能」からアプリケーションをアンインストールするとそのプログラムに関連したファイルが一気に消えるように、LinuxではRPMパッケージを消すとそのプログラムに関連したファイルが一気に消えます。
これを管理するのに使うのがdnfコマンドです。
なおdnfはWindowsの「プログラムと機能」よりも多機能で、アンインストールするだけではなくソフトウェアをダウンロードしてインストールすることもできますし、インストールやアンインストールの際にわざわざ指定しなくても関連するRPMパッケージまで一緒にインストール・アンインストールしてくれます。
2. 主なコマンド
では、早速dnfを使ったコマンドの解説に入ります。
2-1. update
このコマンドはサーバ内のソフトウェアやOSそのものの更新を行うためのコマンドです。
dnfで管理されているソフトウェアはこのコマンドで更新できます。
使い方は以下の通りです。
[root@localhost ~]# yum update [更新したいパッケージの名称]
なお、[更新したいパッケージの名称]の部分を書かないと、更新可能なもの全てが更新されます。
コマンドを実行すると、更新されるものの一覧が表示されて確認されますので、そこでyを入力すると更新が開始されます。
趣味でサーバをやっている場合、最も怖いのはサーバが落ちることよりもサーバに侵入される事です。
更新したときの影響を心配するよりも更新しないことによるリスクを考えてなるべく更新するようにしましょう。(自動更新の設定についても後述します)
よく使われるオプションは以下の通りです。
-y
確認を省略して全てyと入力したことにします。確認が煩わしい時に使います。
2-2. info
インストール可能なパッケージパッケージの情報を確認します。
使い方は以下の通りです。
[root@localhost ~]# dnf info [確認したいパッケージの名称]
[確認したいパッケージの名称]の部分を書かないと書かないとインストール可能な全てのパッケージが表示されます。が、大量に出てくるのであまり意味がありません。
パッケージをインストールしたか忘れたので確認したいとき、バージョンを確認したいときなどに使います。
2-3. install
パッケージをインストールします。
使い方は以下の通りです。
[root@localhost ~]# dnf install [インストールしたいパッケージの名称]
[インストールしたいパッケージの名称]を記載しないとエラーとなります。(インストールできるソフトが全部インストールされたりしたら時間かかるやら容量圧迫するやら設定の穴が量産されるやらで大惨事ですからね)
ちなみに、このコマンドも -y
オプションが使えます。
ただ、一つのパッケージをインストールするつもりでも依存関係の問題で複数のパッケージがインストールされたりするので、何がインストールされるか確認をした方が良いと考えます。
基本的にはdnfでインストールできるソフトウェアは全てdnfを使ってインストールすることをオススメします。
稀に「通はソースコードから直接インストールする」とか何とか言ってる所があったりしますが、理由が無ければインストールにも更新にも手間がかかるだけで無意味です。
しっかりと文明の利器を使えるようにしましょう。
2-4. remove
パッケージをアンインストールします。
コマンドの使い方は以下の通りです。
[root@localhost ~]# dnf remove [アンインストールしたいパッケージの名称]
これも[アンインストールしたいパッケージの名称]を空欄にすると削除対象がないと言われ、何も起りません。(流石にシステムそのものをアンインストールとかにはならないです)
このコマンドも -y
オプションが使えますが、依存関係で意図しないパッケージが消えたりしないようにちゃんと確認を行うことをおすすめします。
3. 自動更新の設定
「2-1. update」でも触れたように更新を忘れていてセキュリティホールが出来ていたなんていうのはゾッとしない話です。
そうならないようにdnfでは自動更新の設定を行うことが出来ます。
手順は以下の通りです。
まず、自動更新を行うためのパッケージをインストールします。
[root@localhost ~]# dnf install dnf-automatic
次に、自動更新をsystemctl
で起動・有効化します。
[root@localhost ~]# systemctl enable --now dnf-automatic-install.timer Created symlink /etc/systemd/system/multi-user.target.wants/dnf-automatic-install.timer → /usr/lib/systemd/system/dnf-automatic-install.timer.
--now
:enable
コマンドを使うときに設定することで、start
も同時に実行されるというオプションです。
なお、今回は自動で更新のインストールまでするものを起動しました。
起動するものが dnf-automatic-install.timer
だと更新の自動インストール、 dnf-automatic-notifyonly.timer
だと更新の通知のみ、 dnf-automatic-download.timer
だと更新のダウンロードまでを行います。
ただ、システムが落ちて損害を受けるようなサーバでない限りは自動インストールを行うように設定した方が安全です。(というか落ちて困るようなサーバをこんなサイト見ながら運用しようとしないでください)
まとめ
今回はCentOS8のパッケージ管理システムdnfについて説明しました。
dnfはソフトウェアのインストール時に真っ先に上がる選択肢なので、ぜひ覚えておいてください。
dnfでインストールできない、バージョンが古すぎるといった問題が見つかったときに初めて他の選択肢を検討しましょう。
あと、アプリケーションの更新は絶えず行うようにしてくださいね。
次回はリポジトリと設定方法について解説します。