Sabayon Linux e Gentoo - Como desfazer atualizações para resolver problemas

Publicado por Alberto Federman Neto. em 14/06/2013

[ Hits: 4.507 ]

Blog: https://ciencialivre.blog/

 


Sabayon Linux e Gentoo - Como desfazer atualizações para resolver problemas



Estou aqui novamente para reportar à comunidade, mais uma dica sobre o uso do Sabayon Linux.

Como é do conhecimento dos usuários de Sabayon e Gentoo, eles são GNU/Linux "rolling release" (há outros, como Arch Linux, Aptosid etc...), atualizam-se automaticamente, sem necessidade de trocar a versão.

Meu Sabayon principal está na versão 13 "Bleeding Edge" (pacotes do repositório Limbo, "unstable and testing"), originalmente ele era versão 5.2, nunca precisou ser reinstalado.

A filosofia, a ideia, por trás das "rolling release", é ter sempre os pacotes mais novos, mesmo que não sejam tão estáveis. Embora seja relativamente raro, isto pode causar "quebras" ou mal funcionamento de algum pacote.

Por isso alguns usuários não gostam de distribuições rolling release e não as utilizam. Mas nesta dica, parto do pressuposto que se você usa Sabayon, é porque gosta de "rolling release" e tem alguma prática com elas.

Como visto acima, de vez em quando, algo de seu Sabayon ou Gentoo, pode "quebrar", vamos ver como se anula a atualização, para solucionar isto.

A. Achando o pacote cuja atualização causou o problema

Primeira coisa, identificar o pacote que está dando problemas. Você clicou no ícone dele e ele não abriu!

Tente abri-lo através de uma linha de comando. No exemplo abaixo, vejam que o controlador de gerenciadores de janelas "Fusion-Icon" (do Compiz) não abre mais após atualizações:

fusion-icon
Traceback (most recent call last):
  File "/usr/bin/fusion-icon", line 57, in <module>
    from FusionIcon.interface import choose_interface
  File "/usr/lib64/python2.7/site-packages/FusionIcon/interface.py", line 22, in <module>
    from util import env
  File "/usr/lib64/python2.7/site-packages/FusionIcon/util.py", line 23, in <module>
    import os, compizconfig, ConfigParser, time
ImportError: libprotobuf.so.7: cannot open shared object file: No such file or directory
Leiam as mensagens de erros que aparecem. Em nosso exemplo, vejam que a biblioteca "libprotobuf" não é mais achada, por isso o "Fusion-Icon" não abre. O pacote atualizado que causa o problema é, portanto, o "protobuf".

B. Identificando as versões antiga e nova do pacote

Identificado o pacote, vamos ver como ele atualizou, as versões. Execute uma das séries de comandos abaixo, para procurar o pacote e suas versões:

Em Sabayon:

equo s PACOTE

Em Gentoo:

Observação: em Gentoo, se você usar o comando mais comum (emerge -s PACOTE) possivelmente só a última versão atualizada irá aparecer e você não saberá se há versões anteriores no Portage, por isso prefira os comandos "eix" ou "esearch":

# emerge eix esearch

Depois:

eix PACOTE
Ou:
esearch PACOTE

Voltando ao nosso exemplo, vimos (A) que o pacote "protobuf" é o que causou o problema. Vamos verificar as versões:

equo s protobuf
>>  @@ Buscando...
>>      @@ Pacote: dev-libs/protobuf-2.4.1 branch: 5, [sabayonlinux.org]
>>         Disponível:   versão: 2.4.1 ~ tag: NoTag ~ revisão: 0
>>         Instalado:    versão: 2.5.0 ~ tag: NoTag ~ revisão: 0
>>         Slot:         0
>>         Homepage:     http://code.google.com/p/protobuf/
>>         Descrição:    Google's Protocol Buffers -- an
>>                       efficient method of encoding structured
>>                       data
>>         Licença:      Apache-2.0
>>      @@ Pacote: dev-libs/protobuf-2.5.0 branch: 5, [sabayon-limbo]
>>         Disponível:   versão: 2.5.0 ~ tag: NoTag ~ revisão: 0
>>         Instalado:    versão: 2.5.0 ~ tag: NoTag ~ revisão: 0
>>         Slot:         0
>>         Homepage:     http://code.google.com/p/protobuf/
>>         Descrição:    Google's Protocol Buffers -- an
>>                       efficient method of encoding structured
>>                       data
>>         Licença:      Apache-2.0
>>  Palavras-Chave:  protobuf
>>  Encontrado:      2 entradas
Observe que há duas versões de "protobuf", a antiga e a atualizada, que não está mais funcionando bem!

