方法一:

    使用源码包安装,这个是所有linux系统中比较常用的方法,我个人觉得最主要的目的是能第一时间安装最新的软件版本,源码包的安装最常用的三部曲是,./configure ;make; make install;看是简单,实际操作中会会发现这个是最复杂的,因为你有的软件之间必须协同起来才能工作,那就必须手动做一些设置或者关联,软件才能正常使用。

方法二:

    使用Package系统安装,可以使用pkg_add lsof-4.56.4.tgz 来进行本地安装,前提是你已经下载好了安装包,.tgz文件;或者使用pkg_add -r lsof来远程安装软件包,-r的参数能使程序自动确定目标文件的正确格式和版本,然后自动从一个ftp站点寻找并安装package,这个过程都是自动的,不需要用户干预。
    如果您使用 FreeBSD-CURRENT 或 FreeBSD-STABLE版本的FreeBSD, pkg_add(1) 将下载您的应用软件的最新版本。 如果您使用 -RELEASE 版本的 FreeBSD, 它将会获得与您的版本相应的软件包版本。 您可以通过修改环境变量 PACKAGESITE 来改变这一行为。 例如, 如果您运行 FreeBSD 8.1-RELEASE 系统, 默认情况下 pkg_add(1) 将尝试从 ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.1-release/Latest/ 下载预编译的软件包。 如果您希望强制 pkg_add(1) 下载 FreeBSD 8-STABLE 的软件包, 则可以将 PACKAGESITE 设置为 ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/。
设置方法就是:
export PACKAGESITE=ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/
pgk_add -r vsftpd

查看软件包信息
pkg_info 是用于列出已安装的所有软件包列表和描述的程序
pkg_version 指出了安装版本的相关时间和本地ports目录树中可用的版本的比较,第二列的符号表达的意思;
=     在本地ports树中与已安装的软件包版本相匹配。
<     已安装的版本要比在ports树中的版本旧。
>     已安装的版本要比在ports树中的版本新 (本地的port树可能没有更新)。
?     已安装的软件包无法在ports索引中找到。 (可能发生这种事情,举个例子, 您早先安装的一个 port 从 port 树中移出或改名了)
*     软件包有很多版本。
!     已安装的软件包在索引中存有记录, 但是由于某些原因 pkg_version 无法比较已安装的软件包与索引中相对应的版本号。

删除软件包
pkg_delete perl-5.10.1_1
需要注意的是, pkg_delete(1) 需要提供完整的包名,完整的包名可以通过pkg_info 查看;
pkg_delete perl\* 这时会删除所有以perl开头的package

方法三:

使用Ports Collection
首先要获得Ports Collection ,本质上是 /usr/ports 目录下的一堆 Makefile、补丁和描述文件;获得Ports Collection的方法
CVSup方法
注意:保持您本地 Ports 套件最新的一种快捷的方法, 是使用 CVSup 协议来进行更新;
注意: 在 FreeBSD 系统里对 CVSup 的实现叫作 csup
在首次运行 csup 之前, 务必确认 /usr/ports 是空的! 如果您之前已经用其他地方安装了一份 Ports 套件,则 csup 可能不会自动删除已经在上游服务器上删除掉的补丁文件。
# csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
将 cvsup.FreeBSD.org 改为离您较近的 CVSup 服务器。 http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/cvsup.html#HANDBOOK-MIRRORS-CHAPTER-SGML-MIRRORS-CN-CVSUP中的镜像站点完整列表。
中国大陆
          cvsup.cn.FreeBSD.org
          cvsup2.cn.FreeBSD.org
注意: 有时可能希望使用自己的 ports-supfile, 比如说,不想每次都通过命令行来指定所使用的 CVSup 服务器。
1.这种情况下, 需要以 root 身份将 /usr/share/examples/cvsup/ports-supfile 复制到新的位置, 例如 /root 或您的主目录。
2.编辑 ports-supfile。
3.把 CHANGE_THIS.FreeBSD.org 修改成离您较近的 CVSup 服务器
4.接下来按如下的方式运行 csup:
# csup -L 2 /root/ports-supfile

Portsnap 方式
    Portsnap 是用于发布 Ports 套件的另一套系统。 请参阅 使用 Portsnap 以了解关于 Portsnap 功能更详细的介绍。
1.下载压缩的 Ports 套件快照到 /var/db/portsnap。您可以根据需要在这之后关闭 Internet 连接。
# portsnap fetch
2.假如您是首次运行 Portsnap, 则需要将快照释放到 /usr/ports:
# portsnap extract
如果您已经有装好的 /usr/ports 而您只想更新,则应执行下面的命令:
# portsnap update

