yum list 命令输出三段,最后一段有anaconda、base、updates、extras,有些增加了epel。如果前面有@表示已经安装。
《跟阿铭》书上说@updates是本机已安装但需要升级的包,但是我使用yum update packagename 提示不能升级。这是怎么回事?我重新分析了yum list命令,在虚拟机上最小安装centos7,然后:
yum list|less
命令输出第三段有@anaconda、updates、base、extras,没有@updates。如果@updates是已安装但可以升级的包来理解,那么updates就是没有安装可以升级的包?感觉这样想不对,没有安装的包因该默认安装仓库里追新的包。
在yum list命令开始有一段:
已加载插件:fastestmirrorLoading mirror speeds from cached hostfile
* base: mirrors.huaweicloud.com
* epel: mirrors.huaweicloud.com
* extras: centos.ustc.edu.cn
* updates: mirrors.huaweicloud.com
前两行意思是从缓存文件里加载镜像,那下面的网址就是镜像站。但还是搞不清为什么分了四个网址。继续找“cached hostfile”,我觉得因该是yum的相关配置文件,简单google确定路径/etc/yum.repos.d/CentOS-Base.repo 。用cat命令查看,配合网上blog,原来上面的base、epel、extras、updates是四个软件仓库。所以@updates只是代表这个软件来自updates仓库,并且已经安装在本机,没有需要升级的意思。
下面是引用一个blog的内容:
在.repo文件中,配置语法是分段的,每一段配置一个软件仓库,配置语法如下:[repositoryid]
name=Some name for this repository
baseurl=url://server1/path/to/repository/
url://server2/path/to/repository/
url://server3/path/to/repository/
mirrorlist=url://path/to/mirrorlist/repository/
enabled=0/1
gpgcheck=0/1
gpgkey=A URL pointing to the ASCII-armoured GPG key file for the repository
其中:
repositoryid:用于指定一个仓库,例如 [base]
name:用于指定易读的仓库名称
baseurl:用于指定本仓库的URL,可以是以下三种类型:
http — 用于指定远程 HTTP 协议的源
ftp — 用于指定远程 FTP 协议的源
file — 用于本地镜像或 NFS 挂装文件系统
mirrorlist:用于指定仓库的镜像站点
enabled:用于指定是否使用本仓库,默认值为1,即可用
gpgcheck:用于指定是否检查软件包的 GPG 签名
gpgkey:用于指定GPG签名文件的URL
若指定mirrorlist,系统将从CentOS的镜像站点中选择离您最近的仓库。并非所有的国内镜像都在CentOS的镜像站点列表中,所以我们可以直接使用baseurl直接指定离您最近的仓库。baseurl 可以指定多个URL,系统会依次检查您列出的仓库,以便在某个服务器宕机时可以使用另外的服务器。为了加快更新,在确保更新服务器及线路良好的情况下,在baseurl中只指定一个URL即可。
编辑回复