今天我终于猜到了为什么当我尝试安装一组下载了依赖项的 debian 软件包时,例如apt-get install --download-only --assume-yes libssl-dev
即使 dpkg 状态文件为空(很多 deb 文件),仍然在安装时我曾经(今天再次)无法安装:apt-get install path/*.deb
printed The following additional packages will be installed: libssl1.1:i386
。(我已经尝试寻求帮助来描述结果,但这些问题的目的是因为我知道理解不正确的原因):apt 如何跟踪 BUILD(源)依赖项?和https://stackoverflow.com/questions/70491862/how-to-list-download-the-recursive-build-dependencies-of-a-debian-package
我的猜测是libssl1.1
这里安装了 i386 架构的软件包(我签入了状态文件 - 它是:Status: install ok installed
对于两者amd64
和i386
)。因此,在安装时libssl1.1
apt-get
尝试libssl1.1
为该软件包的所有已安装架构升级它。但是,当在一个系统上下载时,除了在命令行上请求的包之外,没有其他架构的包时,apt-get
只会下载一个架构。
是否有任何选项可以仅为一种架构安装软件包和依赖项?如果只有一个架构发生变化,我看不出它会如何破坏系统。(或者下载所有可用架构的依赖项)?
man apt-get:
--arch-only
Only process architecture-dependent build-dependencies. Configuration Item:
APT::Get::Arch-Only.
然而:
sudo apt-get install --download-only --assume-yes --arch-only libssl-dev
E: Command line option --arch-only is not understood in combination with the other options
允许为多个架构安装的软件包共享文件,但这些文件必须严格相同。为避免此要求出现问题,此类包必须保持同步,因此如果为多个体系结构安装了一个包,则不可能只为一个体系结构升级一个包。
为了避免从初始下载的软件包集中安装不需要的软件包,您可以在提供要安装的软件包列表时更加具体。例如
只会安装
amd64
与体系结构无关的软件包。要为所有启用的架构下载包,请遍历它们: