我通过获取源代码安装程序,然后运行`sudo make install`; 如何让’apt-get`了解它?
我通过从源代码构建程序,然后最后调用sudo make install
和sudo ldconfig
安装程序(例如,调用它, progA
)。
但是,似乎apt-get
没有得到备忘录,因为在安装progB
,依赖于progA
, apt-get
建议我也安装progA
。 为什么这样,我该怎么办?
TL; DR 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
来确定它的function -
copy-cat
make install
,* .deb包forms除外 -
从包中安装(完全与
make install
一样,给定第1点))除了让apt-get
知道它,因此只要你选择YES来包含它,就会覆盖所有make install
文件的确切位置。make install
中的文件也放在包的主目录中 – 在checkinstall
过程中有两个选项可以让你选择(显然,选择就在那里,你可以根据具体情况进行操作)
奖励: 你也可以使用make install
一个软件包(再次调用它progA
),这个软件包没有make uninstall
支持 ,按照目前为止概述的checkinstall
流程,然后简单地执行:
dpkg -r progA
三种选择:
-
为
progA
创建一个假包: 如何假装安装的包版本? ( TeXlive有一个广泛的例子) 。 -
为
progA
创建一个包 ,如果它有一个checkinstall
选项更容易: 如何欺骗apt依赖? -
从源头构建
progB
。
我建议使用devscripts
uupdate
并像之前构建的那样构建包。
安装所需的包
$ sudo apt-get install build-essential devscripts
从官方存储库(将使用MediaWiki
作为示例)和上游的新tar-ball下载旧包。
$ mkdir ~/Downloads/mediawiki $ cd ~/Downloads/mediawiki $ apt-get source mediawiki $ wget https://releases.wikimedia.org/mediawiki/1.26/mediawiki-1.26.0.tar.gz
运行uupdate
从上游tar-ball和旧debian/control
创建一个新的源文件夹
$ cd mediawiki-1.19.14+dfsg # depends on your Ubuntu version $ uupdate ../mediawiki-1.26.0.tar.gz 1.26.0 $ cd ../mediawiki-1.26.0
现在您应该检查是否需要更改debian/control
等文件。 如果你已经完成了,你可以构建deb包并安装它
$ dpkg-buildpackage -us -uc $ cd .. $ sudo dpkg -i *.deb