apt recherche de fichiers i386, même si l'architecture est amd64

15

J'essaie d'utiliser un référentiel de fichiers pour mettre à jour linux / ubuntu sur une machine non connectée. L'architecture de cette machine (uname -a):

x86_64 GNU/Linux

Les résultats de dpkg --printarchitecturesont:

amd64

Il s'agit d'une machine Trusty Tahr amd64, et elle le dit spécifiquement, par exemple, dans le fichier aptitude sources.list. En outre, la section "À propos de cet ordinateur" dans ubuntu indique spécifiquement que la machine est 64 bits. J'ai donc installé les packages amd64 sur la machine. Cependant, lorsque j'essaie de le faire apt-get update, j'obtiens des erreurs telles que:

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

En d'autres termes, même s'il s'agit d'une machine 64 bits, apt essaie inexplicablement de lire les packages i386. Pourquoi fait-il cela et comment puis-je lui faire utiliser les packages 64 bits?

Notez qu'il n'y a rien dans sources.list qui spécifie i386.

La seule ligne non commentée dans le fichier sources.list est:

deb file:///var/spool/apt-mirror-trusty/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
Tyler Durden
la source
Peut-être que cette prise en charge multiarchitecture est activée par défaut sur Ubuntu car il existe certains fournisseurs de logiciels partenaires (Skype, cof, cof ..) qui sont assez paresseux pour ne pas compiler les choses sur i386 et amd64. Étant donné que les bibliothèques multiarchives seront nécessaires, il dpkgest configuré par défaut pour accepter amd64 et son frère 32 bits. Je dis "peut-être" car je n'ai trouvé aucune documentation officielle avec ces informations. Juste mes 2 cents.

Réponses:

25

Sur les amd64installations Ubuntu , i386est activé comme architecture supplémentaire par défaut. apt& co. attendez-vous à ce que les référentiels fournissent toutes les architectures configurées, ce qui provoque l'erreur que vous voyez.

Puisque votre miroir n'a que des amd64packages, vous devez le marquer comme tel:

deb [ arch=amd64 ] file:///var/spool/apt-mirror-trusty/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
Stephen Kitt
la source
C'était bien là le problème. Avec ce correctif, le référentiel a été accepté et mis à jour. Merci.
Tyler Durden
2
dpkg --print-foreign-architecturesmontrera toute architecture pour laquelle la prise en charge multiarchitecture est activée; J'ai eu le même problème et (probablement sans surprise) la commande ci-dessus a signalé:i386
sxc731
Cela n'explique pas comment désactiver une architecture supplémentaire par défaut . Mettre [arch=amd64]à chaque debligne n'est pas une bonne solution. Cela explique comment le faire: superuser.com/a/714392/376867
midenok
2
@midenok Où ai-je suggéré d'ajouter un qualificatif arch à chaque descripteur de référentiel? Désactiver complètement i386pour gérer un référentiel gênant est plutôt exagéré. Notez que si plusieurs référentiels provoquent le problème décrit dans la question, cela indique un problème avec le champ Architectures des référentiels , pas avec la configuration locale.
Stephen Kitt
@Stephen Kitt D'accord, vous avez résolu un problème particulier décrit en question. Mais votre solution n'est pas pratique. La plupart des gens, y compris le demandeur et moi-même, ne veulent pas voir les packages i386 dans la liste des packages.
midenok