文章目錄
使用 dnf 透過 module 安裝指定版本套件
這是從過去使用 yum
時發現的問題:安裝套件時多是執行 yum install -y {套件名稱}
,如此一來會直接安裝該套件的最新版本,對於日常使用或是全新開發上是正確的,但這個動作對於正在運作的系統,這個直接動作會造成原本的套件升級至最新版,可能出現不可預期的問題,所以之前筆記 yum 安裝指定版本套件 就紀錄了該如何使用 yum 來安裝指定版本套件的做法 (指定版本並不一定是舊版,有可能指定的版本正好是最新版,只是確保版本是固定的),最近正在將 yum 改為 dnf,在 dnf module 安裝時沒辦法直接套用相同技巧,立馬簡單紀錄一下
基本環境說明
- Azure VM Standard_B2s (CentOS-based 8.2 - Gen1)
- Linux (centos 8.2.2004)
- Linux Kernel 4.18.0-193.19.1.el8_2.x86_64
- Redis 6.0.7
操作步驟
這邊以 redis 為例,想多了解如何使用 dnf 安裝 redis 可以參考之前筆記 使用 dnf 安裝 Redis 6
確保目標 package 的 repo rpm 已安裝
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
依 module 列出可用的 package 與 stream
dnf module list redis
檢視目標 package 的詳細資訊
確認是否有無不同版本的 artifacts
語法
如果只有一個
profile
可以忽略不寫dnf module info {package Name}:{Stream}/{profile}
範例
dnf module info redis:remi-6.0
dnf module info redis:remi-6.0/common
啟用 module stream
範例
dnf module enable -y {package name}:{stream name}
語法
dnf module enable -y redis:remi-6.0
指定舊版的 artifact 安裝套件
可以安裝非最新版的套件
語法
dnf install -y --enablerepo={repo name} {artifact name}
範例
dnf install -y --enablerepo=remi redis-0:6.0.7-1.el8.remi.x86_64
心得
想不到 dnf 多了個 module 讓安裝不同版本變得複雜不少XD,不過這是我個人感受,我找了好幾個小時的資料都沒找到明確的解決方式,不知道是我關鍵字下得不好、我太不了解 dnf 或是只有我有這個需求
不論如何,就快速紀錄一下,我相信這樣的流程跟語法我覺得我不會一直都記得@@”
參考資訊
文章作者 Yowko Tsai
上次更新 2020-12-11
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。