learn-gnu-linux.rst 5.5 KB

1234567891011121314151617181920212223242526272829
  1. 浅谈GNU/Linux的学习
  2. ===================
  3. 有人向我询问过关于如何GNU/Linux的问题。很遗憾的是,在使用多年GNU/Linux之后,我也不记得自己是怎么入门的,只好凭着自己的一点经验,谈谈学习GNU/Linux的方法。
  4. 我最早接触GNU/Linux,是在初中的时候。我在一些电脑和黑客的杂志上看到了这个操作系统,那时候RedFlag还是中文杂志中常见的发行版,Mandriva和Linspire还在,Ubuntu还不太流行。当时也就是学了ls等少数几个命令,在红旗下玩点小游戏,用Kaffeine放点东西。有的同学在教室的电脑上装了openSUSE并尝试了桌面特效。之后我到上大学之前都没再用过GNU/Linux.
  5. 之后到了2011年,我刚刚进入大学,教我们程序设计的老师在课堂上常常用PuTTY连接GNU/Linux的机器,并且还教过我们用man查C库函数的使用,于是我重新对GNU/Linux有了兴趣。我用过Ubuntu,用过Freespire和MEPIS,感觉都不好用,最后用了Fedora 16.当时我向老师请教过一些问题,老师都给了我答案,比如Vim用C-p做补全和C-y复制上一行,用SSH而不是Telnet是因为Telnet是明文连接,我学到了不少东西。
  6. 开始的时候,我用图形界面的软件管理器装软件,也因为MPlayer和ffmpeg之类的软件不在软件源而折腾过RPM Fusion,慢慢地我就了解了包管理,学会了用yum安装和升级软件,学会了用软件源。过了一段时间,在王垠的《完全用Linux工作》的影响之下,我终于下定了决心,把Windows彻底删掉,计算机上只安装Fedora.这是我最早真正使用GNU/Linux的经历。
  7. 过了一个学期,在看到了BBS的Linux版之后,我加入了Linux俱乐部。在这个社团里,我认识了两个人。一个是Gentoo用户,擅长shell和LaTeX,维护着LaTeX论文模板。一个是Debian社区的成员,是Debian Maintainer,擅长Perl语言。这两位是社团的负责人,在我见过他们开始,到一年半后他们毕业,他们一直在主持社团的活动。有这么优秀的社团负责人,同时当时BBS也活跃,Linux版也是比较有影响力的版面,因此时常有其他GNU/Linux高手来参与活动。在身边的人的影响和指导下,我的技术水平也有快速的提高。
  8. 在这个学期里,我接触了Arch Linux,一个受极简主义影响的社区发行版。由于此前用的是Fedora,我已经习惯了在系统上用最新的软件,因此用了一段时间的Arch之后,感觉和我非常合拍。而且,因为Arch是社区发行版,进入软件源的包不担心太多的专利问题,因此我常用的媒体播放器MPlayer、ffmpeg这些在Arch就能直接安装。Arch还有优秀的ArchWiki,通过阅读这些文档,我学到了很多知识,并且在执行每一个操作时,都明白了自己在做什么。恰好这个学期有一次活动,讲解Linux包管理,一位师兄讲Arch包管理,我更加熟悉了Arch包管理的用法。
  9. 大学入学的时候还不太了解GNU/Linux,一年之后,我终于能熟练地使用这个系统。我觉得以下几点对我的技术提高有很大的影响:
  10. * 身边有人指导:无论是老师还是社区的同学,都帮我在入门阶段解决了很多问题。
  11. * 经常查阅文档:man和ArchWiki都是非常优秀的资料。
  12. * 让自己习惯GNU/Linux:我当时把Windows删掉,强迫自己使用GNU/Linux,开始并不习惯,但慢慢就发现使用起来问题越来越少,技术也逐渐提高。
  13. * 在使用中收集使用技巧:当时还很活跃的BBS有很多有价值的讨论,在里面可以学到很多知识,线下活动更能从身边人使用GNU/Linux的方式了解很多实用的软件和技巧。此外我从网上很多零碎的资料中也接触了一些有意思的软件,比如字符界面的音乐播放器,开始我用cmus,后来用了mocp,直到现在。
  14. 因此,根据我的自身经历,我对GNU/Linux初学者的一些建议是:
  15. * 多用GNU/Linux,让自己爱上这个系统。
  16. * 查阅文档:man作为离线的纯文本的文档型资料,内容比较简洁。ArchWiki则是教程型的资料,有时会突出一些细节,虽然是为Arch这个发行版写的,但因为它常常能讲清原理,其实它里面的很多内容都可以在其他发行版上用。**最重要的是,通过学习,知道自己的每一个操作都在做什么。** 此外,搜索引擎是一个重要的信息获取工具,虽然国内不太容易上Google,但替代品是很容易找到的,比如 `基于searx的搜索代理 <https://search.wehack.space>`__,比如 `Qwant <https://www.qwant.com/>`__.
  17. * 参与社区:不仅仅是线下社区,还有你关心或感兴趣的项目的社区。建议学习使用 *邮件列表* 和 *IRC*,它们虽然都很古老,但还是大多数社区的首要交流方式。远离QQ、微信、Skype等私有服务,它们不仅有严重的隐私风险,而且它们没有GNU/Linux客户端,不利于社区的交流。
  18. * 阅读一些社区公认的好文章:它们说的不一定全都正确,但是很有学习的意义。比如ESR的《提问的智慧》告诉你在遇到问题时,怎样自己解决问题,怎样向社区求助。想了解社区文化的,可以看RMS的 `自由软件,自由社会 <https://fsfs-zh.readthedocs.io>`__ 还有ESR的 `《大教堂与集市》 <http://www.catb.org/esr/writings/cathedral-bazaar/>`__ ,可以了解“自由”和“开源”这两个观念之间的碰撞,还有给黑客文化的不同理解。