C. Fazendo o downgrade do pacote

A solução mais simples? Fazer "downgrade" do pacote "protobuf", anulando, desfazendo a atualização! Para isso, especifique a versão antiga no comando de reinstalação. As dependências, se as houver, serão "puxadas" junto:

# equo i PACOTE-versão antiga

Voltando ao nosso exemplo prático, vamos "desatualizar" o protobuf:

# equo i protobuf-2.4.1
>>  @@ Calculando dependências...
>>  ## [D] [linuxmx->sabayonlinux.org] dev-libs/protobuf-2.4.1|0   [2.5.0|0]
>>  @@ Pacotes que precisam ser instalados/atualizados/rebaixados: 1
>>  @@ Pacotes que precisam ser removidos: 0
>>  @@ Tamanho de recebimento: 877.5kB
>>  @@ Espaço de disco liberado: 405.5kB
>>  @@ Você precisa de pelo menos: 1.3MB de espaço livre
>>  ::: >>>  (1/1) 1 pacote
>>    ## Recebendo: 1 arquivo
>>    ## ( mirror #1 ) [dev-libs:protobuf-2.4.1~0.tbz2] @ http://na.mirror.garr.it
>>   ## Recebimento agregado: 1 ítem
>>    # [1] na.mirror.garr.it => dev-libs+protobuf-2.5.0.2c5a7a8fd23f276c73905267a869e63eff62effc~0~a2ec40705e7a1bd0d3aaf68a2670400b96861344898847e476c574735b009669.edelta
>>   ## Recebimento agregado: 1 ítem
>>    # [1] na.mirror.garr.it => dev-libs:protobuf-2.4.1~0.tbz2
>>    ## ( mirror #1 ) [dev-libs:protobuf-2.4.1~0.tbz2] sucesso @ http://na.mirror.garr.it
>>    ##  Taxa de transferência agredada: 225.6kB/segundo
>>    ## Soma de checagem do pacote corresponde: dev-libs:protobuf-2.4.1~0.tbz2
>>       : GPG corresponde
>>       : SHA1 corresponde
>>       : SHA256 Desabilitado
>>       : SHA512 Desabilitado
>>  +++ >>>  (1/1) dev-libs/protobuf-2.4.1
>>    ## Desempacotando: dev-libs:protobuf-2.4.1~0.tbz2
>>    ## Fase do Pacote: setup
>>    ## Fase do Pacote: preinstall
>>    ## Instalando pacote: dev-libs/protobuf-2.4.1
>>    ## [Google's Protocol Buffers -- an efficient method of encoding structured da...]
>>    ## Atualizando base de dados: dev-libs/protobuf-2.4.1
>>    ## Limpando dados do aplicativos anteriormente instalados
>>> Regenerating /etc/ld.so.cache...
>>    ## Fase do Pacote: postremove
>>> Regenerating /etc/ld.so.cache...
>>    ## Fase do Pacote: postinstall
 * Compilation and optimization of Python modules for CPython 2.7 ...                                                      [ ok ]
>>    ## Limpando: dev-libs/protobuf-2.4.1
>>  @@ Instalação completa.
Vejam que o pacote instalado foi rebaixado de versão:

