如何告诉 apt 依赖项是手动解决的?

Dev*_*lar 14 package-management apt

假设有一个软件我不想通过 安装apt,而是手动安装。(TeXLive,因为我想使用 2011 版本并且apt只有 2009 版本。)

假设我想通过 安装另一个软件apt,但这取决于第一个软件。(Vim LaTeXSuite,因为在系统范围内手动安装是很痛苦的。)

默认情况下,apt不会“看到”第一个软件,而是继续安装许多不需要和不受欢迎的软件(即 TeXLive 2009)以满足依赖元数据。

我怎样才能:

  • 告诉apt一个给定的包(例如texlive出于所有实际目的而安装的,并且它不应该作为其他包的依赖项安装?

  • 告诉apt安装给定的包(例如vim-latexsuite)而不关心它的依赖关系?

我已经通过各种筛选apt-相关联机手册,以及来到了空,也发现了这个问题,在这个网站,但觉得有要做到这一点不太hackish的方式,不是吗?

(从我的 Gentoo 时代开始,我记得emerge --inject/etc/portage/package.provides,并且基本上正在寻找apt等价物。)

Dan*_*son 13

您应该使用该equivs包生成提供这些依赖项的元包,然后用于dpkg安装这些包。

安装equivs和阅读它的文档应该就足够了,但是这个 Ubuntu 指南非常广泛,应该也适用于其他 APT 系统。


此外,如果您觉得一个包应该能够在没有指定依赖项的情况下安装,您应该针对该包提交一个错误,解释不需要依赖项的情况。

在这种情况下texlive-base-bin至少在基本 Debian 发行版中似乎只是“推荐”而不是“依赖项”(可能部分texlive是因为它是一个如此庞大的包),但是因为在 Debian 上安装上游 TeX Live 是很常见的,因为自从发行版经常落后很多(因为这个包是个野兽,没有大量的工作往往无法打包,这主要是由一个或几个人完成的,他们声称他们生活在 Debian 旁边),equivs技巧经常与 TeX Live 一起使用(哇,这句话失控了:-))。


另外:对于那些希望在软件包系统之外安装 TeXLive 的人的更详细说明,这些关于 TeX.SX 的说明更广泛,并且很可能会继续保持更新。它们还包括有关该equivs步骤的更明确的说明。