apt:当可通过sources.list获得新版本的软件包时,为什么要安装旧版本的软件包?

apt:当可通过sources.list获得新版本的软件包时,为什么要安装旧版本的软件包?

我重新表演了一次。干净启动 liveISO。它表明从文件中删除条目/etc/apt/preferences.d

Package: *
Pin: release o=linuxmint,c=upstream
Pin-Priority: 700

改变结果。因此,即使从/etc/apt/preferences.d结果中删除首选项文件后,一些额外的因素仍然影响了我的初始结果。我想挖掘更多,但不知道在哪里。

长话短说

有问题的包没有依赖项(根据deb方案的 /lib/apt/lists 中的文件内容和dpkg -I本地file方案 deb 文件的文件内容)。两者的架构相同,来源相同,部分相同。

截至目前,我已经在/etc/apt/preferences.d/中找到了 pin 首选项/etc/apt/preferences,可以“make”apt来选择要安装的旧版本,但是我已经删除了这些文件(也没有/etc/apt/apt.conf),以防apt-get update万一,仍然会同样获取旧版本。还有什么可以尝试的?也许有一些APT命令可以重新读取预引用?

APT::Default-Release空(应该是 no /etc/apt/apt.conf,对吗?)。

本地存档没有Release文件(我没有使用过apt-securefile方案标记为trusted

截至我目前的进展和man apt_preferences结果apt-get install仍然令人费解。

操作:

网络搜索帮助我仅获取相关链接添加的存储库之间是否存在某种搜索顺序?,其中说明有关顺序的信息相同的版本。

我正在学习设置 Debian 存档,我浏览了手册页apt, apt-get, apt.conf, sources.list。没有看到有关订单的信息超过上面 QA 链接中提到的信息。

我的脚步。我已经完成了,apt-get update等等。我已经将文件从liveISO 启动的 PC 复制到,设置了 Debian 存档,并且在第二台上一直在做等等。apt-get install -d package1package2debapt cacheapt-get install package1

当我完全删除源代码并仅将本地file方案行写入/etc/apt/sources.list(后跟apt-get update)时,所有十多个软件包都已从本地成功安装。

但是,当我在原始 方案仍然存在的情况下添加与本地file方案相同的行时,对于一个软件包(上面段落中提到的软件包之一),我注意到 apt 尝试从方案下载并安装版本,即使它的数量较小。由于我最近从与 liveISO 源相同的档案中下载了文件,我认为较少的数字确实意味着旧版本。/etc/apt/sources.listdeb/etc/apt/sources.list.ddebdebdeb

apt-get优先考虑旧版本的原因可能是什么?

答案1

一般来说,许多包是相互依赖的(意味着它们依赖于其他单独的包),例如 package“A”取决于“B”和“C”。有时,包(例如“B”)的更新方式可能会破坏依赖于它的包之一(例如“A”)。在所有依赖包自行更新以适应其依赖项中的更改之前,您可能不想更新依赖项。

在这个例子中,如果“A”取决于“B”和“C”,但“B”以破坏“A”的方式更新(例如,如果其中一个方法更改为需要额外参数),则直到“A”更新为与新版本的“B”一起使用,那么B需要冻结到旧版本以避免破坏“A”。

这些依赖链可能会变得非常复杂,这也是为什么需要像 apt 这样的花哨的依赖管理系统,以及像 Anaconda 这样的虚拟环境,允许整个相互不兼容的依赖子集共存。

相关内容