文章目錄
避免執行 dnf update 時連帶升級特定套件
之前對於 linux 不熟悉,加上沒有系統化學習而對 linux 相關知識不足,造成不少問題:常常要安裝新套件前,就執行 yum update
,以為這個指令是讓 yum 重新取得 package cache,後來才發現這個指令會升級系統上所有套件至最新版 XD
雖然學藝不精下錯指令是我個人問題,但為了避免有人像我一樣,還是應該強制避免某些套件在不預期的情況被升級,快速紀錄一下 提醒自己別再犯基本錯誤 QQ
基本環境說明
- 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
- dnf 4.2.17
- Redis 6.0.7
設定方式
設定前狀況:執行 dnf update 會將 redis 從 Redis 6.0.7 升級至 Redis 6.0.8
dnf list installed
可以列出已安裝的套件將需要鎖定的套件名稱加至
/etc/dnf/dnf.conf
的exclude
中原本就有設定 exclude,就將
redis
補在最後面(如果原本就有 redis,會重複),如果原本沒有就直接加上exclude=redis
語法
grep -q '^exclude=' /etc/dnf/dnf.conf && sed -i 's/\(exclude=.*\)/\1 <package> [<package> ...]/g' /etc/dnf/dnf.conf || echo 'exclude=<package> [<package> ...]' >> /etc/dnf/dnf.conf
範例
grep -q '^exclude=' /etc/dnf/dnf.conf && sed -i 's/\(exclude=.*\)/\1 redis/g' /etc/dnf/dnf.conf || echo 'exclude=redis' >> /etc/dnf/dnf.conf
再次更新即可忽略
備註
dnf exclude 排除特定套件後,dnf 的所有操作都會直接忽略,像是 dnf list installed 也不會列出該套件
心得
感覺上在設定 dnf exclude 時,語法不夠漂亮:可能重複設定,但目前功力需要多點時間再試試,就待有空或是下次遇到再一起看囉,重點還是設定 /etc/dnf/dnf.conf
的 exclude
來達成排除特定套件的檢查
另外是設定 exclude
後, dnf list installed
就無法列出設定的套件資訊,有時候要查是否安裝或是版本資訊時 需要特別留意
參考資訊
文章作者 Yowko Tsai
上次更新 2020-10-26
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。