从源代码编译还是从.deb软件包安装更好?


18

有时,当从Internet下载软件时,我发现有一个.deb软件包可用于我的Debian / Ubuntu和一个待编译的tarball。一开始,我只是为了易于安装而使用该软件包,甚至都不敢尝试编译。即使是声音,也让我有些害怕。但是,如今,当我可以选择时,有时会陷入困境:与.deb软件包相比,从源代码进行编译是否有不受欢迎的优势?我希望在这里找到答案,谢谢。

Answers:


24

从源代码进行编译的好处是,您可以使用标准标志Ubuntu软件包中可能缺少/禁用的某些标志/选项来编译软件包。同样,它使安装同一程序的多个版本变得容易。另外,您可以选择一个确切版本的软件包,该软件包可能已经从Ubuntu存储库中删除或不存在(例如:/ opt /目录中有多个Python 2.4.x版本,因为我需要它运行一些旧版本)软件)。

从源代码进行编译的缺点是,除非先构建.deb然后再安装它,否则正常的“ ./configure; make; sudo make install”过程会使Ubuntu的软件包管理器完全不了解所做的更改,因此您'不会获得任何手动编译软件的更新;如果您不小心将软件包安装在单独的位置,则软件包管理器可能会在以后覆盖/破坏您的软件包。

简而言之:始终考虑首先从标准Ubuntu存储库安装,接下来考虑安装.deb。仅当您确切知道为什么需要这样做时,才从源代码进行编译。


我也读过,在编译时,软件包的性能可能会有所不同,与当前内核的兼容性更好。没有亲自进行基准测试。
Fedir RYKHTIK '07年

@Fedir:我不确定内核是否与此有关,而是处理器架构-例如,在过去,许多发行版都包含使用80386指令集编译的软件包,以实现最大兼容性,同时手动为Pentium编译程序将使它成为可能使用更有效的说明。因此,存在整个发行版,例如Gentoo,它们是从主机上的源代码编译的。但是,这种差异通常很小,只能在非常特定的应用程序中注意到。
谢尔盖(Sergey)2012年

1
请注意,使用checkinstall代替make install可以缓解许多上述缺点。请参阅help.ubuntu.com/community/CompilingEasyHowTo
ndemou 2016年

1
很抱歉,@ EliahKagan非常挑剔,但是virtualenv很棒,但是它可以用于维护安装了不同库的多个Python 环境。如果您想要特定版本的Python,也许需要使用特定设置进行编译-您仍然需要从.deb或从头开始编译实际的二进制文件。
谢尔盖(Sergey)

@Sergey你是对的。(而且我看不到您在说些挑剔的话-如果有什么话我应该为我的错误和误导性评论道歉!)据我了解,类似的软件包管理器conda会自动创建虚拟环境并为其安装不同的Python安装,创建和维护每个项目的版本。但是正如您所说的,virtualenv本身不会这样做。
伊利亚·卡根

1

我只是在昨天才争论这个问题。我认为不构建任何易碎的东西非常重要,因为众所周知,没有任何最新信息和良好的文档资料,尤其是当您使用易碎的系统时,将没有时间扑朔迷离并撰写本文。文档,并且在所有内容都很强大的地方,并不需要那么多文档。因此,永远不要从源代码进行编译,寻找其他解决方案,使用其他软件,更改体系结构,但不要使用在更新后会损坏的内容。是的,它与内核版本无关,它与您的计算机的体系结构有关,如今,您几乎无法从源代码进行编译,而我敢打赌,您将一无所获。


0

安装.deb无疑会容易得多,尽管如果可以的话,最好的选择是在一个repo或ppa中找到它,以便为您提供更新。

AFAIK除非您计划首先对其进行修改,否则自己进行编译没有任何真正的好处。如果您只想按原样安装该软件,请安装.deb

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.