Linux · 8 min read · Dec 01, 2025
Como Bloquear Atualizações de Pacotes e Kernel no CentOS / Rocky Linux

O gerenciador de pacotes é provavelmente a ferramenta mais útil para um usuário Linux. Você pode instalar, atualizar e remover qualquer software/pacote do seu sistema Linux com um único comando. Mas às vezes, você precisa de controle granular sobre qual pacote deseja instalar ou atualizar e qual pacote bloquear para não ser atualizado automaticamente. Por que você gostaria de fazer isso? Às vezes, você descobre que a versão atualizada de um pacote está com bugs. Você não quer que esse pacote seja atualizado na próxima vez que você executar sudo yum upgrade. E é um incômodo atualizar cada pacote individualmente.
Neste tutorial, abordaremos como bloquear certos pacotes de serem instalados ou atualizados e como bloquear versões específicas de pacotes ou kernels de serem instalados.
Nota: É fácil esquecer quais pacotes você manteve após algum tempo, mesmo quando suas versões sem bugs estão disponíveis. Portanto, fique atento, pois manter pacotes por muito tempo pode introduzir problemas de segurança.
Discutiremos cinco métodos aqui. Todos esses métodos envolverão o yum ( Yellow dog Updater, Modified) e o dnf ( Dandified YUM) gerenciador de pacotes.
Pré-requisitos
- Um servidor com CentOS ou Rocky Linux ou Alma Linux. O Rocky Linux 9 foi usado para este tutorial, mas os comandos aqui devem funcionar bem com os outros sistemas operacionais e versões mais antigas também.
- Um usuário não-root com privilégios sudo.
Método 1 - Desativar Permanentemente Instalações/Atualizações de Pacotes (Usando yum.conf)
Para bloquear um pacote permanentemente de ser instalado, atualizado ou removido, podemos usar o arquivo /etc/yum.conf ou /etc/dnf/dnf.conf.
Deve parecer com o seguinte.
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
Se você quiser manter um pacote, por exemplo, nginx, de ser instalado, atualizado ou removido, acrescente a seguinte linha ao final do arquivo.
exclude=nginx
Se você quiser parar todos os pacotes nginx, então você pode usar o caractere *.
exclude=nginx*
Se você quiser excluir mais de um pacote, pode separar seus nomes por espaço.
exclude=nginx php
O pacote bloqueado permanecerá na mesma versão mesmo que você atualize seu sistema. Isso é especialmente útil para segurar drivers gráficos.
Vamos tentar instalar o pacote bloqueado, nginx.
$ sudo dnf install nginx
ou
$ sudo yum install nginx
Você receberá uma saída semelhante.
Última verificação de expiração de metadados: 0:00:21 atrás em Seg 05 Dez 2022 10:42:01 AM UTC.
Todos os matches foram filtrados pela filtragem de exclusão para o argumento: nginx
Erro: Não foi possível encontrar uma correspondência: nginx
Você também pode bloquear pacotes via sua arquitetura aqui. Por exemplo, se você quiser bloquear pacotes de 32 bits, pode inserir a seguinte linha no arquivo /etc/yum.conf.
exclude=*.i?86 *i686
Há uma importante ressalva com este método. Embora o pacote não seja atualizado automaticamente ao usar o comando sudo yum upgrade ou ao atualizar o sistema, você ainda pode remover o pacote manualmente. sudo yum remove ainda funcionará em pacotes mantidos.
Este método apenas os bloqueia de serem alterados automaticamente. Mantê-los em espera os manterá em suas versões atuais, não importa o que aconteça, a menos que você decida removê-los manualmente.
Bloquear Atualizações do Kernel
Para bloquear a atualização do kernel, use o seguinte comando.
$ sudo dmf --exclude=kernel* update
ou
$ sudo yum --exclude=kernel* update
Você pode usar kernel* como o nome do pacote em todos os outros métodos para bloquear atualizações do Kernel.
Método 2 - Desativar Temporariamente Instalações/Atualizações de Pacotes
Este método envolve usar o comando yum com um parâmetro adicional.
No momento de atualizar qualquer pacote, use o -x switch com seu comando para bloquear pacotes específicos que você não deseja atualizar.
$ sudo dnf -x nginx update
ou
$ sudo yum -x nginx update
O comando acima atualizará todos os pacotes, exceto o pacote nginx em seu sistema. Para bloquear múltiplos pacotes com um único comando, use o -x switch várias vezes.
$ sudo dnf -x nginx -x php update
ou
$ sudo yum -x nginx -x php update
Você também pode usar o –exclude switch em vez de -x da mesma forma.
$ sudo dnf --exclude nginx, php
ou
$ sudo yum --exclude nginx, php
Método 3 - Usando Repositório (Usando arquivos .repo)
Se você tem um pacote instalado via seu repositório, então há outra maneira de impedi-lo de ser atualizado. Isso é feito editando seu arquivo .repo que você pode encontrar no diretório /etc/yum.repos.d.
Suponha que seu sistema tenha o repositório Epel adicionado e você não queira instalar o pacote golang a partir dele, você pode bloqueá-lo adicionando a linha exclude=certbot no arquivo /etc/yum.repos.d/epel.repo, como mostrado.
[epel]
nome=Pacotes Extras para Enterprise Linux 8 - $basearch
# É muito mais seguro usar o metalink, mas se você desejar usar um espelho local
# coloque seu endereço aqui.
#baseurl=https://download.example/pub/epel/8/Everything/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=$basearch&infra=$infra&content=$contentdir
enabled=1
gpgcheck=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
exclude=certbot
...
Agora, tente instalar o pacote certbot que está disponível via o repositório Epel.
$ sudo dnf install certbot
ou
$ sudo yum install certbot
Você receberá uma saída semelhante.
Pacotes Extras para Enterprise Linux 8 - x86_64 20 kB/s | 4.5 kB 00:00
Todos os matches foram filtrados pela filtragem de exclusão para o argumento: certbot
Erro: Não foi possível encontrar uma correspondência: certbot
Método 4 - Bloqueando um repositório inteiro de ser atualizado
Alternativamente, você pode bloquear um repositório inteiro de ser atualizado.
Primeiro, vamos verificar todos os repositórios em nosso sistema.
$ dnf repolist
ou
$ yum repolist
Você receberá uma saída semelhante.
repo id repo name
appstream Rocky Linux 8 - AppStream
baseos Rocky Linux 8 - BaseOS
digitalocean-agent DigitalOcean Agent
docker-ce-stable Docker CE Stable - x86_64
epel Pacotes Extras para Enterprise Linux 8 - x86_64
extras Rocky Linux 8 - Extras
nginx-stable repositório estável do nginx
Para excluir o repositório Epel de ser atualizado, use o seguinte comando.
$ sudo dnf update --disablerepo=epel
ou
$ sudo yum update --disablerepo=epel
Você pode desabilitar múltiplos repositórios separando seus ids com vírgulas.
$ sudo dnf update --disablerepo=epel, extras
ou
$ sudo yum update --disablerepo=epel, extras
Bloqueando Repositórios via seu arquivo repo
Há outra maneira de bloquear um repositório que envolve editar o arquivo repo específico.
Vamos abrir o arquivo epel.repo para edição.
$ sudo nano /etc/yum.repos.d/epel.repo
Mude o valor da variável enabled de 1 para 0.
[epel]
nome=Pacotes Extras para Enterprise Linux 8 - $basearch
# É muito mais seguro usar o metalink, mas se você desejar usar um espelho local
# coloque seu endereço aqui.
#baseurl=https://download.example/pub/epel/8/Everything/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=$basearch&infra=$infra&content=$contentdir
enabled=0
gpgcheck=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
...
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Agora, vamos tentar instalar o pacote certbot que está disponível no repositório epel.
$ sudo dnf install certbot
ou
$ sudo yum install certbot
Você receberá uma saída semelhante.
Última verificação de expiração de metadados: 0:02:10 atrás em Seg 05 Dez 2022 10:48:31 AM UTC.
Nenhuma correspondência para o argumento: certbot
Erro: Não foi possível encontrar uma correspondência: certbot
Método 5 - Bloqueando Pacotes em uma versão específica (Usando o plugin versionlock)
Versionlock é um plugin para o gerenciador de pacotes Yum. Este plugin não permite que pacotes sejam atualizados para uma versão maior do que a que foi instalada no momento em que o bloqueio foi realizado.
Primeiro, instale o versionlock.
$ sudo dnf install dnf-plugin-versionlock
ou
$ sudo yum install dnf-plugin-versionlock
Isso também criará um arquivo /etc/yum/pluginconf.d/versionlock.list em seu sistema.
Para bloquear a versão atual do mariadb-server instalada em seu sistema, execute o seguinte comando.
$ sudo dnf versionlock mariadb-server
ou
$ sudo yum versionlock mariadb-server
Você receberá uma saída semelhante.
Última verificação de expiração de metadados: 0:01:05 atrás em Seg 05 Dez 2022 12:14:16 PM UTC.
Adicionando versionlock em: mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.*
Você pode adicionar múltiplos pacotes de uma vez.
$ sudo dnf versionlock evolution golang
ou
$ sudo yum versionlock evolution golang
Você receberá uma saída semelhante.
Última verificação de expiração de metadados: 0:01:05 atrás em Seg 05 Dez 2022 12:14:16 PM UTC.
Adicionando versionlock em: evolution-0:3.28.5-18.el8.*
Adicionando versionlock em: golang-0:1.18.4-1.module+el8.7.0+1073+99e3b3cd.*
Vamos tentar atualizar o pacote mariadb-server.
$ sudo dnf update mariadb-server
ou
$ sudo yum update mariadb-server
Você receberá uma saída semelhante.
Última verificação de expiração de metadados: 0:02:07 atrás em Seg 05 Dez 2022 12:14:16 PM UTC.
Pacote mariadb-server disponível, mas não instalado.
Nenhuma correspondência para o argumento: mariadb-server
Erro: Nenhum pacote marcado para atualização.
Para verificar a lista de pacotes bloqueados via o plugin versionlock, use o seguinte comando.
$ dnf versionlock list
ou
$ yum versionlock list
Você receberá uma saída semelhante.
Última verificação de expiração de metadados: 0:00:05 atrás em Qua 07 Dez 2022 02:36:20 AM UTC.
elasticsearch-7.17.5-1.x86_64
mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.*
evolution-0:3.28.5-18.el8.*
golang-0:1.18.4-1.module+el8.7.0+1073+99e3b3cd.*
Para remover o pacote do versionlock, use o seguinte comando.
$ sudo dnf versionlock delete mariadb-server
ou
$ sudo yum versionlock delete mariadb-server
Você receberá a seguinte saída.
Deletando versionlock para: mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.*
Para descartar a lista e limpar os bloqueios, use o seguinte comando.
$ sudo dnf versionlock clear
ou
$ sudo yum versionlock clear
Alternativamente, você pode editar o arquivo /etc/yum/pluginconf.d/versionlock.list para bloquear pacotes usando o plugin versionlock.
Para adicionar um pacote instalado ao arquivo, use o seguinte comando.
$ sudo sh -c 'rpm -qa | grep evolution >> /etc/yum/pluginconf.d/versionlock.list'
O comando acima bloqueia o pacote evolution adicionando-o à lista. Usamos rpm -qa | grep evolution para capturar o nome completo do pacote. E o
sudo sh -c comando executa um shell sudo sob o qual os comandos para escrever no arquivo são executados.
Conclusão
É isso para este tutorial. Agora você deve ser capaz de bloquear quaisquer versões específicas de quaisquer pacotes que não deseja que sejam instalados ou atualizados em seu sistema CentOS ou Rocky Linux.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.