我是一个 *.deb 用户,在管理 rpm 时我感觉很不舒服。
我习惯apt-get upgrade
在基于 Debian 的服务器上运行“正常”升级,apt-get dist-upgrade
以及允许内核升级或允许新的主要软件包版本升级。
在我管理的 CentOS 服务器中,我希望有类似的功能,但是 yum 似乎不提供这种行为。而且yum update
和之间的差异yum upgrade
似乎不是我想要的。
到目前为止,我最好的方法是添加和删除以下设置/etc/yum.conf
:
exclude=kernel*
一定有更好的方法。欢迎提出任何建议。
編輯:
yum 手册页对它们和--obsoletes
标志的描述对我来说有点晦涩难懂。所以让我重新表述一下我的理解:我是否必须理解yum update
不会安装新内核,因为这意味着将当前内核标记为过时?我可以假设它的yum upgrade
作用与相同或几乎相同吗apt-get dist-upgrade
?
已编辑 2
我最喜欢的apt-get upgrade
是它告诉我哪些包仍然保留,以便我可以采取相应的行动;要么使用apt-get dist-upgrade
,要么使用明确的apt-get install package
。
经过一番思考,我最好的方法此时此刻将是:禁用已过时yum.conf 中的设置(如 Steven Pritchard 在他的回答) 并首先运行yum update
。安装完所有更新后,再运行第二个,yum update --obsoletes
以检查哪些包已保留并根据其结果采取行动。
这样可以吗?
答案1
yum update
最初只是将软件包升级到新版本。例如,如果foo-awesome
已过时foo
,yum update
则不会提供从升级到的选项foo
。foo-awesome
将--obsoletes
标志添加到yum update
使其进行额外检查以提供该升级路径。 yum upgrade
被添加为(本质上)的别名yum --obsoletes update
。由于这是几乎每个人都一直想要的行为,因此将配置选项obsoletes=1
添加到默认的/etc/yum.conf
,使得yum update
和yum upgrade
在任何最近的、库存的 Fedora/RHEL/CentOS/etc 上都是等效的。
如果您想在运行时避免内核更新yum update
,您可以直接执行yum --exclude=kernel* update
。如果您想要自动更新,但又想避免自动内核升级,那么将排除项添加到 yum.conf 可能是正确的答案。
您的问题可能没有正确答案。RHEL 和基于 RHEL 的发行版在更新方面与 Debian 开发人员的理念不同,因此这些工具不鼓励相同类型的行为。
答案2
尝试
# yum upgrade yum kernel
# yum -y upgrade