问题在于没有定义外部仓库。解决思路是加一个。
一、背景
某台生产服务器操作系统是centos 7,我需要在上面装个ftp软件:vsftpd。出于稳妥起见,在该生产服务器上安装之前,我先在测试服务器上捣鼓了一轮,尚算顺利。结果到生产服务器上按部就班,就傻眼了:
yum -y install vsftpd
提示没有可用软件包。以为vsftpd比较偏,装wget,还是同样提示;又试了其他包,还是一样的提示。服务器是保证可以上网的,用curl www.baidu.com
可以返回网页内容。
这说明,可能是yum的设置有问题。
二、发现问题
ls /etc/yum.repos.d/
有
CentOS-CR.repo
CentOS-Debuginfo.repo
CentOS-fasttrack.repo
CentOS-Media.repo
CentOS-Sources.repo
CentOS-Vault.repo
CentOS-x86_64-kernel.repo
yum-local.repo
查看 yum-local.repo,内容如下:
[os-init]
name=os-init
baseurl=file:///opt/os-init-yum/
gpgcheck=0
enabled=1
[acm4000-middleware]
name=acm4000-middleware
baseurl=file:///opt/acm4000-middleware-yum/
gpgcheck=0
enabled=1
这2个都是本地软件源:
os-init:
baseurl 指向 file:///opt/os-init-yum/,表示软件包将从本地路径 /opt/os-init-yum/ 加载。
gpgcheck 设置为 0,表示不检查软件包的 GPG 签名。
enabled 设置为 1,表示该软件源启用。
acm4000-middleware:
baseurl 指向 file:///opt/acm4000-middleware-yum/,表示软件包将从本地路径 /opt/acm4000-middleware-yum/ 加载。
gpgcheck 设置为 0,表示不检查软件包的 GPG 签名。
enabled 设置为 1,表示该软件源启用。
都是本地的,yum就不会主动到互联网上查找包,因此总是报没有可用包的错。
三、解决问题
手动添加一个软件源到 /etc/yum.repos.d/ 目录下,比如叫 vsftpd.repo。内容如下
[vsftpd]
name=VSFTPD Repository
baseurl=http://mirror.centos.org/centos/7/os/x86_64/
gpgcheck=0
enabled=1
然后清理 yum 缓存并重新生成,以确保 yum 能够使用新的软件源配置:
sudo yum clean all
sudo yum makecache
搞定。
四、小结
本来一般情况下,默认配置的centos不会出现这种问题。主要是我同事当时安装操作系统时,不知为啥手动指定了yum源,一顿操作猛如虎,结果就这个屌样子了。人生意外是常态。