TT Lab
はじめる
学ぶ 学習パス コース

RHEL系の管理

dnfの実戦

TT Labで続きを見る

目標

dnfでリポジトリを確認し、インストールし、ファイルからパッケージを逆引きし、トランザクションをロールバックし、バージョンを固定します。

なぜ重要なのか

dnfの決定的な違いは、すべてのインストールがトランザクションとして記録され、元に戻せることです。aptには、対応する機能がありません。この違いが運用の方法を変えます。「とりあえずインストールしてみて、違えば元に戻す」が可能になります。ただし、以前のバージョンがリポジトリになければ失敗し、カーネルやglibcのようなシステムパッケージのダウングレードはサポートされません。

そしてdnf providesは、dpkg -Sより強力です。リポジトリのメタデータを調べるので、まだインストールされていないパッケージまで探してくれます。RPMでは依存関係の単位がパッケージ名ではなくケイパビリティ(ファイルパス、ライブラリのsoname)なので、このツールが必須です。

ステップ

  1. /root/rhディレクトリを作成し、詳細なリポジトリ一覧を/root/rh/repolist.txtに保存してください。/opt/localrepoを指すbaseurlが表示されている必要があります。
  2. treeパッケージの情報を照会して、バージョン文字列だけを1行で/root/rh/tree-version.txtに書いてください。
  3. treeとnanoをインストールし、2つのパッケージのNEVRA(rpm -qの出力)を1行ずつ/root/rh/installed.txtに書いてください。
  4. /usr/bin/treeを提供するパッケージを探し、パッケージ名だけを1行で/root/rh/provides.txtに書いてください。
  5. dnfのトランザクション一覧を/root/rh/history.txtに保存してください。最低でも1件のトランザクションがある必要があります。
  6. nanoをインストールしたトランザクションを元に戻してください(undo)。元に戻したあと、nanoがインストールされていない必要があり、その状態を/root/rh/after-undo.txtに保存してください。
  7. treeのバージョンを固定してください。dnf versionlockプラグインがあればそのコマンドで、なければ/etc/dnf/plugins/versionlock.listに直接書いてください。固定の状態を/root/rh/lock.txtに保存してください。
  8. /root/rh/report.txtを次の4行で作成してください。 TREE=<tree 의 설치 버전> / NANO=<removed 또는 installed> / PROVIDER=<4번에서 찾은 패키지 이름> / LOCKED=tree(プレースホルダーは順に、treeのインストールされているバージョン、removedかinstalledのどちらか、ステップ4で見つけたパッケージ名です)

参考

リポジトリの確認

/root/rhディレクトリを作成し、詳細なリポジトリ一覧を/root/rh/repolist.txtに保存してください。/opt/localrepoを指すbaseurlが表示されている必要があります。

dnf repolistには、詳細出力のオプションがあります。ローカルリポジトリのbaseurlが表示されている必要があります。

パッケージ情報の照会

treeパッケージの情報を照会して、バージョン文字列だけを1行で/root/rh/tree-version.txtに書いてください。

dnf infoは、バージョン、リポジトリ、サイズ、概要を表示します。バージョンの値だけを取り出してみてください。

パッケージのインストール

treeとnanoをインストールし、2つのパッケージのNEVRA(rpm -qの出力)を1行ずつ/root/rh/installed.txtに書いてください。

インストール後にrpm -qで確認する習慣を身につけてください。名前-バージョン-リリース.アーキテクチャの形式で出力されます。

ファイルからパッケージを逆引き

/usr/bin/treeを提供するパッケージを探し、パッケージ名だけを1行で/root/rh/provides.txtに書いてください。

dnf providesは、リポジトリのメタデータまで調べるので、インストールされていないパッケージも見つけます。

トランザクションの確認

dnfのトランザクション一覧を/root/rh/history.txtに保存してください。最低でも1件のトランザクションがある必要があります。

dnf historyで一覧を、history infoで詳細を見ます。IDは数字です。

トランザクションを元に戻す

nanoをインストールしたトランザクションを元に戻してください(undo)。元に戻したあと、nanoがインストールされていない必要があり、その状態を/root/rh/after-undo.txtに保存してください。

undoは、指定したトランザクションの逆を実行します。確認なしで進めるには-yが必要です。

バージョンの固定

treeのバージョンを固定してください。dnf versionlockプラグインがあればそのコマンドで、なければ/etc/dnf/plugins/versionlock.listに直接書いてください。固定の状態を/root/rh/lock.txtに保存してください。

プラグインがあればコマンドで、なければ設定ファイルに直接書けます。

総合レポート

/root/rh/report.txtを次の4行で作成してください。 TREE=<tree 의 설치 버전> / NANO=<removed 또는 installed> / PROVIDER=<4번에서 찾은 패키지 이름> / LOCKED=tree(プレースホルダーは順に、treeのインストールされているバージョン、removedかinstalledのどちらか、ステップ4で見つけたパッケージ名です)

値は実際の照会結果である必要があります。状態は、インストールの有無で判断してください。