首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从源代码构建和使用安装包有什么区别?

从源代码构建和使用安装包有什么区别?
EN

Unix & Linux用户
提问于 2014-08-27 05:21:05
回答 4查看 67.7K关注 0票数 66

我想知道:在安装某些文件时,有一种简单的方法可以双击安装可执行文件,而另一方面,有一种从源代码构建可执行文件的方法。

后者,下载一个源代码包,真的很麻烦。

但是,这两种方法的根本区别是什么呢?

EN

回答 4

Unix & Linux用户

发布于 2014-08-27 05:55:07

源文件包含开发人员用他/她选择的任何语言(C、C++、Python等)编写的原始代码,并且是通用的。它不特定于任何发行版,在许多情况下也不适用于任何操作系统。

包(例如,RPM或DEB )是为特定发行版预先准备的二进制可执行文件(或解释脚本等)。编写编译源代码(添加任何必要的补丁等)、实际编译、创建发行版特定配置文件、创建预安装脚本和安装后脚本等任务都是由包维护人员为您完成的。

换句话说,所有的驴子工作都是在一个包中为您完成的,而如果您选择从源代码安装,则需要自己完成。

几乎在所有情况下,使用包都要容易得多,如下所示:

  • 它们安装起来容易得多
  • 它们是专门为您的发行版设计的。
  • 它们有时由包维护人员修补以修复发行版特定的错误。
  • 包管理器将卸载它们。
  • 包管理器将为您管理所有依赖项。
  • 包管理器将负责更新。
  • 您不需要在系统上安装开发工具(编译器、make等)

但是,有时打包版本是旧版本,甚至更糟的是,没有打包版本;在这种情况下,您唯一的选择是自己编译。如果你这样做了,你需要考虑以下几点:

  • 您需要在系统上安装所有的开发工具
  • 您将负责检查更新和重新编译。
  • 您需要确保安装了所有的依赖项,包括dev包--它们可能有很多。
  • 如果发行版上的问题不能按预期工作,则可能需要调试问题。

如果您愿意付出额外的努力,那么从源代码编译可能会给您带来以下好处:

  • 访问最新可用版本
  • 优化编译过程以提高性能/稳定性的选择
  • 享受吧!

请注意,一些发行版的预构建包提供了可以安装和运行的二进制可执行文件(RPM和DEB就是例子),而其他发行版则提供了简单自动化编译过程的包。

Gentoo的ebuilds就是一个例子--这个包基本上是对包管理器的说明,描述了如何编译和安装可执行文件。这具有传统包管理器的许多优点(自动更新、卸载等),同时仍然允许用户根据自己的喜好优化编译过程。

Arch有一个打包系统,主流包是二进制包,而系统上使用PKGBUILD文件编译了许多额外的包。

票数 37
EN

Unix & Linux用户

发布于 2014-08-27 08:48:37

除了其他答案外,我还想补充一点:

如果你决定自己编译一个程序,你需要认为编译并不是你只做一次的事情。您可能需要订阅您决定编译的应用程序的开发邮件列表,并及时更新新版本,特别是安全更新。

每次更新应用程序时,您都必须重新编译新版本,因此,请记住,您每周都要节省一些时间。

如果你负担不起,最好让包维护人员为你做这份工作。

票数 25
EN

Unix & Linux用户

发布于 2014-08-27 12:42:26

源生成允许精确地指定计算机的体系结构。新CPU提供了编译器理解的附加指令,从而压缩了一些性能。预构建包通常依赖于最古老的CPU,而这些CPU仍然是常用的.

这对于大量使用CPU的项目关键应用程序来说是非常重要的,例如生物信息管道工具或地球物理建模工具。这样的软件运行在一个非常受控的环境中,不具备单独的访问控制功能,因此很少有安全漏洞如此紧急,以至于它们必须在几天或几小时内修复。几乎从来不需要在一台最初未知架构的不同机器上运行。

是的,我知道,计算机现在非常快,你所做的任何努力或行动都是非常昂贵的,但在第三天坐着等待你的程序完成(这就是我所说的情况),这样的真理开始看起来有问题。

不同的是,像浏览器之类的应用程序应该从维护人员存储库(而不是从一些下载的预构建包中)更好地使用,因为保持它们的最新是非常重要的。

票数 8
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/152346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档