为什么用户必须编译源代码才能在Linux上安装应用程序?

为什么用户必须编译源代码才能在Linux上安装应用程序?

我不明白为什么我们Linux用户必须编译源代码才能安装应用程序?为什么不能像Windows平台那样,一切都准备好作为二进制包呢?

当然,请不要误会我是抱怨脸编译运行。事实上我很喜欢它,它对我练习命令行、加深对编程过程的理解有很大帮助。但我的朋友和家人不这么认为。好吧,他们的观点是他们不是程序员。事实上,我们确实有一些发行版,例如 Ubuntu 及其系列,它们很容易安装应用程序。但并不是互联网上的每个应用程序都能做到这一点,即使在 Ubuntu 或 Mint 上也是如此。

那么,为什么我们必须编译源代码来安装应用程序呢? (如果我能得到关于“编译源代码但不使用二进制包有什么好处?”的额外答案,那就太好了)

答案1

谁说必须的?好吧,我会告诉你有几个发行版需要它,主要是 Linux From Scratch 和 Gentoo。

但 98% 的情况下,我可以通过我的发行版存储库和包管理器,或者从第 3 方存储库(即 Java 的 webupd8te 团队等)获得我想要的东西

为了您的好处 - 您可以编译和定位特定架构(即 i686 与 i486 指令)或包含或删除特定选项。或者您可能希望自己的版本可以做一些特别的事情,因此您获取源代码,进行一些更改,编译并安装。

答案2

正如 @ivanivan 回答的那样,很少有发行版要求您从源代码进行编译(Gentoo 会自动执行该过程)。传统上,首选源代码的主要原因是因为 Unix 系统(System)之间存在 Unix 风格和架构的巨大差异。 V 与 BSD,或 MIPS 与 Intel 为例),但我必须从头开始编译的最大原因是当我想要安装的程序未包含在存储库中或者有补丁可以修复某些内容或添加一个特定的功能。

即使程序不在存储库中,也经常.deb.rpm可以在大多数发行版上下载和安装某些软件包:这是 Java 的一个示例。然后,发行版将完成跟踪依赖项的艰苦工作(并在必要时更新它们)。在 Linux 和 Windows 中安装这些软件包的主要区别在于,安装程序通常与 Linux 中的软件包分开,并且在功能上是独立的。 Windows(即使他们使用 Windows 安装系统;MSI 安装程序直接使用 Windows 的安装程序。)

相关内容