如何欺骗 apt 依赖项?

如何欺骗 apt 依赖项?

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

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

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

答案1

对于您实际提供依赖项的地方,我会使用它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

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

答案2

你应该使用dhmake或 而sudo check install不是sudo make install。这样你就创建了更高版本的 lilypond 的 deb(检查安装也会安装 deb)^^。

如果您仍然有源代码(以及编译后的目标文件/make 文件等),您仍然可以这样做,而不必再次下载。

相关内容