一、为什么 Archlinux 不适合服务器使用
Archlinux也并非完全没有测试,它也有自己的 testing分支和完善的 tracking system。然而由于 Archlinux的哲学,更新速度非常之快,甚至 GNOME 2到 3这样的大型更新它都只用了不到一个月就正式发布了。而 Archlinux毕竟不算是一个大型发行版,工作人员有限,这么短的时间之内很难进行彻底的测试。发布之后再遇到大小 bug都是再常见不过的事情,除了一般软件 bug甚至还有内核和硬件之间的兼容问题??比如我的上一篇博客就提到了两个相当严重的 bug。想看更多的例子?去官方论坛看看就知道了。\x0d\x0a\x0d\x0a由于 Archlinux的特点和哲学,其实这不是什么大问题。折腾 Archlinux的都不是小白,在社区的配合之下一般最后都能顺利找到问题根源(大多数时候是上游 bug??)然后找到 workaround并向上游反馈。包括我在内的不少用户其实是乐在其中的(虽然嘴上抱怨不断)。 Archlinux的“用户”在一些大型发行版里其实应该是“志愿者”之类的存在??\x0d\x0a\x0d\x0a但这在生产环境之下是不能容忍的。你让一个生产服务器更新之后遇到 bug然后运维顶着上司压力满头大汗地找问题、提 issue?对这一点抱有疑问的人一定没有在商业公司做过运维。不要和我说什么你的个人博客 VPS用的是 Archlinux。\x0d\x0a\x0d\x0a更新内核后竟一定要重启?\x0d\x0a\x0d\x0a这应该是 Archlinux最大的问题了。很多 Linux用户都不理解为何 Debian和红帽系都要把每个内核版本分开打包,然后再做一个虚包指向最新版内核,更新内核时不会自动删掉旧版本,还得之后手动删除??\x0d\x0a\x0d\x0a这其实是有非常重要的理由,而且不限于是“保险起见”,新内核启动不起来的时候可以选择旧内核。更重要的原因是—— Linux Kernel是模块式的、动态加载的,而/usr/lib/modules/LINUX-KERNEL是属于内核软件包的。如果在更新内核的时候删掉了旧版内核的软件包(也就删掉了模块目录),就会使得还未加载的模块无法再被加载了。觉得没有影响?那么我告诉你——硬件驱动都是以内核模块形式存在的。举个例子,如果你使用 Archlinux,在某此启动之后都没有插过 U盘,然后更新了内核,你就发现 U盘插进去以后怎么都认不出来(Usb EHCI模块和 vfat文件系统模块都没挂载??)。你说服务器上不会有硬件变动?那么你一定是忘记了 OpenVPN之类的软件,在启动之后需要建立一个虚拟设备(比如 OpenVPN的 TAP或者 TUN),如此一来也就无法使用了。\x0d\x0a\x0d\x0a最终的结果就是,使用 Archlinux,要么你就别更新内核,要么更新了内核以后就立即重启以免遇到奇怪的问题。这种粗暴的更新方式难道不是比 Windows Update还要糟糕么?(用过 Windows Server的人一定遇到过更新以后要求你重启,甚至如果你正好处于一个活跃会话,那么如果你不立即取消掉那个对话框, 15分钟后就直接给你重启了??)\x0d\x0a\x0d\x0a糟糕的 Pacman\x0d\x0a\x0d\x0a比起复杂甚至臃肿的 yum/rpm和 apt-get/dkpg, Archlinux的包管理器要简单许多,一个 pacman就搞定了“源”和“包”两头,完成了别的发行版两个软件才能做到的事情。\x0d\x0a\x0d\x0a可如果真要是这么简单的一个程序就能做好的事情,为什么别的发行版都要这么“笨”地开发如此复杂的工具?答案其实很简单——软件包管理本来就是非常复杂的事情。我不是一个包管理者,在这方面没有什么发言权,但单从一个用户角度来看也足够意识到其存在的不足了。依赖、推荐不够灵活,只有 depends opt-depends suggestions三种,缺乏“虚包”的支持。一些常见的需求比较难以优雅地实现,比如:一个软件有多个不同的实现时,只能通过设置相同的 provides然后再互相 conflicts实现,这样一来每加一个新的实现就要修改之前所有的相同 provides的包,而且也缺乏 dpkg-reconfigure之类的工具来选择一个虚包到底使用哪一个实包从而实现灵活地在不同实现之间切换的功能(比如 Oracle JDK和 OpenJDK之间的切换,在 Archlinux里只能安装一个然后删除掉另一个)。\x0d\x0a\x0d\x0a另外, Archlinux的打包粒度太大(比如一个 php包就包括了大量非必须模块,得靠修改配置文件来启用或禁用,而在 Debian和红帽里则是被拆成了很多个包)。当然,也有人认为 Debian的粒度太细就是了。不过就我两年的使用经历看来 Archlinux的包的确偏大,对于桌面版没有什么问题,这年头大家的硬盘也都挺大,但在服务器上一般都是希望安装尽可能少的软件以尽可能减少漏洞和 bug。\x0d\x0a\x0d\x0a当然,比较简单的包管理器也有一个好处,就是降低了打包的门槛。这也是 AUR能够这么方便易用、内容丰富的部分原因。\x0d\x0a\x0d\x0a最后,吐槽一下 pacman不会自动清理包缓存,哪怕是很早以前的。我在用了两年之后包缓存有30多个G,直接把我的根分区都占满了??
二、archlinux哪个gui最好
1、Archlinux也并非完全没有测试,它也有自己的 testing分支和完善的 tracking system。然而由于 Archlinux的哲学,更新速度非常之快,甚至 GNOME 2到 3这样的大型更新它都只用了不到一个月就正式发布了。而 Archlinux毕竟不算是一个大型发行版,工作人员有限,这么短的时间之内很难进行彻底的测试。发布之后再遇到大小 bug都是再常见不过的事情,除了一般软件 bug甚至还有内核和硬件之间的兼容问题……比如我的上一篇博客就提到了两个相当严重的 bug。想看更多的例子?去官方论坛看看就知道了。
2、由于 Archlinux的特点和哲学,其实这不是什么大问题。折腾 Archlinux的都不是小白,在社区的配合之下一般最后都能顺利找到问题根源(大多数时候是上游 bug……)然后找到 workaround并向上游反馈。包括我在内的不少用户其实是乐在其中的(虽然嘴上抱怨不断)。 Archlinux的“用户”在一些大型发行版里其实应该是“志愿者”之类的存在……
3、但这在生产环境之下是不能容忍的。你让一个生产服务器更新之后遇到 bug然后运维顶着上司压力满头大汗地找问题、提 issue?对这一点抱有疑问的人一定没有在商业公司做过运维。不要和我说什么你的个人博客 VPS用的是 Archlinux。
4、这应该是 Archlinux最大的问题了。很多 Linux用户都不理解为何 Debian和红帽系都要把每个内核版本分开打包,然后再做一个虚包指向最新版内核,更新内核时不会自动删掉旧版本,还得之后手动删除……
5、这其实是有非常重要的理由,而且不限于是“保险起见”,新内核启动不起来的时候可以选择旧内核。更重要的原因是—— Linux Kernel是模块式的、动态加载的,而/usr/lib/modules/LINUX-KERNEL是属于内核软件包的。如果在更新内核的时候删掉了旧版内核的软件包(也就删掉了模块目录),就会使得还未加载的模块无法再被加载了。觉得没有影响?那么我告诉你——硬件驱动都是以内核模块形式存在的。举个例子,如果你使用 Archlinux,在某此启动之后都没有插过 U盘,然后更新了内核,你就发现 U盘插进去以后怎么都认不出来(Usb EHCI模块和 vfat文件系统模块都没挂载……)。你说服务器上不会有硬件变动?那么你一定是忘记了 OpenVPN之类的软件,在启动之后需要建立一个虚拟设备(比如 OpenVPN的 TAP或者 TUN),如此一来也就无法使用了。
6、最终的结果就是,使用 Archlinux,要么你就别更新内核,要么更新了内核以后就立即重启以免遇到奇怪的问题。这种粗暴的更新方式难道不是比 Windows Update还要糟糕么?(用过 Windows Server的人一定遇到过更新以后要求你重启,甚至如果你正好处于一个活跃会话,那么如果你不立即取消掉那个对话框, 15分钟后就直接给你重启了……)
7、比起复杂甚至臃肿的 yum/rpm和 apt-get/dkpg, Archlinux的包管理器要简单许多,一个 pacman就搞定了“源”和“包”两头,完成了别的发行版两个软件才能做到的事情。
8、可如果真要是这么简单的一个程序就能做好的事情,为什么别的发行版都要这么“笨”地开发如此复杂的工具?答案其实很简单——软件包管理本来就是非常复杂的事情。我不是一个包管理者,在这方面没有什么发言权,但单从一个用户角度来看也足够意识到其存在的不足了。依赖、推荐不够灵活,只有 depends opt-depends suggestions三种,缺乏“虚包”的支持。一些常见的需求比较难以优雅地实现,比如:一个软件有多个不同的实现时,只能通过设置相同的 provides然后再互相 conflicts实现,这样一来每加一个新的实现就要修改之前所有的相同 provides的包,而且也缺乏 dpkg-reconfigure之类的工具来选择一个虚包到底使用哪一个实包从而实现灵活地在不同实现之间切换的功能(比如 Oracle JDK和 OpenJDK之间的切换,在 Archlinux里只能安装一个然后删除掉另一个)。
9、另外, Archlinux的打包粒度太大(比如一个 php包就包括了大量非必须模块,得靠修改配置文件来启用或禁用,而在 Debian和红帽里则是被拆成了很多个包)。当然,也有人认为 Debian的粒度太细就是了。不过就我两年的使用经历看来 Archlinux的包的确偏大,对于桌面版没有什么问题,这年头大家的硬盘也都挺大,但在服务器上一般都是希望安装尽可能少的软件以尽可能减少漏洞和 bug。
10、当然,比较简单的包管理器也有一个好处,就是降低了打包的门槛。这也是 AUR能够这么方便易用、内容丰富的部分原因。
11、最后,吐槽一下 pacman不会自动清理包缓存,哪怕是很早以前的。我在用了两年之后包缓存有30多个G,直接把我的根分区都占满了……
三、linux 安装后没有图形界面怎么回事
在安装过程中,选择了最小化安装,因此没有图形界面。
1、第一步,安装X(X Window System),命令是‘yum groupinstall"X Window System"’,然后按“Enter”键,如下图所示。
2、第二步,检查已安装的软件以及安装后可以安装的软件。使用命令“yum grouplist”,然后按“Enter”键,如下图所示。
3、第三步,安装所需的图形界面软件GNOME(GNOME Desktop),输入命令“yum groupinstall"GNOMEDesktop”并按“Enter”键,如下图所示。
4、最后一步,等待程序安装,然后重新启动系统以进入图形界面,如下图所示。这样,linux安装后就有图形界面了,问题已经解决。
文章到此结束,如果本次分享的archlinux论坛和archlinux.org的问题解决了您的问题,那么我们由衷的感到高兴!