• bsd... - [开源之旅]

    2010年12月25日

    把《鸟哥的liunx私房菜》的基础部分看完了。原本想接着看关于建站的部分,都老是看不起劲,可能是因为感觉这方面目前对我而言不怎么实用的缘故吧。
    再加上之前在阅读完《unix 编程艺术》后才发现众unix(准确来说应该是unix-like的bsd,下文就用bsd吧)有着相对于linux而言更正宗的血统,在口碑上也比 linux要稳定(网上听说的),加上之前从arch的wiki中得知其简洁到极致的系统初始化(init)方式(只需一个rc.conf就能搞掂所有相关的设置)是借鉴于bsd而来的,所以bsd就给了我一个既稳定而又简洁的美好印象(我以前总觉得它很落后)。
    于是,我决定走近bsd的世界中看看。
    我遇到的第一个问题就是选择了解哪个bsd好呢?freebsd好?netbsd好?还是openbsd好呢?
    最后,经过我近一天的对比它们在网上各自的评价后,最终选择这在三大bsd中关注度最低(根据distrowatch)的netbsd,原因就是它是这三个bsd中最简洁的,而且有着比ports更好的包管理系统pkgsrc。(后来发现还是选freebsd比较好,原因是其手册有中文版,所以应该比较容易上手)
    接着,我就开始阅读netbsd(下面简称nb吧)的手册(handbook),我发现无论是每个bsd都有一本很详尽(最详细的当数freebsd)的官方手册,手把手地去教你如何使用它,这点跟linux很不一样。有了手册就大大地减小了学习的难度了,由于我只是想了解一下bsd,并没有用其来取代arch的打算,所以只是在手机上对其手册进行阅读(全英文的,看起来很费劲!),看了大概有三四天吧,看到第四部分(关于建站的)就没看下去了,而且也将其的包管理pkgsrc的说明书看了一大部分。虽说只是纸上谈兵,没有实践安装过,而且看得很粗(看外语的话很难看得仔细),但多多少少也对之前几乎陌生的bsd有了个初步的认识,在这里给大家分享一下吧。
    首先在包管理上(以nb的pkgsrc为例,其它的应该也差不多),一种是通过直接使用预编译了的包(也就是pkgsrc中的pkg);另一种是通过系统提供的方式来管理源代码,实现自定义编译安装(也就是pkgsrc中的src)。尽管与arch的类似,但在使用上估计自动化的程度要低很多。在bsd上貌似不可能像arch那样pacman -Syu一个命令就把整个系统更新一次(不过写个脚本来实现应该没问题),理论上还是可以像arch那样rolling release的,只是比较烦琐。
    另外在系统的结构上也跟linux的有很大的区别,linux主要就是一个内核然后搭上众多的程序,其内核是通用的,而bsd则分为基础系统(由内核跟底层程序构成)跟另外安装的包,而对于不同的bsd其基础系统是不一样的。在这点上linux更为灵活,但可能磨合程度不如bsd的高,我还是比较喜欢linux这种模式(这估计是linux有众多发行版的主要原因吧)。
    不得不提的是bsd的init模式,果然是如arch那样基本上一个rc.conf就把初始化的相关设置搞掂,但是,我发现nb的rc.conf设置跟arch的还是有所差别的,我可以很肯定地说,arch的rc.conf绝对比nb(前面提到nb已经是最简洁的了)的rc.conf简洁明了,arch的daemon设置只需要一行,但nb的却要对每个daemon都写上一行如foo=YES(而freebsd的写法是:foo_enable='YES')的东东,在这点上arch的rc.conf绝对是青出于蓝。
    另外,bsd与linux的区别还有:更为宽松的bsd协议、对于新硬件的支持方面相对不足及不一样的文件系统(可以使用传说中的zfs)……
    (以上内容毫无权威性,请痛批谬误之处)

    总的来说,bsd从系统的构成而言确实要比linux的可靠,但要说使用上的简洁方便嘛,arch在这点上比号称最简洁的netbsd都要优秀。对于桌面应用,感觉还是linux要出色一些。