equo s protobuf
>>  @@ Buscando...
>>      @@ Pacote: dev-libs/protobuf-2.4.1 branch: 5, [sabayonlinux.org]
>>         Disponível:   versão: 2.4.1 ~ tag: NoTag ~ revisão: 0
>>         Instalado:    versão: 2.4.1 ~ tag: NoTag ~ revisão: 0
>>         Slot:         0
>>         Homepage:     http://code.google.com/p/protobuf/
>>         Descrição:    Google's Protocol Buffers -- an
>>                       efficient method of encoding structured
>>                       data
>>         Licença:      Apache-2.0
>>      @@ Pacote: dev-libs/protobuf-2.5.0 branch: 5, [linuxmx]
>>         Disponível:   versão: 2.5.0 ~ tag: NoTag ~ revisão: 0
>>         Instalado:    versão: 2.4.1 ~ tag: NoTag ~ revisão: 0
>>         Slot:         0
>>         Homepage:     http://code.google.com/p/protobuf/
>>         Descrição:    Google's Protocol Buffers -- an
>>                       efficient method of encoding structured
>>                       data
>>         Licença:      Apache-2.0
>>  Palavras-Chave:  protobuf
>>  Encontrado:      2 entradas
Resumindo... Na prática, você "desfez" uma atualização em uma distribuição "rolling release". Sim, é possível fazê-lo!

O pacote "Fusion-Icon", que não funcionava mais (veja na FIGURA 1), agora funciona. Preste atenção no comando de abrir o "Fusion-Icon", na tela, e o ícone dele aberto e rodando, embaixo, à direita, na barra de menus, onde está o cursor do mouse:
Linux: Sabayon Linux e Gentoo - Como desfazer Atualizações, para resolver problemas.
Atualização desfeita e problema resolvido!

D. Mascarando o pacote, para não atualizar mais

Bom, você diria, mas agora, quando eu atualizar a versão nova vai "voltar", vai ser reatualizado o pacote.

Sim, mas tem um jeito! Mascare todas as versões:

# equo mask PACOTE

No nosso exemplo, vejam também a atualização, antes da colocação da máscara e depois:

# equo u --pretend
>>  @@ Calculando Atualizações de Sistema:
>>  @@ 1 => Atualizar pacotes correspondentes
>>  @@ 8 => Pacotes correspondentes não estão disponíveis
>>  @@ 1723 => Pacotes correspondentes já estão atualizados
>>  @@ Esses são os pacotes selecionados:
>>    # (1/1) [linuxmx] dev-libs/protobuf-2.5.0
>>     Versões: 2.4.1 / NoTag / 0 ===> 2.5.0 / NoTag / 0
>>      Ação:            Promover
>>  @@ Pacotes envolvidos: 1
>>  @@ Calculando dependências...
>>  @@ Estes são os pacotes que seriam instalados:
>>  ## [U] [sabayonlinux.org->linuxmx] dev-libs/protobuf-2.5.0|0   [2.4.1|0]
>>  @@ Pacotes que precisam ser instalados/atualizados/rebaixados: 1
>>  @@ Pacotes que precisam ser removidos: 0
>>  @@ Pacotes que precisam ser instalados: 0
>>  @@ Pacotes que precisam ser reinstalados: 0
>>  @@ Pacotes que precisam ser atualizados: 1
>>  @@ Pacotes que precisam ser rebaixados: 0
sudo equo mask protobuf
>>  ## [M] protobuf
>>     -> dev-libs/protobuf-2.5.0
>>     -> dev-libs/protobuf-2.4.1
>> Have a nice day.
# equo u
>>  @@ Calculando Atualizações de Sistema:
>>  @@ 0 => Atualizar pacotes correspondentes
>>  @@ 8 => Pacotes correspondentes não estão disponíveis
>>  @@ 1723 => Pacotes correspondentes já estão atualizados
>>  @@ Nada para atualizar.
Assim mascarando, o pacote não mais será chamado nas atualizações.

E. Desatualizando e mascarando em Gentoo

Mas em Gentoo, como eu faria? Você poderia fazer assim:

# emerge -av =PACOTE-versão antiga

Com sinal de "=", igual, mesmo.

No nosso exemplo prático, como não estou escrevendo isto em Gentoo mas em Sabayon, por isso vou rodar o comando com opção "-p", "--pretend", só para simular a instalação:

