问题描述
我通过从源代码构建程序,然后最终调用sudo make install
和sudo ldconfig
来安装程序(例如,调用它,例如,progA
)。
但是,似乎apt-get
还没有得到备忘录,因为在安装依赖于progA
的progB
时,apt-get
建议我也安装progA
。为什么这样,我该怎么办?
最佳解决方案
长话短说 checkinstall
是你的朋友;)
sudo apt-get install checkinstall
使用sudo make install
安装后,包管理器对此安装一无所知。但它知道Ubuntu存储库或PPA中具有相同名称的包的所有内容。
使用sudo checkinstall
而不是sudo make install
并使用更高版本作为存储库中的版本,以确保您的包管理器接受此版本作为ProgB
的正确依赖项。
更多的信息:
checkinstall
真的很漂亮,因为它遵循make install
命令所做的,以便弄清楚如何构建一个包。
这意味着如果您使用make install
安装程序,但是想要为您的罪悔改,那么您所要做的就是sudo checkinstall -D make install
,该命令将:
-
按照
make install
来弄清楚它的作用 -
copy-cat
make install
,* .deb包装形式除外 -
从包中安装(与
make install
一样,给定第1点))除了让apt-get
知道它,因此只要你选择YES包括make install
放置的文件,就会覆盖make install
所放置的所有文件。在包中的主目录中 – 在checkinstall
过程中的几个选项将允许您选择(显然,选择就在那里,因此您可以在case-to-case的基础上进行操作)
额外奖励:您还可以使用make install
删除已安装的软件包(再次称为progA
),该软件包没有make uninstall
支持,遵循到目前为止概述的checkinstall
流程,然后简单地执行:
dpkg -r progA
次佳解决方案
三种选择:
-
为
progA
创建一个假包:How to fake a package version installed?(有一个extensive example for TeXlive)。 -
为
progA
创建一个包,如果它有一个checkinstall
选项则更容易:如何欺骗apt依赖? -
从源头构建
progB
。