我喜欢(方式)Linux & Co. 如何让用户从不同的存储库安装许多包。AFAIK,它们也带有源包,所以你可以自己编译它们。
但是,当您可以自己编译它们时,为什么还要费心“保留/提供”预编译的包呢?保留/提供它们的目的是什么?
是否可以配置 Linux,只下载源包,让操作系统完成其余的工作?(就像预编译的包安装一样?)
谢谢您的回答。
我喜欢(方式)Linux & Co. 如何让用户从不同的存储库安装许多包。AFAIK,它们也带有源包,所以你可以自己编译它们。
但是,当您可以自己编译它们时,为什么还要费心“保留/提供”预编译的包呢?保留/提供它们的目的是什么?
是否可以配置 Linux,只下载源包,让操作系统完成其余的工作?(就像预编译的包安装一样?)
谢谢您的回答。
这是一个折衷方案:提供预构建包的发行版花时间构建它们一次(在它们支持的所有配置中),然后它们的用户可以安装它们而无需花费时间来构建它们。用户按原样接受发行版的二进制文件。如果您考虑一些较大发行版的软件包安装数量,则不需要到处重新编译所节省的时间是相当可观的。
有一些发行版提供源代码和构建它所需的基础设施,并依赖用户在本地构建一切;参见例如Gentoo。这允许用户准确控制他们的包是如何构建的。
如果你走这条路,即使通过简化包构建可以节省时间,你也应该准备好花费大量时间来构建包。我不维护 Debian 中最复杂的软件包,但我的一个软件包需要两个多小时才能在 64 位 x86 构建器上构建,而在较慢的架构上则需要超过 12 个小时!
你暗示所有人都有足够的 CPU/RAM/存储/时间/知识来编译包。不,不是这样,相反是正确的,绝对大多数人不想等待例如几个小时来编译一些东西。Raspberry Pi 上的 Firefox 编译可能需要数周时间。这个可以吗?没有。
第二个原因是 Linux 发行版在受控的无恶意软件的正常运行环境中构建软件包,这对最终用户无法保证。
最终发行版的所有用户都运行完全相同的代码,这有助于报告错误和调试,这对于决定自己编译软件的用户来说可能并非如此。
许多现代 Linux 发行版支持安全启动,这需要使用无法在最终用户之间分发的密钥对包进行签名,因为这意味着您的信任链完全被破坏。
欢迎您在 Arch Linux 中使用 Gentoo、LFS 或 AUR 存储库构建一切。实际上软件包可以在大多数发行版中编译,但以上三个是在考虑编译的情况下创建的。
简单的经济学。编译整个发行版的软件包需要数周时间,即使是在大型集群上,也会消耗大量能源并产生大量热量。
只做一次而不是一遍又一遍地为每个用户一遍又一遍地做这件事很有意义。
它还极大地增加了基本安装的大小和复杂性(从而增加了攻击面!!!),因为您必须为每个单个软件包用作基本安装的一部分的每种编程语言包含每个编译器。
很多很多年前,我真的很喜欢Linux From Scratch,我编写了一个脚本,它可以自动执行基本 LFS 系统的整个安装过程。它运行了大约两天,记住基本 LFS 系统是一个非常基本的系统。它包括内核、libc、shell、引导加载程序和一些基本工具……仅此而已。没有图形环境,没有网络浏览器,没有电子邮件程序,没有办公套件,没有多媒体播放器,没有 Java 环境,没有 Python / Ruby / PHP / Node.js / 无论你喜欢什么编程语言,没有游戏,没有照片编辑器,没有科学工具,实际上使计算机“有用”的所有东西都没有。
其中一些非常大,需要很长时间才能编译。根据您运行的计算机,单个包可能很容易花费数周时间来编译。(想象一下,例如您的路由器或您的智能手表。)
自从我从 FreeBSD 搬走后成为 gentoo 用户 Pfff!十年前,我完全同意斯蒂芬和阿尔乔姆的回答,我确实赞成。
我从来没有相信为 gcc 设置迷人的个人选项(例如考虑 -funroll-loops -fomg-optimize)会导致显着的性能提升,尽管这是绝大多数人声称的主要原因之一编译瘾君子。
在我的 core II duo 系统上……当然……编译 Chromium 需要超过一整天的时间……:简直……荒谬!如果您想跟随上游更新的步伐,那就更愚蠢了!
荒谬的 ?归根结底……不一定……取决于您真正关心的内容,因为有些事情您不能仅通过预构建的软件包来实现!
如果你没有得到这些遗嘱,那么……好吧……简单地认为这显然不是一种维护系统的环保方式……一些 gentoo 的主要开发人员因此而退出了。
我在封闭的环境中工作。我们的一些系统被认为很关键并被锁定。系统上不允许使用编译器和调试器。
这些软件包是从供应商处按原样安装的。
从源代码编译/安装将:
简而言之,它保证了一种简单、低资源的方式来确保每台计算机都安装了供应商希望安装的完全相同的软件包。