如何在 Centos 中恢复并撤消更改?

如何在 Centos 中恢复并撤消更改?

有时,我需要对 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 phpyum 就会这样做,并将大部分/所有的依赖项保留在系统上,因为您没有要求它同时删除它们。

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 和快照。

相关内容