我不知道一般的偏好是什么,它来自哪里。 在使用FreeBSD几年之后,我倾向于Gentoo,但是由于Gentoo被安装在一个非常老的机器上,构build时间不多,所以我浪费了宝贵的时间。
如果它是基于预构build的软件包,那么浪费的时间就会减less。 (我知道FreeBSD有二进制包,但是问题在于它们看起来并没有在版本发布之前保留下来,而唯一获得新鲜东西的方法就是自己编译它,不知道Gentoo真的)。
你对此有什么看法,你有什么经验可以让你从基于源码的发行版切换到其他的吗?
编辑:认为我应该澄清这最近的“我的经验”
故事是这样的。 换了工作之后,我必须维护一个相当老的机器,它拥有LDAP(OpenLDAP)和办公用户login信息。 它来到我不得不重新启动野兽(8个月没有重新启动)。 重新启动后,OpenLDAP未联机。 似乎slapd和其他一些二进制文件在系统运行时被删除了。 在第一次构buildldap包之后,我想知道为什么我没有slapd二进制文件(耗时15分钟)。 一段时间后,我已经跟踪到这个问题,默认情况下,“最小”的标志,这只是build立了库,没有服务器的二进制文件。 最终的结果是〜1小时的瘫痪的办公室生产力和同事们使用的理由是“我没有这样做,因为我们的主服务器已经closures”。
–
真的很感谢你的答案,但到目前为止还没有引人注目的论据来使用基于源代码和基于预编译的软件包。 存储空间现在不是问题。
我维护的Gentoo机器数量相当多。
不是因为我们关心幼稚的funroll-loop调整速度。 我们关心的是灵活安装我们想要的东西,而不是我们可能有一天想要的贡献者认为的每个包装特征和依赖。 我们对Linux,编译和库工作非常满意。 我们不希望所有的东西都从我们身上抽象出来,变成一个黑匣子。
你应该select使用你最喜欢的东西。 以下是一些可能有助于缓解Gentoo恐惧的细节。
在现代硬件上,构build时间相对可以忽略不计。 如果您的机器具有N + 1冗余,则更是如此。
你可能会挑剔portage的行为,比如在你的make.conf文件中放置MAKEOPTS="-l 1.0" ,以确保当负载平均值MAKEOPTS="-l 1.0"到令人不安的高度时,新build立退避。
如果你愿意的话,你可以使用Portage的二进制包。 这些镜像提供了许多常用的包,或者你可以用--buildpkgonly自己的--buildpkgonly 。
如果你有大量的机器,那么你可以从指定的构build主机或分布式编译中受益。
现在正在使用的Portage的最新稳定版本更不可能让您在执行升级时变得高度干燥。 冲突和障碍的故事几乎是过去的事情。
如果你正在寻找那么多机器升级变得痛苦,那么你应该看看Puppet / BCFG / cfengine;)
更新回应问题编辑:
尽pipe我对所描述的情况持有同情态度,但它并不是以源代码为基础的分发的症状,或者是通过使用基于软件包的分发而实际阻止的。 这是由于:
说实话,我现在还没有广泛使用任何其他的Linux发行版。 因此,如果您要将Debian机器(例如)放在我的膝盖上,并告诉我OpenLDAP在重新启动后不工作,那么我也可能花费15分钟或一小时来解决问题。 不是因为我对Linux不甚了解,或者Debian不是一个好的操作系统,而主要是因为我不记得Debian的RC脚本或包系统的细节。 这就是为什么内部文件在组织内至关重要。 它应该起到启动陌生的作用,填补其他人的空白。 即使他们知道一切。
只是一个关于Gentoo的特别说明。 Portage的USE标志非常有用,而“minimal”是我经常使用的东西。 例如,我不希望将软件包的服务器二进制文件安装在一台只会在其生命周期中成为客户端的计算机上。 让它们不必要地存在可能会增加复杂性甚至是安全问题。 这从来不是空间的问题。 在使用-av参数开始编译之前,您可以看到一个包将采用哪些USE标志和依赖关系(以及哪个不是)。 所以你不应该得到一个惊喜。
GNUix>对不起,快点!
我不会评论你是否应该使用Gentoo,或者如果从源代码构build“值得”
我要说的是我使用Gentoo和Ubuntu。 我曾经在所有的GNU / Linux机器上使用Gentoo,但是决定在桌面上使用Ubuntu更容易pipe理。 我认为使用Gentoo作为服务器的pipe理员是一个好主意 – 几乎可以用于所有个人服务器。
除此之外,我比从源代码构build东西或调整CFLAGS更喜欢的是Portage。 Portage简直就是我所用过的GNU / Linux最好的软件包和系统pipe理工具。 我可以用我需要的东西创造一个确切的环境,而不是一件更多的东西,而且我可以在我的包pipe理系统之外做到这一点。 我不需要安装postfix,只是因为一些包装伙伴决定这是'必要的'。 我不需要单声道安装,因为我想运行Gnome,我只是不安装Tomboy。 快速浏览在这个Ubuntu桌面上安装的软件包显示它已经绑定安装? 为什么? 它没有任何用处,我没有在这台计算机上运行DNS服务器,我当然也不需要它的文档,但它在这里。
时间不足 build立软件包不仅需要时间,而且要保持系统的维护。 我可以肯定地说,我可以运行sudo aptitude update {upgrade}而不需要在世界上保持谨慎……另一方面,当你更新一个Gentoo机器时,你必须非常小心小细节,并确保你需要(而且准备好了)想要做的事情。 每当说到为什么我切换到Ubuntu为我的桌面的“秸秆打破骆驼回来”是udev的升级borked我有一个设置 – 而不是尝试和解决它我想获得我正在尝试的工作完成。 所以我想我真的不在乎绑定文档占用我的桌面上的空间,因为我有空间。
然而,在我的服务器上,完全不同的问题。 我想控制环境的一切,安装的软件包,每一个我想控制的细节 – 而Gentoo让我轻松地做到这一点。
对于基于源代码的分发,生命太短了。 我有更重要的事情要做。 就像使用电脑一样。
您可以总是使用两种方法的组合 – 使用预编译的分发版本作为基础,并具有良好的工作集成环境和快速无痛更新的优势,同时使用自编软件,需要处于领先地位该软件的开发。 要么有自律(使用前缀选项configuration),要么自己打包源代码。 您可以始终“重用”构build指令(例如rpm spec文件或debian子目录)。
我不会直接在生产服务器上使用构build机制。 从我的Gentoo日子里,我知道有可能有一个生成主机,并创build该主机上所需的包,以便您可以在适合您的需要的编译标志的专用主机上刻录CPU周期。
总体而言,没有太大的差别,几乎所有的服务器都运行Debian,但是我们最终还是build立了一个生成主机。 我们需要一些软件包,这些软件包不能用于debs,所以我们为我们的需要设置了一个rebupro和一个buildhost,buildhost几乎没有任何维护(就“工作”而言),因为重新部署只是一个问题几分钟后,我们可以networking启动,它会自动重新部署。
无论是BSD端口/ Gentoo / Debian,使用系统(如在提供业务价值的不同主机上的服务集合中)的实际利润都是无关紧要的,这将减less浪费的资源并且是可维护的。 我们之所以selectDebian,是因为安全更新毫不费力,而且它们是预编译的,所以无论何时安全更新出现,我们都不必“浪费”时间重build软件包。 这是唯一的缺点,我可以想到的基于源代码和基于二进制的发行版。
我是我的MythTV机器的狂热Gentoo用户,但是由于升级Gentoo机器所需的时间,我最近切换到了Debian。 好吧,你只需要每6个月左右进行一次真正的升级,但正如你所提到的,编译时间可能会有点太多。
两全其美的是ArchLinux,它具有二进制发行版,但有一个简单的构build系统,可以让几乎Gentoo风格的包构build。 你可以select你想要手动编译的东西。
对于一个生产系统,我个人会避开源代码发行版,坚持一些稳定的,可能的支持(取决于你的技术人员),无论是Debian还是RHEL。
坦率地说,我想不出一个很好的理由来使用基于源代码的发行,而不是为了教育目的(也许)。
我的发行版提供了所有二进制包的源码包,所以我可以自由地构build我想要的东西,更重要的是,我有能力不必一直构build所有的东西。
Gentoo不仅因为基于源代码的发行版的优势而令人惊叹,而且因为每一步都是为定制而devise的。
configuration文件从不更新,前缀._cfg000的副本位于/ etc中,并显示一条消息,让您将新的configuration文件移到现有位置。
我发现,通过一点点努力,gentoo可以使复杂的事情变得非常容易。
我最近会成为一个约翰尼,因为我search了这个话题,而且我相信别人也会。
我们在所有可以运行的服务器上使用Debian,因为:
系统pipe理的便利性在我们的书籍中排名第一。 专家手中的简单系统等于高可靠性和可用性。
几年来我一直没有使用过Gentoo,但是我的有限经验使我得出这样一个结论:编译软件包所带来的(几乎没有引起注意的)提高速度远远超过了构build系统所花时间的缺点。 从那以后,我一直使用预编译的基于软件包的系统。 我知道,我个人不希望花太多的时间在服务器上编译源代码,尤其是当需要升级软件包的时候。
那么很多年前编译器的优化,可能会挤掉你的特定硬件的额外性能。 今天的硬件是如此强大,它没有任何明显的差异了。
我现在在使用Debian,因为升级服务器很方便。 与FreeBSD相比,升级大量软件包需要花费2分钟,停机时间最短。 我仍然将FreeBSD用于某些特定的应用程序(比如MySQL和BIND),但这仅仅是因为个人喜好(以及这两个应用程序的历史在FreeBSD上非常快速和稳定)。
我向任何询问OS的人提出build议:使用任何你感觉舒服的东西。
对于你的具体情况,我会推荐OpenBSD:
对于正常的情况,你会希望一路走下去。 它保持最新状态,如果你自己构build它,那也是一样的。 唯一的例外是当你需要用二进制forms不可用的特殊选项编译的东西时。 但是,真的,为什么select当你的平台可以给你两全其美的呢?
我想不出比使用源代码发布更糟糕的事情。 如果你有大量的机器需要维护,而且你希望它们的行为一致,那么使用二进制包的分发是绝对必要的。
如果你在100台机器上安装升级,你真的想把它编译成100个地方吗? 当然,编译器应该是一致的,应该生成类似的二进制文件,但基本上没有保证。
然后是testing。 您的testing环境可能非常类似于生产,但是您仍然可能正在testing具有与生产不同行为的二进制文件。
使用二进制文件,您可以更确定地知道它在整个基础架构中performance相同; 你有更好的机会,testing代码是相同的代码部署。 代码在生产系统上的执行效率也会更好(尽pipe可能不像CPU特定的优化那样进行优化)。