我想知道:在安装某些文件时,有一种简单的方法可以双击安装可执行文件,而另一方面,有一种从源代码构建可执行文件的方法。
后者,下载一个源代码包,真的很麻烦。
但是,这两种方法的根本区别是什么呢?
发布于 2014-08-27 05:55:07
源文件包含开发人员用他/她选择的任何语言(C、C++、Python等)编写的原始代码,并且是通用的。它不特定于任何发行版,在许多情况下也不适用于任何操作系统。
包(例如,RPM或DEB )是为特定发行版预先准备的二进制可执行文件(或解释脚本等)。编写编译源代码(添加任何必要的补丁等)、实际编译、创建发行版特定配置文件、创建预安装脚本和安装后脚本等任务都是由包维护人员为您完成的。
换句话说,所有的驴子工作都是在一个包中为您完成的,而如果您选择从源代码安装,则需要自己完成。
几乎在所有情况下,使用包都要容易得多,如下所示:
但是,有时打包版本是旧版本,甚至更糟的是,没有打包版本;在这种情况下,您唯一的选择是自己编译。如果你这样做了,你需要考虑以下几点:
dev
包--它们可能有很多。如果您愿意付出额外的努力,那么从源代码编译可能会给您带来以下好处:
请注意,一些发行版的预构建包提供了可以安装和运行的二进制可执行文件(RPM和DEB就是例子),而其他发行版则提供了简单自动化编译过程的包。
Gentoo的ebuilds
就是一个例子--这个包基本上是对包管理器的说明,描述了如何编译和安装可执行文件。这具有传统包管理器的许多优点(自动更新、卸载等),同时仍然允许用户根据自己的喜好优化编译过程。
Arch有一个打包系统,主流包是二进制包,而系统上使用PKGBUILD
文件编译了许多额外的包。
发布于 2014-08-27 08:48:37
除了其他答案外,我还想补充一点:
如果你决定自己编译一个程序,你需要认为编译并不是你只做一次的事情。您可能需要订阅您决定编译的应用程序的开发邮件列表,并及时更新新版本,特别是安全更新。
每次更新应用程序时,您都必须重新编译新版本,因此,请记住,您每周都要节省一些时间。
如果你负担不起,最好让包维护人员为你做这份工作。
发布于 2014-08-27 12:42:26
源生成允许精确地指定计算机的体系结构。新CPU提供了编译器理解的附加指令,从而压缩了一些性能。预构建包通常依赖于最古老的CPU,而这些CPU仍然是常用的.
这对于大量使用CPU的项目关键应用程序来说是非常重要的,例如生物信息管道工具或地球物理建模工具。这样的软件运行在一个非常受控的环境中,不具备单独的访问控制功能,因此很少有安全漏洞如此紧急,以至于它们必须在几天或几小时内修复。几乎从来不需要在一台最初未知架构的不同机器上运行。
是的,我知道,计算机现在非常快,你所做的任何努力或行动都是非常昂贵的,但在第三天坐着等待你的程序完成(这就是我所说的情况),这样的真理开始看起来有问题。
不同的是,像浏览器之类的应用程序应该从维护人员存储库(而不是从一些下载的预构建包中)更好地使用,因为保持它们的最新是非常重要的。
https://unix.stackexchange.com/questions/152346
复制相似问题