eix protobuf
[U] dev-libs/protobuf
     Available versions:  2.4.0a (~)2.4.1 (~)2.5.0(0/8) {emacs examples java python source static-libs vim-syntax ELIBC="FreeBSD" PYTHON_TARGETS="python2_5 python2_6 python2_7"}
     Installed versions:  2.4.1(04:27:29 23-11-2011)(python -emacs -examples -java -source -static-libs -vim-syntax ELIBC="-FreeBSD")
     Homepage:            http://code.google.com/p/protobuf/
     Description:         Google's Protocol Buffers -- an efficient method of encoding structured data
emerge -p =protobuf-2.4.1
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] dev-libs/protobuf-2.4.1

 * IMPORTANT: 12 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.
Em modo root, e substituindo "-p" por "-av", você faria como desejado, o "downgrade" do pacote.

Depois disso, como em Sabayon, você deve mascará-lo.

O jeito mais fácil de fazer isso é adicionar o pacote ao arquivo /etc/portage/package.mask, usando um editor de texto em modo root, ou um comando "echo". Detalhes, vejam em:

F. Desfazer várias atualizações em Sabayon

Vamos supor que você não conseguiu achar o pacote que está dando problema, ou os problemas são muitos, são vários, em vários aplicativos.

O ideal é você tentar desfazer todas as atualizações. Primeiro, você deve fazê-lo rápido, antes que as versões antigas sejam removidas dos repositórios e espelhos. É lógico, NÃO RODE "equo update", para não atualizar novamente os repositórios.

Usando o RIGO ou o Sulfur. FIGURA 2:
Linux: Sabayon Linux e Gentoo - Como desfazer Atualizações, para resolver problemas.
Ou com comandos:

# equo repo list # Veja o nome do REPOSITÓRIO
# equo repo remove REPOSITÓRIO

Ou ainda, editando, comentando, ou renomeando os arquivos de repositórios.

Momentaneamente, INATIVE ou REMOVA, o repositório que trouxe os pacotes que causaram problemas. Geralmente, é o Limbo.

Agora, ao reatualizar os repositórios:

# equo up

O Entropy (instalador de pacotes do Sabayon), vai propor a você vários "downgrades", como se fossem atualizações. Um segundo comando:

# equo u

Retornará então o sistema aos pacotes antigos, desfazendo as atualizações.

Em nosso exemplo, teste (note que não posso rodar o comando, para não desatualizar meu sistema), mas apenas exemplificando, momentaneamente, removi o repositório (renomeando o arquivo dele em /etc/entropy/repositories.conf.d) e agora, o sistema faria os downgrades:

cd /
$ cd etc/entropy/repositories.conf.d
$ cd etc/entropy/repositories.conf.d
$ sudo mv entropy_sabayon-limbo _entropy_sabayon-limbo.inativo

