Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
下载软件包和从源代码处编译的区别 在Ubuntu 1404.1中,我试图抓住一些第三方库来链接我的C++项目。从我收集的资料来看,通常有几种获取此类库的方法:_Ubuntu_Apt_Dpkg_Aptitude - Fatal编程技术网

下载软件包和从源代码处编译的区别 在Ubuntu 1404.1中,我试图抓住一些第三方库来链接我的C++项目。从我收集的资料来看,通常有几种获取此类库的方法:

下载软件包和从源代码处编译的区别 在Ubuntu 1404.1中,我试图抓住一些第三方库来链接我的C++项目。从我收集的资料来看,通常有几种获取此类库的方法:,ubuntu,apt,dpkg,aptitude,Ubuntu,Apt,Dpkg,Aptitude,(1) 使用Ubuntu软件中心下载软件包 (2) 使用智能下载软件包 (3) 从存储库(如git)下载源代码并从源代码处编译 (4) 下载包含标题和库的压缩文件夹 我的问题是,与使用(1)或(2)下载相比,如果我使用(3)或(4)下载并安装软件包管理器(Aptitude),会出现什么问题。似乎如果我从源代码处编译,或者直接在压缩文件夹中下载库,那么Aptitude不会意识到这一点。因此,当我随后更新或删除软件包时,是否会出现问题?例如,如果我从源代码处编译,那么我如何能够轻松地删除所有已编译的

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

(2) 使用智能下载软件包

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

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


我的问题是,与使用(1)或(2)下载相比,如果我使用(3)或(4)下载并安装软件包管理器(Aptitude),会出现什么问题。似乎如果我从源代码处编译,或者直接在压缩文件夹中下载库,那么Aptitude不会意识到这一点。因此,当我随后更新或删除软件包时,是否会出现问题?例如,如果我从源代码处编译,那么我如何能够轻松地删除所有已编译的库文件(例如/usr/bin中的文件),而不必手动搜索所有这些目录并查找它们?如果我从Aptitude下载了这个包,那么我可以使用删除整个包(1)和(2)之间没有真正的区别,它们只是同一个包系统的不同接口。我的建议是始终尝试使用包管理器来管理您的软件。 但是,如果找不到适合您的库的软件包,您可以从源代码处自行安装。这意味着您要负责管理它们:更新、删除等。使用/usr/local文件夹安装您的库,并在路径中放置“ln-s”是您的朋友-任何可执行二进制文件/usr/local/bin或其他文件夹。不要使用系统的安装路径,因为这可能会导致以后出现问题。您将能够轻松地删除它们,而不会出现任何复杂情况


这里有一个常见问题:

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

另一方面,如果您正在满足Apt和
dpkg
的依赖关系,那么有一个简单的解决方法:在您喜欢的地方安装二进制文件,并创建一个简单的虚拟包,其唯一目的是满足APTITE和
dpkg
。这个工具就是为了这个目的而创建的,但是从零开始推出自己的包也不难。因此,如果您编译并安装了一些提供
libhorror0
功能的文件,请创建一个虚拟包
libhorror0
,然后安装它,这样Apt就不会拉入上游包来满足任何
依赖的包的依赖性:libhorror0

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

从一个已经在工作的项目中创建一个
.deb
包通常一点也不难;只需在
debian
目录中填充必要的文件(至少是
rules
control
,但通常还有版权声明、变更日志和Debhelper的一些数据文件);有一种工具可以为您完成大部分工作。然后甚至可以向上游提交这个文件,这样任何人都可以直接从上游源构建Debian包