解決 CentOS 7 報錯: "Repository base is listed more than once in the configuration"和"沒有可用軟件包 XXX"的問題
報錯描述
我的 CentOS 7 的更新源使用的是直接從 163 鏡像站上下載的更新源文件.
今天在使用 yum makecache 命令從更新服務器上把軟件包的信息下載到本地緩存起來時遇到了如下報錯:
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
報錯截圖如下:
圖 1
而且在我使用 yum install htop 命令安裝 htop 的時候, 還提示:
沒有可用軟件包 htop。
錯誤:無須任何處理
但是, 正常情況下 CentOS 7 的源里面應該是有 htop 這個軟件包的, 可以直接使用 yum install htop 成功安裝(我之前安裝過).
上述問題的相關截圖如下:
圖 2
解決方案
分析上面的報錯, 主要還是軟件源文件出了問題, 於是我們先進入軟件源配置文件所在的目錄下:
cd /etc/yum.repos.d/
ls 查看一下, 回顯如下:
[root@localhost yum.repos.d]# ls
CentOS7-Base-163.repo CentOS-CR.repo CentOS-Media.repo
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Sources.repo
CentOS-Base.repo.backup CentOS-fasttrack.repo CentOS-Vault.repo
[root@localhost yum.repos.d]#
從對報錯內容的分析來看, 應該是軟件源有重復(“listed more than once”), 所以這里我們嘗試刪除一些上面的軟件源配置文件.
在刪除之前, 先對 /etc/yum.repos.d/ 目錄下的文件做一個整體的備份, 以便於嘗試失敗后的還原, 操作過程如下:
將 /etc/yum.repos.d/ 目錄下的文件整體壓縮成一個 .zip 文件:
zip centos7-repo.zip /etc/yum.repos.d/*
然后執行刪除操作:
rm -rf CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo
之后把 CentOS7-Base-163.repo 中的內容復制進 CentOS-Base.repo:
cp -p CentOS7-Base-163.repo CentOS-Base.repo
最后刪除 CentOS7-Base-163.repo:
rm -rf CentOS7-Base-163.repo
之后運行如下命令重建緩存, 沒有再出現"Repository base is listed more than once in the configuration"的報錯:
yum clean all
yum makecache
1
2
但是, 在我嘗試使用 yum 命令安裝軟件時, 仍然遇到了"沒有可用軟件包 XXX"的報錯, 如下:
[root@localhost yum.repos.d]# yum install htop
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
沒有可用軟件包 htop。
錯誤:無須任何處理
“沒有可用軟件包"說明在 YUM 源中沒有對應的軟件包(163 的源本身應該是沒有問題的, 這是一個大家都常使用的 Linux 方面的國內軟件源).
其實, 在 CentOS 和 RHEL 等操作系統中, 常使用的軟件源不僅有 YUM, 還有 EPEL. EPEL 英文全稱為:“Extra Packages for Enterprise Linux”. 直譯為中文就是"用於企業 Linux 的額外軟件包”. EPEL 是 Fedora 的一個項目, 有關該項目的官方說明可以在下面的鏈接中找到:
EPEL - Fedora Project Wiki
這里我摘錄一段 Fedora 對 EPEL 項目的說明:
企業版 Linux 附加軟件包(以下簡稱 EPEL)是一個 Fedora 特別興趣小組,用以創建、維護以及管理針對企業版 Linux 的一個高質量附加軟件包集,面向的對象包括但不限於 紅帽企業版 Linux (RHEL)、 CentOS、Scientific Linux (SL)、Oracle Linux (OL) 。
EPEL 的軟件包通常不會與企業版 Linux 官方源中的軟件包發生沖突,或者互相替換文件。EPEL 項目與 Fedora 基本一致,包含完整的構建系統、升級管理器、鏡像管理器等等。
– 來自: https://fedoraproject.org/wiki/EPEL/zh-cn
在 CentOS 7 中安裝 EPEL 源的命令如下:
yum install -y epel-release
安裝完成后, 在 /etc/yum.repos.d 目錄下會多出來下面兩個文件, 這兩個文件就是 EPEL 源的配置文件:
epel.repo
epel-testing.repo
查看 epel.repo 文件中的內容可以發現其中軟件源的地址指向的是 https://mirrors.fedoraproject.org/, epel-testing.repo 這個文件中的軟件源的地址也是指向的是 https://mirrors.fedoraproject.org/. 為了加快軟件安裝速度, 我們可以將其更改為國內的 EPEL 源, 操作步驟如下:
進入 /etc/yum.repos.d 目錄, 下載阿里雲 EPEL 源:
wget http://mirrors.aliyun.com/repo/epel-7.repo
備份 Fedora 官方提供的 EPEL 源配置文件:
cp -p epel.repo epel.repo.bak
cp -p epel-testing.repo epel-testing.repo.bak
刪除 epel-testing.repo:
rm -rf epel-testing.repo
將 epel-7.repo 中的內容覆蓋寫入到原來的 epel.repo 文件中:
cp -p epel-7.repo epel.repo
刪除 epel-7.repo 文件:
rm -rf epel-7.repo
重新生成緩存:
yum clean all
yum makecache
之后可以正常安裝軟件.
總結
遇到"Repository base is listed more than once in the configuration"的問題要考慮系統中是否存在重復的軟件源, 遇到"沒有可用軟件包 XXX"的問題首先要確認要安裝的軟件包名稱是否寫對了, 例如安裝 pip 的命令不是 yum install pip, 而是 yum install python-pip, 在此之后如果問題仍然存在就需要考慮當前系統中是否正確配置了 YUM 和 EPEL 兩個軟件源.
————————————————
版權聲明:本文為CSDN博主「荒原之夢」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wy_bk/article/details/89648052