如果需要,apt-get 会自动降级吗?

如果需要,apt-get 会自动降级吗?

我仍然支持安装我为 Ubuntu 18.04 构建和分发的自定义软件包 ( kurento-dbg)。它是一个虚拟辅助包,它本身依赖于各种调试包,最重要的是libglib2.0-0-dbgsym(来自Ubuntu ddebs 仓库),但由于所需版本冲突,无法安装此版本:

# apt-get install libglib2.0-0-dbgsym
The following packages have unmet dependencies:
 libglib2.0-0-dbgsym : Depends: libglib2.0-0 (= 2.56.1-2ubuntu1) but 2.56.4-0ubuntu0.18.04.9 is to be installed

我们可以从错误信息中确认严格依赖关系:

# apt show libglib2.0-0-dbgsym
[...]
Depends: libglib2.0-0 (= 2.56.1-2ubuntu1)
[...]

所提到的此依赖项的两个版本(2.56.1 和 2.56.4)均可在存储库中找到:

# apt-cache policy libglib2.0-0
libglib2.0-0:
  Installed: 2.56.4-0ubuntu0.18.04.9
  Candidate: 2.56.4-0ubuntu0.18.04.9
  Version table:
 *** 2.56.4-0ubuntu0.18.04.9 500
        500 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
        500 http://archive.ubuntu.com/ubuntu bionic-security/main amd64 Packages
        100 /var/lib/dpkg/status
     2.56.1-2ubuntu1 500
        500 http://archive.ubuntu.com/ubuntu bionic/main amd64 Packages

手工做一些事情,这是可行的:

# apt-get install libglib2.0-0=2.56.1-2ubuntu1
# apt-get install libglib2.0-0-dbgsym
# apt-get install kurento-dbg

但我不想做包管理器的工作。这些调试包仅用于临时环境中的开发工作站,因此根据需要降级包以符合所需的依赖关系是完全可以的。

什么apt-get install命令咒语能够根据需要降级并实现所请求的包的安装?

dpkg/apt/apt-get 能做这样的事情吗?我不能/不想指示我的用户摆弄他们的系统配置(因此不要编辑文件/etc/apt/preferences.d/以固定或更改优先级),理想情况下不应该要求他们安装默认未安装的额外工具(例如没有资质)。

编辑:这是 Ubuntu 的一个错误,他们发布了新版本的库,但没有更新其 dbgsym 对应版本。我想要的是找到一个安装命令,以便将来能够克服此类上游错误。实际上,资质完全可以做到这一点,它的依赖性解析更好,并且可以建议降级库包以使它们的版本匹配。我只是想避免在我的用户文档中请求额外的工具。

答案1

apt除非您明确要求,否则将拒绝降级已安装的软件包。此外,还apt可以将软件包固定到特定版本,以便保持该版本。

您正在与 Ubuntu 中的核心工具作斗争。我建议在您的软件中找到一个解决方案,让它使用这些库的较新版本,或者不依赖 PPA,而是创建您自己的 PPAtar.gz并包含您想要的库版本。

相关内容