本文介紹在 香港伺服器或 香港雲伺服器 上的 Microsoft Azure 虛擬機器(VM)使用 yum 和 dnf 套件管理工具時,安裝或更新應用程式可能遇到的常見問題及解決方案。
注意:本文提及 CentOS,其已達生命週期終止(EOL)。請參考 CentOS 生命週期終止指南 進行規劃。
概述
yum(Yellowdog Updater Modified)是基於 RPM 的 Linux 發行版(如 RHEL、CentOS、Oracle Linux、Mariner 和 Fedora)的套件管理工具。
dnf(Dandified Yum)是 yum 的現代化增強版本,適用於基於 RPM 的 Linux 系統。
以下為常見問題及解決方案:
方案 1:儲存庫訪問問題
問題:證書或網路連線錯誤。
解決方案:
- 執行 RHUI 檢查腳本
Azure 提供 GitHub 上的 RHUI 檢查腳本,用於驗證:- RHUI 客戶端證書
- RHUI rpm 一致性
- EUS 與非 EUS 儲存庫配置
- RHUI 儲存庫連線及 SSL 連線
執行命令:
- 有網路訪問:
curl -sL https://raw.githubusercontent.com/Azure/azure-support-scripts/refs/heads/master/Linux_scripts/rhui-check/rhui-check.py | sudo python2 - - 無網路訪問:下載腳本後執行:
sudo python2 ./rhui-check.py
腳本生成報告並儲存至
/var/log/rhuicheck.log。 - 其他發行版:確保端口 443 連線暢通,並使用有效證書。
支援的 Red Hat 映像:RHEL 7.x、8.x、9.x、10.x PAYG VM。
方案 2:依賴項衝突
問題:更新時出現依賴項衝突錯誤,如:
Error: package leapp-0.16.0-2.el8.noarch requires python3-leapp = 0.16.0-2.el8, but none of the providers can be installed
解決方案:
- 症狀 2a – 移除舊套件
移除衝突的舊套件:sudo yum remove python2-leapp-0.16.0-1.el7_9.noarch然後繼續更新或安裝。
- 症狀 2b – 檢查排除項
檢查/etc/yum.conf或/etc/dnf.conf是否排除systemd:sudo cat /etc/yum.conf | grep -i exclude若存在
exclude=systemd,使用編輯器(如 vim 或 nano)刪除或註釋該行。
方案 3:Python 版本錯誤
問題:yum/dnf 依賴特定 Python 版本,錯誤範例:
SyntaxError: invalid syntax
No module named yum
bash: /usr/bin/yum: /usr/bin/pythonX.X: bad interpreter: No such file or directory
解決方案:
- 驗證 Python 版本:
sudo ls -al `which python` sudo rpm -V python - 修復方案:
- 方案 3a:修復符號連結:
sudo cd /usr/bin sudo unlink python sudo ln -s python2.7 python - 方案 3b:重新安裝 Python 套件:
sudo rpm -ivh python-<release>.<arch>.rpm --replacepkgs --replacefiles - 方案 3c:從救援 VM 重新安裝 Python(參考官方文件)。
- 方案 3a:修復符號連結:
方案 4:重複套件問題
問題:更新中斷導致重複套件,引發「受保護的多庫」錯誤。
解決方案:
- 方案 4a – 完成事務:
sudo yum-complete-transaction若仍有重複套件:
sudo yum-complete-transaction --cleanup-only - 方案 4b – 手動移除重複套件:
sudo tar -cjf /tmp/rpm_dbbkp.tar.bz2 /var/lib/{rpm,yum} sudo yum check &> /tmp/yumcheck grep "duplicate" /tmp/yumcheck | awk '{ print $NF }' | egrep -v "\:" > /tmp/duplicaterpms grep "duplicate" /tmp/yumcheck | awk '{ print $NF }' | egrep ":" | awk -F':' '{ print $NF }' >> /tmp/duplicaterpms for i in $(cat /tmp/duplicaterpms); do sudo rpm -e --justdb --nodeps $i; done sudo yum update若涉及新內核,重新安裝:
sudo yum remove kernel-<newversion>-<release>.<arch> sudo yum install kernel-<newversion>-<release>.<arch>
方案 5:Yum 404 錯誤
問題:yum 顯示「404 未找到」錯誤,如:
http://olcentgbl.trafficmanager.net/centos/7.9/extras/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found
解決方案:
- CentOS 映像:檢查並移除
/etc/yum/vars/releasever:sudo cat /etc/yum/vars/releasever sudo rm -f /etc/yum/vars/releasever
方案 6:RPM 資料庫問題
問題:執行 rpm/yum/dnf 報錯,如:
error: rpmdb: BDB0113 Thread/process 24669/140693557245760 failed
解決方案:
- 備份 RPM 資料庫:
sudo tar zcvf /var/lib/rpm-backup.tar.gz /var/lib/rpm - 移除鎖定檔案並驗證套件:
sudo cd /var/lib/rpm sudo rm -f __db.* sudo /usr/lib/rpm/rpmdb_verify Packages - 重建 RPM 資料庫:
sudo rpm -vv --rebuilddb
方案 7:Yum 403 錯誤
問題:執行 yum 報「HTTPS 錯誤 403 – Forbidden」。
解決方案:
- 檢查第三方 curl 套件:
sudo rpm -qa | grep -i curl rpm -q --queryformat '%{VENDOR}\n' curl libcurl - 降級 curl 套件至 RHEL 7.9 版本:
- 從 Red Hat 手動下載或使用 yumdownloader:
sudo yumdownloader curl.x86_64 libcurl.x86_64 libcurl-devel.x86_64 - 降級:
sudo cd /path/location/of/rpms/downloaded sudo yum downgrade curl-X.XX.0-XX.el7_9.X.x86_64.rpm libcurl-X.XX.X-XX.el7_9.X.x86_64.rpm libcurl-devel-X.XX.X-XX.el7_9.X.x86_64.rpm --disablerepo=*
- 從 Red Hat 手動下載或使用 yumdownloader:
透過以上方案,可有效解決在 香港伺服器、或 香港雲伺服器 上使用 yum 和 dnf 時遇到的常見問題。如需進一步支援,請參考 Azure 或 Linux 發行版官方文件