Sysinstall 方式
    这种方法需要使用 sysinstall 从安装介质上安装 Ports 套件。注意, 安装的将是发布发行版时的旧版 Ports 套件。 如果您能访问 Internet,应使用前面介绍的方法之一。
   1.以 root 身份运行 sysinstall:
      # sysinstall
   2.用光标向下选择 Configure, 并按 Enter。
   3.向下并选择 Distributions, 按 Enter。
   4.选择 ports, 并按 Space。
   5.选择 Exit, 并按 Enter。
   6.选择所希望的安装介质, 例如 CDROM、 FTP, 等等。
   7.选择 Exit 并按 Enter。
   8.按 X 退出 sysinstall。

    获取Ports Collections之后,就开始安装了,要开始操作,首先进入要安装 port 的目录,里面有很多的分类,根据要安装的软件,进入对应的目录,接下来就简单了
make
make install
make clean
这3条命令就可以实现安装,也可以使用make install clean也是可以的。
在一些罕见的例子中, 用户可能需要在除了 MASTER_SITES 以外的一个站点(本地已经下载下来的文件)去获得一个文件包。 您可以用以下命令不使用 MASTER_SITES:
# cd /usr/ports/directory
# make MASTER_SITE_OVERRIDE=ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

在这个例子中,我们把 MASTER_SITES这个选项改为了 ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/。

改变默认的 Ports 目录
有时, 使用不同的工作临时目录和目标目录可能很有用 (甚至是必要的)。 可以用 WRKDIRPREFIX 和 PREFIX 这两个变量来改变默认的目录。 例如:
# make WRKDIRPREFIX=/usr/home/example/ports install
将在 /usr/home/example/ports 中编译 port 并把所有的文件安装到 /usr/local。
# make PREFIX=/usr/home/example/local install
将在 /usr/ports 编译它并安装到 /usr/home/example/local。
当然
# make WRKDIRPREFIX=../ports PREFIX=../local install
将包含两种设置 (没有办法在这一页把它写完, 但您应该已经知道怎么回事了)。
卸载已经安装的 Ports   Ports 可以同 packages 以完全相同的方式卸载
# pkg_delete lsof-4.57

使用 Portupgrade 来更新 Ports
portupgrade 工具是设计来简化升级已安装的 port 的操作的。 它通过 ports-mgmt/portupgrade port 来提供。 您可以像其它 port 那样,使用 make install clean 命令来安装它:
# cd /usr/ports/ports-mgmt/portupgrade
# make install clean


    使用 pkgdb -F 命令来扫描已安装的 port 的列表,并修正其所报告的不一致。 在每次升级之前, 有规律地执行它是个好主意。
运行 portupgrade -a 时, portupgrade 将开始并升级系统中所安装的所有过时的 ports。如果您希望在每个升级操作时得到确认, 应指定 -i 参数。
# portupgrade -ai
如果您只希望升级某个特定的应用程序, 而非全部可用的 port, 应使用 portupgrade pkgname。 如果 portupgrade 应首先升级指定应用程序的话, 则应指定 -R 参数。
# portupgrade -R firefox
要使用预编译的 package 而不是 ports 来进行安装, 需要指定 -P。 如果指定了这个选项, portupgrade 会搜索 PKG_PATH 中指定的本地目录, 如果没有找到,则从远程站点下载。 如果本地没有找到, 而且远程站点也没有成功地下载预编译包, 则 portupgrade 将使用 ports。 要禁止使用 port, 可以指定 -PP。
# portupgrade -PP gnome2
如果只想下载 distfiles (或者, 如果指定了 -P 的话, 是 packages) 而不想构建或安装任何东西, 可以使用 -F。

Ports 和磁盘空间
使用 Ports 套件会最终用完磁盘空间。 在通过 ports 联编和安装软件之后,您应记得清理临时的 work 目录, 其方法是使用 make clean 命令。您可以使用下面的命令来清理整个 Ports 套件:
# portsclean -C
随着时间的推移, 您可能会在 distfiles 目录中积累下大量源代码文件。 您可以手工删除这些文件, 也可以使用下面的命令来删除所有 port 都不引用的文件:
# portsclean -D
除此之外, 也可以用下列命令删去目前安装的 port 没有使用的源码包文件:
# portsclean -DD
    注意: 这个 portsclean 工具是 portupgrade 套件的一部分。
不要忘记删除那些已经安装, 但已不再使用的 ports。用于自动完成这种工作的一个好工具是 ports-mgmt/pkg_cutleaves port。