Назад | Перейти на главную страницу

Как вернуться назад и отменить изменения в Centos?

Иногда мне нужно внести некоторые изменения в Centos, например, установить и протестировать некоторые утилиты или попробовать сложное руководство по установке расширенной программы, для которой результат неизвестен.

Как мне вернуться к состоянию до внесения изменений.

Практический случай: я хочу установить PHP7 помимо PHP5.6, есть много руководств, я хочу протестировать каждое из них, и если я не справлюсь, я хочу, по крайней мере, вернуться к предыдущему состоянию.

Для производственного использования лучше всего иметь среду тестирования, в которой вы можете протестировать любые изменения перед их применением в производственной среде. Наличие этой виртуальной машины, конечно, помогает делать снимки и откатываться.

Другой подход - использование современных файловых систем, таких как ZFS, которые также позволяют делать снимки или даже LVM.

Лучше всего это делать на виртуальной машине, такой как VMware или VirtualBox, а не на физическом оборудовании. Сделайте снимок вашей виртуальной машины перед тем, как вносить какие-либо изменения, тогда это тривиальный вопрос - вернуться к вашему снимку, если вам нужно вернуться к предыдущему состоянию.

Скажем, вы устанавливаете какой-то пакет:

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 (однако он удалит недавно установленные файлы конфигурации, если пакет поместил их туда). Все, что вы делаете с системой, будет сохраняться, все, что сделал менеджер пакетов, будет отменено. Если вам нужна возможность восстановления всей системы, лучше всего использовать виртуальную машину и моментальные снимки, как уже упоминалось другими.