aboutsummaryrefslogtreecommitdiff
path: root/zh_CN.GB2312/books
diff options
context:
space:
mode:
Diffstat (limited to 'zh_CN.GB2312/books')
-rw-r--r--zh_CN.GB2312/books/porters-handbook/book.sgml510
1 files changed, 334 insertions, 176 deletions
diff --git a/zh_CN.GB2312/books/porters-handbook/book.sgml b/zh_CN.GB2312/books/porters-handbook/book.sgml
index 9921e93736..1bd7616332 100644
--- a/zh_CN.GB2312/books/porters-handbook/book.sgml
+++ b/zh_CN.GB2312/books/porters-handbook/book.sgml
@@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
- Original Revision: 1.803
+ Original Revision: 1.814
$FreeBSD$
-->
@@ -3277,8 +3277,10 @@ ALWAYS_KEEP_DISTFILES= yes
在 <xref linkend="using-python"> 进行了讨论, 而关于
<application>Ruby</application> 的介绍,
则可以在 <xref linkend="using-ruby"> 中找到。
- 最后, <xref linkend="using-sdl"> 提供了用于
- <application>SDL</application> 应用程序的变量介绍。</para>
+ <xref linkend="using-sdl"> 提供了用于
+ <application>SDL</application> 应用程序的变量介绍, 最后,
+ <xref linkend="using-xfce"> 包含了关于
+ <application>Xfce</application> 的信息。</para>
</sect2>
@@ -3803,6 +3805,211 @@ PORTVERSION= 1.0</programlisting>
</note>
</sect1>
+ <sect1 id="install">
+ <title>安装文件</title>
+
+ <sect2 id="install-macros">
+ <title>INSTALL_* 宏</title>
+
+ <para>一定要使用由 <filename>bsd.port.mk</filename>
+ 提供的宏, 以确保在您自己的
+ <maketarget>*-install</maketarget> target 中能够以正确的属主和权限模式安装文件。</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><makevar>INSTALL_PROGRAM</makevar> 是安装可执行二进制文件的命令。</para>
+ </listitem>
+
+ <listitem>
+ <para><makevar>INSTALL_SCRIPT</makevar> 是安装可执行脚本文件的命令。</para>
+ </listitem>
+
+ <listitem>
+ <para><makevar>INSTALL_DATA</makevar> 是安装可共享数据的命令。</para>
+ </listitem>
+
+ <listitem>
+ <para><makevar>INSTALL_MAN</makevar> 是安装联机手册和其他文档的命令
+ (注意它并不会执行压缩操作)。</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>这些宏展开后基本上都是包含适当参数的 <command>install</command> 命令。</para>
+ </sect2>
+
+ <sect2 id="install-strip">
+ <title>对可执行文件做脱模 (strip) 操作</title>
+
+ <para>除非不得不进行, 否则不要手工对可执行文件作脱模操作。
+ 所有文件在安装时都应脱模, 但 <maketarget>INSTALL_PROGRAM</maketarget>
+ 宏会在安装的同时对其进行脱模 (参见下一节的内容)。</para>
+
+ <para>如果您需要对某一文件进行脱模, 但不希望使用
+ <makevar>INSTALL_PROGRAM</makevar> 宏, 则应使用
+ <makevar>${STRIP_CMD}</makevar> 来处理程序。
+ 一般而言这应该在 <literal>post-install</literal>
+ target 中进行。 例如:</para>
+
+ <programlisting>post-install:
+ ${STRIP_CMD} ${PREFIX}/bin/xdl</programlisting>
+
+ <para>可以使用 &man.file.1; 命令来检查所安装的可执行文件是否进行过脱模。
+ 如果它没有给出 <literal>not stripped</literal> 的提示,
+ 则表示已经做过脱模了。 另外,
+ &man.strip.1; 不会对已经脱模过的文件重新脱模, 它会直接退出的。</para>
+ </sect2>
+
+ <sect2 id="install-copytree">
+ <title>安装一个目录下的全部文件</title>
+
+ <para>有时, 会有需要安装大量的文件, 并保持其层次结构, 例如,
+ 将整个目录结构从 <makevar>WRKSRC</makevar> 复制到 <makevar>PREFIX</makevar> 的目标目录。</para>
+
+ <para>针对这种情况, 系统提供了两个宏。 使用这些宏,
+ 而不是直接使用 <command>cp</command> 的优势是它们能够确保目标文件的属主和权限正确。 第一个宏,
+ <makevar>COPYTREE_BIN</makevar> 将所有安装的文件视为可执行文件, 因而适合安装文件到
+ <filename><makevar>PREFIX</makevar>/bin</filename>。
+ 第二个宏, <makevar>COPYTREE_SHARE</makevar>, 则不会设置可执行权限,
+ 因此适合于将文件安装到 <filename><makevar>PREFIX</makevar>/share</filename>
+ 下。</para>
+
+ <programlisting>post-install:
+ ${MKDIR} ${EXAMPLESDIR}
+ (cd ${WRKSRC}/examples/ && ${COPYTREE_SHARE} \* ${EXAMPLESDIR})</programlisting>
+
+ <para>这个例子将原作者提供的整个
+ <filename>examples</filename> 目录复制到您 port 指定的安装示范文件的位置。</para>
+
+ <programlisting>post-install:
+ ${MKDIR} ${DATADIR}/summer
+ (cd ${WRKSRC}/temperatures/ && ${COPYTREE_SHARE} "June July August" ${DATADIR}/summer/)</programlisting>
+
+ <para>这个例子将把夏季的三个月的数据, 复制到
+ <filename><makevar>DATADIR</makevar></filename> 中的
+ <filename>summer</filename> 子目录。</para>
+
+ <para>需要注意的是, 这些宏并不能自动将所安装的文件加到
+ <filename>pkg-plist</filename> 中, 您还是需要自行列出它们。</para>
+
+ </sect2>
+
+ <sect2 id="install-documentation">
+ <title>安装附加的文档</title>
+
+ <para>如果您的软件包含了标准的联机手册和 info 手册以外的文档,
+ 而且您认为它们对用户会有用, 请把这些文档安装到
+ <filename><makevar>PREFIX</makevar>/share/doc</filename> 下。
+ 和前面类似, 这也可以在
+ <maketarget>post-install</maketarget> target 中完成。</para>
+
+ <para>为您的 port 建立一个新的目录。
+ 这个目录的名字应该反映它是属于哪个 port 的。 通常建议使用
+ <makevar>PORTNAME</makevar>。 不过, 如果您认为不同版本的 port
+ 可能会同时安装, 也可以用完整的
+ <makevar>PKGNAME</makevar>。</para>
+
+ <para>另外, 应该让是否安装取决于变量
+ <makevar>NOPORTDOCS</makevar> 的设置, 这样用户就能够在
+ <filename>/etc/make.conf</filename> 中禁止安装它。 例如:</para>
+
+ <programlisting>post-install:
+.if !defined(NOPORTDOCS)
+ ${MKDIR} ${DOCSDIR}
+ ${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${DOCSDIR}
+.endif</programlisting>
+
+ <para>这里是一些便于使用的变量, 以及它们在
+ <filename>Makefile</filename> 中默认的展开方式:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><makevar>DATADIR</makevar> 会展开成
+ <filename><makevar>PREFIX</makevar>/share/<makevar>PORTNAME</makevar></filename>。</para>
+ </listitem>
+
+ <listitem>
+ <para><makevar>DOCSDIR</makevar> 会展开成
+ <filename><makevar>PREFIX</makevar>/share/doc/<makevar>PORTNAME</makevar></filename>。</para>
+ </listitem>
+
+ <listitem>
+ <para><makevar>EXAMPLESDIR</makevar> 会展开成
+ <filename><makevar>PREFIX</makevar>/share/examples/<makevar>PORTNAME</makevar></filename>。</para>
+ </listitem>
+ </itemizedlist>
+
+ <note>
+ <para><makevar>NOPORTDOCS</makevar> 只控制将要装到 <makevar>DOCSDIR</makevar>
+ 的那些文档, 而不应影响标准的联机手册、 info 手册, 以及应装到
+ <makevar>DATADIR</makevar>、 <makevar>EXAMPLESDIR</makevar> 的文件。</para>
+ </note>
+
+ <para>这些变量也会被导出到 <makevar>PLIST_SUB</makevar> 中。
+ 只要可能, 它们的值就将在那里以相对于
+ <filename><makevar>PREFIX</makevar></filename> 的路径形式出现。
+ 也就是说, <filename>share/doc/<makevar>PORTNAME</makevar></filename>
+ 在装箱单中默认情况下会替换掉 <literal>%%DOCSDIR%%</literal>, 等等。
+ (更多的 <filename>pkg-plist</filename> 代换可以在
+ <link linkend="plist-sub">这里</link> 找到。)</para>
+
+ <para>所有的安装的文档文件和目录,
+ 都应在 <filename>pkg-plist</filename> 出现, 并且使用
+ <literal>%%PORTDOCS%%</literal> 前缀, 例如:</para>
+
+ <programlisting>%%PORTDOCS%%%%DOCSDIR%%/AUTHORS
+%%PORTDOCS%%%%DOCSDIR%%/CONTACT
+%%PORTDOCS%%@dirrm %%DOCSDIR%%</programlisting>
+
+ <para>如果不希望在 <filename>pkg-plist</filename> 中逐个列举文档文件, port
+ 也可以将 <makevar>PORTDOCS</makevar> 设置为一组文件及其 shell glob
+ 模式, 通过这种方式来加入到最终的装箱单中。
+ 这些名字应是相对于 <makevar>DOCSDIR</makevar> 的。
+ 因此, 使用了 <makevar>PORTDOCS</makevar>,
+ 并将文档安装到非标准位置的 port, 应相应地设置
+ <makevar>DOCSDIR</makevar>。
+ 如果有在 <makevar>PORTDOCS</makevar> 中列出目录,
+ 或者这一变量中的 glob 模式匹配到了目录, 则整个子树中的文件和目录,
+ 都将被注册到最终的装箱单中。 如果定义了 <makevar>NOPORTDOCS</makevar>, 则
+ <makevar>PORTDOCS</makevar> 中定义的文件和目录将不被安装或加入装箱单。
+ 是否安装文档到前面所说的 <makevar>PORTDOCS</makevar> 仍取决于 port 本身。
+ 下面是一个典型的使用 <makevar>PORTDOCS</makevar> 的例子:</para>
+
+ <programlisting>PORTDOCS= README.* ChangeLog docs/*</programlisting>
+
+ <note>
+ <para>您也可以使用 <filename>pkg-message</filename> 这个文件,
+ 来在安装时显示一些信息。 参见 <link
+ linkend="porting-message">关于使用
+ <filename>pkg-message</filename> 的这一节</link> 以了解进一步的详情。
+ 需要说明的是, 并不需要把 <filename>pkg-message</filename> 加到
+ <filename>pkg-plist</filename> 中。</para>
+ </note>
+ </sect2>
+
+ <sect2 id="install-subdirs">
+ <title>子目录</title>
+
+ <para>尽可能让 port 将它创建的文件, 放置到
+ <makevar>PREFIX</makevar> 中正确的位置。 一些 port
+ 会把各式各样的东西混在一起, 并放到一个同名的目录中, 这是不对的。
+ 另外, 许多 port 会把除了可执行文件、 头文件和联机手册之外的所有文件,
+ 全都一股脑地放到 <filename>lib</filename> 中, 这在和 BSD
+ 配合使用时会有问题。 多数文件,
+ 应被放到下列位置之一: <filename>etc</filename>
+ (安装/配置文件)、 <filename>libexec</filename>
+ (由系统内部调用的可执行文件)、 <filename>sbin</filename>
+ (为超级用户/管理员提供的可执行文件)、 <filename>info</filename>
+ (用于 info 浏览器的文档) 或 <filename>share</filename>
+ (平台无关的其它文件)。 请参见 &man.hier.7; 以了解进一步的详情; 针对
+ <filename>/usr</filename> 的那些规则, 同样也适用于
+ <filename>/usr/local</filename>。 例外情况是那些需要和 USENET
+ <quote>news</quote> 打交道的 port, 它们可以选择采用
+ <filename><makevar>PREFIX</makevar>/news</filename>
+ 作为文件的目的地。</para>
+ </sect2>
+
+ </sect1>
+
</chapter>
<chapter id="special">
@@ -4152,6 +4359,17 @@ PORTVERSION= 1.0</programlisting>
</tbody>
</tgroup>
</table>
+
+ <para>如果希望让第三方的 <filename>SConstruct</filename> 尊重通过 <makevar>SCONS_ENV</makevar>
+ (其中最重要的是
+ <makevar>CC/CXX/CFLAGS/CXXFLAGS</makevar> 配置) 传给 Scons 的配置, 则需要对
+ <filename>SConstruct</filename> 进行修改, 使联编的
+ <literal>Environment</literal> 按下列方式建立:</para>
+
+ <programlisting>env = Environment(**ARGUMENTS)</programlisting>
+
+ <para>其后, 可以通过 <literal>env.Append</literal> 和
+ <literal>env.Replace</literal> 来对它进行修改。</para>
</sect2>
</sect1>
@@ -5601,7 +5819,7 @@ LIB_DEPENDS+= QtCore:${PORTSDIR}/devel/qt4-corelib
<para>无论您正制作哪一类的 port (库或者应用程序),
附加的文档都应安装到和其它 port
- <link linkend="dads-documentation">同样的位置</link>。
+ <link linkend="install-documentation">同样的位置</link>。
已经知道, JavaDoc 会根据 JDK 版本的不同而产生不同的文件。
对于那些不打算强制使用某一特定版本 JDK 的 port 而言,
这无疑提高了制作装箱单
@@ -5648,7 +5866,7 @@ LIB_DEPENDS+= QtCore:${PORTSDIR}/devel/qt4-corelib
</sect1>
<sect1 id="using-php">
- <title>使用 Apache 和 PHP</title>
+ <title>Web 应用, Apache 和 PHP</title>
<sect2 id="using-apache">
<title>Apache</title>
@@ -5784,11 +6002,25 @@ LIB_DEPENDS+= QtCore:${PORTSDIR}/devel/qt4-corelib
</tbody>
</tgroup>
</table>
+ </sect2>
+
+ <sect2 id="web-apps">
+ <title>Web 应用</title>
<para>Web 应用程序应安装到
- <makevar>PREFIX</makevar><filename>/www/<replaceable>应用程序的名字</replaceable></filename>
- 并且不应假定 Apache 的存在, 除非它们必须使用 Apache。
- 用户可能会希望运行 Apache 以外的其它 Web 服务器。</para>
+ <filename><makevar>PREFIX</makevar>/www/<replaceable>应用程序的名字</replaceable></filename>。
+ 为方便起见, 这个路径在
+ <filename>Makefile</filename> 和 <filename>pkg-plist</filename>
+ 均以 <makevar>WWWDIR</makevar> 变量的形式提供。</para>
+
+ <para>web 服务器进程所用的用户和用户组, 分别以
+ <makevar>WWWOWN</makevar> 和 <makevar>WWWGRP</makevar> 变量的形式提供,
+ 如果您需要修改某些文件的属主的话。 这两个变量的默认值均为 <literal>www</literal>。
+ 如果您的 port 希望使用其他值, 请使用 <literal>WWWOWN?= myuser</literal> 这种写法,
+ 以便让用户能够更容易地修改它。</para>
+
+ <para>除非您的 port 必需使用 Apache, 否则不要将其写入依赖关系。
+ 请尊重运行您的应用程序的用户选择 Apache 以外的其他 web 服务器的需求。</para>
</sect2>
@@ -7409,6 +7641,73 @@ CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}"
</sect2>
</sect1>
+ <sect1 id="using-xfce">
+ <title>使用 Xfce</title>
+
+ <para><makevar>USE_XFCE</makevar> 变量可以用来自动配置使用基于 Xfce 库或应用程序, 如
+ <filename role="package">x11-toolkits/libxfce4gui</filename> 和
+ <filename role="package">x11-wm/xfce4-panel</filename> 的 port 的依赖关系。</para>
+
+ <para>目前, 系统能够识别下列 Xfce 库和应用程序:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>libexo:<filename role="package">x11/libexo</filename></para>
+ </listitem>
+
+ <listitem>
+ <para>libgui:<filename role="package">x11-toolkits/libxfce4gui</filename></para>
+ </listitem>
+
+ <listitem>
+ <para>libutil:<filename role="package">x11/libxfce4util</filename></para>
+ </listitem>
+
+ <listitem>
+ <para>libmcs:<filename role="package">x11/libxfce4mcs</filename></para>
+ </listitem>
+
+ <listitem>
+ <para>mcsmanager:<filename role="package">sysutils/xfce4-mcs-manager</filename></para>
+ </listitem>
+
+ <listitem>
+ <para>panel:<filename role="package">x11-wm/xfce4-panel</filename></para>
+ </listitem>
+
+ <listitem>
+ <para>thunar:<filename role="package">x11-fm/thunar</filename></para>
+ </listitem>
+
+ <listitem>
+ <para>wm:<filename role="package">x11-wm/xfce4-wm</filename></para>
+ </listitem>
+
+ <listitem>
+ <para>xfdev:<filename role="package">dev/xfce4-dev-tools</filename></para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>除此之外, 还能够使用下列参数:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>configenv: 如果您的 port 需要使用特殊的
+ <makevar>CONFIGURE_ENV</makevar> 来查找所需的库。
+ <programlisting>-I&dollar;{LOCALBASE}/include -L&dollar;{LOCALBASE}/lib</programlisting>
+ 会加到 <makevar>CONFIGURE_ENV</makevar> 的 CPPFLAGS。</para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>因此, 如果 port 有到
+ <filename role="package">sysutils/xfce4-mcs-manager</filename> 的依赖关系,
+ 并需要在 configure 的环境中指定特殊的饿 CPPFLAGS, 则所用的语法为:</para>
+
+ <programlisting>USE_XFCE= mcsmanager configenv</programlisting>
+ </sect1>
+
<sect1 id="rc-scripts">
<title>启动和停止服务 (rc 脚本)</title>
@@ -7534,7 +7833,7 @@ run_rc_command "$1"</programlisting>
是 <command>perl</command> 的版本去掉 patchlevel
的部分 (例如 <literal>5.005</literal>)。 许多其它与 port 文档文件有关的
<literal>%%<replaceable>变量</replaceable>%%</literal> 在 <link
- linkend="dads-documentation">相应章节</link> 中进行了介绍。</para>
+ linkend="install-documentation">相应章节</link> 中进行了介绍。</para>
<para>如果您还需要进行其它的替换, 可以通过将
<makevar>PLIST_SUB</makevar> 变量设置为一组
@@ -8716,58 +9015,6 @@ Reference: &lt;http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00
也能证明您清楚地了解如何完成这些工作。</para>
</sect1>
- <sect1 id="dads-strip">
- <title>对可执行文件做脱模 (strip) 操作</title>
-
- <para>除非不得不进行, 否则不要手工对可执行文件作脱模操作。
- 所有文件在安装时都应脱模, 但 <maketarget>INSTALL_PROGRAM</maketarget>
- 宏会在安装的同时对其进行脱模 (参见下一节的内容)。</para>
-
- <para>如果您需要对某一文件进行脱模, 但不希望使用
- <makevar>INSTALL_PROGRAM</makevar> 宏, 则应使用
- <makevar>${STRIP_CMD}</makevar> 来处理程序。
- 一般而言这应该在 <literal>post-install</literal>
- target 中进行。 例如:</para>
-
- <programlisting>post-install:
- ${STRIP_CMD} ${PREFIX}/bin/xdl</programlisting>
-
- <para>可以使用 &man.file.1; 命令来检查所安装的可执行文件是否进行过脱模。
- 如果它没有给出 <literal>not stripped</literal> 的提示,
- 则表示已经做过脱模了。 另外,
- &man.strip.1; 不会对已经脱模过的文件重新脱模, 它会直接退出的。</para>
- </sect1>
-
- <sect1 id="dads-install">
- <title>INSTALL_* 宏</title>
-
- <para>您应使用由 <filename>bsd.port.mk</filename> 提供的宏来完成操作,
- 以确保您自己的 <maketarget>*-install</maketarget> target
- 能够正确地设置属主和权限信息。</para>
-
- <itemizedlist>
- <listitem>
- <para><makevar>INSTALL_PROGRAM</makevar> 代表用于安装二进制的可执行文件的命令。</para>
- </listitem>
-
- <listitem>
- <para><makevar>INSTALL_SCRIPT</makevar> 代表用于安装可执行脚本的命令。</para>
- </listitem>
-
- <listitem>
- <para><makevar>INSTALL_DATA</makevar> 代表用于安装普通用户可访问的数据的命令。</para>
- </listitem>
-
- <listitem>
- <para><makevar>INSTALL_MAN</makevar> 代表用于安装联机手册,
- 以及其它文档的命令 (注意, 它并不会对这些文件实施压缩操作)。</para>
- </listitem>
- </itemizedlist>
-
- <para>这些宏基本上就是给出了适当参数的 <command>install</command> 命令。
- 下面给出了如何使用它们的例子。</para>
- </sect1>
-
<sect1 id="porting-wrkdir">
<title><makevar>WRKDIR</makevar> (构建时使用的临时目录)</title>
@@ -10480,6 +10727,32 @@ Reference: &lt;http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00
7.0-CURRENT。</entry>
<entry>700030</entry>
</row>
+ <row>
+ <entry>修改了 bus_setup_intr() (newbus) 之后的 7.0-CURRENT。
+ </entry>
+ <entry>700031</entry>
+ </row>
+ <row>
+ <entry>引入了 ipw(4) 和 iwi(4) 固件之后的 7.0-CURRENT。
+ </entry>
+ <entry>700032</entry>
+ </row>
+ <row>
+ <entry>在 ncurses 中引入了宽字符支持之后的 7.0-CURRENT。
+ </entry>
+ <entry>700033</entry>
+ </row>
+ <row>
+ <entry>修改了 insmntque()、
+ getnewvnode() 以及 vfs_hash_insert() 工作方式之后的 7.0-CURRENT。
+ </entry>
+ <entry>700034</entry>
+ </row>
+ <row>
+ <entry>增加 CPU 频率变动通知机制之后的 7.0-CURRENT。
+ </entry>
+ <entry>700035</entry>
+ </row>
</tbody>
</tgroup>
@@ -10623,121 +10896,6 @@ post-install:
而不是空格, 对吧? <!-- smiley -->:-)</para>
</sect1>
- <sect1 id="dads-documentation">
- <title>安装附加的文档</title>
-
- <para>如果您的软件包含了标准的联机手册和 info 手册以外的文档,
- 而且您认为它们对用户会有用, 请把这些文档安装到
- <filename><makevar>PREFIX</makevar>/share/doc</filename> 下。
- 和前面类似, 这也可以在
- <maketarget>post-install</maketarget> target 中完成。</para>
-
- <para>为您的 port 建立一个新的目录。
- 这个目录的名字应该反映它是属于哪个 port 的。 通常建议使用
- <makevar>PORTNAME</makevar>。 不过, 如果您认为不同版本的 port
- 可能会同时安装, 也可以用完整的
- <makevar>PKGNAME</makevar>。</para>
-
- <para>另外, 应该让是否安装取决于变量
- <makevar>NOPORTDOCS</makevar> 的设置, 这样用户就能够在
- <filename>/etc/make.conf</filename> 中禁止安装它。 例如:</para>
-
- <programlisting>post-install:
-.if !defined(NOPORTDOCS)
- ${MKDIR} ${DOCSDIR}
- ${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${DOCSDIR}
-.endif</programlisting>
-
- <para>这里是一些便于使用的变量, 以及它们在
- <filename>Makefile</filename> 中默认的展开方式:</para>
-
- <itemizedlist>
- <listitem>
- <para><makevar>DATADIR</makevar> 会展开成
- <filename><makevar>PREFIX</makevar>/share/<makevar>PORTNAME</makevar></filename>。</para>
- </listitem>
-
- <listitem>
- <para><makevar>DOCSDIR</makevar> 会展开成
- <filename><makevar>PREFIX</makevar>/share/doc/<makevar>PORTNAME</makevar></filename>。</para>
- </listitem>
-
- <listitem>
- <para><makevar>EXAMPLESDIR</makevar> 会展开成
- <filename><makevar>PREFIX</makevar>/share/examples/<makevar>PORTNAME</makevar></filename>。</para>
- </listitem>
- </itemizedlist>
-
- <note>
- <para><makevar>NOPORTDOCS</makevar> 只控制将要装到 <makevar>DOCSDIR</makevar>
- 的那些文档, 而不应影响标准的联机手册、 info 手册, 以及应装到
- <makevar>DATADIR</makevar>、 <makevar>EXAMPLESDIR</makevar> 的文件。</para>
- </note>
-
- <para>这些变量也会被导出到 <makevar>PLIST_SUB</makevar> 中。
- 只要可能, 它们的值就将在那里以相对于
- <filename><makevar>PREFIX</makevar></filename> 的路径形式出现。
- 也就是说, <filename>share/doc/<makevar>PORTNAME</makevar></filename>
- 在装箱单中默认情况下会替换掉 <literal>%%DOCSDIR%%</literal>, 等等。
- (更多的 <filename>pkg-plist</filename> 代换可以在
- <link linkend="plist-sub">这里</link> 找到。)</para>
-
- <para>所有的安装的文档文件和目录,
- 都应在 <filename>pkg-plist</filename> 出现, 并且使用
- <literal>%%PORTDOCS%%</literal> 前缀, 例如:</para>
-
- <programlisting>%%PORTDOCS%%%%DOCSDIR%%/AUTHORS
-%%PORTDOCS%%%%DOCSDIR%%/CONTACT
-%%PORTDOCS%%@dirrm %%DOCSDIR%%</programlisting>
-
- <para>如果不希望在 <filename>pkg-plist</filename> 中逐个列举文档文件, port
- 也可以将 <makevar>PORTDOCS</makevar> 设置为一组文件及其 shell glob
- 模式, 通过这种方式来加入到最终的装箱单中。
- 这些名字应是相对于 <makevar>DOCSDIR</makevar> 的。
- 因此, 使用了 <makevar>PORTDOCS</makevar>,
- 并将文档安装到非标准位置的 port, 应相应地设置
- <makevar>DOCSDIR</makevar>。
- 如果有在 <makevar>PORTDOCS</makevar> 中列出目录,
- 或者这一变量中的 glob 模式匹配到了目录, 则整个子树中的文件和目录,
- 都将被注册到最终的装箱单中。 如果定义了 <makevar>NOPORTDOCS</makevar>, 则
- <makevar>PORTDOCS</makevar> 中定义的文件和目录将不被安装或加入装箱单。
- 是否安装文档到前面所说的 <makevar>PORTDOCS</makevar> 仍取决于 port 本身。
- 下面是一个典型的使用 <makevar>PORTDOCS</makevar> 的例子:</para>
-
- <programlisting>PORTDOCS= README.* ChangeLog docs/*</programlisting>
-
- <note>
- <para>您也可以使用 <filename>pkg-message</filename> 这个文件,
- 来在安装时显示一些信息。 参见 <link
- linkend="porting-message">关于使用
- <filename>pkg-message</filename> 的这一节</link> 以了解进一步的详情。
- 需要说明的是, 并不需要把 <filename>pkg-message</filename> 加到
- <filename>pkg-plist</filename> 中。</para>
- </note>
- </sect1>
-
- <sect1 id="dads-subdirs">
- <title>子目录</title>
-
- <para>尽可能让 port 将它创建的文件, 放置到
- <makevar>PREFIX</makevar> 中正确的位置。 一些 port
- 会把各式各样的东西混在一起, 并放到一个同名的目录中, 这是不对的。
- 另外, 许多 port 会把除了可执行文件、 头文件和联机手册之外的所有文件,
- 全都一股脑地放到 <filename>lib</filename> 中, 这在和 BSD
- 配合使用时会有问题。 多数文件,
- 应被放到下列位置之一: <filename>etc</filename>
- (安装/配置文件)、 <filename>libexec</filename>
- (由系统内部调用的可执行文件)、 <filename>sbin</filename>
- (为超级用户/管理员提供的可执行文件)、 <filename>info</filename>
- (用于 info 浏览器的文档) 或 <filename>share</filename>
- (平台无关的其它文件)。 请参见 &man.hier.7; 以了解进一步的详情; 针对
- <filename>/usr</filename> 的那些规则, 同样也适用于
- <filename>/usr/local</filename>。 例外情况是那些需要和 USENET
- <quote>news</quote> 打交道的 port, 它们可以选择采用
- <filename><makevar>PREFIX</makevar>/news</filename>
- 作为文件的目的地。</para>
- </sect1>
-
<sect1 id="dads-sh-exec">
<title>在 wrapper 脚本中使用 <function>exec</function> 语句</title>