日期:2014-05-16  浏览次数:20709 次

从Linux移植到FreeBSD

FreeBSD 和各种Linux发行版一样,是一种免费的Unix类操作系统。由于FreeBSD的推出稍晚于Linux,因此国内介绍FreeBSD的文章较少,而且 由于某些煤体不负责任的推波助澜,Linux被过分夸大、神化了。实际上,很多大网站都在用FreeBSD,如Yahoo,甚至包括Microsoft的 Hotmail(Microsoft收购Hotmail 4年了,但直到去年11月Microsoft才宣布Hotmail向Windows/IIS迁移,而且,至今Hotmail主机群中依然包括 FreeBSD Boxes,可见Microsoft对于Windows并不是真的很放心,这一事实也证明了FreeBSD引以为耀的稳定性)等等。和Linux各种混乱 不堪的发行版相比,FreeBSD只有唯一的版本,同时,FreeBSD关注的是操作系统的稳定性、性能和品质,适合作为服务器的操作系统。当然,对于选 择FreeBSD还是某种Linux发行版本作为操作系统,不同的人肯定有不同的偏爱,但译者认为,FreeBSD作为服务器来说,比Linux更好一 些,当然,如果不考虑开发成本,仅仅考虑运行效率,也更远好于Windows。原因很多,有机会的话,我会在今后的文章中一一提到。

需要说明的是,译者不认为最近一两年之内免费操作系统阵营能够和Microsoft等商业系统阵营决出胜负高下,因为他们的操作系统的设计理念存在 差别。我自己很喜欢命令行方式的操作,然而在图形界面方面,X Window的效率是很难超过Windows的,这是因为X是以用户模式运行图形界面,而Windows则是以核心模式运行,这实际上就造成了Unix类 操作系统在图形界面上的先天不足。而且,由于Microsoft的产品是要卖钱的,因此它为了维护自己的市场地位,会为客户提供比较好的服务,而免费 Unix操作系统在这一点则比较困难,而且,它对用户的要求较高。在这里我不想给出一个确切的建议,如桌面操作系统应该选择什么,服务器操作系统应该选择 什么,一切要从实际情况出发。请大家注意这样的事实:专业人员维护的Windows服务器的安全性未必就差,非专业人员维护的*nix服务器的安全性也肯 定是无法接受。在抨击Nimda横行的同时,也请注意,Microsoft早在Nimda出现前半年的时候就已经推出了预防性的补丁;*nix一样也有非 常让人难堪的安全问题,同样的,他们也会及时推出补丁,因此,绝大多数服务器的安全问题是由于管理员的疏忽造成的。选择操作系统之前,最好是先想好:什么 样的配置对于您最有利,请考虑整体拥有成本(TCO)而不仅仅是操作系统的价格。目前很多网站采用的、非常流行的Windows 2000+Apache+Php+MySQL组合实际上就同时牺牲了IIS开发周期短和Apache+Unix组合相对比较容易定制的优点,可谓竹篮打水 一场空。

这篇文章比较客观地对FreeBSD和Linux进行了对比,值得一读,所以我决定把它介绍给国内的读者。总之,Think different,决定选择什么东西之前,最好先尝试一番,特别是那些同类产品。

简介:即使是和IT不沾什么边的企业信息技术人士大概也都听说过Linux。有些人可能用过,或正在使用它,原因五花八门,有的甚至只是为了看看那 些大肆吹嘘它的人到底说的是不是实话。然而,GNU/Linux并不是可用的唯一一个“free”的Unix类操作系统。FreeBSD和它的堂兄弟, OpenBSD和NetBSD都是商业UNIX版本——Berkeley Software Distribution免费的分支产品。这篇文章让您更多地了解FreeBSD,也帮助您更轻松地进行潜在的迁移过程。

与Linux使用的GPL授权不同,BSD家族的操作系统使用BSD风格的授权。用一句话来概括两种授权的不同就是,GPL要求源代码的任何衍生物也是公有的,并且使用GPL授权,而BSD授权没有这个要求。

