在升级包之前,我如何知道哪些文件将被修改?

在升级包之前,我如何知道哪些文件将被修改?

我必须更新一些机器,但我使用的是修补版本的linux,并且不希望软件包修改特定文件。为了更清楚起见,这里列出了我不希望包执行的操作:

Modify the boot sequence (modify grub)
Change the init files (init.d)
The kernel image

因此,我列出了几个软件包并将其搁置,内容如下:

for package in 'package_list grub2-common...'
do
 echo $package hold|dpkg --set-selections
done

我还可以将它们以 -1 优先级添加到 /etc/apt/prefences 中,但我认为没有必要。

我想让这个过程自动化,给定一个文件列表,找到所有使用它们的更新包并将它们搁置。如果我可以在不安装每个包的情况下找到它所执行的操作,那将是一个很好的开始。

编辑:使用chattr -i <filelist>.允许我阻止对某些文件的访问,但我宁愿有一个更干净的面向包的方法来解决我的问题。

感谢您的帮助。

答案1

这可能不是最好的答案,但如果您“不希望包修改特定文件”,您可以使这些文件不可变的使用chattr -i <filelist>。所以,如果我是你,我会考虑:

find /etc/init.d /boot -type f -exec chattr +i "{}" +

完成后,更改+i-i(或保持这种状态直到需要修改文件为止)。此操作设置/重置“不可变”位,这是 Linux 特有的特殊扩展属性。只要该位被设置,文件就不能被修改或删除。

相关内容