$ sudo equo up
(...)
$ sudo equo u --pretend
>>  @@ Calculando Atualizações de Sistema:
>>  @@ 20 => Atualizar pacotes correspondentes
>>  @@ 9 => Pacotes correspondentes não estão disponíveis
>>  @@ 1701 => Pacotes correspondentes já estão atualizados
>>  @@ Esses são os pacotes selecionados:
>>    # (1/20) [sabayonlinux.org] app-accessibility/speech-dispatcher-0.7.1-r2
>>     Versões: 0.8-r2 / NoTag / 0 ===> 0.7.1-r2 / NoTag / 0
>>      Ação:            Rebaixar
>>    # (2/20) [sabayonlinux.org] app-office/libreoffice-4.0.2.2
>>     Versões: 4.0.3.3 / NoTag / 0 ===> 4.0.2.2 / NoTag / 0
>>      Ação:            Rebaixar
>>    # (3/20) [sabayonlinux.org] app-text/liblangtag-0.4.0
>>     Versões: 0.5.1 / NoTag / 0 ===> 0.4.0 / NoTag / 1
>>      Ação:            Rebaixar
>>    # (4/20) [sabayonlinux.org] app-text/libmspub-0.0.3
>>     Versões: 0.0.6 / NoTag / 0 ===> 0.0.3 / NoTag / 1
>>      Ação:            Rebaixar
>>    # (5/20) [sabayonlinux.org] dev-lang/v8-3.16.14.9-r1
>>     Versões: 3.19.3.1 / NoTag / 0 ===> 3.16.14.9-r1 / NoTag / 0
>>      Ação:            Rebaixar
>>    # (6/20) [sabayonlinux.org] dev-libs/jsoncpp-0.5.0
>>     Versões: 0.5.0-r1 / NoTag / 0 ===> 0.5.0 / NoTag / 1
>>      Ação:            Rebaixar
>>    # (7/20) [sabayonlinux.org] dev-libs/libebml-1.2.2
>>     Versões: 1.3.0 / NoTag / 0 ===> 1.2.2 / NoTag / 0
>>      Ação:            Rebaixar
>>    # (8/20) [sabayonlinux.org] dev-libs/re2-0_p20121127
>>     Versões: 0_p20130115-r1 / NoTag / 0 ===> 0_p20121127 / NoTag / 1
>>      Ação:            Rebaixar
>>    # (9/20) [sabayonlinux.org] media-libs/freeglut-2.8.0-r1
>>     Versões: 2.8.1 / NoTag / 0 ===> 2.8.0-r1 / NoTag / 0
>>      Ação:            Rebaixar
>>    # (10/20) [sabayonlinux.org] media-libs/libbluray-0.2.3
>>     Versões: 0.3.0-r1 / NoTag / 0 ===> 0.2.3 / NoTag / 1
>>      Ação:            Rebaixar
>>    # (11/20) [sabayonlinux.org] media-libs/libcdr-0.0.13
>>     Versões: 0.0.14 / NoTag / 0 ===> 0.0.13 / NoTag / 0
>>      Ação:            Rebaixar
>>    # (12/20) [sabayonlinux.org] media-libs/libmatroska-1.3.0
>>     Versões: 1.4.0 / NoTag / 0 ===> 1.3.0 / NoTag / 0
>>      Ação:            Rebaixar
>>    # (13/20) [sabayonlinux.org] media-libs/libwebp-0.2.1
>>     Versões: 0.3.0 / NoTag / 0 ===> 0.2.1 / NoTag / 0
>>      Ação:            Rebaixar
>>    # (14/20) [sabayonlinux.org] media-libs/mesa-9.1.2-r1
>>     Versões: 9.1.3 / NoTag / 0 ===> 9.1.2-r1 / NoTag / 0
>>      Ação:            Rebaixar
>>    # (15/20) [sabayonlinux.org] media-libs/opus-1.0.1
>>     Versões: 1.0.2-r2 / NoTag / 0 ===> 1.0.1 / NoTag / 0
>>      Ação:            Rebaixar
>>    # (16/20) [sabayonlinux.org] perl-core/Getopt-Long-2.380.0
>>     Versões: 2.390.0 / NoTag / 0 ===> 2.380.0 / NoTag / 1
>>      Ação:            Rebaixar
>>    # (17/20) [sabayonlinux.org] sys-apps/pciutils-3.2.0
>>     Versões: 3.2.0 / NoTag / 2 ===> 3.2.0 / NoTag / 0
>>      Ação:            Rebaixar
>>    # (18/20) [sabayonlinux.org] sys-apps/systemd-202-r53
>>     Versões: 202-r52 / NoTag / 7 ===> 202-r53 / NoTag / 0
>>      Ação:            Rebaixar
>>    # (19/20) [sabayonlinux.org] virtual/perl-Getopt-Long-2.380.0-r2
>>     Versões: 2.390.0 / NoTag / 0 ===> 2.380.0-r2 / NoTag / 0
>>      Ação:            Rebaixar
>>    # (20/20) [sabayonlinux.org] www-client/chromium-26.0.1410.43
>>     Versões: 29.0.1521.3 / NoTag / 0 ===> 26.0.1410.43 / NoTag / 0
>>      Ação:            Rebaixar
>>  @@ Pacotes envolvidos: 20
>>  @@ Calculando dependências...
>>  @@ Estes são os pacotes que seriam instalados:
>> media-libs/freeglut-2.8.0-r1|0   [2.8.1|0]
>>  app-text/libmspub-0.0.3|1   [0.0.6|0]
>>  app-text/liblangtag-0.4.0|1   [0.5.1|0]
>>   media-libs/libcdr-0.0.13|0   [0.0.14|0]
>>   app-office/libreoffice-4.0.2.2|0   [4.0.3.3|0]
>>  media-libs/libbluray-0.2.3|1   [0.3.0-r1|0]
>>   virtual/perl-Getopt-Long-2.380.0-r2|0   [2.390.0|0]
>> sys-apps/systemd-202-r53|0   [202-r52|7]
>>   dev-lang/v8-3.16.14.9-r1|0   [3.19.3.1|0]
>>   dev-libs/re2-0_p20121127|1   [0_p20130115-r1|0]
>>   media-libs/opus-1.0.1|0   [1.0.2-r2|0]
>>  dev-libs/jsoncpp-0.5.0|1   [0.5.0-r1|0]
>>  media-libs/libwebp-0.2.1|0   [0.3.0|0]
>>   app-accessibility/speech-dispatcher-0.7.1-r2|0   [0.8-r2|0]
>>   www-client/chromium-26.0.1410.43|0   [29.0.1521.3|0]
>>   media-libs/mesa-9.1.2-r1|0   [9.1.3|0]
>>   sys-apps/pciutils-3.2.0|0   [3.2.0|2]
>>  dev-libs/libebml-1.2.2|0   [1.3.0|0]
>>   media-libs/libmatroska-1.3.0|0   [1.4.0|0]
>>  perl-core/Getopt-Long-2.380.0|1   [2.390.0|0]
>>  @@ Pacotes que precisam ser instalados/atualizados/rebaixados: 20
>>  @@ Pacotes que precisam ser removidos: 0
>>  @@ Pacotes que precisam ser instalados: 0
>>  @@ Pacotes que precisam ser reinstalados: 0
>>  @@ Pacotes que precisam ser atualizados: 1
>>  @@ Pacotes que precisam ser rebaixados: 19
>>  @@ Tamanho de recebimento: 236.1MB
>>  @@ Espaço de disco usado: 188.2MB
>>  @@ Você precisa de pelo menos: 660.3MB de espaço livre
Se eu rodasse os comandos, sem a opção --pretend, minhas atualizações seriam anuladas, voltando ao sistema antigo. Naturalmente que depois, seria necessário mascarar os pacotes um a um e finalmente reativar o repositório.

