Blog Linux Avante

Como evitar que um pacote seja atualizado no Ubuntu, Debian ou Linux Mint [APT]

23 de abril de 2019

Existem várias maneiras de evitar que um pacote seja atualizado no Debian, Ubuntu, Linux Mint, elementaryOS e outras distribuições Linux baseadas em Debian/Ubuntu. Este artigo apresenta 3 maneiras de excluir pacotes de repositório de serem atualizados.

Por que impedir que um pacote seja atualizado? Digamos que você instale um pacote mais antigo que a versão disponível nos repositórios Debian, Ubuntu ou Linux Mint, ou você sabe que alguma atualização está causando problemas e deseja atualizar todos os pacotes menos um (ou dois, três ...).

Aqui está um exemplo. Estou usando o navegador Chromium com aceleração de hardware (patches do Saiarcot895-dev PPA), no Ubuntu 18.10. Para que a aceleração de hardware funcione com os drivers da Nvidia, é necessário um pacote vdpau-va-driver com patch, que ainda não está disponível neste PPA para o Ubuntu 18.10 mais recente. Felizmente, o pacote Ubuntu 18.04 pode ser instalado no Ubuntu 18.10, mas qualquer atualização através de "apt upgrade" ou usando o Atualizador de Software irá atualizar este pacote, o que eu não quero. Portanto, neste caso, reter este pacote de atualizações me permitiria atualizar todos os outros pacotes sem ter que me preocupar com isso.

Deve-se notar que prevenir um pacote de atualizações futuras pode causar problemas em algumas situações, se o pacote que você está segurando for usado como uma dependência para outro pacote que pode ser atualizado. Portanto, tente não evitar que muitos pacotes sejam atualizados, especialmente bibliotecas.

Aqui estão 3 maneiras de evitar que um pacote seja atualizado no Debian, Ubuntu, Linux Mint.

1. Impedir atualizações de pacotes usando uma GUI: Gerenciador de Pacotes Synaptic

O Synaptic Package Manager, um programa gráfico de gerenciamento de pacotes Gtk para apt, pode bloquear pacotes que os impede de serem atualizados.

É importante notar que usar o Synaptic para bloquear pacotes não os impedirá de serem atualizados na linha de comando - rodar apt upgrade ou apt-get upgrade ainda atualizará um pacote bloqueado no Synaptic. Bloquear pacotes no Synaptic impedirá atualizações de pacote usando o Ubuntu Aplicativo de atualização de software e possivelmente outros gerenciadores de pacotes gráficos. No entanto, isso não impedirá a atualização de pacotes usando o aplicativo Linux Mint Update Manager. Como resultado, eu recomendo usar apt-mark ou dpkg (veja abaixo) para evitar que os pacotes sejam atualizados.

Você pode instalar o Synaptic Package Manager usando este comando:

Comandos para usar no terminal

sudo apt install synaptic

Para evitar que um pacote seja atualizado usando o Synaptic, pesquise-o, selecione o pacote e, no menu Synaptic, clique em Package -> Lock Version:

Versão do pacote de bloqueio Synaptic

Da mesma forma, você também pode desbloquear o pacote.

Para ver todos os pacotes bloqueados no Synaptic, clique em Status no lado esquerdo inferior e, em seguida, clique em Pinned acima da seção Status:

Pacotes Synaptic show locked (pinned)

2. Impedir que um pacote seja atualizado usando apt-mark

Impedir que os pacotes sejam atualizados com o apt-mark deve evitar que eles atualizem usando o Atualizador de Software do Ubuntu, bem como atualizações de linha de comando (apt upgrade/apt-get upgrade).

Você pode manter um pacote de atualizações futuras (e de ser removido automaticamente) com apt-mark usando este comando:

Comandos para usar no terminal

sudo apt-mark hold PACKAGE

Substituindo PACKAGE pelo pacote que você deseja impedir de atualização.

Você pode verificar quais pacotes estão marcados como hold (para que não sejam atualizados) usando:

Comandos para usar no terminal

apt-mark showhold

Para remover uma retenção (para que o pacote possa ser atualizado), use:

Comandos para usar no terminal

sudo apt-mark unhold PACKAGE

Para hold e unhold, você pode especificar vários pacotes, assim como ao instalar o software com apt (separe os pacotes por um espaço).

3. Impedir atualizações de pacote com dpkg

Um tempo atrás, havia alguns gerenciadores de pacotes gráficos que ignoravam o status de suspensão do apt-mark. Não tenho certeza se esse ainda é o caso, mas apenas para garantir (e caso você esteja usando uma versão antiga do Debian/Ubuntu/Linux Mint), aqui está outra maneira de evitar atualizações de pacotes no Ubuntu, Linux Mint ou Debian: dpkg.

Para evitar que um pacote seja atualizado usando dpkg, use:

Comandos para usar no terminal

echo "PACKAGE hold" | sudo dpkg --set-selections

Substitua PACKAGE pelo pacote que você deseja impedir de atualização.

Você pode ver todas as retenções de pacote usando este comando:

Comandos para usar no terminal

dpkg --get-selections | grep hold

Para remover a suspensão (permitir que o pacote seja atualizado), use:

Comandos para usar no terminal

echo "PACKAGE install" | sudo dpkg --set-selections

Ao contrário de apt-mark, esta solução não permite especificar vários pacotes de uma vez.

Confira a versão original desse post em inglês
Propaganda
Blog Comments powered by Disqus.