make fetch: 每个Port中并没有保存应用软件的原始源代码文件,它保存的是如何获得软件的源代码,并产生可执行文件的操作过程 。每种软件的源文件通常保存在其他介质上(一般位于Internet上),那么当通过Ports Collection来安装一个软件时,第一步就是要获得相关的文件 。这个下载文件的功能是Ports Collection的一部分功能,如果这台计算机联接到Internet上了,它能够到网络上找到该文件并使用fetch命令将文件下载到本机内,所有的步骤都是完全自动完成的,需要使用者操作的仅仅是使用make命令来启动这个过程 。
如果使用的是make fetch命令,fetch参数将使得make仅仅完成下载任务,而不进行编译和安装处理过程 。
即使计算机没有联接到Internet上,也不必担心,因为Ports Collection将所有下载的文件都保存在/usr/ports/distfiles目录中,而make命令将首先检查该目录中是否已经存在了要下载的源文件,当发现存在这个文件之后,就不再重新下载 。因而可以手工将这个应用软件的源代码文件拷贝到这个目录下,make时就不会再重复下载过程了 。如果不能确定源文件的位置,可以从Makefile文件中获得源文件的位置,Makefile中将给出该源文件存在几个不同的网络地址,供fetch命令连续尝试下载,一般最新Ports Collection对应的软件的源文件都能从ftp.freebsd.org中下载得到 。
make: 不带任何参数的make命令在完成上述下载工作之后,就开始编译软件了 。make程序首先在这个Port目录下建立一个工作子目录,命名为work,此后将源代码展开到这个目录下,再应用这个软件的各个补丁文件,并启动自动配置和编译过程 。在这里,每进行一步操作,就在work目录下生成一个空文件,这些文件用于标记编译、安装port的工作进行到哪一步了 。
$ ls -al /usr/ports/security/sshtotal 8drwxr-xr-x3 rootwheel512 Apr 14 16:57 .drwxr-xr-x7 rootwheel512 Apr 19 01:18 ..-rw-r--r--1 rootwheel768 Apr 14 16:57 .PLIST.mktmp-rw-r--r--1 rootwheel0 Apr 14 15:56 .build_done-rw-r--r--1 rootwheel0 Apr 14 15:56 .configure_done-rw-r--r--1 rootwheel0 Apr 14 15:55 .extract_done-rw-r--r--1 rootwheel0 Apr 14 16:57 .install_done-rw-r--r--1 rootwheel0 Apr 14 15:55 .patch_donedrwxr-xr-x4 rootwheel4608 Apr 14 15:56 ssh-1.2.26make展开应用软件包时会检查下载软件包的完整性,这是通过验证下载文件产生的MD5数据是否与记载在Port中的数据相一致,来保证了下载软件的正确性 。
每个Port的Patch是一些补丁程序,它包括这个软件本身存在问题,用于修正或升级的补丁,或者是维护这个Port的FreeBSD开发者用于修正系统差异而制作的Patch 。所有的补丁程序被放置在该Port目录下的patches目录中 。
要对这个软件进行定制时候,应该首先使用make命令,保证源代码展开到正确的目录下并编译完毕 。这样能保证make应用了所有的补丁程序对源代码进行修正,然后才能在此目录中修改相应配置,并删除work子目录中的相应标记文件.build_done,使得可以重新开始编译过程,重新编译软件 。
makeinstall: 如果使用的是make install命令,那么make先完成编译过程,然后还将自动安装这个Port,此时不但将软件的各个部分安装到正确的位置之外,还将执行Port中附带的shell脚本进行软件的基本配置 。当然这个配置过程是不完整的,完整的配置属于这个应用程序本身的功能 。
安装完毕之后,还可以针对自己定制的Port生成对应的软件包,使用make package命令将自动完成这个过程 。
安装每个Port的同时也就等同于安装相应的Package,安装过程同时也将在/var/db/pkg目录下记载下相应Package的安装记录 。由于软件包之间存在相互依赖关系,Ports Collection中也使用同样的原则来处理软件之间的依赖关系,必须使用预先安装这个Port依赖的所有其他Packages之后,才能安装(不影响编译)这个Port 。这个过程也将在make install中自动完成的,系统就会检查依赖关系,自动使用Ports Collection安装它所依赖的Port,最后才能继续这个Port的安装过程 。
推荐阅读
- FreeBSD网站平台建设全过程 第四步
- 49 FreeBSD连载:进入X Window
- FreeBSD Find的介紹
- FreeBSD网站平台建设全过程 第五步
- FreeBSD Biabam 邮件附件
- FreeBSD网站平台建设全过程 第二步
- FreeBSD+Resin成功建立支持Jsp平台
- B 系统 FreeBSD 升级
- FreeBSD网站平台建设全过程 前言
- 1 FreeBSD 核心