在 Arch Linux 上,每当应用内核升级(通过pacman -Su
)时,就会出现问题。例如,iptables
不能再使用:
# iptables -L
iptables v1.4.21: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
VMWare 找不到内核头文件:
现在,我想要应用内核升级,但我想推迟它们,直到我可以(或想要)重新启动系统(提醒任何人 Windows?)。否则,如果我的工作被 VMWare 或其他程序阻止iptables
,我别无选择,只能重新启动并重建会话。
我怎样才能做到这一点?理想情况下,我想继续使用pacman -Su
,但推迟某些升级。
我相信内核升级后需要重启才能挂载USB正常吗?是由同样的问题引起的。
答案1
如果您想避免pacman
对某些软件包进行上/下评分,请在以下位置添加一行/etc/pacman.conf
:
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
我想你想要这样的一行pacman.conf
:
IgnorePkg = linux linux-headers linux-api-headers
正如您所指出的,这只会阻止pacman
任何升级。你可能可以写一些像这样的代码:
if pacman -Qu | egrep -q -s 'linux|linux-headers|linux-api-headers'
then
pacman -S --noconfirm linux
pacman -S --noconfirm linux-headers
pacman -S --noconfirm linux-api-headers
fi
看起来你必须写一个“系统单元文件“ - 这部分有点超出了我有信心告诉你该怎么做的范围。我的想法是Before=shutdown.target
单元文件中的行使它在关闭时运行。我编写的唯一单元文件花了我几次尝试才正确,所以我真的认为你不需要我的建议。
答案2
要跳过升级内核,您可以运行:
pacman -Syu --ignore linux,linux-headers,linux-api-headers
这将允许你升级一切除了内核
答案3
我认为linux-api-headers
不应该因为动机而忽视这个包裹
不要升级我的内核或忽略我的内核升级,也不要升级任何会破坏系统的软件包(如果单独升级而内核未升级)
看到这个回答在 Arch 维基论坛上。
我做了什么
IgnorePkg = linux linux-headers virtualbox-host-modules-arch
virtualbox-host-modules-arch
仅当您安装了 VirtualBox 时才忽略pkg。 pkg也一样linux-headers
。因为我已经安装了它们,所以我这样做了。