如何欺骗 apt 依赖项?

FUZ*_*xxl 7 package-management dpkg dependencies metapackages equivs

可能的重复:
如何创建一个自动安装其他包的元包?

我想使用 Frescobaldi(Lilypond 的编辑器),但是官方存储库中 lilypond 的打包版本(2.12.3;lilypond 就像记分表的 TeX)有点旧,因为我想使用一些全新的功能。所以我只是克隆了他们的 git repo 并从那里安装了它。

现在我的问题是,我怎么能告诉 apt,我手动满足了对 lilypond 的依赖,这样它就不会尝试安装另一个副本?

Oli*_*Oli 11

对于您实际提供依赖项的位置,我会checkinstall用来进行安装。checkinstall基本上替换make install并生成一个合适的 .deb 包,然后安装它。这不仅允许您以更好的方式删除或升级包(当时机成熟时),它还满足其他应用程序的依赖关系。

另一种方法是编写一个不提供任何文件但声称提供您想要的任何文件的小虚拟包。我能看到的最简单的方法是使用一个名为 的应用程序equivs

sudo apt-get install equivs
equivs-control lilypond

# edit your fake package so it has the right versions, names, description, etc
nano lilypond

equivs-build lilypond
sudo dpkg -i lilypond-dummy*.deb
Run Code Online (Sandbox Code Playgroud)

还有第三种方法很简单但可能有害:只需从标准存储库安装它,然后用您生成的文件替换它的文件。锁定包的版本,这样它就不会升级。这有可能出错,因此只有在您不能checkinstall或以其他方式先伪造包裹时才这样做。