Para mais detalhes, é parecido com o que foi feito para manter o GNOME 2 em Sabayon.

G. Desfazer várias atualizações em Gentoo

Em Gentoo, infelizmente, é mais complicado.

Como ele é de compilação pura, ela faz todos os binários dele no micro, então o resultado de um downgrade amplo de grande número de pacotes, é meio imprevisível.

Mas você pode tentar com um comando de Portage, o "demerge". Detalhes:
Instale o pacote "demerge" e depois execute o comando:

# emerge -av demerge
# demerge --record


H. Conclusão

Nesta dica, demostra-se que em certos casos, as atualizações de Sabayon e Gentoo, duas distribuições "roling release", podem sim, ser desfeitas, para solucionar problemas!

Outras dicas deste autor

Acelerando downloads com facilidade em Firefox e SwiftWeasel

Suas partições Linux encheram? Não tem mais espaço? Veja o que você pode fazer!

Navegador/Suíte SeaMonkey em toda e qualquer distro

Usando Portage em Sabayon Linux - Método Geral, Passo a Passo

Obtendo sempre o GParted mais recente

Leitura recomendada

Instalando a sua tatuagem do Firefox

Inserção em projetos open source

Instalando o Google Chrome no Slackware 13.0 e 13.1

VMWare lento com OpenSUSE host

Conheça o Debian Package Search

  

Comentários
[1] Comentário enviado por removido em 14/06/2013 - 13:55h

Muito Bom Alberto! Penso que essa dica está mais para Artigo, de qualquer forma, parabéns!

[2] Comentário enviado por albfneto em 23/06/2013 - 19:22h

COMPLEMENTOS DA DICA:

Outra possibilidade é usar Sabayon em modo não Rolling Release:

http://linuxfast.com.br/dica/Usando-Sabayon-Linux-em-modo-nao-Rolling-Release.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts