当前位置

网站首页> 程序设计 > 开源项目 > 程序开发 > 浏览文章

Linux 挖坑不埋指南——甲

作者:小梦 来源: 网络 时间: 2024-07-24 阅读:

跳进 Linux 的唯一理由

既然知道 Linux 在这个世界已经存在了,而你又是个挺喜欢摆弄计算机的人,那么对 Linux 是怎样的一种存在难道不感到好奇么?

也许在你开始尝试使用 Linux 时,已经看到了很多对 Linux 不利的言论。例如,发行版本太多难以取舍、安装繁琐、应用程序没那么多、装显卡驱动很痛苦、无线网卡点不亮、声卡沉默着、中文输入法又在 Emacs 里歇菜了……然而 Linux 已经在这个世界上存在了,即使它存在这样或那样的问题,但是在 Linux 中去努力的化解这些问题的过程,也就是你对计算机的理解日益精深的过程。

以前我觉得 Windows 用户是这个世界上对计算机最没有好奇心的用户,他们几乎完全是因为讨厌计算机而喜欢 Windows。现在,感觉与那些叫嚣着要用智能手机/平板取代 PC 的人类相比,Windows 用户多少对计算机还保持着一点点好奇……

Linux 在哪里

首先,你在 Windows 里积累的大部分经验对于学习 Linux 是没有用的,而且在 Linux 世界里,Windows 的使用经验往往会变成很坏的习惯。Mac OS X 洗尽铅华后,倒是与 Linux 很接近,因为它们算是 Unix 的嫡系。

很多 Linux 桌面爱好者为自己所喜欢的 Linux 传教,他们用着自己或别人配置的漂亮的桌面来诱惑 Windows 阵营中对 Linux 持观望态度的人。不否认,他们经常会成功,但是被诱惑的 Windows 爱好者很快就能发现 Linux 桌面只不过是个肥皂泡。

2014 年,Linux 之父 Linus 说他仍然想要桌面……所以,Linux 现在依然是没有真正的『桌面』环境的。目前解决这个问题的唯一办法就是像我在前面所说的那样,不要将 Windows 的使用经验搬到 Linux 里,对于 Linux 而言,这些使用经验完全的水土不服。

城里人到了乡下,没有红绿灯、没有下水道、没有大超市、没有星巴克……这并不能说明乡下的不好,只能说明你带来了城里人的坏习惯!这些坏习惯正逐渐将原本寂静的 Linux 村落改造为乱糟糟的城乡结合部。后来,也许这些城乡结合部也会变成真正的城市,但是现在你要么容忍城乡结合部的混乱与不稳定,要么就去寻找生态环境尚未恶化的 Linux 山村。

定居于 Gentoo

既然已经否定了 Linux 桌面主义,那么最能体现 Linux 特色的发行版应该是 Gentoo,而不是 Ubuntu、Fedora、Open Suse 这些号称开箱即用的 Linux 发行版,因为开箱即用,不等于开箱好用。

安装 Gentoo 的过程,本质上就是使用 Gentoo 的过程。得益于 Gentoo 完善的文档,只要略有些耐心与英文阅读能力,按照 Gentoo 安装手册 的步骤进行,用不了 1 天,就差不多能装上 Gentoo 的基本系统(内核 + 软件包构建工具 + Shell)。

野外生存

Linux 的野外就是黑乎乎的字符终端(TTY),这里面运行着 Shell。在现代 Linux 系统中,Shell 差不多对应于人类的内衣,而图形窗口系统则对应于人类的外套。

没有了 Shell, Linux 是裸奔的 Linix。没有了图形窗口,Linux 就是穿着裤衩在奔跑的 Linux。

从某种意义上来说,Windows 其实比 Linux 更先进得多……它不穿内衣就直接穿外套了!

Linux 世界有很多 Shell,标配的 Shell 叫 Bash。

最好的 Bash 教程,当属 Gentoo 之父——Daniel Robbins 所写的 Bash by Example, part 1 2 3。Daniel Robbins 的命运宛若 Linux 世界的高加林……如果不知道高加林何许人也,可参考路遥文集中的“人生”。不过,Daniel Robbins 后来又创建了 Funtoo 项目……Funtoo 可能只适合有经验的 Gentoo 用户使用。

我建议你在尝试为 Gentoo 安装一个桌面系统之前,先在黑乎乎的 Bash 中呆一段时日,苦你心智,磨你体肤,行拂乱你所为……坚持下去,你就能学会在 Bash 中用命令与脚本控制你的机器,学会用 sed 与 Emacs 编辑文件。当然,这个过程对你而言可能最大的痛苦是没法显示与输入中文。

在 Linux 的世界里,中文并不是必须的,英文是必须的,但是只要你愿意,还是有办法让 TTY 支持中文的显示与输入的,只要手动编译安装一个支持 CJKTTY 的内核 。搞定这个问题,这意味着你对 Linux 的认识程度已经超过了很多其他 Linux 发行版的用户。

