问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么 Archlinux 不适合服务器使用?

发布网友 发布时间:2022-04-28 15:50

我来回答

1个回答

热心网友 时间:2022-06-19 13:15

  Archlinux 也并非完全没有测试,它也有自己的 testing 分支和完善的 tracking system 。然而由于 Archlinux 的哲学,更新速度非常之快,甚至 GNOME 2 到 3 这样的大型更新它都只用了不到一个月就正式发布了。而 Archlinux 毕竟不算是一个大型发行版,工作人员有限,这么短的时间之内很难进行彻底的测试。发布之后再遇到大小 bug 都是再常见不过的事情,除了一般软件 bug 甚至还有内核和硬件之间的兼容问题……比如我的上一篇博客就提到了两个相当严重的 bug 。想看更多的例子?去 官方论坛 看看就知道了。

  由于 Archlinux 的特点和哲学,其实这不是什么大问题。折腾 Archlinux 的都不是小白,在社区的配合之下一般最后都能顺利找到问题根源(大多数时候是上游 bug ……)然后找到 workaround 并向上游反馈。包括我在内的不少用户其实是乐在其中的(虽然嘴上抱怨不断)。 Archlinux 的“用户”在一些大型发行版里其实应该是“志愿者”之类的存在……

  但这在生产环境之下是不能容忍的。你让一个生产服务器更新之后遇到 bug 然后运维顶着上司压力满头大汗地找问题、提 issue ?对这一点抱有疑问的人一定没有在商业公司做过运维。不要和我说什么你的个人博客 VPS 用的是 Archlinux 。

  更新内核后竟一定要重启?

  这应该是 Archlinux 最大的问题了。很多 Linux 用户都不理解为何 Debian 和红帽系都要把每个内核版本分开打包,然后再做一个虚包指向最新版内核,更新内核时不会自动删掉旧版本,还得之后手动删除……

  这其实是有非常重要的理由,而且不限于是“保险起见”,新内核启动不起来的时候可以选择旧内核。更重要的原因是—— Linux Kernel 是模块式的、动态加载的,而 /usr/lib/moles/LINUX-KERNEL 是属于内核软件包的。如果在更新内核的时候删掉了旧版内核的软件包(也就删掉了模块目录),就会使得还未加载的模块无法再被加载了。觉得没有影响?那么我告诉你——硬件驱动都是以内核模块形式存在的。举个例子,如果你使用 Archlinux ,在某此启动之后都没有插过 U 盘,然后更新了内核,你就发现 U 盘插进去以后怎么都认不出来(USB EHCI 模块和 vfat 文件系统模块都没挂载……)。你说服务器上不会有硬件变动?那么你一定是忘记了 OpenVPN 之类的软件,在启动之后需要建立一个虚拟设备(比如 OpenVPN 的 TAP 或者 TUN ),如此一来也就无法使用了。

  最终的结果就是,使用 Archlinux ,要么你就别更新内核,要么更新了内核以后就立即重启以免遇到奇怪的问题。这种粗暴的更新方式难道不是比 Windows Update 还要糟糕么?(用过 Windows Server 的人一定遇到过更新以后要求你重启,甚至如果你正好处于一个活跃会话,那么如果你不立即取消掉那个对话框, 15 分钟后就直接给你重启了……)

  糟糕的 Pacman

  比起复杂甚至臃肿的 yum/rpm 和 apt-get/dkpg , Archlinux 的包管理器要简单许多,一个 pacman 就搞定了“源”和“包”两头,完成了别的发行版两个软件才能做到的事情。

  可如果真要是这么简单的一个程序就能做好的事情,为什么别的发行版都要这么“笨”地开发如此复杂的工具?答案其实很简单——软件包管理本来就是非常复杂的事情。我不是一个包管理者,在这方面没有什么发言权,但单从一个用户角度来看也足够意识到其存在的不足了。依赖、推荐不够灵活,只有 depends opt-depends suggestions 三种,缺乏“虚包”的支持。一些常见的需求比较难以优雅地实现,比如:一个软件有多个不同的实现时,只能通过设置相同的 provides 然后再互相 conflicts 实现,这样一来每加一个新的实现就要修改之前所有的相同 provides 的包,而且也缺乏 dpkg-reconfigure 之类的工具来选择一个虚包到底使用哪一个实包从而实现灵活地在不同实现之间切换的功能(比如 Oracle JDK 和 OpenJDK 之间的切换,在 Archlinux 里只能安装一个然后删除掉另一个)。

  另外, Archlinux 的打包粒度太大(比如一个 php 包就包括了大量非必须模块,得靠修改配置文件来启用或禁用,而在 Debian 和红帽里则是被拆成了很多个包)。当然,也有人认为 Debian 的粒度太细就是了。不过就我两年的使用经历看来 Archlinux 的包的确偏大,对于桌面版没有什么问题,这年头大家的硬盘也都挺大,但在服务器上一般都是希望安装尽可能少的软件以尽可能减少漏洞和 bug 。

  当然,比较简单的包管理器也有一个好处,就是降低了打包的门槛。这也是 AUR 能够这么方便易用、内容丰富的部分原因。

  最后,吐槽一下 pacman 不会自动清理包缓存,哪怕是很早以前的。我在用了两年之后包缓存有30多个G,直接把我的根分区都占满了……
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 linux 安装deb包提示依赖于libtasn1-3(>= 1.6-0) 用RPM软件包管理器的linux有哪些 弱弱的问一下,linux下制作安装包都有哪些格式,各适合什么情况下用?我知道的有run包,bin包还有rpm包。 archLinux下可以安装deb文件么?如何安装 archlinux中没有apt没有rpm如何安装yum啊,感觉进了死循环啊为啥啊_百度问一问 方舟生存进化 无响应 无线加载卡死? 托福阅读满分:如何高效背单词 托福满分是什么样的一种感受? 考满分的大神们,我要考托福,有希望到100左右吗? 托福如何能考高分? 我是怎么把托福阅读考到满分的 怎样用一周时间把托福考到几乎满分 托福考满分一般是什么水平?怎样还能做到? 托福备考之口语高分需要多大的词汇量? 体温35度正常吗? 求背托福单词的正确方法 体温35度正常? 体温低是怎么回事啊?比如总是35度多 体温35度多,是癌变吗 怎么用电脑注册 linux ldd 哪个包 rpm 为什么 Archlinux 不适合服务器使用 喝酒会让前列腺炎加重吗 如何用UBUNTU玩魔兽争霸? 菜鸟求救,LINUX下怎么才能认到加密狗 如何在Linux里安装chrome 请问经常喝酒会损伤前列腺吗? 经常喝酒会导致前列腺炎吗 archlinux哪个gui最好 昨天晚上喝酒了,今天去查前列腺液有影响吗?可以查吗? 前列腺增生能喝白酒么 慢性前列腺炎可以喝白酒? 特殊符号加号怎么找到? “加号”在上面,“减号”在下面,怎么打出来? 在西安代办注册公司收费多少? 西安注册公司需要多少钱 注册西安的公司需要大概花多钱?? 我想注册一个 公司业务需要 西安代理记账收费是多少? 在美国买了一台三星平板电脑,却上不了这里的互联网 在西安注册500万的公司需要代理费多少?(市照和省照都要)