![如何在 Centos 中恢复并撤消更改?](https://linux22.com/image/722992/%E5%A6%82%E4%BD%95%E5%9C%A8%20Centos%20%E4%B8%AD%E6%81%A2%E5%A4%8D%E5%B9%B6%E6%92%A4%E6%B6%88%E6%9B%B4%E6%94%B9%EF%BC%9F.png)
有时,我需要对 Centos 进行一些更改,例如安装和测试一些实用程序,或者尝试按照复杂的教程来安装结果未知的高级程序。
我怎样才能恢复到进行更改之前的状态。
一个实际情况:除了 PHP5.6,我还想安装 PHP7,有很多教程,我想测试每一个,如果失败了,我至少想恢复到以前的状态。
答案1
对于生产用途,最好的方法是拥有一个测试环境,您可以在其中测试任何更改,然后再将其应用到生产中。将其作为虚拟机当然有助于快照和回滚。
另一种方法是使用像 ZFS 这样的现代文件系统,它也允许进行快照甚至 LVM。
答案2
最好在虚拟机(例如 VMware 或 VirtualBox)中执行此操作,而不是在物理硬件上执行此操作。在进行任何更改之前,请先对虚拟机进行快照,然后如果需要恢复到以前的状态,只需轻松恢复到快照即可。
答案3
假设你安装了一些包:
yum install php
并说该包php
安装了一堆依赖项。
Dependencies Resolved
===============================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================
Installing:
php x86_64 5.3.3-49.el6 base 1.1 M
Installing for dependencies:
php-bcmath x86_64 5.3.3-49.el6 base 40 k
php-cli x86_64 5.3.3-49.el6 base 2.2 M
php-common x86_64 5.3.3-49.el6 base 530 k
php-dba x86_64 5.3.3-49.el6 base 46 k
php-devel x86_64 5.3.3-49.el6 base 513 k
php-embedded x86_64 5.3.3-49.el6 base 1.1 M
php-enchant x86_64 5.3.3-49.el6 base 34 k
php-gd x86_64 5.3.3-49.el6 base 111 k
php-imap x86_64 5.3.3-49.el6 base 55 k
php-intl x86_64 5.3.3-49.el6 base 76 k
php-ldap x86_64 5.3.3-49.el6 base 43 k
php-mbstring x86_64 5.3.3-49.el6 base 460 k
php-mysql x86_64 5.3.3-49.el6 base 86 k
php-odbc x86_64 5.3.3-49.el6 base 56 k
php-pdo x86_64 5.3.3-49.el6 base 80 k
php-pgsql x86_64 5.3.3-49.el6 base 75 k
php-process x86_64 5.3.3-49.el6 base 44 k
php-pspell x86_64 5.3.3-49.el6 base 33 k
php-recode x86_64 5.3.3-49.el6 base 30 k
php-snmp x86_64 5.3.3-49.el6 base 36 k
php-soap x86_64 5.3.3-49.el6 base 145 k
php-tidy x86_64 5.3.3-49.el6 base 41 k
php-xml x86_64 5.3.3-49.el6 base 108 k
php-xmlrpc x86_64 5.3.3-49.el6 base 58 k
php-zts x86_64 5.3.3-49.el6 base 1.2 M
如果您只是尝试php
通过 删除软件包,yum remove php
yum 就会这样做,并将大部分/所有的依赖项保留在系统上,因为您没有要求它同时删除它们。
Dependencies Resolved
===============================================================================================================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================================================================================================
Removing:
php x86_64 5.3.3-49.el6 @base 3.5 M
Removing for dependencies:
php-devel x86_64 5.3.3-49.el6 @base 3.0 M
php-pecl-apc-devel x86_64 3.1.9-2.el6 @base 3.3 k
Transaction Summary
===============================================================================================================================================================================================================
Remove 3 Package(s)
相反,您可以通过调用命令使用 yum 来完全撤消事务yum history
。
]# yum history
Loaded plugins: fastestmirror, security
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
41 | <user> | 2018-06-08 10:45 | Install | 26
现在撤消历史记录 ID 41,在本例中:
yum history undo 41
请注意,在某些情况下,如果较新的更新依赖于某些软件包,或者它们是核心系统软件包等,yum 将无法删除它们...但通常,这将“撤消”该事务。
另请注意,在 Fedora(以及即将在 CentOS 上推出)系统上,dnf
包管理器具有相同的命令,因此dnf history
仍然可以工作。
最后需要注意的是,这不会撤消您在 /etc 中所做的任何配置文件更改(但是,如果软件包将新安装的配置文件放在那里,它将删除这些文件)。您对系统所做的任何操作都将保留,软件包管理器所做的任何操作都将被恢复。如果您需要全系统恢复功能,那么最好使用其他人提到的 VM 和快照。