一个城里人,当他能够很娴熟的在野外生存着,回到城市之后,他也许能够比以前更善于利用城市这个系统。至少,野外生存帮助他建立了很多生活上的好习惯!

学会使用 portage

所谓的 Linux 发行版,本质上只是一些比我更有经验的 Linux 用户长年累月的收集了一些比较有名的软件源码包,最有名的自然是 Linux 内核源码包。收集到这些源码包之后,就针对主流硬件上以一种大家好才是真的好的策略将源码包编译成可执行文件,然后又将这些可执行文件做成光盘镜象文件供用户下载。

从上述角度来看,Gentoo 不算是 Linux 发行版。Gentoo 的工作主要是向用户提供一个非常精简的 Linux 系统,也就是所谓的 Stage 3,目的是让用户拥有一个可以运行的 Linux 基本环境,然后提供一个 portage 软件包,这个软件包主要由一个名曰 emerge 的 python 脚本以及一大堆分门别类的 Bash 脚本( ebuild 脚本)构成。如果你已经装上了 Gentoo,那么你一定懂得我在说什么。

每份 ebuild 脚本记录着相应的软件源码包的下载、解包、编译环境检测、编译、安装等步骤。例如我要安装大名鼎鼎的 Emacs,只需在终端中执行以下命令:

# emerge emacs

这个名曰 emerge 的脚本会自动去 /usr/portage/app-editors/emacs 目录寻找当前最新版本的 ebuild 文件——emacs-24.5.ebuild ,然后根据这份 ebuild 脚本中记录的步骤,自动进行 emacs-24.5 源码包的下载、解包、编译环境检测、编译、安装……

也就是说,Gentoo 的 Portage 只是告诉 emerge 应该怎样安装软件包。这就是 Gentoo 的精华所在。因为软件包是从源码包编译安装的,这意味着你有很多机会去定制或改进这个过程,而且 Portage 也为此打开了便利之门。

在那些真正的 Linux 发行版里,通过编译源码包的方式安装软件,往往非常痛苦,因为通常很难弄清楚要编译安装的软件包依赖哪些软件包。此外,这些 Linux 发行版所谓的『升级』,差不多等同于重新装一遍系统,而且差不多每半年装一遍(几个主流的发行版,差不多都是每半年发布一个新版本)。我很谦虚的说,我的 Gentoo 系统已经连续用了 5 年,现在依然保持着软件包近乎最新的状态。

如果你受了一些 Linux 桌面传教士的蛊惑不幸用上了 Ubuntu、Fedora 之类的发行版,不要怕, Portage 依然可以拯救你!理论上,在这些 Linux 发行版中,安装 Portage 并不是多么困难的事。只要有了 Portage,你可以通过软件包更新的方式,一点一点的将系统变成 Gentoo!

Gentoo 这种编译安装软件的方式虽然很低效,但是它能够让你养成一个好习惯:不要安装太多的软件包,并且尽量远离那些巨型软件包。这个世界上,真正很有用的软件包并不是太多,而那些巨型软件包往往也是 Linux 世界的违章建筑。

进驻城乡结合部

虽然 Linux 桌面乱糟糟的,而你长期的在黑乎乎的 TTY 里也能游刃有余的生活着,但是图形化的世界毕竟还是更直观一些。朋友给你发来一份 MS Word 或 PDF 文档,虽然通过 Linux 的 Framebuffer 可以构建出 GUI 程序可视化这些文档内容,但是这样就真的是重新发明轮子了——重新发明了 Xorg 或 wayland。我一直都觉得 wayland 是重新发明轮子。

虽然 Linux 的桌面环境像个乱糟糟的城乡结合部,但是它的基础架构 Xorg 窗口系统称雄江湖的时候,Windows 系统还未诞生。

