28 FreeBSD连载:Packages Collection

Packages CollectionFreeBSD中提供了上G字节大小的预编译并打好包的二进制应用软件包,这些软件包能够立即安装使用 。在软件包中不但记录了二进制软件的内容,还包括这些软件的安装位置、软件包的描述信息,以及软件包之间的依赖关系,这种管理软件的机制称为Packages Collection 。通常安装介质提供的这些Packages位于安装介质中的packages目录下,使用安装程序sysinstall就能够很容易的安装和卸载这些安装好的软件包 。(由于空间的限制,安装光盘上并不能包括所有的软件包,可以从Internet上下载,在Walnet Creek发布的FreeBSD光盘中的第三张也包括了大量预编译好的软件包) 。
在FreeBSD下,每个预编译的软件包是使用tar和gzip进行打包压缩后的文件,其文件名中的前面为这个Package的名字(包括版本号),并使用tgz后缀,例如navigator浏览器的Package文件为netscape-navigator-4.07.tgz 。。
使用root权限执行sysinstall,然后选择Configure菜单项中的Packages选项,系统将按不同的应用软件的类别,显示出相应的菜单选项,每个选项对应一类应用软件,其中All项中包括所有可用的应用软件 。
这些软件也被放置到安装介质中的packages目录下对应的不同存储子目录中,子目录和菜单选项是一一对应的 。
# ls -l /cdrom/packages
Allconverterskdeprintx11
INDEXdatabaseslangsecurityx11-fonts
Latestdeskutilsmailshellsx11-toolkits
archiversdevelmathsysutilsx11-wm
audioeditorsmisctcl81
benchmarksemulatorsnettextproc
chinesegnomenewstk81
commsgraphicsperl5www如果进入了一个种类的子菜单,那么就可以看到,已经安装的软件有一个 “X” 标记,可使用空格键反选择这个已安装的软件,系统将立即卸载这个软件 。或者选择一个未安装软件,然而此时并没有立即进行这个软件的安装,而是要等到全部选择了所有想要安装的软件包之后,再回到上级菜单,选择 “Install” 按钮才开始进行安装 。
Packages的相互依赖关系
各个软件包之间并不是孤立的,而是在相互之间存在一定的依赖关系 。例如,所有的X Window应用软件都在X Window下运行,那么如果没有安装X Window服务器软件,也不能正确安装这些应用软件 。此外,Packages中也并不全是应用软件,它也包括各种函数库及其他种类的支持文件,那么有的应用软件包就依赖于这些库文件和支持文件 。
由于存在各种相互依赖关系,必然对软件包的安装和卸载发生影响 。当安装一个软件包时,FreeBSD将会首先安装这个软件包依赖的其他软件包,然后才能安装这个软件包本身 。如果没有安装它所依赖的软件包,则就不能正常安装这个软件包本身 。同时,当删除一个软件包时,必须预先删除依赖这个软件包的所有其他软件包,否则就不能正常完成删除任务 。FreeBSD对这个依赖关系限制比较严格,即使是同一个软件,但版本不同,依赖于这个软件另一个版本的其他软件包也不能正确安装,必须保证版本的一致性 。
使用Packages Collection来安装和管理应用软件,可以维持软件安装文件结构的一致性,因为Packages Collection安装的软件其文件目录结构符合FreeBSD的习惯,清晰明了 。此外软件包之间的依赖关系对于同时维护多种软件也很有效,因此最好不要绕过Packages Collection手工安装软件 。当需要重新定制软件的时候,可以通过Ports Collection来完成,它在编译好软件之后,可以使用软件包的方式安装和维护软件 。
每个软件包的安装信息被放置在/var/db/pkg目录下维护,这个目录下的每个子目录都对应于一个安装过的软件包,如果某个子目录被破坏,那么相应的软件包的信息就不复存在了 。

推荐阅读