精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● FreeBSD>>网络书籍>>《FreeBSD使用大全》>>FreeBSD连载(28):Packages Collection

主题:FreeBSD连载(28):Packages Collection
发信人: Hopper()
整理人: hahalee(2000-02-28 20:02:00), 站内信件
http://www.sina.com.cn 1999年11月30日 17:05 王波

Packages Collection
  FreeBSD中提供了上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
All          converters   kde     print      x11
INDEX        databases    lang    security   x11-fonts
Latest       deskutils    mail    shells     x11-toolkits
archivers    devel        math    sysutils   x11-wm
audio        editors      misc    tcl81
benchmarks   emulators    net     textproc
chinese      gnome        news    tk81
comms        graphics     perl5   www
 
 



  如果进入了一个种类的子菜单,那么就可以看到,已经安装的软件有一个 “
X” 标记,可使用空格键反选择这个已安装的软件,系统将立即卸载这个软件。
或者选择一个未安装软件,然而此时并没有立即进行这个软件的安装,而是要等
到全部选择了所有想要安装的软件包之后,再回到上级菜单,选择 “Install”
 按钮才开始进行安装。 


Packages的相互依赖关系

  各个软件包之间并不是孤立的,而是在相互之间存在一定的依赖关系。例如
,所有的X Window应用软件都在 X Window下运行,那么如果没有安装X Window服
务器软件,也不能正确安装这些应用软件。此外,Pack ages中也并不全是应用软
件,它也包括各种函数库及其他种类的支持文件,那么有的应用软件包就依赖于
这些库文件和支持文件。

  由于存在各种相互依赖关系,必然对软件包的安装和卸载发生影响。当安装
一个软件包时,FreeBSD将会首先安装这个软件包依赖的其他软件包,然后才能安
装这个软件包本身。如果没有安装它所依赖的软件包,则就不能正常安装这个软
件包本身。同时,当删除一个软件包时,必须预先删除依赖这个软件包的所有其
他软件包,否则就不能正常完成删除任务。 FreeBSD对这个依赖关系限制比较严
格,即使是同一个软件,但版本不同,依赖于这个软件另一个版本的其他软件包
也不能正确安装,必须保证版本的一致性。

  使用Packages Collection来安装和管理应用软件,可以维持软件安装文件结
构的一致性,因为 Packages Collection安装的软件其文件目录结构符合FreeBS
D的习惯,清晰明了。此外软件包之间的依赖关系对于同时维护多种软件也很有效
,因此最好不要绕过Packages Collection手工安装软件。当需要重新定制软件的
时候,可以通过Ports Collection来完成,它在编译好软件之后,可以使用软件
包的方式安装和维护软件。

  每个软件包的安装信息被放置在/var/db/pkg目录下维护,这个目录下的每个
子目录都对应于一个安装过的软件包,如果某个子目录被破坏,那么相应的软件
包的信息就不复存在了。 


管理Packages

  虽然使用sysinstall来管理软件比较直观,但是这需要一个标准的安装介质
,适合大量安装软件包时使用。而在不使用安装介质的时候,仅仅需要添加某个
独立的软件包或进行维护时,sysinstall就不适合了。FreeBSD 提供了十分简单
的几个管理命令来完成这个任务。

  pkg_add 安装一个Package,其参数为要安装Package的文件名或获得这个文
件的URL 。当使用URL来指定Package的位置时,pkg_add首先使用fetch程序下载
该软件包,然后进行安装。通常可以使用 “-v” 参数,使pkg_add显示出进行的
操作过程。

  pkg_delete 删除一个软件包,其参数为软件包的名字,由于此时软件包已经
被安装到系统中了,因此名字中不必使用tgz后缀。同样也可以使用 “-v” 参数


  pkg_info 获取一个软件包的安装信息和简短描述,参数为软件包名字时,将
参看当前已安装的软件包中是否存在它,当使用的参数为带tgz后缀的文件名时,
将查看当前目录中是否存在这个软件包文件。或者可以使用 -a参数列出当前安装
的所有软件包的信息: 

# pkg_add netscape-communicator-4.5.tgz
# pkg_delete netscape-communicator-4.5
 
 

  但在实际应用的过程中,值得注意的问题常常发生在升级软件包时。由于同
一软件的不同版本通常使用同样的文件名,因此在安装一个版本时将覆盖掉另一
个版本的文件,但是同时新版本的Packages并不会自动删除老版本Packages 的安
装信息。因此如果再一次卸载旧版本时就会将新版本中具有同样文件名的文件删
除掉。解决问题的方法是先卸载老版本,再安装版本的Packages。一旦出现问题
,可以再次将新版本Packages重新安装一次即可。

未完,待续。。。  



--
小多子:你知道我们佟家百年不衰的道理么?
        那就是,不要一条路走到黑!

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.190.123]

[关闭][返回]