Xorg 目前正逐渐被现代的 Wayland 取代,但是基础架构的更换并不能真正解决目前这种城乡结合部的局面!因为没有财力雄厚的公司进行统一规划,自由软件开发者们经常为了自己的自由而搭建违章建筑,然后干扰了用户们的自由。对于中文用户,最大的违章建筑当属 GTK 与 QT,它们破坏了 XIM 的大一统,导致至今为止 Linux 图形界面的中文输入支持依然是个令人头疼的问题(可参考:https://www.csslayer.info/wordpress/diary/why-linux-ime-sucks/)!

我比较喜欢的城乡结合部是 xfce4,之前一直用的是 GNOME。曾被很多人诟病的 GNOME3 我也用了将近 4 年,直到有一天我发现它的一个新版本剥夺了我最需要的一些自由,所以毅然转移到了 xfce4。这个故事想说的是,在一个充满自由的环境里,你最不需要的就是死守旧习惯。

用 xfce4 的好处是它提供了够用的窗口管理功能。我不认为 GNOME 3 真的有什么比 xfce4 更先进的地方,除非是到了 wayland 完全取代了 Xorg 的那一天。但是,从现在的状况来看,wayland 的出现让城乡结合部又混乱了一点,所以你不懂我在说什么,这很正常……先按照 https://wiki.gentoo.org/wiki/Xfce 所说的步骤,装上 xfce4。

欢迎来到混乱的 Linux 城乡结合部,在终端里求生成功的鲁滨逊同学!

Linux 世界各阶层分析

我非常敬仰 GNU 项目的缔造者——Stallman 大神,我觉得他是个理想主义者。虽然王垠在『谈谈理想主义』一文中指出理想主义者会因为不切实际而导致行动失败,但是我觉得王垠忽略了一个事实,即真正的理想主义者并不害怕失败。夸父驱赶太阳,苏格拉底喝了毒药,伯夷叔齐不吃周粟,介子推宁愿变成烤肉,项羽自刎于乌江……在这些人的心里,失败并不是他们最害怕的东西,他们害怕的是自己要变成没有理想的人才能苟活下去。

反对理想主义的人,尽管他号称自己不信仰任何主义,但本质上都是走向了实用主义或务实主义。真正的无信仰者,是不会批判任何主义的,否则牛顿第三定律在哲学上也成立了。

Linus 之所以反对 Stallman 是因为 Linus 是个务实主义者,他创造 Linux 并非是受到自由软件精神的感召,而是 Just for fun!因为当时他还是个学生,实用与否他并不关心,满足自己折腾计算机的嗜好才是第一位的,他对 Stallman 将道德与政治的事情放到软件上来谈是反感的。

开源软件的领军人物 Raymond 大神之所以反对 Stallman 是因为 Raymond 是一名彻头彻尾的实用主义者。最近 Raymond 的经济有些拮据,因此在网络上向大家展现他的功绩,藉此期望大家能够帮助他。会有人援助他的,如果他有支付宝,我也会给他打过去 16 美元,但是伸出援手的那些人,往往是理想主义者或务实主义者。从这一点来说,Linus 是错的,Stallman 将软件上升到道德的层面,至少在 Raymond 身上应验了。因为道德与政治,是自由软件得以生存下去的土壤与水。我记得 Stallman 当年吃不上饭的时候,是去卖 Emacs 手册之类的东西混饭吃,他可没想到去『乞讨』……像 Raymond 这样的人,是不会自己去写一个操作系统的,他所做的是寻找一个像 Linux 这样的操作系统……所以他写出了一本小册子《大教堂与市集》,被一群没文化的实用主义者视为开源世界的经史子集,实际上《大教堂与市集》是 Raymond 以实用主义者的眼光去分析务实主义者的世界而看到的一面。

商业软件公司之所以反对 Stallman,是因为他们不希望因为用了一下 GNU 的源代码而导致自己全部的源代码都要公开。爱惜自己声誉的商业公司是以不使用 GNU 的源代码的形式反对 Stallman,而有一些无耻的商业公司一边反对 Stallman,一边窃取 GNU 的源代码。

所以,今天的 Linux 世界的平衡由一群理想主义者、一群务实主义者、一群实用主义者还有一群投机主义者共同维持着。

理想主义者之所以不得不用 Linux,是因为他们的 GNU Hurd 或 Plan 9 尚未实现,不得不在 Linux 特色的社会主义初级阶段继续革命。正如 Linus 早年所说,虽然他不打算和 Stallman 并肩作战,但是 Linux 世界如果没有 Stallman 这样的人,便会乏味很多。理想主义者的价值在于矫枉必须过正。

务实主义者是 Linux 世界持续前进的原动力。Linux 世界缺乏什么,他们就努力去创造什么。他们注重软件的实际功能,因为他们本身也是这些软件的用户,这就是他们之所以不厌其烦写代码的原因。务实主义者将理想主义者过正之处适度的扳回一些。

实用主义者是一群不愿意付出太多劳动的懒人,他们需要务实主义者所贡献的软件,但是这些软件有时不能满足自己的需求,所以他们就帮助务实主义者去改进这些项目或者提供财物上的捐助。

投机主义者,远的不说,我国的国防科技大承担的一个 863 项目成功的将 FreeBSD 的源码变成了自主知识产权……

综上所述,Linux 世界的缔造者是务实主义,它的文化也就是务实的文化,它的精神也就是务实的精神。我觉得,只有务实的人才能真正的用好 Linux,而那些实用主义者的立场太不坚定,他们很容易变成某种意义上的投机主义者。在我看来,GNOME 3 的开发者就已经变成了投机主义者,他们正在竭尽全力讨好傻瓜用户,结果却适得其反,至少它失去了我这个用户。

贵圈真乱

看完上文,贵圈真乱或许是你得出的唯一结论。乱了好,英雄出于乱世,庸人苟活于乱世,而在太平盛世,这世界往往是被一群庸人把持着的。

热点阅读

网友最爱