我有 49 个 rpm 软件包需要从本地目录安装。其中之一是kernel-4.9.135
因此,我想使用yum
so all 依赖项都为我管理(而不是传递rpm
rpm 文件列表)。
我还有一个非常定制的grub.cfg
文件,我不想在此过程中触及它。
我检查了安装内核包时运行的脚本:
# rpm -qp --scripts ./kernel-4.9.135-1.x86_64.rpm
postinstall scriptlet (using /bin/sh):
if [ -x /sbin/installkernel -a -r /boot/vmlinuz-4.9.135 -a -r /boot/System.map-4.9.135 ]; then
cp /boot/vmlinuz-4.9.135 /boot/.vmlinuz-4.9.135-rpm
cp /boot/System.map-4.9.135 /boot/.System.map-4.9.135-rpm
rm -f /boot/vmlinuz-4.9.135 /boot/System.map-4.9.135
/sbin/installkernel 4.9.135 /boot/.vmlinuz-4.9.135-rpm /boot/.System.map-4.9.135-rpm
rm -f /boot/.vmlinuz-4.9.135-rpm /boot/.System.map-4.9.135-rpm
fi
...
installkernel
包含以下内容:
if [ -n "$cfgLoader" ] && [ -x /sbin/new-kernel-pkg ]; then
if [ -n "$(which dracut 2>/dev/null)" ]; then
new-kernel-pkg --mkinitrd --dracut --host-only --depmod --install --kernel-name $KERNEL_NAME $KERNEL_VERSION
else
new-kernel-pkg --mkinitrd --depmod --install --kernel-name $KERNEL_NAME $KERNEL_VERSION
fi
new-kernel-pkg --rpmposttrans --kernel-name $KERNEL_NAME $KERNEL_VERSION
fi
并new-kernel-pkg
用于grubby
更新我的grub.cfg
文件。
有没有什么方法可以告诉 rpmyum
以及内核 rpm,grub.cfg
在使用yum install
它一次性安装所有软件包时不要做任何改变?
解决方法是将我的电流复制grub.cfg
到一边,并在yum
完成后将其复制回来,但我想我还是会问这个问题。
答案1
你的技巧grub.conf
是有效的解决方案。您也可以应用以下方法之一:
- 下载内核 rpm 软件包
yumdownloader
并使用参数安装内核软件包,--noscripts
以忽略通过运行prerun
,postrun
... 在配置软件包期间配置软件包的脚本。没有办法直接--noscripts
告诉yum
。 - 如果您希望
grub.conf
在通过任何新内核安装后保持不变,yum
您应该将grub.conf
属于您的内核的当前菜单条目复制到/etc/grub.d/40_custom
并从中取消设置 exec 权限 (chmod a-x
)/etc/grub.d/30_probe_os
(此脚本扫描/boot
目录中的新内核和 initramfs 文件并生成菜单条目grub.conf
)。执行此步骤后,所有grub.conf
运行生成的尝试都grub2-mkconfig
将仅返回包含在自定义配置文件中的菜单条目/etc/grub.d/40_custom
。