MFen 1.803 -> 1.814
Obtained from: The FreeBSD Simplified Chinese Project
This commit is contained in:
parent
9a4cf56971
commit
35eea1e4ce
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=29884
1 changed files with 334 additions and 176 deletions
|
@ -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${LOCALBASE}/include -L${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: <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: <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>
|
||||
|
||||
|
|
Loading…
Reference in a new issue