FreeBSD的Port

注意:本文最后更新于 2621 天前,有关的内容可能已经发生变化,请参考使用。

FreeBSD系统提供的源代码包括三个部分,内核源代码、应用程序源代码和软件Ports的源代码。

每种要被移植到FreeBSD上软件被称为一个Port,由某个FreeBSD的开发者维护。这个Port的维护者首先将软件移植到FreeBSD上,并将他所完成的这些移植工作按照Ports Collection 的要求进行设置,编写相关的脚本,使下载软件、配置、编译、安装的全过程能够自动完成,不需人工干预。每个Port中并没有保存软件包的源代码或者二进制代码,而只是提供了搜索它的源代码或者二进制软件包的方法。

由于Ports Collection是随着应用程序的发展而常常更新的,当某个软件升级造成软件的源代码文件的名字或位置改变,因此部分Port中有关下载软件源代码的位置的设置,就很可能不再适用,从而造成某些Ports不能正常编译安装。

  • 必须使用 root 用户登录后安装 ports。

在安装任何 port 之前, 应该首先确保已经更新到了最新的 Ports Collection,并检查http://vuxml.freebsd.org/
中是否有与那个 port 有关的安全问题。

在安装应用程序之前, 可以使用 portaudit 来自动地检查是否存在已知的安全问题。 这个工具同样可以在 Ports Collection
(ports-mgmt/portaudit) 中找到。 在安装新的 port 之前,可以考虑先运行一下 portaudit -F 来抓取最新的漏洞数据库。在每天的周期性系统安全检察时, 数据库会被自动更新, 并且会在这之后实施安全审计。

  • 如何安装一个新的 port?

如果系统上未安装此软体,则可以选择安装一个新的 port。以 editors/joe 为例的话,则:

    cd /usr/ports/editors/joe/  
    make install  

如此会在系统上安装一个新的 joe 软体。如果需要在安装完成後,一并清除编辑时期所留下来的暂存目录,则可叁考 FAQ 8 的方法,一起使用,如:


    cd /usr/ports/editors/joe/  
    make clean  

如果想要一次清掉所有 ports 产生的暂存资料,则只要回到 ports 的根目录执行:


    cd /usr/ports/  
    make clean  
  • 如何移除已安装的 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  

执行此步骤前,请注意是否会移除应该保护的套件。建议先叁考 FAQ 10 的方法 来检查。或是使用 pkg_delete


    cd /var/db/pkg/  
    pkg_delete -r portupgrade-{version}  
  • 如何升级已安装的 ports?

如果已经安装好套件,事後欲升级的话,必须先移除旧版本的 port,移除的方法请叁考FAQ 11、FAQ 12及FAQ 13;之後再安装 port,安装的方法请叁考FAQ 4或FAQ 5。以 editors/joe 为例,且以 FAQ 11 及 FAQ 4 的方法,则:


    cd /var/db/pkg/  
    pkg_delete joe-{version}  
    cd /usr/ports/editors/joe/  
    make install  

或是

  

    cd /usr/ports/editors/joe/  
    make clean  
    make reinstall  
  • 如何安装 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

「倘若有所帮助,不妨酌情赞赏!」

Holmesian

感谢您的支持!

使用微信扫描二维码完成支付


相关文章

发表新评论
暂无评论
  1. 久酷

    现在还没用过LINUX,想学学习自己需要的东西就可以了

    如果用不上的话学了也白学

    久酷 回复