有没有办法对yum更新时会更改的包进行备份?例如,当我更新lighttpd是否有办法备份和恢复lighttpd如果yum update不成功或者会导致意外的错误或错误?
答案 0 :(得分:3)
如果您在4.6.0之前使用RPM(it's removed in newer versions),则可以使用in this old tutorial等rpm --rollback
机制或a more complete article中的rpm -Uvh --oldpackage foo-1-1.i386.rpm
机制,并提供一些功能说明。 --rollback功能是一个自动解决方案,因为它不可靠而被删除。
您可以拥有手动解决方案,在yum更新之前保留所有软件包的列表,并重新安装所需的旧rpms,可能使用像{{1}这样的--oldpackage }:
获取所有已安装软件包的列表,按安装时间排序:
rpm -q -a --queryformat '%{INSTALLTIME} %{NAME}-%{VERSION}-%{RELEASE}\n' | sort -n
(Source)
如果您正在使用Fedora,以下是使用安装程序升级系统的官方指南,其中包含如何创建a list of system current installed packages以及如何restore most of old software after an upgrade的示例。
如果您想要通用方法来获取已安装软件的列表(不仅仅是基于rpm),您也可以关注this article。
答案 1 :(得分:1)
如果您使用的是回购。保持所有旧版本,你可以做“yum降级lighttpd”(和更新的yum的“yum历史撤消”)。如果你不是,那么你可以保留旧rpm的本地副本并使用“yum downgrade lighttpd * .rpm”(虽然这很棘手)。 有些问题可能无法解决,但这些问题应该非常罕见,降级不太可能改变其他任何副作用。
最近创建了一个插件“yum-plugin-fs-snapshot”,它会在进行升级之前自动获取FS快照(btrfs或LVM)...因此。然后,您可以回滚到快照。这是一个大更改,所以我不推荐它。
答案 2 :(得分:0)
我使用etckeeper来跟踪/etc
下的文件更改。 etckeeper将/etc
置于版本控制之下(它支持多个版本控制系统,包括Git,Mercurial和Bazaar),并与许多Linux发行版(APT,YUM,Pacman)的软件包管理系统集成。
如果在升级期间发生了不好的事情,我可以回滚任何内容。