dnfコマンド: パッケージマネージャ
前提
ドキュメント
man dnf
, dnf --help
, dnf サブコマンド --help
- 公式ドキュメント
DNF概要
- YUMを置き換えるパッケージ管理システム
- CentOS8のデフォルト
yum
はdnf
へリンク
yum
のたいていのサブコマンドと互換性
- 新設: モジュールストリーム
リポジトリ: パッケージ配布サーバ
定義ファイル
- リポジトリごと:
/etc/yum.repos.d/*.repo
- サードパーティのものも同様に追加できる
一覧
dnf repolist --all
dnf repolist --all
repo id repo の名前 状態
appstream CentOS-8 - AppStream 有効化
baseos CentOS-8 - Base 有効化
(中略)
デフォルト
baseos
: OSのコアパッケージなど
appstream
: アプリなど。モジュールストリームあり
extras
: その他、epel-release
パッケージなど
情報
dnf repoinfo リポジトリid
dnf repoinfo baseos
Repo-id : baseos
Repo-name : CentOS Linux 8 - BaseOS
Repo-status : 有効化
(中略)
Repo-available-pkgs: 1,692
Repo-filename : /etc/yum.repos.d/CentOS-Linux-BaseOS.repo
コマンドにおける有効リポジトリ
- 設定ファイル:
[リポジトリid]
セクション: enabled=1
で有効、0
で無効
- オプション(優先):
--enablerepo
: 有効に
--disablerepo
: 無効に
--repo
: 限定指定
--disablerepo="*" --enablerepo="リポジトリid"
と同じ
- 指定順番に意味がある
メタデータ
- ローカルに自動保存のパッケージ情報
- 有効期限48時間
/etc/dnf/dnf.conf
のmetadata_expire
- すぐに同期したいとき
--refresh
やdnf clean metadata
など
パッケージ名の形式
NEVRA形式: 名前-エポック:バージョン-リリース.アーキテクチャ
- 名前以外は省略可
name[-version[-release]][.arch]
epoch:
は通常非表示 (確認はdnf repoquery --nevra
)
- バージョンの例:
メジャー.マイナー.パッチ
例
dnf-4.2.23-4.el8_1.noarch
dnf.noarch
dnf
dnf-4.2.23-4.el8_1
dnf-4.2.23
インストール済みパッケージの調査・操作
インストール済みリスト
dnf list --installed
インストール済みパッケージ
GConf2.x86_64 3.2.6-22.el8 @AppStream
ModemManager.x86_64 1.10.8-2.el8 @BaseOS
ユーザがインストールしたものだけリスト
dnf repoquery --userinstalled
atom-0:1.48.0-0.1.x86_64
bash-doc-0:4.4.19-10.el8.x86_64
chromium-0:81.0.4044.138-1.el8.x86_64
更新リスト
dnf check-update
- 単体パッケージの新バージョンの有無
- 終了コード: 更新無しなら
0
、あれば100
更新実行
dnf upgrade
dnf check-update
で更新有りの結果でも、実際の依存としては更新無しになることも
--security
: セキュリティのみ更新
パッケージ削除
dnf remove パッケージ
依存されなくなったものをリスト
dnf repoquery --unneeded
依存されなくなったものを削除
dnf autoremove
パッケージ情報の調査
パッケージの詳細
dnf info パッケージ名
- 「インストール済み」or「利用可能」
- バージョン、リポジトリ、説明など
パッケージをキーワード検索
dnf search キー キー
「インストール済み」or「利用可能」をパッケージ名で検索
dnf list パッケージ
dnf list '*dnf*'
インストール済みパッケージ
dnf.noarch 4.2.23-4.el8 @BaseOS
(中略)
利用可能なパッケージ
dnf-automatic.noarch 4.2.23-4.el8 baseos
パッケージに所属するファイル一覧
dnf repoquery --list パッケージ
パスから所属パッケージ検索
dnf repoquery --file パス
dnf provides パス
- ディレクトリやファイル
- 類似の
rpm --query --file
はインストール済みだけ
dnf repoquery --file /root/.bashrc
rootfiles-0:8.1-22.el8.noarch
dnf provides /etc/crypttab
systemd-239-31.el8_2.2.i686 : System and Service Manager
Repo : BaseOS
一致:
ファイル名 : /etc/crypttab
依存情報
dnf deplist パッケージ
dnf repoquery --deplist
と同じ
dnf deplist less
package: less-530-1.el8.x86_64
dependency: /bin/sh
provider: bash-4.4.19-12.el8.x86_64
被依存
dnf repoquery --whatrequires パッケージ
- このパッケージに依存するパッケージ
--whatdepends
だと推奨なども含む
changeログ
dnf repoquery --changelogs パッケージ
パッケージグループ: dnf group
コマンド
目的でグループ化されたパッケージ
- 環境グループ: マシン目的でまとめたもの
サーバー 最小限のインストール ワークステーション
など
- 通常はインストール時に選択
- (ただの)グループ:
開発ツール コンテナー管理 スマートカードサポート
など
- hiddenグループ: 上記グループ傘下のグループなど
サブコマンド
list info install remove upgrade
など
トランザクション
インストールなどの履歴一覧
dnf history list
ID | コマンドライン | 日時 | 動作 | 変更さ
-------------------------------------------------------------------------------
17 | | 2020-06-02 15:04 | Install | 2
16 | install pykickstart | 2020-05-31 19:42 | Install | 1
詳細
dnf history info ID
モジュールストリーム
(新設) モジュール: パッケージの集まり
- カーネルモジュールとは別もの
- コアOSパッケージよりも頻繁にリリース予定
- 特に世界的なプロジェクトは、モジュールにもなっている
- バージョンと目的ごとにグループ化し、組み合わせを選択してインストール
一覧: dnf module list
Name Stream Profiles Summary
nginx 1.14 [d] common [d] nginx webserver
nginx 1.16 common [d] nginx webserver
ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
詳細: dnf module info モジュール名
ストリーム: バージョンの違いでまとめたもの
- モジュール名
nodejs
: ストリーム10
、12
- モジュール名
nginx
: ストリーム1.14
、1.16
有効にする: dnf module enable
プロファイル: 目的でまとめたもの
- モジュール名
mysql
: プロファイルclient
、server
- モジュール名
httpd
: プロファイルcommon
、devel
、minimal
インストール
dnf module install モジュール名:ストリーム/プロファイル
- ストリームとプロファイルは、未指定ならデフォルトのもの