Pesquisa de site

4 maneiras de desativar/bloquear certas atualizações de pacotes usando o comando Yum


Gerenciador de Pacotes é um software que permite ao usuário em caso de instalação de novo software, atualização de sistema ou atualização de qualquer software específico e coisas assim. No caso de sistemas baseados em Linux em que um software tem muitas dependências que devem estar presentes no sistema para uma instalação completa desse software, softwares como gerenciadores de pacotes tornam-se uma ferramenta muito necessária em todos os sistemas.

Cada distribuição Linux vem com seu gerenciador de pacotes padrão para as funcionalidades mencionadas acima, mas de todas estas as mais encontradas são: yum em sistemas RHEL e Fedora (onde está sendo atualmente substituído por DNF do Fedora 22+ em diante) e apt do Debian.

Se você está procurando uma ferramenta APT para bloquear ou desabilitar certas atualizações de pacotes específicos, então você deve ler este artigo.

Dnf ou Danified yum está substituindo yum nos sistemas Fedora, que é outro em nossa lista. Se explorados corretamente, esses gerenciadores de pacotes podem ser usados para as seguintes funcionalidades:

  1. Instalando novo software do repositório.
  2. Resolva as dependências do software instalando-as antes de instalar o software.
  3. Manutenção de banco de dados de dependências de cada software.
  4. Versão de downgrade de qualquer software existente.
  5. Atualizando a versão do kernel.
  6. Listando pacotes disponíveis para instalação.

Já cobrimos artigos detalhados separadamente sobre cada gerenciador de pacotes individual com exemplos práticos. Você deve lê-los para controlar e gerenciar o gerenciamento de pacotes em suas respectivas distribuições Linux.

Leia também:

  1. Dominando o comando Yum com estes 20 exemplos práticos
  2. 27 comandos DNF para gerenciar pacotes nas versões do Fedora 22+
  3. Aprenda 25 comandos APT para gerenciar pacotes Ubuntu

No artigo, veremos como bloquear/desabilitar certas atualizações de pacotes usando o gerenciador de pacotes Yum em sistemas RHEL/CentOS e Fedora (aplicável até o Fedora 21, versão posterior mais recente do Fedora vem com dnf como gerenciador de pacotes padrão).

Desabilitar/bloquear atualizações de pacotes usando Yum

Yellow dog Updater, Modified (yum) é uma ferramenta de gerenciamento de pacotes em distribuições baseadas em RedHat, como CentOS e Fedora. Várias estratégias usadas para bloquear/desabilitar atualizações de pacotes usando Yum são discutidas abaixo:

1. Desative permanentemente o pacote para instalação ou atualização

1. Abra e edite o arquivo yum.conf, que está localizado em /etc/yum.conf ou em /etc/ yum/yum.conf.

Parece abaixo:

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
...

Aqui, para excluir determinado pacote da instalação ou atualização, você só precisa adicionar a variável de exclusão junto com o nome do pacote que deseja excluir. Por exemplo, se eu quiser impedir que todos os pacotes python-3 sejam atualizados, apenas anexarei a seguinte linha ao yum.conf:

exclude=python-3*

Para mais de um pacote excluir basta separar seus nomes por espaço.

exclude=httpd php 
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
exclude=python-3*        [Exclude Single Package]
exclude=httpd php        [Exclude Multiple Packages]
...

Nota: para incluir esses pacotes, ignorando entradas em yum.conf, use “-disableexcludes ” e defina para all|main|repoid, onde 'main' são aqueles inseridos em yum.conf e 'repoid' > são aqueles cuja exclusão está especificada no diretório repos.d, conforme explicado mais adiante.

Agora vamos tentar instalar ou atualizar os pacotes especificados e ver se o comando yum irá desativá-los na instalação ou atualização.

# yum install httpd php

Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
Nothing to do
# yum update httpd php

Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
No packages marked for update

2. Desative temporariamente o pacote para instalação ou atualização

2. Acima havia uma solução permanente para excluir um pacote, pois a menos que o arquivo seja editado, esse pacote não será atualizado. Aqui está uma solução temporária para isso também. Justamente no momento em que você for fazer qualquer atualização, use a opção -x no comando yum para excluir o pacote que você não deseja atualizar, como:

yum -x python-3 update

O comando acima irá atualizar todos os pacotes cujas atualizações estão disponíveis, excluindo python-3 em seu sistema.

Aqui, para excluir vários pacotes, use -x várias vezes ou separe os nomes dos pacotes com ',' em uma única opção.

yum -x httpd -x php update
OR
yum -x httpd,php update

3. Usar a opção --exclude funciona da mesma forma que -x, só precisa substituir -x por –excluir e passar ',' uma lista separada de nomes de pacotes para ele.

yum --exclude httpd,php

3. Desative as atualizações de pacotes usando o repositório

4. Para qualquer pacote instalado de qualquer fonte externa através da adição de um repositório, existe outra maneira de interromper sua atualização no futuro. Isso pode ser feito editando seu arquivo .repo que é criado em /etc/yum/repos.d/ ou /etc/yum.repos.d< diretório.

Adicione a opção de exclusão com o nome do pacote no repo. Por exemplo: para excluir qualquer pacote, digamos wine do epel repo, adicione a seguinte linha no arquivo epel.repo:

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
exclude=wine

Agora tente atualizar o pacote wine, você receberá um erro como mostrado abaixo:

# yum update wine

Loaded plugins: fastestmirror, langpacks, versionlock
epel/x86_64/metalink                                    | 5.6 kB     00:00     
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
No Match for argument: wine
No package wine available.
No packages marked for update

4. Desative a atualização do pacote usando a opção versionlock

5. Outra maneira do yum de mascarar a versão de qualquer pacote, tornando-o indisponível para atualização, é usar a opção versionlock do yum, mas para fazer isso, você deve o pacote yum-plugin-versionlock estar instalado no sistema.

yum -y install yum-versionlock

Por exemplo, para bloquear a versão do pacote, diga httpd apenas para 2.4.6, basta escrever o seguinte comando como root.

yum versionlock add httpd
Saída de amostra
Loaded plugins: fastestmirror, langpacks, versionlock
Adding versionlock on: 0:httpd-2.4.6-40.el7.centos
versionlock added: 1

Para visualizar pacotes bloqueados, use o seguinte comando para listar os pacotes cuja versão foi bloqueada.

yum versionlock list httpd
Saída de amostra
Loaded plugins: fastestmirror, langpacks, versionlock
0:httpd-2.4.6-40.el7.centos.*
versionlock list done

Conclusão

Estas são algumas dicas que irão ajudá-lo a desabilitar/bloquear atualizações de pacotes usando o gerenciador de pacotes yum. Se você tiver outros truques para fazer as mesmas coisas, pode comentá-los conosco.