Arch Linux é muitas vezes elogiado pelo seu software de bordo sangrento e modelo de roll release. Discutimos estas características mais em profundidade no nosso artigo comparando o Arch Linux e o Manjaro. Para além destes elogios, Arch Linux também tem a reputação de ser instável. Esta reputação deriva da natureza por vezes imprevisível do software de borda hemorrágica. O software mais recente dos programadores a montante pode conter bugs que não eram aparentes durante os testes iniciais. Como resultado, existe sempre o risco de que a actualização com o gestor de pacotes, pacman
, possa trazer resultados inesperados. Estes podem incluir uma peça específica de software que já não funciona correctamente (ou não funciona de todo) ou mesmo múltiplas aplicações ou ambientes de trabalho que já não funcionam como esperado.
Backing up your GNU/Linux system regularly is the best safeguard to mitig the headache this could cause. Não há escassez de soluções de backup para Linux; algumas das opções de backup incluem dd, BackupPC, rsync, Fsarchiver , rsnapshot. Se tiver uma solução de backup regular, então pode ser reconfortante saber que poderia restaurar a partir de um backup no caso de um pacman
update causar problemas, mas seria ideal se não tivesse de o fazer. Neste artigo mostrar-lhe-emos como voltar atrás pacman
actualizações no Arch Linux. Há duas maneiras de o conseguir. Uma é através do pacman cache
; a outra é usando o Arch Linux Archive
. Discutiremos os dois métodos.
Neste tutorial irá aprender:
- Como fazer rollback das actualizações do Arch Linux usando o pacman cache
- Como fazer rollback das actualizações do Arch Linux usando o Arch Linux Archive
Requisitos de software e convenções utilizadas
System | Arch Linux |
Software | pacman |
Outros | Acesso privilegiado ao seu sistema Linux como raiz ou através do comando sudo . |
# – requer que determinados comandos linux sejam executados com privilégios de root quer directamente como utilizador root ou através do comando sudo comando$ – requer que determinados comandos linux sejam executados como um comando regular nãoutilizador privilegiado /td> |
Como fazer rollback das actualizações do Arch Linux usando o pacman cache
Cada vez que instalar ou actualizar um pacote pacman
guarda este pacote em /var/cache/pacman/pkg/
pacman
também lhe permite actualizar manualmente um pacote através do -U
bandeira. Ao que parece, este método de actualização também pode ser usado para instalar uma versão mais antiga do pacote, baixando efectivamente o pacote.
Downgrading a single package
Suponha que acabou de actualizar o seu sistema através do comando $ sudo pacman -Syu
e depois abre para navegar na web, apenas para se aperceber de que agora trava, enquanto nunca o tinha feito antes. Pode facilmente rebaixar para a versão anterior que tinha instalado utilizando a cache do pacman.
P>Primeiro, examine o pacotes listados em /var/cache/pacman/pkg/
$ ls /var/cache/pacman/pkg/firefox*
Deverá ver a última versão para a qual acabou de actualizar e quaisquer versões anteriores que tenha instalado. No nosso exemplo, esta é a saída que recebemos.
/var/cache/pacman/pkg/firefox-81.0.1-1-x86_64.pkg.tar.zst/var/cache/pacman/pkg/firefox-83.0-2-x86_64.pkg.tar.zst
Sabemos que actualizámos a partir da versão 81.0.1-1
para 83.0-2
e suspeitamos que possa ter causado um problema. Para testar esta teoria, basta retroceder para a versão 81.0.1-1
usando a cache do pacman com o seguinte comando.
$ sudo pacman -U /var/cache/pacman/pkg/firefox-81.0.1-1-x86_64.pkg.tar.zst
O Instituto Geofísico UAF, está à procura de um Analista de Sistemas Linux experiente para se juntar à sua equipa de analistas e engenheiros de infra-estruturas cibernéticas de pesquisa. LOCALIZAÇÃO: Fairbanks, Alasca, EUA
APPLY NOW
Verá o seguinte resultado.
loading packages...warning: downgrading package firefox (83.0-2 => 81.0.1-1)resolving dependencies...looking for conflicting packages...Packages (1) firefox-81.0.1-1Total Installed Size: 206.76 MiBNet Upgrade Size: -0.13 MiB:: Proceed with installation?
Após escrever y
para continuar terá a versão previamente instalada de instalada e poderá abri-la para ver se o problema foi resolvido.
Downgrading multiple packages
Usando a cache do pacman, pode fazer downgrade de múltiplos pacotes fornecendo-os como argumentos separados para pacman -U
. Por exemplo
$ sudo pacman -U /var/cache/pacman/pkg/firefox-81.0.1-1-x86_64.pkg.tar.zst /var/cache/pacman/pkg/alsa-lib-1.2.3.2-1-x86_64.pkg.tar.zst /var/cache/pacman/pkg/adwaita-icon-theme-3.38.0-1-any.pkg.tar.zst
Ao fazer o downgrade de múltiplos pacotes pode ser benéfico mudar para o directório /var/cache/pacman/pkg
para que não precise de digitar o caminho completo de cada pacote que pretende fazer o downgrade.
$ cd /var/cache/pacman/pkg$ sudo pacman -U firefox-81.0.1-1-x86_64.pkg.tar.zst alsa-lib-1.2.3.2-1-x86_64.pkg.tar.zst adwaita-icon-theme-3.38.0-1-any.pkg.tar.zst
P>É muito provável que comece a pensar que rebaixar um grande número de pacotes desta forma seria, no mínimo, aborrecido. Pode encontrar-se em situações em que suspeita que 20 pacotes diferentes podem estar potencialmente a causar um problema ou não faz ideia de que pacotes estão a causar um problema e pretende desgraduar todos eles. Estes cenários podem ser mais adequados para utilizar o Arch Linux Archive
, mas antes de discutirmos isso vamos examinar alguns exemplos de situações em que poderíamos hackear juntos uma solução para utilizar o pacman cache
para este fim, sem ter de digitar manualmente o nome de cada pacote.
Downgrading multiple related packages with a similar naming scheme
Suppose you just powered up your machine after not using it for a few weeks. Procede à actualização do seu sistema através do comando $ sudo pacman -Syu
e repara que todas as suas aplicações baseadas em qt não estão a funcionar correctamente, mas todas as outras aplicações estão. Como muitos dos pacotes e bibliotecas qt fundacionais têm qt
no nome do ficheiro e é muito improvável que qualquer pacote não qt tenha isto no nome do ficheiro, é possível retroceder apenas as actualizações qt da última actualização do sistema.
Quando efectuar uma actualização usando pacman
um registo do que actualizou e quando é mantido em /var/log/pacman.log
. Segue-se uma linha de exemplo abaixo.
upgraded qt5-xmlpatterns (5.15.1-1 -> 5.15.2-1)
Podemos usar este registo para nos ajudar sistematicamente a rebaixar apenas os pacotes qt, procurando as linhas no pacman.log
que mostrar pacotes contendo qt no nome do ficheiro que foram actualizados hoje em dia e que executam alguma manipulação de texto sobre eles e depois fornecem argumentos para pacman -U
num laço de for loop. O exemplo abaixo assume que a data actual é 30 de Novembro de 2020. Ajuste a data em conformidade se quiser fazer uso dela.
$ grep -a qt /var/log/pacman.log | grep 2020-11-30 > /tmp/qtupdates.txt$ awk '{print $4}' /tmp/qtupdates.txt > /tmp/lines1;awk '{print $5}' /tmp/qtupdates.txt | sed 's/(/-/g' > /tmp/lines2$ paste /tmp/lines1 /tmp/lines2 > /tmp/lines$ tr -d "" < /tmp/lines > /tmp/packages$ cd /var/cache/pacman/pkg/$ for i in $(cat /tmp/packages); do sudo pacman --noconfirm -U "$i"*; done
Downgrading all upgraded packages
Suponha que apenas alimenta a sua máquina depois de não a utilizar durante algumas semanas. Procede à actualização do seu sistema através do comando $ sudo pacman -Syu
e depois repara que todo o seu sistema se sente anormalmente lento. Não faz ideia do pacote de actualização que pode estar a causar isto e pretende fazer retroceder temporariamente todos os 512 para a versão anterior que tinha instalado.
Isto na realidade não requer mais esforço do que o exemplo anterior. Realiza os mesmos passos, excepto que utiliza o ficheiro pacman.log
para obter os nomes de todos os pacotes que foram actualizados hoje e não apenas os que se encaixam num esquema de nomenclatura particular. Isto funcionará para qualquer número de pacotes, funcionando essencialmente como um grande botão de desfazer para pacman
. O exemplo abaixo assume que a data actual é 30 de Novembro de 2020. Ajuste a data em conformidade se quiser fazer uso dela.
$ grep -a upgraded /var/log/pacman.log| grep 2020-11-30 > /tmp/lastupdates.txt $ awk '{print $4}' /tmp/lastupdates.txt > /tmp/lines1;awk '{print $5}' /tmp/lastupdates.txt | sed 's/(/-/g' > /tmp/lines2$ paste /tmp/lines1 /tmp/lines2 > /tmp/lines$ tr -d "" < /tmp/lines > /tmp/packages$ cd /var/cache/pacman/pkg/$ for i in $(cat /tmp/packages); do sudo pacman --noconfirm -U "$i"*; done
Como fazer rollback das actualizações do Arch Linux usando o Archive Linux Archive
o Arch Linux Archive é um arquivo oficial que contém snapshots de versões anteriores de pacotes. Estes são guardados no directório de pacotes do site. Há dois benefícios potenciais em utilizar o Arch Linux Archive
sobre o pacman cache
. Primeiro, o pacman cache
ocupa espaço no seu armazenamento local. Como resultado, algumas pessoas optarão por limpar regularmente a sua cache. Em segundo lugar, o Arquivo disponibiliza todas as versões anteriores de um pacote, e não apenas as que tinha instalado anteriormente.
P>Downgrading a single package
Para fazer downgrade de um pacote para uma versão anterior, primeiro encontra-o no arquivo e depois usa pacman
para fazer downgrade para essa versão específica. Se reexaminarmos o nosso exemplo anterior de downgrade Firefox
, já não estamos limitados ao downgrade da versão 83.0-2
para 81.0.1-1
. Como se pode ver no arquivo firefox, temos também a opção de desclassificar para as seguintes versões intermédias: 81.0.2-1, 82.0-1, 82.0.2-1, 82.0.3-1, 83.0-1
.
para baixar para Firefox
versão 83.0-1
usando o Arch Linux Archive
introduzir o seguinte comando.
$ sudo pacman -U https://archive.archlinux.org/packages/f/firefox/firefox-83.0-1-x86_64.pkg.tar.zst
Downgrade todos os pacotes para uma data anterior
Outra opção que tem disponível quando utiliza o Arch Linux Archive
é restaurar todos os pacotes do seu sistema para a versão “actual” que existia nos repositórios numa data específica no tempo. Isto pode ser útil se se deparar agora com problemas com o seu sistema de Arquivo, mas lembra-se que há algumas semanas atrás não tinha esses problemas. No exemplo que se segue, baixaremos todos os pacotes para 10 de Novembro de 2020. Para fazer o downgrade dos pacotes, teremos de informar o pacman de que queremos utilizar o repositório repo editando /etc/pacman.d/mirrorlist
. Antes de fazer quaisquer alterações ao ficheiro, recomenda-se fazer uma cópia de segurança para que possamos facilmente regressar ao ficheiro actual mirrorlist
quando quisermos.
$ sudo cp /etc/pacman.d/mirrorlist{,.bak}
Next, edite o seu ficheiro /etc/pacman.d/mirrorlist
usando o seu editor de eleição:
$ sudo vim /etc/pacman.d/mirrorlist
e altere o conteúdo para o seguinte.
### Arch Linux repository mirrorlist### Created to downgrade to Nov 10th 2020Server=https://archive.archlinux.org/repos/2020/10/11/$repo/os/$arch
Agora de finalizar o downgrade dos pacotes, introduza o seguinte comando.
$ sudo pacman -Syyuu
Conclusion
Neste artigo examinámos dois métodos para fazer rollback ou downgrade de pacotes no Arch Linux, o pacman cache
e o Arch Linux Archive
. Ambos são métodos poderosos que têm as suas próprias vantagens. Vamos reflectir brevemente sobre essas vantagens ao concluirmos este artigo.
A principal vantagem de utilizar o pacman cache
é que não requer uma ligação à Internet ou download de pacotes, uma vez que é armazenado localmente. Como resultado, o processo de downgrading é mais rápido. Outro benefício é que o pacman cache
contém versões de pacotes que instalou no seu sistema antes, por isso é muito provável que tenha uma ideia de como estavam a funcionar bem. Um terceiro benefício é que pode baixar vários pacotes sem ter de editar quaisquer ficheiros de configuração.
O principal benefício de usar o Arch Linux Archive
é que pode baixar para qualquer versão de um pacote, independentemente de já o ter instalado anteriormente. Outro benefício é que não ocupa armazenamento local, por isso, se estiver com pouco armazenamento e gostaria de limpar o seu pacman cache, sabe que existe outra opção viável para a desclassificação. Um terceiro benefício é que pode facilmente rebaixar cada pacote do seu sistema apenas editando um único ficheiro de configuração.