从1998年以来,我对各种Linux发行版有着相当丰富的经验,使用了大部分主要版本,Redhat,Debian,Slack,SUSE,Gentoo等。个人而言,我更喜欢slack或arch,或者在某些情况下,Debian,因为最小的基础,更好地理解你的系统上的东西,而不必依赖于帮助程序。
现在,在整个经验丰富的社区中,对于那些喜欢Gentoo,Slackware,Arch甚至BSD或LFS的人来说,Ubuntu,Fedora,RHEL,SUSE等其他发行版以及Debian的发行版都依赖于发行版特定的configuration工具或方法,使得很难理解下面的系统。
就我个人而言,我确定我记得几个警告的例子不是手动编辑configuration文件,或者是很难这样做。
的确,有一种说法是,如果你学习Ubuntu,那么你将学习Ubuntu,如果你学习了Slackware,那么你将学习Linux。 这也可以用于RHEL,SUSE等。
最近我和一个Ubuntu迷交谈,他对此提出了异议。 他说,configuration文件都在那里,可以手工理解和编辑,就像在Slack或Arch上一样,只是如果你需要的话,还可以有额外的帮手。
那么我想知道,如果你学习了Ubuntu或者RHEL或者其中任何一个,你将会学习到这个特定的系统而不是Linux,而且如果你有一个理解,很难用手来pipe理所有的东西。 有没有道理呢?
你的问题并不是真的感觉像一个问题。 不过,我会咬的,因为我是这样的。
我不能和Debian及派生的发行版说话,因为除了玩游戏之外,我从未使用过它们。 从来没有对他们有任何兴趣。
RedHat和RedHat派生的发行版已经成为我长期以来的主要“首选Linux”。 我不喜欢在生产angular色的计算机上安装不必要的软件。 这意味着我将CentOS(以及所有RedHat和衍生发行版)盒子“剥离”到最less的RPM。 这也意味着“手动”编辑configuration文件,并删除为我pipe理configuration文件的工具。
我喜欢在networking接口,静态路由和iptablesconfiguration中指定参数的RedHat“开发工具”,所以我通常会保留所有这些。 对于要用作防火墙,Web服务器,DHCP服务器或其他“无头”活动的机器,我将所有与X相关的RPM(使用–nodeps,必要时强制移除)以及任何RPM没有必要或与机器的作用有关。 如果我需要的话,我可以随时添加它们。
我看到我的一个CentOS 5.2虚拟机,在“rpm -qa | wc -l”上显示了113个RPM。 操作系统占用了大约600MB。 与旧的发行版相比,它确实不是“纤巧和修剪”,但对CentOS来说却是轻量级的。
(RPM依赖关系树在RedHat派生的发行版上已经变得越来越疯狂和疯狂了,现在我真的不知所措了,要记住一个dumber的依赖关系,但是他们一直让我越来越疯狂,因为版本号来自RedHat派生的发行版。)
那么这里有两层理解。 理解Linux和理解分配方式是两件事。 要成为一名优秀的Linuxpipe理员,您必须对Linux的工作有一个很好的把握,但是您还需要对您运行的分发版本是如何做的有一个很好的理解。
这与networkingpipe理员需要了解如何configuration和pipe理其设备以及需要了解networking层,其目的和协议的方式没有什么不同。
在一天结束的时候,Linux就像math一样是一个工具。 一旦你理解了一个概念,并且知道如何应用它,那么使用计算器就没有什么问题了。
我所看到的方式很简单 – build立一个服务器的系统pipe理员或者将一个工作站连接起来的用户需要的东西只需要很less的工作就可以开箱即用。 这就是为什么窗口如此受欢迎,尽pipe它有无数的问题。
因此,基本上,只需通过源代码安装,即可轻松地在RHEL中使用生产计算所需的任何东西。 您可以确定您正在安装的每个软件包都已通过质量保证并已准备就绪。 所有那些在一个简单的安装之后,那不涉及满足数十亿的依赖关系并且编译从源头的一切。
是的,这样的系统对于那些习惯了LFS方法的人来说可能看起来很臃肿,但是凭借现代计算能力,内核中一个额外的模块占用了0.00001%是不成问题的。
我早期的Linux经验涉及到大量的编译和甚至更多的CPAN安装,直到我遇到Debian的时候 – 每个perl软件包都可以通过apt来使用,并且每当我需要更新时,它们都会自动更新。 所以作为一个拥有几百台服务器的人来说,我绝对反对编译源代码和构build以及定制每个可能的软件包。 我宁愿依靠主要发行版的QA团队。
如果你正确地做到这一点,通过内核的一切都是一个方便。
以networking接口为例。 Redhat提供了system-config-network-gui和system-config-network-tui,它们是在/ etc / sysconfig / network和/ etc / sysconfig / network-scripts中写configuration文件的脚本。
但是这些都是真正的configuration文件,它们提供了像'ifup'和'ifdown'这样的脚本,这些脚本在启动时被脚本调用。 'ifup'命令本身就是'ifconfig'命令的包装。
这本身就是一个方便的程序,可以让你在内核中操作数值。
有人可能会说,如果你不是自己编写自己的C程序来直接使用内核提供的API,那么你并没有学习'linux'。
内核之上的这些便利都不是必须的 – RedHat也提供了与'ifconfig'命令相同的'ip'命令。 有可能是脚本,和GUI包装,而不是build立在方便。
所以这一切都取决于你想在哪里画线。 不pipe你学什么,你都会学习一些在任何地方都不是普遍适用的东西,即使在Linux上。
但方便并不是一件坏事。 标准化不是一件坏事。 这就是为什么许多工具供应商喜欢(或仅支持,取决于供应商)特定口味的RedHat家族分布:因为他们知道当客户遇到问题时,他们可以重现客户正在使用的环境他们的实验室,所以他们可以看到发生了什么事情。 他们不必担心六百万个微妙的“优化”中的任何一个,这将使任何Gentoo机器都变得独一无二。