Answers:
所有软件都是程序,也称为源程序包。因此,需要首先构建所有源软件包,然后才能在您的系统上运行。
二进制软件包是已经由某人从源代码构建的软件包,该软件包具有软件中提供的常规功能和参数,因此大量用户可以安装和使用它。
二进制软件包易于安装。
但是可能没有上游软件包中的所有选项。
因此,要从源代码安装,您需要自己构建源代码。这意味着您需要自己照顾依赖性。另外,您还需要了解软件包的所有功能,以便可以相应地构建它。
从源安装的优点:
简而言之,从源代码进行安装可为您提供繁重的自定义选项,同时需要花费很多精力,而从二进制文件进行安装则更为容易,但您可能无法根据需要进行自定义。
更新:在下面的注释中添加与安全性有关的参数。是的,从二进制安装时确实没有源代码的完整性。但这取决于您从何处获取二进制文件。有很多值得信赖的资源,您可以从中获取任何新项目的二进制文件,唯一的缺点是time。更新的二进制文件或什至一个新项目可能需要一些时间才能出现在我们的受信任存储库中。
源文件包含开发人员以他/她选择的任何语言(C,C ++,Python等)编写的原始代码,并且具有通用性。它不特定于任何发行版,在许多情况下也不特定于任何操作系统。
软件包(例如RPM或DEB)是为特定发行版预先准备的二进制可执行文件(或解释的脚本等)。包维护人员将为您准备编译源(添加任何必要的补丁程序等),实际编译,创建发行版特定的配置文件,创建安装前和安装后脚本等任务。
换句话说,所有驴工作都已在软件包中完成,而如果您选择从源代码安装,则需要自己完成。
在几乎所有情况下,使用软件包都更加容易,因为:
但是,有时打包版本是旧版本,甚至更糟,没有打包版本。在这种情况下,唯一的选择就是编译自己。如果这样做,则需要考虑以下事项:
dev
软件包-其中可能有很多。如果您愿意付出额外的努力,那么从源代码进行编译可能会给您带来以下好处:
请注意,尽管某些发行版的预编译软件包提供了可以安装和运行的二进制可执行文件(例如RPM和DEB),但其他发行版提供的软件包却可以使编译过程自动化。
Gentoo ebuilds
就是一个例子-软件包基本上是给软件包管理器的说明,描述了如何编译和安装可执行文件。这具有传统软件包管理器的许多优点(自动更新,卸载等),同时仍允许用户根据自己的喜好优化编译过程。
Arch Linux有一个打包系统,其中主流软件包是二进制的,而许多额外的软件包是使用PKGBUILD
文件在系统上编译的。
从源头构建可以指定您计算机的确切体系结构。新CPU具有编译器确实能够理解的其他指令,从而降低了性能。预先构建的软件包通常依靠仍旧使用的最古老的CPU。
对于大量使用CPU的项目关键型应用程序(例如生物信息管道工具或地球物理建模工具),这最重要。这样的软件在非常受控的环境中运行,没有单独的访问控制,因此很少有紧急的安全漏洞,因此必须在数天或数小时内对其进行修补。它几乎不需要在最初具有未知体系结构的其他计算机上运行。
是的,我知道,计算机现在非常非常快,您所做的任何努力或动作都非常非常非常昂贵,但是在等待并等待程序完成的第三天(我正在谈论的是这种情况)开始看起来有问题。
不同的是,应从维护者存储库(而不是从某些下载的预构建包)中更好地使用诸如浏览器之类的应用程序,因为使它们保持最新非常重要。
一种获得两全其美的方法(最新软件,简单的安装/卸载,结合大多数发行版的调整和改编,可以针对本地需求进行优化),而成本(必须保持最新,自己注意错误)和最后一刻的补丁程序,紧随开发之后,就bug修复和版本之间的不兼容性而言,您只能靠自己来解决)(很多),是从发行版的源程序包开始构建自己的程序包。是的,这不仅仅是构建和安装。