Como reverter e desfazer as alterações no Centos?

4

Às vezes, eu preciso fazer algumas alterações no Centos, como instalar e testar alguns utilitários ou tentar um tutorial complexo para instalar um programa avançado para o qual o resultado é desconhecido.

Como posso reverter o estado antes de fazer alterações?

Um caso prático: Eu quero instalar o PHP7 além do PHP5.6, existem muitos tutoriais, eu quero testar cada um deles e se eu falhar, eu quero pelo menos reverter para o estado anterior.

    
por AFA Med 08.06.2018 / 12:19

3 respostas

10

Para uso em produção, a melhor abordagem é ter um ambiente de teste em que você possa testar as alterações antes de aplicá-las na produção. Ter isso como uma VM, claro, ajuda com instantâneos e reversões.

Outra abordagem é o uso de sistemas de arquivos modernos, como o ZFS, que também permitem fazer snapshots ou até mesmo LVMs.

    
por 08.06.2018 / 12:45
5

Isso é feito da melhor forma em uma máquina virtual, como VMware ou VirtualBox, em vez de em hardware físico. Tire um instantâneo da sua máquina virtual antes de fazer qualquer alteração, então é uma questão trivial de reverter para o seu instantâneo, caso você precise reverter para o estado anterior.

    
por 08.06.2018 / 12:27
2

Digamos que você instale algum pacote:

yum install php

E diga que o pacote php instala várias dependências.

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

Se você simplesmente tentar remover o pacote php , via yum remove php , o yum fará exatamente isso e deixará a maioria / todas as dependências do sistema, já que você não pediu para removê-los como bem.

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)

Em vez disso, você pode usar o yum para desfazer uma transação completamente, invocando o comando 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

E agora desfaça a ID 41 do histórico, neste caso:

yum history undo 41

Note que, em alguns casos, o yum não poderá remover certos pacotes, se as atualizações mais recentes dependerem deles, ou se forem pacotes principais do sistema, etc ... mas geralmente isso "desfaz" essa transação.

Observe também, nos sistemas Fedora (e logo no CentOS), dnf package manager tem os mesmos comandos, então dnf history ainda funcionará.

Por último, note que isso não irá desfazer quaisquer alterações no arquivo de configuração que você tenha feito em / etc (ele removerá os arquivos de configuração recém-instalados se um pacote os colocar lá, no entanto). Qualquer coisa que você fizer no sistema persistirá, qualquer coisa que o gerenciador de pacotes fez, será revertida. Se você precisa de um recurso de reversão de sistema completo, é melhor usar uma VM e snapshots como outros já mencionaram.

    
por 08.06.2018 / 19:49