简短的问题是:我们是否应该始终yum update --exclude=kernel-*
在 Fedora 中进行更新?
让我有点惊讶的是,当我工作中拿到一台新的 Fedora 机器(以前是 Red Hat Enterprise Linux (RHEL))时,它第一次启动时就要求我做更新,我很自然地答应了,对于它询问的任何问题,我只是使用默认答案(通常按 ENTER 键回复“是”)。
但结果发现内核不知何故被损坏,有3.6.9和3.6.10组件,机器无法启动(会导致内核恐慌),不得不使用启动菜单中的第二个选项启动。 (IT 部门告诉我这是“最后一个无问题版本”,就像检查点版本)。但即便如此,机器还是非常慢,我的同事后来告诉我,我的内核部分运行在早期版本上,部分运行在 3.6.9 或 3.6.10 组件上,它们可能不完全兼容,这可能就是原因太慢了。
我的同事了解 Fedora 有一段时间了,他能够通过一系列的yum remove
和修复它yum downgrade
,并将内核、标头和组件全部恢复到早期版本(我认为它是 3.3.4,但我会返回工作并检查)。
那么对于 Fedora 来说,我们是否总是必须中止默认的更新请求,并执行一个
yum update --exclude=kernel-*
为了安全起见,我们不会得到尚未稳定或仍处于测试阶段的内核?这对我来说有点违反直觉,因为我知道其他更新系统通常只会使用稳定版本,除非用户专门输入可能是测试版本的特定版本。
实际上有没有办法只更新稳定的组件,或者我们需要yum update --exclude=kernel-*
一直使用才能安全?
(这让我有点惊讶,因为任何使用 Fedora 的工作人员都可能受到此影响,而且可能有数百人甚至数千人,那么进行系统更新的更正确方法是什么?)
答案1
这里似乎有一个误会。首先系统是 RHEL,内核为 3.6.9??? Redhat 正式发布使用内核 2.6.x。RHEL 版本和内核编号
现在对于 Fedora,如果您在存储库中设置了不稳定的软件包,则只能安装它们。
默认情况下,Fedora 不允许安装 stable,除非:
- 您正在安装测试版,在这种情况下,它会激活不稳定的存储库
- 存储库文件已更改,不稳定的存储库已被激活。您可以在/etc/yum.repos.d下检查
- 您正在使用非官方存储库,例如您公司的内部存储库,它还包含不稳定的软件包。
目前最新的 Fedora 是 17,内核为 3.6.10。 3.3.4 内核,这是 Fedora 17 的第一个内核。
执行 yum remove 和 yum downgrade 可能不是最好的选择(在我看来),因为您可以执行 yum History undo transaction_id 来撤消事务。但 *nix 的奇妙之处在于,有不止 2 种方法可以做同样的事情。
检查此站点以获取有关撤消 yum 事务的说明百胜餐饮集团
答案2
机器非常慢,我的同事后来告诉我,我的内核部分运行在早期版本上,部分运行在 3.6.9 或 3.6.10 组件上,它们可能不完全兼容,这可能就是它如此慢的原因。
这实际上是不可能的(或者至少不是因为正常的发行版更新);内核模块经过签名,默认情况下内核只会加载为其编译的模块。在 Fedora 上,如果您查看 中的内核/boot
,那么在 中总会有一组相应的模块/lib/modules
。
我通常不使用发行版内核,包括在 Fedora 上,但我保留它们并允许它们与其他所有内容一起更新;通常 grub 菜单也会更新,但我从未见过更新删除了那里的条目,所以从来没有出现过问题。
这让我有点惊讶,因为任何使用 Fedora 的工作人员都可能受到此影响,而且可能有数百人甚至数千人
我只是想重复一下这一点使用库存 Fedora 时不可能意外运行版本号冲突的组件——你的同事要么错了、撒谎了,要么你的系统已经以一种奇怪的方式定制了。
简而言之:不--exclude=kernel
,除非有特殊原因,否则您不必使用。