RHEL5: Proibir a instalação de pacotes i386 em sistemas de 64 bits?


13

Sempre que instalo algo com o yum, ele tenta instalar as versões x86_64 e i386 do pacote, se ambas estiverem disponíveis. Existe alguma maneira de proibir isso sem especificar o arco do pacote?

Respostas:


16

Adicione multilib_policy = best ao seu /etc/yum.conf

O Yum agora tentará instalar o "melhor" package.arch para o seu sistema e ele somente o instalará (contanto que esteja disponível).

Supondo que você esteja em um sistema de 64 bits, o yum primeiro tentará instalar o package.x86_64; se isso não existir, ele voltará ao i386 e noarch.

A configuração padrão é multilib_policy = all , o que significa instalar todos os arcos possíveis.


1
+1 Sim, essa é a melhor resposta. Infelizmente, a maioria das pessoas não tem essa opção agora.
knweiss

3

Estou usando a opção exactarch = 1 no /etc/yum.conf há algum tempo, e funcionou para mim.

Ele ainda permite que você especifique manualmente o arch, mas se não o fizer, instala apenas x86_64, não os dois.

De acordo com o manual el6 , yum.conf (5) :

          exactarch  Either  ‘1’  or ‘0’. Set to ‘1’ to make yum update only update the architectures of
          packages that you have installed. ie: with this enabled yum will not install an  i686  package
          to update an i386 package. Default is ‘1’.

...

          multilib_policy  Can  be set to ’all’ or ’best’. All means install all possible arches for any
          package you want to install. Therefore yum install foo will install foo.i386 and foo.x86_64 on
          x86_64, if it is available. Best means install the best arch for this platform, only.

BTW, multilib_policy = best e exactarch = 1 parecem ser o padrão já há algum tempo.


2

Use a função de exclusão no yum.conf:

exclude=*.i386 *.i686

Ou exclude=*.i?86(/etc/yum.conf). Dessa forma, o yum search nem lista os pacotes de 32 bits.
basic6

1

Ele tentaria instalar a versão i386 se a versão x86_64 já estiver instalada.

Preste atenção que se você usar exclude no yum.conf, poderá excluir os pacotes que estão disponíveis apenas no i386 arch

Uma maneira mais segura seria solicitar explicitamente o arco no momento da instalação :

yum install package.x86_64

0

-x, --exclude = package Exclui um pacote específico por nome ou glob das atualizações em todos os repositórios. Opção de configuração: excluir

--disableexcludes = [all | main | repoid] Desativa as exclusões definidas nos seus arquivos de configuração. Toma uma das três opções: todas == desativar todas as exclusões main == desativar as exclusões definidas em [main] no yum.conf repoid == desativar as exclusões definidas para esse repositório

acima do man você pode usar ou você pode instalar o yumex que fornece a gui u pode escolher o rpm que você precisa instalar.

http://www.yum-extender.org/blog/


Eu sei sobre exclusões, só não quero digitá-las todas as vezes, nem quero criar aliases. Eu simplesmente não acho que instalar o i386 no sistema de 64 bits por padrão seja uma coisa boa.
Nikolai Prokoschenko

nesse caso você escolher gui que melhores opções
Rajat

0

O que funciona para mim é remover todos os pacotes ix86 da máquina. Agora, nunca me pede para instalar nada de 32 bits.

Primeiro configure seu .rpmmacros assim:

cat ~/.rpmmacros
%_query_all_fmt %%{name}-%%{version}-%%{release}.%%{arch}

Em seguida, execute isso (estou assumindo o bash):

rpm -qa | egrep "i.86$"

Isso fornecerá uma lista de rpms não x86_64 atualmente instalados. Você pode remover todos eles com isso:

rpm -e $(rpm -qa | egrep "i.x86$")

Agora você tem um sistema de 64 bits puro.

-Dave


-3

Lista i386

yum list installed | grep i386

E agora você pode removê-lo ou atualizá-lo para x86_64


1
Isso não responde à pergunta.
Sven

Apesar de que possa ser útil para reparar a situação, que não é uma resposta para a questão de como evitar que eles se instalou em primeiro lugar ...
HBruijn
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.