[Linux] 修改 CentOS 上 yum 使用的變數值
今天遇到一個問題,我們有一個基於 CentOS 7 的專案,
在使用的時候,yum 一直無法正常執行,例如:
root@localhost ~ # yum search vim One of the configured repositories failed (Unknown), and yum doesn't have enough cached data to continue. At this point the only safe thing yum can do is fail. There are a few ways to work "fix" this: 1. Contact the upstream for the repository and get them to fix the problem. 2. Reconfigure the baseurl/etc. for the repository, to point to a working upstream. This is most often useful if you are using a newer distribution release than is supported by the repository (and the packages for the previous distribution release still work). 3. Disable the repository, so yum won't use it by default. Yum will then just ignore the repository until you permanently enable it again or use --enablerepo for temporary usage: yum-config-manager --disable <repoid> 4. Configure the failing repository to be skipped, if it is unavailable. Note that yum will try to contact the repo. when it runs most commands, so will have to try and fail each time (and thus. yum will be be much slower). If it is a very temporary problem though, this is often a nice compromise: yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true Cannot find a valid baseurl for repo: base/7-1.1503.el7.centos.2.8/x86_64
說是找不到一個正確的 baseurl
給 base/7-1.1503.el7.centos.2.8/x86_64 這個 repository…
下了 yum repolist 看一下,repo id 也是同樣的值:
root@localhost ~ # yum repolist
repo id repo name status
base/7-1.1503.el7.centos.2.8/x86_64 CentOS-7-1.1503.el7.centos.2.8 - Base 0
extras/7-1.1503.el7.centos.2.8/x86_64 CentOS-7-1.1503.el7.centos.2.8 - Extras 0
updates/7-1.1503.el7.centos.2.8/x86_64 CentOS-7-1.1503.el7.centos.2.8 - Updates 0
repolist: 0
先來看看 /etc/yum.repos.d/CentOS-Base.repo 裡的設定…
[base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
可以看到上面的 URL 裡面,有用到 $releasever 這個變數~
跟一般正常的 CentOS 7 比較起來,$releasever 會是像 7 這樣,
而不會是 7-1.1503.el7.centos.2.8 這麼長一串…
推測如果 $releasever 可以改成 7 的話,有可能 yum 就能找到 repository 了~
但我們只是使用這個專案,並不是建置者,
所以也沒辦法去改變 releasever 的預設值…
要怎麼讓它的 yum 能正常的運作呢?
查了一下,Redhat: Using Yum Variables 這裡提到了 yum 的變數是可以自訂的,
作法就是在 /etc/yum/vars 目錄下,建立一個以變數名稱為檔案名稱的檔案,
然後把變數肉容存在這個檔案裡面~
像我想把 $releasever 設定成 7 的話,就用下面的指令:
echo 7 > /etc/yum/vars/releasever
此時再去執行 yum repolist,可以看到 repo id 變成比較正常的格式了:
root@localhost ~ # yum repolist
repo id repo name status
base/7/x86_64 CentOS-7 - Base 8652
extras/7/x86_64 CentOS-7 - Extras 180
updates/7/x86_64 CentOS-7 - Updates 1275
repolist: 10107
yum 本身也恢復正常,可以搜尋與下載套件囉~
root@localhost ~ # yum search vim golang-vim.noarch : Vim plugins for Go vim-X11.x86_64 : The VIM version of the vi editor for the X Window System vim-common.x86_64 : The common files needed by any version of the VIM editor vim-enhanced.x86_64 : A version of the VIM editor which includes recent enhancements vim-filesystem.x86_64 : VIM filesystem layout vim-minimal.x86_64 : A minimal version of the VIM editor
(本頁面已被瀏覽過 3,122 次)
One thought on “[Linux] 修改 CentOS 上 yum 使用的變數值”
我是設定IP時忘了設定DNS
也出現Cannot find a valid baseurl for repo: base/7/x86_64的錯誤訊息…
已解決
版主回覆:(09/02/2016 08:50:06 AM)
謝謝您的分享~~^^