易于寻找i386文件,即使体系结构是amd64


15

我正在尝试使用文件存储库在未连接的计算机上更新linux / ubuntu。该计算机的体系结构(uname -a):

x86_64 GNU/Linux

结果为dpkg --printarchitecture

amd64

这是一台Trusty Tahr amd64机器,例如在aptitudesources.list文件中专门说明了这一点。另外,ubuntu中的“关于这台计算机”特别指出该机器是64位的。因此,我在计算机上安装了amd64软件包。但是,当我尝试这样做时apt-get update,会出现以下错误:

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

因此,换句话说,即使它是64位计算机,apt还是莫名其妙地尝试读取i386软件包。为什么这样做,如何使用64位软件包?

请注意,sources.list中没有指定i386的内容。

sources.list文件中唯一未注释的行是:

deb file:///var/spool/apt-mirror-trusty/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse

也许默认情况下在Ubuntu上启用了此多体系结构支持,因为有一些合作伙伴软件提供商(Skype,cof,cof ..)很懒惰,无法在i386和amd64上进行编译。由于需要多体系结构库,dpkg因此默认情况下将其配置为接受amd64及其32位同级。我说“也许”是因为我没有找到与此信息相关的任何官方文档。只是我的2美分。

Answers:


25

在Ubuntu amd64安装中,i386默认情况下启用它作为附加体系结构。apt&co。期望存储库提供所有已配置的体系结构,这会导致您看到的错误。

由于镜像仅包含amd64软件包,因此应将其标记为:

deb [ arch=amd64 ] file:///var/spool/apt-mirror-trusty/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse

确实是问题所在。通过此修复程序,存储库被接受并更新。谢谢。
泰勒·德登

2
dpkg --print-foreign-architectures将显示启用了多体系结构支持的任何体系结构;我遇到了同样的问题,并且(也许并不奇怪)上述命令报告了:i386
sxc731

这并不能解释默认情况下如何禁用其他体系结构。把 [arch=amd64]每一deb行不是一个很好的解决方案。这说明了如何执行此操作:superuser.com/a/714392/376867
midenok '18

2
@midenok我建议在哪里向每个存储库描述符添加一个arch限定符?完全禁止i386处理一个麻烦的存储库实在是太过分了。请注意,如果您有多个存储库导致问题中所述的问题,则表明存储库的“ 架构”字段(而不是本地配置)存在问题。
Stephen Kitt '18

@Stephen Kitt好的,您解决了一个有问题的特定问题。但是您的解决方案不切实际。包括asker和本人在内的大多数人都不想在软件包列表中看到i386软件包。
midenok '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.