0

在 Ubuntu 14.04.1 中,我试图获取一些第三方库来链接我的 C++ 项目。从我收集的资料来看,一般有几种获取此类库的方法:

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

(2) 使用 Aptitude 下载包,

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

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

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

4

2 回答 2

0

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

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

于 2014-10-23T10:10:28.960 回答
0

如果你没有任何依赖问题(即你没有应该链接到你自己编译的库的包),那么 Aptitude 不知道你有什么真的不是问题。

另一方面,如果您要满足 Apt 和 的依赖项dpkg,则有一个简单的解决方法:在您喜欢的位置安装二进制文件,并创建一个简单的虚拟包,其唯一目的是满足 Aptitude 和dpkg. 该equivs工具是为此目的而创建的,但是从头开始创建自己的包也并不难。因此,如果您编译并安装了一些libhorror0提供.libhorror0Depends: libhorror0

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

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

于 2014-10-23T10:11:24.987 回答