yum使用tips
找到系统尚未安装的工具命令属于哪个rpm包
经常会在需要使用某个工具软件的时候,不知道应该安装哪个rpm软件包。虽然 rpm.pbone.net 提供了在线搜素软件包的功能,不过,对于使用YUM管理的服务器,实际上可以通过yum provides
命令来找到对应软件包,或者使用yum whatprovides
命令。
以下举例寻找哪个软件包提供了命令lssubsys
输出显示
可以看到gdb
软件包提供了该pstack
工具命令。
yum使用代理服务器
有时候需要使用polipo这样的代理服务器访问internet资源,如果偶尔使用yum安装软件包,可以设置当前用户环境变量http_proxy
来实现安装:
如果要一直使用代理服务器方式,则修改/etc/yum.conf
配置文件,添加:
查看软件包属于哪个仓库
yum list 软件包
可以显示软件包的详细版本,并且可以显示软件包属于哪个软件库
在部署oVirt v3.6 的时候,在engine关机控制台添加host后,软件包安装到node节点的时候出现报错:
我检查了是可以安装glusterfs
和glusterfs-cli
软件包的,但是yum search vdsm
却只有vdsm-jsonrpc-java.noarch
,不像以前安装的ovrit节点有大量的vdsm
软件包。Ovirt 3.5 problem adding GlusterFS servers 提示需要检查服务器即诶单是否有vdsm-gluster
软件包。
检查 /usr/share/ovirt-host-deploy/plugins/ovirt-host-deploy/gluster/packages.py
果然有:
那么究竟是谁提供了这个软件包?在节点上使用命令yum list vdsm-gluster
发现是最早安装的ovirt-3.5
提供了这个软件包(后来又升级到ovirt-3.6反而没有这个软件包)
检查 http://resources.ovirt.org/pub/ovirt-3.5/rpm/el6Server/noarch/ 果然有这个软件包,而且版本要高于EPEL提供的版本。所以删除掉EPEL仓库,添加 @ovirt-3.5
仓库,即再增加 /etc/yum.repos.d/ovirt-3.5.repo
(和ovirt-3.6.repo
并存,内容是从ovirt-3.6.repo
复制并修改版本号成3.5
)。这样就可以使用ovirt 3.5
仓库中的软件包,同时由于ovirt 3.6
中相关软件版本较新,也不会错误覆盖
总之,使用
yum list 软件包
名字可以找寻出对应的软件仓库,也就可以进一步排查问题的原因
避免升级部分软件包
如果由于一些原因需要保持系统中某些软件包不升级,如兼容性,特定测试,则可以通过在/etc/yum.conf
中添加 exclude=
配置行来跳过:
举例,如果要过滤掉所有32位软件包:
命令行也可以传递给yum需要屏蔽的软件包,例如:
就不会升级 glibc。并且 --exclude=
参数也可以使用 -x
来代替,上述命令就是
要传递多个不包含的包
如果要比较好地管理不包含的软件包,则可以用分开的配置版本,例如 /etc/yum.repos.d/mongodb.repo
包含mangodb的管理配置
如果要临时关闭exclude,可以使用命令
或者
yum versionlock插件
可以通过
yum-versionlock
实现版本锁定:
然后检查
/etc/yum/pluginconf.d/versionlock.conf
有内容
在
/etc/yum/pluginconf.d/versionlock.list
添加要锁定的版本:
关闭repo仓库升级
检查当前仓库
关闭某个仓库升级
当然也可以直接编辑仓库配置文件,将配置文件修改成 enabled=0
也就关闭了该仓库使用。
yum update
和yum upgrade
的差别
yum update
和yum upgrade
的差别yum update
和yum upgrade
的功能是一样的,都是将需要更新的package更新至软件源中的最新版。唯一不同是:yum upgrade
会删除旧版本的package,而yum update
则会保留。
注意!如果你的某些软件依赖旧版本的package,请使用yum update
。
在yum equivalent to apt-get upgrade vs apt-get dist-upgrade?有详细说明:
yum update
只是升级软件包到新版本。例如,foo-awesome
淘汰替换了foo
,但是yum update
不会将foo
更改升级成foo-awesome
。必须加上--obsoletes
这个开关这样yum update
才会进行扩展检查来提供更新路径。
而yum upgrade
则相当于yum --obsoletes update
,也就是可以直接将旧软件包体换成新的软件包,这样foo
就会被升级体换成foo-awesome
。通常,由于某些软件依赖旧版本软件包来运行,则应该使用yum update
,如果没有这种旧版兼容要求,则可以使用yum upgrade
,以便能够使用最新的软件体系。
在线维护的服务器,通常求稳定,可能使用
yum update
较安全一些。此外,需要做好完整的兼容稳定性测试。
如果希望yum update
时避免更新内核,可以使用yum --exclude=kernel* update
。见前述避免升级部分软件包,通过配置文件yum.conf
也可以达到相同效果。
参考
Last updated