FreeBSD和主要的Linux发行版本的工作方式有一定区别。这篇文章将告诉你我自己认为在把我的桌面操作系统由Linux切换到FreeBSD时的收获。

当然,肯定会有人坚持这样的观点:Linux指的仅仅是操作系统的内核,而不是其他什么东西。在你的Red Hat或Debian匣子中,每天使用的应用程序是由相应的发行版本提供的。而FreeBSD,则包括了操作系统内核和整个操作系统中的那些基本的应用程 序,例如复制、移动文件的命令等等。这一区别的结果是,Linux由不同的发行版本,例如Mandrake, SuSE, Debian和Slackware。任何使用过Mandrake和Debian的人都会告诉你这两套发行版本的世界有多么大的区别。相反,只有一个 FreeBSD,我的FreeBSD和你拥有的FreeBSD是完全一样的,只要他们的版本一样。

三中最主要的Linux发行版本,Red Hat、Mandrake和SuSE使用了RPM安装包管理器。RPM处理安装、升级、卸载,并检查安装在这些操作系统上的应用程序依赖关系。虽然在安装 程序之前检查依赖关系的错误,但RPM遗留了比我们期待的更多的问题。例如,它不能自动地下载它需要的其他RPM。我知道至少3个项目试图解决这个问题, urpmi, Debian的apt-get,当然,附带说一句,只是一个“仅Debian采用”的特性,而且是一个RPM和apt-get的混血儿。所以,除非你打算 是用上面的方法,否则你将不得不手工寻找、下载所需要的RPM。听起来很简单么?直到你用RPM安装Gnome或者升级Xfree的时候你才会知道事情有 多么严重。而且,即使你找到了正确的RPM,如果他们是为SuSE设计的,而你运行的是Red Hat,那么你的麻烦课就大了。

每一个Linux发行版本都存在一些差异,而它们之间最大的差异则在于文件系统的结构。我肯定绝大多数人都听说过SuSE把KDE放到/opt,而 Red Hat则放到/usr文件夹中。更糟糕的是,RPM不能识别从源代码中编译得到的程序。所以,如果你拥有最新编译的程序,RPM甚至无法知道他们的存在。

FreeBSD使用“包”来安装、卸载和升级应用程序。‘pkg_add’命令被用于安装一个你手工下载到计算机的包。你也可以用‘-r’开关来让 它自动的从Internet获取,当然,也包括这个包所依赖的一切。不过,FreeBSD包的真正美妙之处在于“连接点”(Ports)树。连接点树是 ——FreeBSD包含的应用程序之间的继承关系。每一个文件夹都包含Makefile,以及让特定应用程序能够在FreeBSD上正确运行所需要的补 丁。例如,如果我想安装Apache web服务器,我所需要做的只是cd到/usr/ports/www/apache文件夹,然后运行‘make && make install’,然后去小吃售卖机前。如果我拥有一台速度够快的电脑,同时拥有一个足够大方的Internet连接,当我回来的时候Apache源代码 的下载、补丁、编译和安装肯定都已经做完了。连接点树也能够处理Apache运行依赖的那些程序,无论我用连接点树安装、手工编译,还是通过安装已经编译 好的二进制包。连接点树能够通过$PATH找到它需要的东西。

Linux和FreeBSD的另一个区别在于,对于FreeBSD而言,你安装的连接点或者包99%都会被放到/usr/local,而在 Linux上有时是/usr,有时是/opt。这可能只是一个很小的区别,但你至少可以知道你的程序安装到了/usr/local,而不是扩散到了文件系 统的各个地方。

FreeBSD系统使用cvsup来保持它是最新的。一旦你建立了‘sup-file’,cvsup将会把你本地的系统和cvsup服务器上的进行 比较,并且下载那些修改过的东西。你可以用它来确保你的本地连接点树和FreeBSD源代码都是最新的。和Linux不同,Linux通常只有内核被半正 规性的下载和变异。使用cvsup,你可以很容易地下载整个FreeBSD操作系统的源代码。这样做的主要理由是,它使得FreeBSD从一个版本升级到 另一个的