下载程序包和从源代码编译之间的区别

时间:2014-10-23 09:56:08

标签: ubuntu apt dpkg aptitude

在Ubuntu 14.04.1中,我试图抓住一些第三方库来链接我的C ++项目。根据我收集的内容,通常有几种获取此类库的方法:

(1)使用Ubuntu软件中心下载软件包,

(2)使用Aptitude下载包,

(3)从存储库(例如git)下载源代码并从源代码编译

(4)下载包含标题和库的压缩文件夹。

我的问题是,如果我使用(3)或(4)下载和安装与使用(1)或(2)下载相比,包管理器(Aptitude)会出现什么问题。似乎如果我从源代码编译,或直接在压缩文件夹中下载库,那么Aptitude就不会意识到这一点。因此,当我随后更新或删除包裹时会出现问题吗?例如,如果我从源代码编译,那么如何轻松删除所有已编译的库文件(例如/ usr / bin中的文件),而无需手动搜索所有这些目录并查找它们?如果我从Aptitude下载了包,那么我可以使用

删除整个包

2 个答案:

答案 0 :(得分:0)

在(1)和(2)之间没有真正的区别,它们只是同一包装系统的不同接口。我的建议是始终尝试使用包管理器来管理您的软件。 但是,如果找不到合适的库包,可以从源代码自行安装。这意味着您负责管理它们:更新,删除等。使用/ usr / local文件夹安装库并放置 - " ln -s"是你的朋友 - 路径中的任何可执行二进制文件/ usr / local / bin或其他文件夹。请勿使用系统的安装路径,因为这可能会导致以后出现问题。您可以轻松删除它们而不会出现任何复杂情况。

这里有一个常见问题:https://help.ubuntu.com/community/CompilingEasyHowTo

答案 1 :(得分:0)

如果您没有任何依赖性问题(即您没有应该链接到您自己编译的图书馆的软件包),那么Aptitude并不是一个问题。知道你有什么。

另一方面,如果你正在实现Apt和dpkg的依赖,那么有一个简单的解决方法:在你喜欢的地方安装你的二进制文件,并创建一个简单的虚拟包,其唯一目的是满足Aptitude和dpkgequivs工具是为此目的而创建的,但从头开始推送自己的软件包并不难。因此,如果您编译并安装了一些提供libhorror0功能的文件,请创建一个虚拟包libhorror0并安装它,以便Apt不会拉入上游包以满足依赖性任何包Depends: libhorror0

最后,最好的选择可能是实际进行最后一次尝试并实际创建项目的正确本地.deb包并在本地安装。请注意使用高于上游存储库的官方当前版本的版本号,但低于下一个正式版本。 Debian策略批准的一个常见约定是在版本号上加~suffix2(其中2表示您的第二个版本;下一个版本应为~suffix3,依此类推)。因此,如果上游为libhorror0-1.23-4,那么您的第二次构建应为libhorror0-1.23-4~karnivaurus2(或者如果没有上游Debian软件包,请使用libhorror0-1.23-0~karnivaurus2)。

从已经工作的项目创建.deb包通常不是很难;只需使用必要的文件填充debian目录(最低rulescontrol,但通常还有版权声明和更改日志以及Debhelper的一些数据文件);有一个工具dh_make可以为您完成大部分工作。也许然后甚至提交上游,以便任何人都可以直接从上游源构建Debian软件包。