CentOS

dnf も yum も “command not found” になる件(解決済み)

経緯

RHEL互換OSであるAlmaLinuxを試してみようと思い、自宅でalmalinux:9.0-minimalのコンテナを起動してみました。
(勘のいい方はもう原因に気づかれたかと思いますが、まあそういうことです。)

普段会社で使っているようにyum listと打つと…

[root@fe5ca2cc6a17 /]# yum list
bash: yum: command not found

「あ、もしかしてRHEL9ではyum廃止になった?」

と思いdnfを使ってみると…

[root@fe5ca2cc6a17 /]# dnf list
bash: dnf: command not found

…こんなんもうパニックですよね。

私は勘がいい方ではないのでここで1時間ぐらい悩みました。

が、よく読むと公式に理由が書いてありました。

The minimal image is a stripped-down image that uses the microdnf as package manager which uses libdnf and hence doesn’t require Python.

https://hub.docker.com/r/almalinux/9-minimal

→minimalのイメージは軽量化のためにdnfではなくmicrodnfというパッケージマネージャが使われているようです。
(ちなみに、RHEL8でも同じでした。)

もはや解決したも同然なのですが、一応解決法をまとめておきます。

解決法

その1 microdnfコマンドを使う

公式がmicrodnfコマンド使えと言っているのでそれに従うのが一番素直でしょう。

若干コマンドは異なりますが、普通にパッケージをインストールしたりする分には特に問題なさそうです。

# パッケージインストール
microdnf install <パッケージ名>

# パッケージ一覧
microdnf repoquery

# インストール済みパッケージ一覧
microdnf repoquery --installed

# パッケージアンインストール
microdnf remove <パッケージ名>

その2 minimalではないイメージを使う

minimalイメージでも、microdnf install dnfと打つとdnfコマンドをインストールすることができます。

「やった!これでdnfコマンド使えるじゃん!!」

と3秒くらい思ったのですが、そんなことするくらいならminimalじゃないイメージでコンテナ作り直した方がいいですね。

dnfが使えないことに気づくタイミングって普通は作成直後だと思うので、minimalにする理由がなければ通常盤で作り直しましょう。

例えばAlmaLinux 9.0であれば、almalinux:9.0-minimalではなくalmalinux:9.0のイメージを使用することでデフォルトでdnfが使えます。
(私はなんでminimalを入れたんだろう…)


以上です。

コメント

タイトルとURLをコピーしました