FreeBSD的软件管理
<p>1、FreeBSD应用<a target="_blank" href="#" class="UBBWordLink">系统</a>的组成<br /><br />
FreeBSD应用<a target="_blank" href="#" class="UBBWordLink">系统</a>由FreeBSD操作<a target="_blank" href="#" class="UBBWordLink">系统</a>和移植(ports)到FreeBSD的各种应用软件组成<br />
<br />
FreeBSD操作<a target="_blank" href="#" class="UBBWordLink">系统</a>本身,是由内核和基本<a target="_blank" href="#" class="UBBWordLink">系统</a>组成,基本<a target="_blank" href="#" class="UBBWordLink">系统</a>由<a target="_blank" href="#" class="UBBWordLink">系统</a>工具、<a target="_blank" href="#" class="UBBWordLink">系统</a>库和文档组成,最小化<a target="_blank" href="#" class="UBBWordLink">安装</a>选项<a target="_blank" href="#" class="UBBWordLink">安装</a>的是内核、<a target="_blank" href="#" class="UBBWordLink">系统</a>工具和<a target="_blank" href="#" class="UBBWordLink">系统</a>库,<a target="_blank" href="#" class="UBBWordLink">系统</a>工具提供了完整的<a target="_blank" href="#" class="UBBWordLink">系统</a>管理和编译程序程序。而文档和代码以及ports系统是可选<a target="_blank" href="#" class="UBBWordLink">安装</a>的。如果完整<a target="_blank" href="#" class="UBBWordLink">安装</a>了FreeBSD,简单的说就是<a target="_blank" href="#" class="UBBWordLink">安装</a>了内核、<a target="_blank" href="#" class="UBBWordLink">系统</a>管理工具、<a target="_blank" href="#" class="UBBWordLink">系统</a>库、编译程序、<a target="_blank" href="#" class="UBBWordLink">系统</a>源代码、ports以及man、info、FreeBSD handbook等文档。<br />
<br />
为了扩大FreeBSD的应用,FreeBSD移植(port)了大量的自由软件、开源软件。并构建了ports系统,把这些移植的软件汇集到一起,从移植应用程序本身来说,大都是基于源代码进行修改和调整,以便建立的程序可以运行在FreeBSD系统环境下,所以ports中存放的都是代码修改以及编译控制,以及FreeBSD的程序管理策略。<br />
<br />
2、ports的组成<br />
<br />
一个软件的ports,大致由以下几个部分组成:<br />
<br />
pkg-descr 应用软件的简单描述<br />
pkg-plist 软件<a target="_blank" href="#" class="UBBWordLink">安装</a>的文件列表<br />
distinfo 软件源代码的名称,版本以及校验信息<br />
Makefile 控制软件编译的makefile<br />
files目录 里面包含对源代码进行修改的各种补丁<br />
<br />
利用port进行软件<a target="_blank" href="#" class="UBBWordLink">安装</a>非常简单,这得益与ports系统的精心设计,大量繁琐的<a target="_blank" href="#" class="UBBWordLink">操作</a>都定义在 /usr/ports/mk 目录下的文件当中,诸如一些变量定义,编译选项定义,文件下载地址定义,编译工具定义,以及一些<a target="_blank" href="#" class="UBBWordLink">操作</a>的定义等等。具体软件的port中的Makefile文件,都会继承<a target="_blank" href="#" class="UBBWordLink">系统</a>提供的这些定义,而且可以根据需要进行调整。<br />
<br />
具体软件port的Makefile还提供了软件运行依赖,建立依赖,以及对源代码编译过程中一些具体的定义。<br />
<br />
3、利用ports进行软件<a target="_blank" href="#" class="UBBWordLink">安装</a>的过程。<br />
<br />
简单来说,可以用下面的指令来完成<a target="_blank" href="#" class="UBBWordLink">安装</a><br />
<br />
</p>
[ <span>-</span> ]
CODE:
make install clean
<p><br />
具体的过程是:<br />
<br />
根据distinfo文件中的软件源代码文件名,检测 /usr/ports/distfiles 目录下,是否有软件的源代码<br />
<br />
如果没有,调用 make fetch 从Makefile文件中定义的下载地址进行下载<br />
<br />
下载完成以后,调用 make checksum ,利用 distinfo 文件中的源代码文件的校验信息,校验源代码包的完整性。<br />
<br />
如果校验正确,调用 make extract,对源代码进行解压,具体的路径是:<br />
<br />
</p>
[ <span>-</span> ]
CODE:
软件port当前路径/work/源代码文件名去掉后面的.gz.bz2/
<p><br />
解压源代码后,调用 make patch ,搜索 files 目录下的补丁文件为源代码打补丁,<br />
<br />
打完补丁,根据 Makefile文件中定义的软件运行依赖关系,查找<a target="_blank" href="#" class="UBBWordLink">系统</a>中是否<a target="_blank" href="#" class="UBBWordLink">安装</a>对应的软件,如果没有<a target="_blank" href="#" class="UBBWordLink">安装</a>,会转入相应的软件的ports中进行make install clean 。假设当前应用程序的所有运行依赖都已经<a target="_blank" href="#" class="UBBWordLink">安装</a>,ports系统会进入源代码目录,运行里面的configure文件,生成源代码目录下的makefile文件,然后进行源代码的make过程,对源代码进行编译、连接。<br />
<br />
当所有的make过程结束以后。运行ports系统的 make install进行<a target="_blank" href="#" class="UBBWordLink">安装</a>。<br />
<br />
<a target="_blank" href="#" class="UBBWordLink">安装</a>完成以后,利用pkg-descr,pkg-plist的内容在 /var/db/pkg 目录下对这个软件进行注册。标记这个软件已经<a target="_blank" href="#" class="UBBWordLink">安装</a>,并详细注册了<a target="_blank" href="#" class="UBBWordLink">安装</a>文件列表。<br />
<br />
如果软件注册成功,ports系统利用make clean命令,清除软件port当前目录下work子目录信息。如果在编译<a target="_blank" href="#" class="UBBWordLink">安装</a>过程中对有依赖关系的软件进行过编译<a target="_blank" href="#" class="UBBWordLink">安装</a>,会回溯清理过程。<br />
<br />
4、packages软件<a target="_blank" href="#" class="UBBWordLink">安装</a>和管理<br />
<br />
packages,也可以称作编译封装好的应用软件的二进制包,是FreeBSD提供的基于ports系统建立的二进制软件包,这个软件包实际上是FreeBSD利用硬件资源,利用 ports <a target="_blank" href="#" class="UBBWordLink">系统</a>的 make package 命令建立的。这些package存放在 ftp.freebsd.org <a target="_blank" href="#" class="UBBWordLink">服务</a>器上,可以远程直接下载<a target="_blank" href="#" class="UBBWordLink">安装</a>,也可以下载后进行<a target="_blank" href="#" class="UBBWordLink">安装</a>。<br />
<br />
以freebsd 7.0 release为例,它的二进制软件包<a target="_blank" href="#" class="UBBWordLink">网络</a>地址是:<br />
<br />
<a href="ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-7.0-release/" target="_blank">ftp://ftp.freebsd.org/pub/FreeBS ... ckages-7.0-release/</a><br />
<br />
在这个<a target="_blank" href="#" class="UBBWordLink">网络</a>目录下,有两个文件夹要用到,一个是 All ,一个是 Latest,注意第一个字母都是大写。<br />
<br />
All目录下的文件,是利用ports建立的二进制软件包,例如 mysql51-server-5.1.22.tbz,软件包名称来自它的ports名,版本号是ports根据软件包源代码版本进行的定义。<br />
<br />
Latest目录下的文件,其实是All目录下软件二进制包的软连接,并且省去了版本号,这个目录是 FreeBSD系统<a target="_blank" href="#" class="UBBWordLink">网络</a>在线远程<a target="_blank" href="#" class="UBBWordLink">安装</a>所要访问的目录,对于 mysql51-server-5.1.22.tbz 的软连接名是 mysql51-server.tbz。这样在远程<a target="_blank" href="#" class="UBBWordLink">安装</a>时就省去了输入版本号的麻烦。<br />
<br />
这两个目录的建立和维护也是由ports系统自动完成的,无需干预。<br />
<br />
FreeBSD操作<a target="_blank" href="#" class="UBBWordLink">系统</a>提供的<a target="_blank" href="#" class="UBBWordLink">系统</a>管理工具中,提供了对packages的维护工具<br />
<br />
<b><font color="#8b0000">软件<a target="_blank" href="#" class="UBBWordLink">安装</a></font></b><br />
<br />
<b>远程软件<a target="_blank" href="#" class="UBBWordLink">安装</a>:</b> pkg_add -r 软件包名称 例如:pkg_add -r mysql51-server,pkg_add -r xorg,pkg_add -r kde <br />
<br />
<a target="_blank" href="#" class="UBBWordLink">系统</a>会自动在上面所说的ftp服务器Latest目录下查找 mysql51-server.tbz,xorg.tbz,kde.tbz,但有一点需要注意,FreeBSD的ftp服务器并不保证ports上容纳的所有的移植过来的软件都有二进制包,尤其是stable分支,有些是因为软件ports本身有问题无法建立,也有一些软件ports正在修订,还有一些只允许源代码包发布,协议不允许进行打包。<br />
<br />
<b>本地软件<a target="_blank" href="#" class="UBBWordLink">安装</a>: </b> pkg_add 软件包文件名 ,用这种方式<a target="_blank" href="#" class="UBBWordLink">安装</a>软件包,需要从All目录下载,防止软件<a target="_blank" href="#" class="UBBWordLink">安装</a>时搜索特定版本的有依赖关系的软件包。<br />
<br />
<b>一个建议:</b>利用pkg_add -r -K 这个命令,它的作用是,远程下载,<a target="_blank" href="#" class="UBBWordLink">安装</a>,并且把下载的二进制包保存在 PKGDIR 定义的目录上。PKGDIR 默认的定义是 /usr/ports/packages/<br />
</p>
頁:
[1]