HUST浮生录(一) 我与Linux的缘分

276 阅读5分钟
很早就听别人说过, 最适合程序员的系统是Linux系统

梦开始的地方

大一下学期的时候, 我的一名室友沉迷于Linux, 当时我看见他每天都在终端上敲一些我看不懂的东西(对, 他甚至都没有安装图形界面). 于是我对Linux系统充满了好奇, 在暑假, 我便开始了Linux的探索之旅.

折腾记

如果说在虚拟机里面是小打小闹, 那么装双系统可就是干真家伙了, 最开始装的发行版是Ubuntu, 是国内用的人最多的一个发行版吧, 最开始无知的我曾经一度以为Linux就是Ubuntu(笑), 后来成功安装之后, 发现连不了wifi, 后来才知道是无线网卡驱动的问题, 可当时的我哪会解决啊, 网上关于Ubuntu的教程是挺多的, 但没有一个能解决我的问题, 后来重装了几次没有解决后, 又相继安装了RedHat, CentOs, Debian...等等发行版, 直到我遇见了 Manjaro

活跃的社区

其实装了Manjaro之后, 网卡驱动的问题依然存在, 但是Manjaro社区的活跃程度以及里面的大神的热心程度让我爱上了这个社区, 里面几名热心的大牛给了我几行命令, 我输完了之后重启, 问题竟然就神奇的解决了, 当时还是用windows系统思维的我完全不能理解几行命令为何如此神奇.

Manjaro学习记

那段刚接触Manjaro的时光简直难忘, 每天都能带给我惊喜, 原来下载软件就是一条命令的事情, 原来这些命令的搭配组合使用能够做出这么不可思议的事情, 这是以前用鼠标点的时候不敢想的, 原来桌面是可以卸载的, 原来Linux有六个终端, 所以不会死机的. 在熟悉了这个发行版后, 我开始思考, 为什么Linux有那么多发行版? 它们之间有什么不同呢?

发行版之间的不同

经过查阅资料以及我之前瞎折腾的一段经历, 我的理解是发行版之间最大的差异在于包管理系统, 比如说大家都知道的Ubuntu, 它是Debian系的,Debian及其派生发行版使用deb软件包格式,并使用dpkg及其前端作为包管理器。

另外像服务端用的比较多的如CentOs属于红帽系的, 使用RPM格式软件包, 我们熟知的yum命令是rpm包管理器的前端工具

另外我个人最喜欢的manjaro属于Arch系, 有着强大到逆天的包管理工具Pacman.

那么包管理工具是干什么的呢? 试想一下, 如果我们没有包管理工具的话, 我们如果需要下载一个软件需要做哪些事情? 我们首先得从网上下载源代码下来, 然后我们得编写makefile文件并执行make命令来编译它们, 或许这个软件想要正常执行还需要一些依赖, 那么我们还得去处理依赖关系, 最后这个软件才算安装成功了. 所以, 包管理工具就是帮我们自动化管理上面这些东西的.

对于一些包管理器, 它们为了维护这么大量的软件包, 于是找了一群大牛来作为Mantainer, 将源代码编译成二进制代码后打包放在服务器上面, 这种软件包因为在发布之前就已经经过了编译, 所以我们安装的过程非常快, 但是可定制性很差,因为大部分已经编译好了.

而另外有一部分发行版是基于源代码的, 那就是大名鼎鼎的 ArchLinux, Archlinux 使用了 makepkg 这样一个工具来实现源代码到二进制代码. makepkg 会按照 PKGBUILD 文件生成一个二进制包.有些时候,makepkg 还需要 install 文件(主要用来显示提示信息、备份用户设置等)和其他的配置文件.

我想偏心的谈谈Arch

人们谈到Arch, 第一印象可能就是Arch很难, 因为很多东西都需要自己配置, 不像ubuntu, 很多东西都帮你配置好了, 你只需要点击下一步就可以了. 但Arch其实并不难, Arch的原则是KISS(keep it simple, stupid).

Arch的优点:

  • 你可以通过ARU分享你自己编写的packgeBuild文件, 如果你使用的是Debian系的话, 那么你会非常的依靠维护者, 你可以自己制作Deb包, 但是只有你知道你是怎么做的, 别人无法知道
  • Arch采用滚动升级, 什么是滚动升级呢? 我说一下它的反面你或许就理解了, 那就是隔一段时间发布一个新版本. 但Arch里面有时候更新可能会导致一些兼容性的问题, 所以我用Manjaro. 它得滚动更新会慢于ArchLinux, 它会对这次更新进行测试, 所以用Manjaro, 你不用担心滚动更新出问题, 另外, 即使出问题了, 也可以回滚的
  • 强大的文档, 就算你没有用过Arch, 我想你也听说过Arch Wiki的大名吧, 里面几乎涵盖了所有关于安装和维护 Arch 以及关于操作系统本身的知识. 对于新手学习来说, 齐全的文档是很重要的, 所以我强退Manjaro.
我们一起来用Linux吧!