apt procurando arquivos i386, mesmo que a arquitetura seja amd64

15

Estou tentando usar um repositório de arquivos para atualizar o linux / ubuntu em uma máquina não conectada. A arquitetura desta máquina (uname -a):

x86_64 GNU/Linux

Os resultados de dpkg --printarchitecturesão:

amd64

É uma máquina amd64 da Trusty Tahr e diz isso especificamente, por exemplo, no arquivo sources.list do aptitude. Além disso, o "Sobre este computador" no ubuntu diz especificamente que a máquina é de 64 bits. Então, instalei os pacotes amd64 na máquina. No entanto, quando tento fazer apt-get update, obtenho erros como:

W: Failed to fetch file:/var/spool/apt-mirror-trusty/mirror/archive.ubuntu.com/ubuntu/dists/trusty/main/binary-i386/Packages  File not found

Portanto, em outras palavras, mesmo sendo uma máquina de 64 bits, o apt está inexplicavelmente tentando ler os pacotes i386. Por que está fazendo isso e como posso fazê-lo usar os pacotes de 64 bits?

Observe que não há nada no sources.list que especifique i386.

A única linha não comentada no arquivo sources.list é:

deb file:///var/spool/apt-mirror-trusty/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
Tyler Durden
fonte
Talvez esse suporte a multiarch esteja ativado por padrão no Ubuntu porque existem alguns fornecedores de software parceiros (Skype, cof, cof ..) que são preguiçosos o suficiente para não compilar coisas no i386 e no amd64. Como as bibliotecas multiarch serão necessárias, ele dpkgé configurado por padrão para aceitar o amd64 e seu irmão de 32 bits. Digo "talvez" porque não encontrei nenhuma documentação oficial com essas informações. Apenas meus 2 centavos.

Respostas:

25

Nas amd64instalações do Ubuntu , i386é ativado como uma arquitetura adicional por padrão. apt& co. espere que os repositórios forneçam todas as arquiteturas configuradas, o que causa o erro que você está vendo.

Como seu espelho possui apenas amd64pacotes, você deve marcá-lo da seguinte maneira:

deb [ arch=amd64 ] file:///var/spool/apt-mirror-trusty/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
Stephen Kitt
fonte
Esse era realmente o problema. Com essa correção, o repositório foi aceito e atualizado. Obrigado.
Tyler Durden
2
dpkg --print-foreign-architecturesmostrará qualquer arquitetura para a qual o suporte multiarca está ativado; Eu tive o mesmo problema e (provavelmente sem surpresa) o comando acima relatou:i386
sxc731 25/02
Isso não explica como desativar a arquitetura adicional por padrão . Colocar [arch=amd64]em cada deblinha não é uma boa solução. Isso explica como fazê-lo: superuser.com/a/714392/376867
midenok 6/06
2
@midenok Onde sugeri adicionar um qualificador de arco a cada descritor de repositório? Desabilitar completamente i386para lidar com um repositório problemático é um exagero. Observe que se você tiver vários repositórios causando o problema descrito na pergunta, isso indica um problema no campo Arquiteturas dos repositórios , não na configuração local.
Stephen Kitt
@ Stephen Kitt Ok, você resolveu um problema específico descrito em questão. Mas sua solução não é prática. A maioria das pessoas, incluindo asker e eu, não deseja ver os pacotes i386 na lista de pacotes.
midenok