Windows转向UNIX的一些困惑( 三 )


要想正常搞定新内核是有点挑战的,你需要对硬件相当熟悉 。好了,接下来我讲讲文件安装吧,这也是在使用Unix的过程中我感到挺困惑的一个问题 。我们都知道,在Windows系统中,安装一个软件很简单,下载文件压缩包,解压,双击setup.exe开始安装,选择一下路径就OK了,很简单吧!安装好后,文件通常会写注册表,说实话这是很恶心的一件事情,当你重装过系统后就知道了,你需要重新安装一次这些软件,很麻烦吧?于是在Windows下产生一些新名词,典型的如“绿色软件,意思是说不会写注册表,直接解压后就能用的软件 。当这些思想深深地圈住你的时候,你接触了UNIX,你也用这套思想给搬过来了,于是你去下了个软件包,解压,咦,安装文件呢?找不到安装文件怎么安装?呵呵……我还是来简要说明一下UNIX下的文件安装吧,拿FreeBSD举个例子,在这里我就先不说FreeBSD的ports软件安装机制和package软件安装机制了,这些是在你想学FreeBSD后才需要掌握的东西 。首先,你下载了一个软件包,这个软件包里面可能是源码,也可能是二进制软件 。如果是源码,你解压后,它会自动生成一个目录 。比如我假设这个软件包是httpd-2.0.55.tar.gz,你用tar zxvf httpd-2.0.55.tar.gz命令将它解压,在当前目录下得到httpd-2.0.55目录 。cd httpd-2.0.55,进入这个目录,里面就是源码了,一般情况下会有一个Makefile的文件,这个是用来编译软件用的 。现在只要做的,只是先做一下配置,./configure --help,会显示出配置帮助,你可以根据自己的需要来定制,配置好后敲入make命令,make程序会自动从这些源码编译出二进制软件,这个二进制软件跟上面我说的二进制软件基本一样,区别只在于一些不同机器上编译的一些细节,还有就是后者打过包而已 。好了,现在你敲入make install来安装这个软件 。那么,这个命令做了些什么东西呢?很简单,它只是把编译出来的软件复制到它应该去的地方,其它什么都没做!就这样么?它不写“注册表么?对呀,写什么啊,UNIX的软件是靠它自己的配置文件来控制的!如果你想知道它详细的动作,你可以去看看Makefile文件里的install部分,看它是怎么写的,你就知道当你敲入这个命令后系统都做了些什么东西了 。一个典型的UNIX软件,可以看作组件、二进制程序和配置文件组成,而这些文件都是独立的(当然除了某些必要的依赖软件在这之前必须安装外),当你知道这个软件在另一个系统上是二进制兼容的时候,你把这个软件所在的目录完全拷贝到那个系统上,这个软件可以立即正常工作!多自然的事情,还写什么注册表,塞什么“开始菜单啊,UNIX就是这么井然有序!那么卸载呢?就是把这个文件夹删除!不会留下垃圾么?留什么垃圾啊,在Windows下的“绿色软件不就是直接删除么?呵呵,可以这样说,UNIX下的软件,都是“绿色软件 。
罗嗦了这么多,还是有两个方面得讲讲的,就是Unix的目录结构和进程 。拿FreeBSD为例,安装的时候会让你创建“挂载点 。可能你又有困惑了吧?可以这样理解:Windows下不是有C:,D:等盘符么,UNIX下的“挂载点就相当于这个“盘符,下面挂着文件系统,不同的文件系统可以有不同的格式 。好了,你现在创建了/、swap、/var、/tmp、/home和/usr这几个“挂载点,你用Windows下的思考方式,将它们相像成C盘、页面文件、D盘等等 。其实没什么大碍,这样类比会让你比较好接受 。好了,你进入了系统,ls /一下,发现了好多东西,你可能又惊讶了:怎么这么乱啊?当你熟悉了之后,你就不会这么说了——如果你一开始学的就是UNIX,你会说乱么?事实上,一点也不乱,而且非常有秩序——这些可是经过了几十年定格下来的目录结构!除了/var,/tmp,/home和/usr,其它都是在/目录下的文件或目录,而且对一个系统来说,这些东西基本上不会变化 。swap目录是交换分区,相当于Windows下的页面文件,/tmp目录是临时“垃圾场,当然里面的东西可不是“垃圾,都是软件运行产生的临时文件 。/home是用户的家目录所在地,每个用户(除了root)在登录后都被定位在家目录 。/usr是使用频率最高的一个目录,因为绝大部分本地软件都安装在这里(/usr/local) 。当然,你可以再自己建立新的“挂载点,如/ftp,来提供ftp服务,呵呵 。

推荐阅读