Go to list of users who liked
Share on X(Twitter)
Share on Facebook
More than 1 year has passed since last update.
yumとdnf
CentOSでは、yumとdnfを使用してrpmパッケージの依存関係を解決します。
YUMについて
YUM(Yellowdog Update Modifier)は、rpmのフロントエンドプログラムであり、ソフトウェアパッケージの依存関係を解決できます。複数のリポジトリ間でパッケージを特定でき、up2dateの代替ツールとして機能します。
CentOS 8ではyumの代わりにdnfが導入されましたが、yumとの互換性が保たれており、設定も共通しています。
[root@loaclhost ~]$ll /usr/bin/yum lrwxrwxrwx. 1 root root 5 Mar 24 17:08 /usr/bin/yum -> dnf-31.1 yum/dnfの動作原理
yum/dnfはC/Sモデルに基づいています。
- yumサーバーにはrpmパッケージと関連パッケージのメタデータベースが保存されています。
- yumクライアントはyumサーバーにアクセスし、インストールやクエリなどを行います。
yumの実装プロセス
まず、yumサーバー上にyumリポジトリ(倉庫)を作成します。この倉庫には多くのrpmパッケージと、パッケージに関連するメタデータファイル(特定のディレクトリrepodataに配置)が事前に格納されています。yumクライアントがyum/dnfツールを利用してパッケージをインストールする際、repodataのメタデータを自動でダウンロードし、関連パッケージおよび依存関係が存在するかを確認します。そして、倉庫から関連パッケージを自動で見つけてダウンロードし、インストールします。
新しいリポジトリを作成する場合
yum install xxxやyum update xxxを使用すると、まずリポジトリに接続できるかを確認します。接続できればリポジトリ内のrepodataをダウンロードします(新しいリポジトリでない場合は、既存のローカルrepodataを直接参照)。次に、repodata内にxxxパッケージがあるかどうかを問い合わせます。パッケージが存在する場合、リポジトリのサーバーからxxx.rpm(依存関係を含む)をダウンロードし、インストールを開始します。インストールが完了したらパッケージ情報を削除します。
1.2 yumクライアントの設定
yumクライアントの設定ファイル
/etc/yum.conf: すべてのリポジトリに共通の設定を提供します。/etc/yum.repos.d/*.repo: 各リポジトリに個別の設定ファイルを提供します。
ヘルプの取得
[root@rocky86 ~]# man 5 yum.conf共通設定
[root@rocky86 ~]# ll /etc/yum.conf lrwxrwxrwx. 1 root root 12 Mar 24 17:08 /etc/yum.conf -> dnf/dnf.conf[root@rocky86 ~]#cat /etc/yum.conf[main]gpgcheck=1# インストールパッケージの合法性と完全性を検証するinstallonly_limit=3# 同時にインストールできるパッケージ数の上限、最小値は2。0または1に設定すると無制限clean_requirements_on_remove=True# パッケージ削除時に使用されなくなった依存パッケージも削除best=True# アップグレード時に最新バージョンを自動的に選択skip_if_unavailable=False# 利用不可の場合はスキップリポジトリ設定ファイルの指示
[repositoryID]name=Some nameforthis repository# リポジトリの名前baseurl=url://path/to/repository/# リポジトリのURLmirrorlist=http://list/# 複数のbaseurlを指すリストenabled={1|0}# 有効化するかどうか、デフォルトは1gpgcheck={1|0}# パッケージの検証を行うかどうか、デフォルトは1gpgkey={URL|file://FILENAME}# 検証キーのURLまたはファイルパスenablegroups={1|0}# yum groupを有効にするかどうか、デフォルトは1failovermethod={roundrobin|priority}# 複数のbaseurlへのアクセス方法、roundrobinはランダム、priorityは順番cost=1000# 優先度を決定するコスト、デフォルトは1000baseurlの書き方
baseurlは複数の書き方とプロトコルをサポートします。
注意:yumリポジトリのパスは必ずrepodataディレクトリを指す必要があります。
baseurl=file:///cdrom/AppStream/baseurl=https://mirrors.aliyun.com/rockylinux/8.6/AppStream/x86_64/os/baseurl=http://mirrors.aliyun.com/rockylinux/8.6/AppStream/x86_64/os/baseurl=ftp://10.0.0.159/よく使われる変数
$arch: CPUアーキテクチャ(例:aarch64, i586, i686, x86_64)$basearch: 基本アーキテクチャ(例:i386, x86_64)$releasever: システムバージョン
変数を使用した例:
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever変数が置き換えられた後の例:
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=x86_64&repo=BaseOS-8yum管理ツールの確認
yum-config-manager[root@rocky86 yum.repos.d]# rpm-qf`which yum-config-manager`yum-utils-4.0.21-11.el8.noarchよく使われるオプション
--add-repo=URL: リポジトリを追加--disable repoid: リポジトリを無効化--enable repoid: リポジトリを有効化
使用例
リポジトリの追加:
[root@rocky86 ~]# yum-config-manager--add-repo=https://mirrors.nju.edu.cn/epel/8/Everything/x86_64/Adding repo from: https://mirrors.nju.edu.cn/epel/8/Everything/x86_64/リポジトリの確認:
[root@rocky86 yum.repos.d]#catmirrors.nju.edu.cn_epel_8_Everything_x86_64_.repo[mirrors.nju.edu.cn_epel_8_Everything_x86_64_]name=created by dnf config-manager from https://mirrors.nju.edu.cn/epel/8/Everything/x86_64/baseurl=https://mirrors.nju.edu.cn/epel/8/Everything/x86_64/enabled=1リポジトリの無効化:
[root@rocky86 yum.repos.d]# yum-config-manager--disable mirrors.nju.edu.cn_epel_8_Everything_x86_64_リポジトリの有効化:
[root@rocky86 yum.repos.d]# yum-config-manager--enable mirrors.nju.edu.cn_epel_8_Everything_x86_64_Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
