diff options
author | Xin LI <delphij@FreeBSD.org> | 2006-03-15 19:38:56 +0000 |
---|---|---|
committer | Xin LI <delphij@FreeBSD.org> | 2006-03-15 19:38:56 +0000 |
commit | b99e83b0a7c48690c2e6b7699bbd549e9a2c8da1 (patch) | |
tree | 61578f2c24f19d8d92ac0907829272ba8ae92e3e /zh_CN.GB2312/books/handbook/ports | |
parent | f266a6a31f7f22bbb73de28eccf694ca3317afaa (diff) |
Notes
Diffstat (limited to 'zh_CN.GB2312/books/handbook/ports')
-rw-r--r-- | zh_CN.GB2312/books/handbook/ports/chapter.sgml | 547 |
1 files changed, 302 insertions, 245 deletions
diff --git a/zh_CN.GB2312/books/handbook/ports/chapter.sgml b/zh_CN.GB2312/books/handbook/ports/chapter.sgml index 6b322adfd1..c58527c2f9 100644 --- a/zh_CN.GB2312/books/handbook/ports/chapter.sgml +++ b/zh_CN.GB2312/books/handbook/ports/chapter.sgml @@ -2,7 +2,7 @@ The FreeBSD Documentation Project The FreeBSD Simplified Chinese Documentation Project - Original Revision: 1.243 + Original Revision: 1.253 $FreeBSD$ --> @@ -14,11 +14,11 @@ <indexterm><primary>ports</primary></indexterm> <indexterm><primary>packages</primary></indexterm> - <para>FreeBSD 捆绑了很多系统工具作为基本系统的一部分。然而,在实际工作中, - 您可能仍需要安装额外的第三方应用程序。 FreeBSD - 提供了两种安装第三方应用程序的方法: FreeBSD Ports Collection 和二进制软件包 - (package)。 无论用哪种方式, 您都可以从本地媒体 (设备) - 或直接通过网络来安装您喜欢的最新版本的应用程序。</para> + <para>FreeBSD 将许多系统工具捆绑作为基本系统的一部分。 然而, + 要完成实际的工作, 可能还需要安装更多的第三方应用。 FreeBSD 提供了两种补充的技术, + 用以在您的系统中安装第三方软件: FreeBSD Ports 套件 (用于从源代码安装), + 以及 packages (用以从预编译的二进制版本安装)。 + 这两种方法都可以用于从本地介质, 或从网上直接安装您喜欢的应用程序的最新版本。</para> <para>读完这章,您将了解到:</para> @@ -27,7 +27,7 @@ <para>如何安装第三方的二进制软件包。</para> </listitem> <listitem> - <para>如何从Ports Collection安装第三方软件。</para> + <para>如何使用 ports 套件从源代码构建第三方软件。</para> </listitem> <listitem> <para>如何删除先前安装的软件包。</para> @@ -39,7 +39,7 @@ <para>如何找到您需要的软件包。</para> </listitem> <listitem> - <para>如何升级您的ports。</para> + <para>如何升级您的应用软件。</para> </listitem> </itemizedlist> </sect1> @@ -467,7 +467,9 @@ docbook = <sect1 id="ports-using"> <title>使用Ports Collection</title> - <para>下面的章节提供了使用Ports Collection来安装或卸载程序的基本用法。</para> + <para>下面的几个小节中, 给出了关于如何使用 + Ports 套件来在您的系统中安装或卸载程序的介绍。 关于可用的 <command>make</command> + targets 以及环境变量的介绍, 可以在 &man.ports.7; 中找到。</para> <sect2 id="ports-tree"> <title>获得Ports Collection</title> @@ -482,62 +484,12 @@ docbook = 那您可以用下面的指令来安装 Ports Collection:</para> <procedure> - <title>Sysinstall 方式</title> - - <para>这种方式使用 <application>sysinstall</application> - 再次手动安装Ports Collection。</para> - - <step> - <para>以 <username>root</username> 用户身份, 运行 - <command>sysinstall</command> - (对于 &os; 5.2 之前的版本, 应该是 - <command>/stand/sysinstall</command>), 如下所示:</para> - - <screen>&prompt.root; <userinput>sysinstall</userinput></screen> - </step> - - <step> - <para>选择 <guimenuitem>Configure</guimenuitem>, 按 <keycap>Enter</keycap>。</para> - </step> - - <step> - <para>选择 <guimenuitem>Distributions</guimenuitem>, 按 <keycap>Enter</keycap>。</para> - </step> - - <step> - <para>选择 <guimenuitem>ports</guimenuitem>, 按 <keycap>Space</keycap>。</para> - </step> - - <step> - <para>选择 <guimenuitem>Exit</guimenuitem>, 按 <keycap>Enter</keycap>。</para> - </step> - - <step> - <para>选择您的安装介质,就像CDROM,FTP,等等</para> - </step> - - <step> - <para>选择 <guimenuitem>Exit</guimenuitem> 并按 <keycap>Enter</keycap>。</para> - </step> - - <step> - <para>按 <keycap>X</keycap> 键退出 <application>sysinstall</application>。</para> - </step> - </procedure> - - <para>您可以使用 <application>CVSup</application>,这个程序让您获得和更新 - Ports Collection。 <application>CVSup</application> 需要使用 - <filename>/usr/share/examples/cvsup/ports-supfile</filename> 这个配置文件。 - 如果您想获得关于 <application>CVSup</application> 这个应用程序的更多信息, - 请看 <link linkend="cvsup">使用 CVSup</link> (<xref linkend="cvsup">) 和本文。</para> - - <procedure> <title>CVSup 方法</title> - <para>使用 <application>CVSup</application> 获得 Ports Collection, - 是一个非常快捷的方法。 如果您想保持您的 ports 树的最新状态, - 或了解更多关于 <application>CVSup</application> - 的内容, 您可以阅读刚才提及的内容。</para> + <para>保持您本地 Ports 套件最新的一种快捷的方法, + 是使用 <application>CVSup</application> 来进行更新。 + 如果您希望了解更多关于 <application>CVSup</application> 的细节, 请参见 + <link linkend="cvsup">使用 CVSup</link>。</para> <step> <para>安装 <filename @@ -603,6 +555,104 @@ docbook = 不过这一过程并不重新联编您系统上的 ports。</para> </step> </procedure> + + <procedure> + <title>Portsnap 方式</title> + + <para>&man.portsnap.8; 是另一种用于发布 + Ports 套件的方法。 它最早从 &os; 6.0 开始引入。 + 在较早的系统中, 您可以通过 <filename + role="package">sysutils/portsnap</filename> port 来安装它:</para> + + <screen>&prompt.root; <userinput>pkg_add -r portsnap</userinput></screen> + + <para>请参见 <link linkend="portsnap">使用 Portsnap</link> + 以了解关于全部 <application>Portsnap</application> + 功能的详细描述。</para> + + <step> + <para>如果没有的话, 建立一个空的 <filename + role="directory">/usr/ports</filename> 目录。</para> + + <screen>&prompt.root; <userinput>mkdir /usr/ports</userinput></screen> + </step> + + <step> + <para>下载压缩的 Ports 套件快照到 + <filename role="directory">/var/db/portsnap</filename>。 + 您可以根据需要在这之后关闭 Internet 连接。</para> + + <screen>&prompt.root; <userinput>portsnap fetch</userinput></screen> + </step> + + <step> + <para>假如您是首次运行 <application>Portsnap</application>, + 则需要将快照释放到 <filename + role="directory">/usr/ports</filename>: + </para> + + <screen>&prompt.root; <userinput>portsnap extract</userinput></screen> + + <para>如果您已经有装好的 <filename + role="directory">/usr/ports</filename> 而您只想更新, + 则应执行下面的命令:</para> + + <screen>&prompt.root; <userinput>portsnap update</userinput></screen> + </step> + + </procedure> + + <procedure> + <title>Sysinstall 方式</title> + + <para>这种方法需要使用 <application>sysinstall</application> + 从安装介质上安装 Ports 套件。 注意, 安装的将是发布发行版时的旧版 Ports + 套件。 如果您能访问 Internet, 应使用前面介绍的方法之一。</para> + + <step> + <para>以 <username>root</username> 身份运行 + <command>sysinstall</command> + (对 &os; 5.2 之前的版本, 应执行 <command>/stand/sysinstall</command>):</para> + + <screen>&prompt.root; <userinput>sysinstall</userinput></screen> + </step> + + <step> + <para>用光标向下选择 <guimenuitem>Configure</guimenuitem>, + 并按 <keycap>Enter</keycap>。</para> + </step> + + <step> + <para>向下并选择 + <guimenuitem>Distributions</guimenuitem>, 按 + <keycap>Enter</keycap>。</para> + </step> + + <step> + <para>选择 <guimenuitem>ports</guimenuitem>, 并按 + <keycap>Space</keycap>。</para> + </step> + + <step> + <para>选择 <guimenuitem>Exit</guimenuitem>, 并按 + <keycap>Enter</keycap>。</para> + </step> + + <step> + <para>选择所希望的安装介质, 例如 CDROM、 + FTP, 等等。</para> + </step> + + <step> + <para>选择 <guimenuitem>Exit</guimenuitem> 并按 + <keycap>Enter</keycap>。</para> + </step> + + <step> + <para>按 <keycap>X</keycap> 退出 + <application>sysinstall</application>。</para> + </step> + </procedure> </sect2> <sect2 id="ports-skeleton"> @@ -692,25 +742,12 @@ docbook = 欲了解进一步的情况,请参阅 &man.portaudit.1; 和 &man.periodic.8;。</para> </warning> - <sect3 id="ports-cd"> - <title>从光盘安装 Ports</title> - - <indexterm> - <primary>ports</primary> - <secondary>从 CD-ROM 安装</secondary> - </indexterm> - <para>FreeBSD 项目发行的官方光盘文件不再包含 distfiles。 - 他们提供了许多更多的更好的使用编译好的软件包。 - 如果您从 <ulink - url="http://www.freebsdmall.com/">FreeBSD Mall</ulink> 购买了像 - FreeBSD PowerPak 这样的光盘产品, 里面就包含了distfiles。 - 下面的章节假设您已经有了一张FreeBSD的安装光盘。 - </para> + <para>Ports 套件假定您有可用的 + Internet 连接。 如果您没有, 则需要将 + distfile 手工放到 <filename>/usr/ports/distfiles</filename> + 中。</para> - <para>将 FreeBSD CD-ROM 放进驱动器。 将其挂接到 - <filename>/cdrom</filename>。 (如果您使用了与此不同的挂接点, - 请设置 <makevar>CD_MOUNTPTS</makevar> make 变量)。 - 首先, 进入要安装的 port 所在的目录:</para> + <para>要开始操作, 首先进入要安装 port 的目录:</para> <screen>&prompt.root; <userinput>cd /usr/ports/sysutils/lsof</userinput></screen> @@ -721,7 +758,7 @@ docbook = <screen>&prompt.root; <userinput>make</userinput> >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. ->> Attempting to fetch from file:/cdrom/ports/distfiles/. +>> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/. ===> Extracting for lsof-4.57 ... [extraction output snipped] @@ -761,10 +798,20 @@ docbook = 因此显示了一个安全警告。 在编译和安装 ports 的时候, 您应该留意任何出现的警告。</para> + <para>删除工作目录是个好主意, + 这个目录中包含了全部在编译过程中用到的临时文件。 + 这些文件不仅会占用宝贵的磁盘空间, 而且可能会给升级新版本的 port + 时带来麻烦。</para> + + <screen>&prompt.root; <userinput>make clean</userinput> +===> Cleaning for lsof-4.57 +&prompt.root;</screen> + <note> - <para>您可以运行一个命令 <command>make - install</command> 来替换 <command>make</command> 和 - <command>make install</command>这两个分离的步骤。</para> + <para>使用 <command>make + install clean</command> 可以代替 <command>make</command>、 + <command>make install</command> 和 <command>make clean</command> + 这三个分开的步骤。</para> </note> <note> @@ -775,67 +822,25 @@ docbook = 命令, 然后才能运行新安装的那些命令。 这个命令可以在类似 <command>tcsh</command> 的 shell 中使用。 对于类似 - <command>sh</command> 或 <filename - role="package">shells/bash</filename> 的 shell, + <command>sh</command> 的 shell, 对应的命令是 <command>hash -r</command>。 请参见您的 shell 的文档以了解进一步的情况。</para> </note> - <note> - <para>有一小部分的 port 由于许可协议的问题不允许包含在光盘内。 - 可能是因为在下载前需要注册一些信息或不允许再发布, 或者其他理由。 - 如果您想安装的 port 不在光盘中, 为此您将需要在线操作来安装 - (请看 <link linkend="ports-inet">下一章节</link>)。</para> - </note> - </sect3> - - <sect3 id="ports-inet"> - <title>从互联网安装Port</title> - - <para>作为最后一节, 本节假定您有一个可用的互联网连接。 如果您没有, - 您需要察看上一章节<link linkend="ports-cd">从光盘安装</link>, - 或者手工将 distfile 放到 <filename>/usr/ports/distfiles</filename> - </para> - - <para>实际上从互联网安装 port 和从光盘安装差不多, - 不同的是从互联网下载distfile,而不是从光盘读取。</para> - - <para>相关步骤是一样的:</para> + <para>某些第三方 DVD-ROM 产品, 如 <ulink url="http://www.freebsdmall.com/">FreeBSD + Mall</ulink> 的 FreeBSD Toolkit 中包含了 distfiles。 + 这些文件可以与 Ports 套件配合使用。 + 将 DVD-ROM 挂接到 <filename>/cdrom</filename>。 + 如果您使用不同的挂接点, 则应设置 make 变量 <makevar>CD_MOUNTPTS</makevar>。 + 如果盘上有需要的 distfiles, 则会自动使用。</para> - <screen>&prompt.root; <userinput>make install</userinput> ->> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. ->> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/. -Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100% -439860 bytes transferred in 18.0 seconds (23.90 kBps) -===> Extracting for lsof-4.57 -... -[extraction output snipped] -... ->> Checksum OK for lsof_4.57D.freebsd.tar.gz. -===> Patching for lsof-4.57 -===> Applying FreeBSD patches for lsof-4.57 -===> Configuring for lsof-4.57 -... -[configure output snipped] -... -===> Building for lsof-4.57 -... -[compilation output snipped] -... -===> Installing for lsof-4.57 -... -[installation output snipped] -... -===> Generating temporary packing list -===> Compressing manual pages for lsof-4.57 -===> Registering installation for lsof-4.57 -===> SECURITY NOTE: - This port has installed the following binaries which execute with - increased privileges. -&prompt.root;</screen> - - <para>就像您看到的, 唯一区别是有一行告知您系统正在从哪里获得 port 的 - distfile 的信息。</para> + <note> + <para>请注意, 少数 ports 并不允许通过 CD-ROM 发行。 + 这可能是由于下载之前需要填写注册表格, + 或者不允许再次发布, 或者有一些其它原因。 + 如果您希望安装在 CD-ROM 上没有的 port, + 就需要在线操作了。</para> + </note> <para>ports 系统使用 &man.fetch.1; 去下载文件, 它有很多可以设置的环境变量, 其中包括 <envar>FTP_PASSIVE_MODE</envar>、 <envar>FTP_PROXY</envar>, @@ -877,17 +882,16 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen> role="package">security/gpgme</filename>、 以及 <filename role="package">mail/sylpheed-claws</filename>。 如果存在这样的选项, 通常会在编译时给出提示。</para></note> - </sect3> <sect3> <title>改变默认的 Ports 目录</title> - <para>一些时候使用不同的 distfiles 和 ports 目录可能很有用 + <para>有时, 使用不同的工作临时目录和目标目录可能很有用 (甚至是必要的)。 可以用 - <makevar>PORTSDIR</makevar> 和 <makevar>PREFIX</makevar> - 来改变默认的目录。 例如:</para> + <makevar>WRKDIRPREFIX</makevar> 和 <makevar>PREFIX</makevar> + 这两个变量来改变默认的目录。 例如:</para> - <screen>&prompt.root; <userinput>make PORTSDIR=/usr/home/example/ports install</userinput></screen> + <screen>&prompt.root; <userinput>make WRKDIRPREFIX=/usr/home/example/ports install</userinput></screen> <para>将把编译 <filename>/usr/home/example/ports</filename> 中的 port 并把所有的文件安装到 @@ -900,7 +904,7 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen> <para>当然,</para> - <screen>&prompt.root; <userinput>make PORTSDIR=../ports PREFIX=../local install</userinput></screen> + <screen>&prompt.root; <userinput>make WRKDIRPREFIX=../ports PREFIX=../local install</userinput></screen> <para>将包含两种设置 (没有办法在这一页把它写完, 但您应该已经知道怎么回事了)。</para> @@ -931,67 +935,30 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen> <primary>ports</primary> <secondary>卸载</secondary> </indexterm> - <para>现在您已经知道如何安装 port, 您可能很想知道如何卸载它们, - 例如您安装了一个之后才意识到装错了。 - 我们将卸载前面的例子中安装的那个 - (也就是 <command>lsof</command>, 如果您没有注意过的话)。 - 和安装 port 时类似, 第一件事是进入 port 的目录, - <filename>/usr/ports/sysutils/lsof</filename>。 - 之后您就可以卸载 <command>lsof</command> 了。 - 这可以通过命令 <command>make deinstall</command> 来完成:</para> - - <screen>&prompt.root; <userinput>cd /usr/ports/sysutils/lsof</userinput> -&prompt.root; <userinput>make deinstall</userinput> -===> Deinstalling for lsof-4.57</screen> - - <para>这个过程足够地简单。 现在已经从系统上卸载了 - <command>lsof</command>。 - 如果您想重新安装它, 可以在 - <filename>/usr/ports/sysutils/lsof</filename> 目录中运行 - <command>make reinstall</command> 来达到目的。</para> - - <para><command>make deinstall</command> 以及 <command>make - reinstall</command> 在您执行过 - <command>make clean</command> 之后就不能用了。 - 如果您在清理目录之后还想删除 port, - 可以用 <link linkend="packages-using">使用手册中的 - Package 相关章节</link> 中介绍的 &man.pkg.delete.1; - 来完成。</para> - </sect2> + <para>现在您已经了解了如何安装 ports, 并希望进一步了解如何卸载, + 特别是在安装了某个之后发现不合适的 port 时。 + 我们将卸载前面例子 (假如您没有注意的话, 是 + <command>lsof</command>) 中安装的 port。 Ports 可以同 packages + 以完全相同的方式 (在 <link + linkend="packages-using">Packages 一节</link> 中进行了介绍) 卸载, 方法是使用 + &man.pkg.delete.1; 命令:</para> - <sect2 id="ports-disk-space"> - <title>Ports 与磁盘空间</title> + <screen>&prompt.root; <userinput>pkg_delete lsof-4.57</userinput></screen> - <indexterm> - <primary>ports</primary> - <secondary>磁盘空间</secondary> - </indexterm> - <para>使用 Ports Collection 显然会逐渐地吃掉您的磁盘空间。 - 由于 ports tree 趋于不断增大, 在构建和安装软件之后, - 您应该通过使用 <command>make - <makevar>clean</makevar></command> - 来清理包含临时文件的 <filename class="directory">work</filename> - 目录。 这一命令会删除 <filename class="directory">work</filename>, - 因为在您构建并安装完之后它就没用了。 如果已经安装或不再需要, - 您也可以从 <filename class="directory">distfiles</filename> 目录中删除源代码包。</para> - - <para>一些用户还通过把一些不需要的 port 分类放入 - <filename>refuse</filename> 文件来避免下载它们。 这样在运行 - <application>CVSup</application> 时就不会下载这些分类中的文件了。 - 关于 <filename>refuse</filename> 的详情请参考 <xref - linkend="cvsup-refuse-file">。</para> </sect2> <sect2 id="ports-upgrading"> <title>升级 Ports</title> <indexterm> - <primary>portupgrade</primary> - </indexterm> - <indexterm> <primary>ports</primary> <secondary>升级</secondary> </indexterm> + <para>首先, 使用 &man.pkg.version.1; 命令来列出 Ports Collection + 中提供了更新版本的那些 port:</para> + + <screen>&prompt.root; <userinput>pkg_version -v</userinput></screen> + <note> <para>一旦您更新了 Ports Collection, 在开始升级之前, 应该首先检查一下 @@ -999,34 +966,40 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen> 它描述了在升级时可能遇到的问题, 以及因应的步骤。</para> </note> - <para>保持 ports 最新可能是一件乏味的工作。 例如, - 为了更新 port 您需要进入它的目录, 编译, 卸载旧的, - 然后安装新的, 并在之后进行清理。 考虑一下对五个 port - 做这样的升级, 很乏味是不是? 这是系统管理员需要处理的一大难题, - 而我们现在有了一些能够帮助我们做这件事的工具。 - 例如 <filename role="package">sysutils/portupgrade</filename> - 就能够帮助您完成所有这一切! 只需像其他 port 一样用 - <command>make <makevar>install - clean</makevar></command> 来安装它就可以了。</para> - - <para>接下来需要通过 <command>pkgdb -F</command> - 命令来创建一个数据库。 这将读取已经安装的 port 并创建一个数据库文件到 - <filename>/var/db/pkg</filename> 目录中。 - 接下来执行 <command>portupgrade - -a</command>, 它会读取这个数据库以及 ports 的 - <filename>INDEX</filename> 文件。 最后, - <application>portupgrade</application> 将开始下载, 编译, - 备份, 安装并清理更新了的 ports。 - <application>portupgrade</application> 包含了许多的选项, - 最重要的那些将在下面说明。</para> - - <para>如果您只想升级某个具体的应用程序而不是数据库中的记录的所有程序, - 则使用 <command>portupgrade - <replaceable>pkgname</replaceable></command>, - 如果您认为 <application>portupgrade</application> - 应该升级所有基于那个 port 的软件, - 则需要指定 <option>-r</option>; 而如果使用 - <option>-R</option> 则它用到的所有包也会被升级。</para> + <sect3 id="portupgrade"> + <title>使用 Portupgrade 来更新 Ports</title> + + <indexterm> + <primary>portupgrade</primary> + </indexterm> + + <para><application>portupgrade</application> 工具是设计来简化升级已安装的 port 的操作的。 + 它通过 <filename + role="package">sysutils/portupgrade</filename> port 来提供。 + 您可以像其它 port 那样, 使用 <command>make <makevar>install + clean</makevar></command> 命令来安装它:</para> + + <screen>&prompt.root; <userinput>cd /usr/ports/sysutils/portupgrade</userinput> +&prompt.root; <userinput>make install clean</userinput></screen> + + <para>使用 <command>pkgdb + -F</command> 命令来扫描已安装的 port 的列表, + 并修正其所报告的不一致。 在每次升级之前, 有规律地执行它是个好主意。</para> + + <para>运行 <command>portupgrade -a</command> 时, + <application>portupgrade</application> 将开始并升级系统中所安装的所有过时的 ports。 + 如果您希望在每个升级操作时得到确认, 应指定 <option>-i</option> + 参数。</para> + + <screen>&prompt.root; <userinput>portupgrade -ai</userinput></screen> + + <para>如果您只希望升级某个特定的应用程序, 而非全部可用的 port, + 应使用 <command>portupgrade + <replaceable>pkgname</replaceable></command>。 + 如果 <application>portupgrade</application> 应首先升级指定应用程序的话, + 则应指定 <option>-R</option> 参数。</para> + + <screen>&prompt.root; <userinput>portupgrade -R firefox</userinput></screen> <para>要使用预编译的 package 而不是 ports 来进行安装, 需要指定 <option>-P</option>。 如果指定了这个选项, @@ -1037,22 +1010,83 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen> <application>portupgrade</application> 将使用 ports。 要禁止使用 port, 可以指定 <option>-PP</option>。</para> + <screen>&prompt.root; <userinput>portupgrade -PR gnome2</userinput></screen> + <para>如果只想下载 distfiles (或者, 如果指定了 <option>-P</option> 的话, 是 packages) 而不想构建或安装任何东西, 可以使用 <option>-F</option>。 要了解更多细节, 请参考 &man.portupgrade.1;。</para> + </sect3> + + <sect3 id="portmanager"> + <title>使用 Portmanager 来升级 Ports</title> + + <indexterm> + <primary>portmanager</primary> + </indexterm> + + <para><application>Portmanager</application> 是另一个用以简化已安装 port + 升级操作的工具。 它可以通过 + <filename role="package">sysutils/portmanager</filename> port 安装:</para> + + <screen>&prompt.root; <userinput>cd <filename role="directory">/usr/ports/sysutils/portmanager</filename></userinput> +&prompt.root; <userinput>make install clean</userinput></screen> + + <para>可以通过这个简单的命令来升级所有已安装的 port:</para> + + <screen>&prompt.root; <userinput>portmanager -u</userinput></screen> + + <para>如果希望 <application>Portmanager</application> 在进行每步操作之前都给出提示, + 应使用 <option>-ui</option> 参数。 <application>Portmanager</application> + 也可以用来在系统中安装新的 ports。 与通常的 + <command>make install clean</command> 命令不同, + 它会在联编和安装您所选择的 port 之前升级所有依赖包。</para> + + <screen>&prompt.root; <userinput>portmanager <replaceable>x11/gnome2</replaceable></userinput></screen> + + <para>如果关于所选 port 的依赖有任何问题, + 可以用 <application>Portmanager</application> 来以正确的顺序重新构建它们。 + 完成之后, 有问题的 port 也将被重新构建。</para> + + <screen>&prompt.root; <userinput>portmanager <replaceable>graphics/gimp</replaceable> -f</userinput></screen> + + <para>要了解更多信息, 请参见 + <application>Portmanager</application> 联机手册。</para> + </sect3> + </sect2> + + <sect2 id="ports-disk-space"> + <title>Ports 和磁盘空间</title> + + <indexterm> + <primary>ports</primary> + <secondary>disk-space</secondary> + </indexterm> + <para>使用 Ports 套件会最终用完磁盘空间。 在通过 ports 联编和安装软件之后, + 您应记得清理临时的 <filename class="directory">work</filename> 目录, + 其方法是使用 <command>make + <makevar>clean</makevar></command> 命令。 您可以使用下面的命令来清理整个 + Ports 套件:</para> + + <screen>&prompt.root; <userinput>portsclean -C</userinput></screen> + + <para>随着时间的推移, 您可能会在 + <filename class="directory">distfiles</filename> 目录中积累下大量源代码文件。 + 您可以手工删除这些文件, 也可以使用下面的命令来删除所有 port + 都不引用的文件:</para> + + <screen>&prompt.root; <userinput>portsclean -D</userinput></screen> <note> - <para>规律性地更新 package 数据库非常重要。 您可以使用 - <command>pkgdb -F</command> 来修复不一致, 特别是当 - <application>portupgrade</application> 要求您这么做的时候。 当 - <application>portupgrade</application> 正在更新数据库时请不要打断它, - 因为这将做的结果将是不一致的数据库。</para> + <para>这个 <command>portsclean</command> 工具是 + <application>portupgrade</application> 套件的一部分。</para> </note> - <para>还有一些其他工具能够完成类似的以及其他一些任务, 请查看 - <filename>ports/sysutils</filename> 目录中是否有您需要的。</para> + <para>不要忘记删除那些已经安装, 但已不再使用的 ports。 + 用于自动完成这种工作的一个好工具是 + <filename role="package">sysutils/pkg_cutleaves</filename> port。</para> </sect2> + </sect1> <sect1 id="ports-nextsteps"> @@ -1118,24 +1152,45 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen> 有几件事值得尝试, 包括:</para> <orderedlist> - <listitem> - <para>修好它! <ulink - url="&url.books.porters-handbook;/index.html">Porter - 手册</ulink> 中包括了关于 - <quote>Ports</quote> 基础设施的详细信息, - 它们能够帮助您修好有问题的 port 甚至提交自己的 port!</para> + <listitem> + <para>在 <ulink url="&url.base;/support.html#gnats">问题报告数据库</ulink> + 中查找是否有尚未提交的修正。 如果有, 可以使用所提议的修正。</para> </listitem> <listitem> - <para><emphasis>通过电子邮件</emphasis> — 抱怨! - 首先发邮件给 port 的维护人员 (maintainer)。 使用 + <para>要求 port 的监护人 (maintainer) 提供帮助。 输入 <command>make maintainer</command> 或阅读 - <filename>Makefile</filename> 都可以找到维护人员的电子邮件地址。 + <filename>Makefile</filename> 查找监护人的电子邮件地址。 请记得把 port 的名字和版本写在邮件里 (<filename>Makefile</filename> 中的 - <literal>$FreeBSD:</literal>这一行) 并把错误输出的头几行发给 maintainer。 - 如果维护人员没有回应您的邮件, 则可以使用 &man.send-pr.1; - 来提交问题报告。</para> + <literal>$FreeBSD:</literal>这一行) 并把错误输出的头几行发给 maintainer。</para> + + <note> + <para>某些 ports 并没由个人维护, 而是写了一个 <ulink + url="&url.articles.mailing-list-faq;/article.html">邮件列表</ulink>。 + 许多, 但并非所有 port, 使用类似 + <email role="nolink">freebsd-listname@FreeBSD.org</email> 这样的地址。 + 请在提出问题时考虑这一点。</para> + + <para>特别地, 由 + <email role="nolink">freebsd-ports@FreeBSD.org</email> 监护的 port, + 实际上并没有人维护。 订阅这个邮件列表的人们会感谢您提供的修正和支持。 + 我们一直都需要更多志愿者!</para> + </note> + + <para>如果您没有得到回应, + 则可以使用 &man.send-pr.1; 来提交问题报告 (请参见 <ulink + url="&url.articles.problem-reports;/article.html">如何撰写 + FreeBSD 问题报告</ulink>)。</para> + </listitem> + + <listitem> + <para>修正它! <ulink + url="&url.books.porters-handbook;/index.html">Porter + 手册</ulink> 中提供了关于 + <quote>Ports</quote> 基础设施的详细信息, + 通过了解这些内容, 您就能修正偶然坏掉的 port, + 或甚至提交自己的 port 了!</para> </listitem> <listitem> @@ -1144,7 +1199,9 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen> role="fqdn">ftp.FreeBSD.org</hostid> 的 <ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/">packages 目录中</ulink>, 但 <emphasis>在此之前</emphasis> - 一定记得先看看本地镜像上是否已经有了! + 一定记得先看看 <ulink + url="http://mirrorlist.FreeBSD.org/">本地镜像</ulink> + 上是否已经有了! 通常情况下这些安装包都可以直接使用, 而且应该比自行编译快一些。 安装过程本身可以通过 &man.pkg.add.1; 来完成。</para> |