FreeBSD┊Packages使用方法讲解

Category : 工作学习 / Tags : , / Date : 2009.02.18 / /

  1、安装Packages
 
  目前FreeBSD的Packages是由.tgz 所打包。如果想安装一个 Packages可使用pkg_add。如安装一个joe的 tgz:
 
  pkg_add joe-{version}.tgz
 
  强制安装Packages

  由於有些 Packages会有与其他Packages相依性的关系,所以必须先行安装那些Packages才能正常安装。 如果须要强制安装Packages,可以不须安装那些有相依性Packages,但要注意的是强制安装的结果可能会导致执行或运作的不正常。强制安装Packages的指令如下,如强制安装一个joe的tgz:

  pkg_add -f joe-{version}.tgz
 
  远端安装Packages
 
  有两种设定方式,首先是PACKAGEROOT,如:
 
  setenv PACKAGEROOT ftp://ftp.cn.freebsd.org #设定 PACKAGEROOT 为ftp.cn.freebsd.org站台

  另一种方式是设定PACKAGESITE,好处是若该站台的Packages仓储并不是符合官方的设定或你想自己指定一个路径。以ftp.cn.freebsd.org i386的current pakcages为例:
 
  setenv PACKAGESITE ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/Packages-current/Latest/

  两种方式选择其中一种皆可,接下来的步骤都一样。 往後要安装Packages的时候,如portupgrade 的话,则:
 
  pkg_add -r portupgrade

  则系统会自动於ftp.cn.freebsd.org下载所有与 portupgrade相依的Packages并安装。

  2、查询Packages与其他Packages之间的相依性
 
  由於有些Packages会有与其他Packages相依性的关系,所以必须先行安装那些Packages才能正常安装。 查询Packages与其他Packages之间的相依性的指令如下,如查询与portupgrade相依的其他Packages:
 
  pkg_info -r portupgrade-{version}.tgz
 
  3、查询目前系统安装了哪些套件
 
  查询目前系统已安装的全部套件:

  pkg_info
 
  查询目前系统有没有安装这个关键字的套件

  pkg_info | grep keyword
 
  查询某个档案是属於哪些套件
 
  如果想查询 /usr/local/bin/joe 是属於哪个套件的话,则:
 
  pkg_info -W /usr/local/bin/joe

  如果没有回传任何资讯的话,代表着这个档案是由 FreeBSD 内建的。
 
  查询某个套件安装了哪些档案
 
  如果想查询目前系统所安装的 joe 包含了哪些档案,则:
 
  pkg_info -L /var/db/pkg/joe-{version}
 
  列出所有可以升级的 ports
 
  ports collection 的更新速度很快,在每次更新ports collections 後,往往会出现比目前现在安装的套件还新的版本,可以令系统自行整理并提供可升级套件的列表:
 
  pkg_version –c
 
  4、移除已安装的ports

  以 editors/joe 为例的话,则:

  cd /usr/ports/editors/joe/
  make deinstall

  或是使用 pkg_delete

  cd /var/db/pkg/
  pkg_delete joe-{version}

  有时候套件之间的相依性会导致无法直接移除,如果要强制移除的话,则:

  cd /var/db/pkg/
  pkg_delete -f joe-{version}

  但很有可能会导致其它的套件执行起来出现问题。
 
  一并移除所相依的ports 
  
  以sysutils/portupgrade为例的话,则:

  cd /usr/ports/sysutils/portupgrade/
  make deinstall-depends

  执行此步骤前,请注意是否会移除应该保护的套件。或是使用pkg_delete

  cd /var/db/pkg/
  pkg_delete -r portupgrade-{version}

  5、其它方面的应用
  
  对一个已经安装的 port 打包
 
  如果安装好一个套件,事前并未打包,事後想打包的话,则:

  以editors/joe为例的话
 
  cd /var/db/pkg/
  pkg_create -b joe-{版本号}

  会将已安装的port打包起来,放在 /var/db/pkg/ 目录下。
 
  make deinstall与pkg_delete有什麽不同
 
  简单来说,make deinstall会移除该port,并且不会参照其相依/相关的ports。pkg_delete在移除该port前,会参照其相依/相关的ports,并且pkg_delete有支援wild card,如要移除所有p开头的ports,则:
 
  cd /var/db/pkg/
  pkg_delete p*

  要注意的是,如果使用make deinstall则最好确定系统目前所安装的版本,与ports collection中显示的版本符合,否则有可能会出现非预期性错误;而pkg_delete是因为直接删除系统中所安装的版本,所以没有此问题。
 
  因此,换句话说,当系统所安装的版本符合ports collections中的版本,则可以使用make deinstall或pkg_delete,否则的话最好用pkg_delete。



无觅相关文章插件,快速提升流量

Comments

There are no comments.

Leave a Reply

You must be logged in to post a comment.

传奇 似水流年 绽放 风筝 八月照相馆