我progA
通过从源代码构建程序来安装程序(例如,调用它),然后最终调用sudo make install
和sudo ldconfig
。
但是,似乎apt-get
还没有备忘,因为在安装时progB
,取决于progA
,apt-get
建议我也安装progA
。为什么会这样,我该怎么办?
我progA
通过从源代码构建程序来安装程序(例如,调用它),然后最终调用sudo make install
和sudo ldconfig
。
但是,似乎apt-get
还没有备忘,因为在安装时progB
,取决于progA
,apt-get
建议我也安装progA
。为什么会这样,我该怎么办?
Answers:
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
弄清楚它的作用
复制猫make install
,但* .deb软件包形式除外
从软件包中进行安装(与make install
给定的1点完全一样),也要对其进行apt-get
了解,从而覆盖所有文件make install
,只要您选择YES即可将所有文件放置make install
在主目录中,也包含在软件包中-在此checkinstall
过程中有几个选项可以让您选择(很显然,这里有选择,因此您可以根据情况进行选择)
奖励: 您也可以progA
make install
make uninstall
按照checkinstall
到目前为止概述的过程,删除使用没有支持的ode 安装的软件包(再次调用它),然后简单地执行以下操作:
dpkg -r progA
三种选择:
为以下项目创建伪造的软件包progA
:如何伪造安装的软件包版本?(TeXlive有一个广泛的示例)。
创建一个包了progA
,如果它有一个更简单checkinstall
的选择:如何欺骗贴切的依赖?
也可以progB
从源代码构建。
progA
编译的apt-get
版本并安装该版本。5. apt-get
在已编译的版本上安装该软件包,并希望它是最好的。
我建议使用uupdate
from devscripts
并像以前一样构建软件包。
安装所需的软件包
$ 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和旧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
etc文件进行更改。完成后,您可以构建并安装deb软件包
$ dpkg-buildpackage -us -uc
$ cd ..
$ sudo dpkg -i *.deb
progB
手动安装...