MFen 1.795 -> 1.803

Obtained from:	The FreeBSD Simplified Chinese Project
This commit is contained in:
Xin LI 2007-02-22 06:34:43 +00:00
parent e060880a20
commit d848230019
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=29632

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
Original Revision: 1.795
Original Revision: 1.803
$FreeBSD$
-->
@ -341,7 +341,7 @@ PLIST_DIRS= lib/X11/oneko</programlisting>
<title>用 <command>portlint</command> 来检查 port</title>
<para>请使用 <command>portlint</command> 命令来检查您的 port
是否符合我们的规范。 <filename role="package">devel/portlint</filename>
是否符合我们的规范。 <filename role="package">ports-mgmt/portlint</filename>
程序是 ports 套件的一部分。
这个程序的主要功能是帮助您检查
<link linkend="porting-samplem">Makefile</link> 的样式是否符合规范,
@ -1131,15 +1131,6 @@ PORTEPOCH= 1</programlisting>
<entry>没什么需要修改的</entry>
</row>
<row>
<entry>XFree86-3.3.6</entry>
<entry>(空)</entry>
<entry>XFree86</entry>
<entry>(空)</entry>
<entry>3.3.6</entry>
<entry>没什么需要修改的</entry>
</row>
<row>
<entry>EmiClock-1.0.2</entry>
<entry>(空)</entry>
@ -3294,8 +3285,9 @@ ALWAYS_KEEP_DISTFILES= yes
<sect2>
<title>在依赖关系中指定最低版本</title>
<para>在依赖某个其他 port 时, 可以以下面的句法在
<makevar>*_DEPENDS</makevar> 变量中指定最低版本:</para>
<para>在依赖某个其他 port 时, 可以采用下面的句法, 通过除
<makevar>LIB_DEPENDS</makevar> 之外的
<makevar>*_DEPENDS</makevar> 变量来指定最低版本:</para>
<programlisting>p5-Spiffy>=0.26:${PORTSDIR}/devel/p5-Spiffy</programlisting>
@ -3865,11 +3857,6 @@ PORTVERSION= 1.0</programlisting>
则其它所有连接了受影响的库的 port 的 <makevar>PORTREVISION</makevar> 都应递增,
以强制它们采用新版本的库重新编译。</para>
<para>如果 port 要安装长版本号的共享库,
例如 <filename>libfoo.so.0.2.9</filename> 则 ports
构建基础架构会自动尝试重命名这些文件。 如果需要禁用这一行为, 则应定义
<makevar>NO_FILTER_SHLIBS</makevar>。</para>
</sect1>
<sect1 id="porting-restrictions">
@ -4955,57 +4942,366 @@ BUILD_DEPENDS+= Xvfb:${X_VFBSERVER_PORT} \
<sect1 id="using-kde">
<title>使用 KDE</title>
<table frame="none">
<title>用于用到 KDE 的 port 的变量</title>
<sect2 id="kde-variables">
<title>变量及其含义</title>
<tgroup cols="2">
<tbody>
<row>
<entry><makevar>USE_QT_VER</makevar></entry>
<table frame="none">
<title>用于使用 KDE 的 port 的变量</title>
<entry>表示您的 port 使用了 Qt。 可选的值是
<literal>1</literal> 和
<literal>3</literal> 它们表示所用的 Qt 的主版本号。
这个变量将自动把 <makevar>MOC</makevar> 和
<makevar>QTCPPFLAGS</makevar> 默认设置为适当的值。</entry>
</row>
<tgroup cols="2">
<tbody>
<row>
<entry><makevar>USE_KDELIBS_VER</makevar></entry>
<row>
<entry><makevar>USE_KDELIBS_VER</makevar></entry>
<entry>表示 port 用到了 KDE 库。 这个变量可以指定使用的 KDE 的主版本,
如果定义了这个变量, 则系统会自动将
<makevar>USE_QT_VER</makevar> 设为适当的值。
目前唯一一个可用的值是
<literal>3</literal>。</entry>
</row>
<entry>表示您的 port 有使用 KDE 库。 可选的值是
<literal>3</literal> 它表示所用 KDE 的主版本号。
这个变量会自动将 <makevar>USE_QT_VER</makevar>
设置为合适的版本。</entry>
</row>
<row>
<entry><makevar>USE_KDEBASE_VER</makevar></entry>
<row>
<entry><makevar>USE_KDEBASE_VER</makevar></entry>
<entry>表示 port 要用到 KDE 的基本系统。 这个变量可以指定使用的 KDE 的主版本,
如果定义了这个变量, 则系统会自动将
<makevar>USE_QT_VER</makevar> 设为适当的值。
目前唯一一个可用的值是
<literal>3</literal>。</entry>
</row>
</tbody>
</tgroup>
</table>
<entry>表示您的 port 要使用 KDE 基本运行环境。 可选的值是
<literal>3</literal> 它表示所用 KDE 的主版本号。
这个变量会自动将 <makevar>USE_KDELIBS_VER</makevar>
设置为合适的版本。</entry>
</row>
</sect2>
<row>
<entry><makevar>MOC</makevar></entry>
<sect2 id="kde-qt">
<title>在 port 中使用 Qt</title>
<entry>设置 <command>moc</command> 的路径。
默认的值, 与 <makevar>USE_QT_VER</makevar>
有关。</entry>
</row>
<table frame="none">
<title>用于使用 Qt 的 port 的变量</title>
<row>
<entry><makevar>QTCPPFLAGS</makevar></entry>
<tgroup cols="2">
<tbody>
<row>
<entry><makevar>USE_QT_VER</makevar></entry>
<entry>设置用于处理 Qt 代码的 <makevar>CPPFLAGS</makevar>。
默认设置与
<makevar>USE_QT_VER</makevar> 的值有关。</entry>
</row>
</tbody>
</tgroup>
</table>
<entry>表示 port 用到了 Qt 工具套件。
可用的值包括 <literal>3</literal> 和 <literal>4</literal>
用于指定使用的 Qt 的主版本。 此外, 系统会自动为 <command>configure</command>
脚本和 <command>make</command> 命令提供必要的参数。</entry>
</row>
<row>
<entry><makevar>QT_PREFIX</makevar></entry>
<entry>这个变量会自动设为 Qt 的安装路径 (只读变量)。</entry>
</row>
<row>
<entry><makevar>MOC</makevar></entry>
<entry>这个变量会自动设为 <command>moc</command> 的路径
(只读变量)。 默认值与
<makevar>USE_QT_VER</makevar> 变量的值有关。</entry>
</row>
<row>
<entry><makevar>QTCPPFLAGS</makevar></entry>
<entry>通过
<makevar>CONFIGURE_ENV</makevar> 传给 Qt 工具套件的编译参数。
默认配置与
<makevar>USE_QT_VER</makevar> 有关。</entry>
</row>
<row>
<entry><makevar>QTCFGLIBS</makevar></entry>
<entry>通过
<makevar>CONFIGURE_ENV</makevar> 传给 Qt 工具套件的连接库。
默认配置与
<makevar>USE_QT_VER</makevar> 有关。</entry>
</row>
<row>
<entry><makevar>QTNONSTANDARD</makevar></entry>
<entry>禁止系统自动修改
<makevar>CONFIGURE_ENV</makevar>、
<makevar>CONFIGURE_ARGS</makevar> 和
<makevar>MAKE_ENV</makevar>。</entry>
</row>
</tbody>
</tgroup>
</table>
<table frame="none">
<title>其他用于使用 Qt 4.x 的变量</title>
<tgroup cols="2">
<tbody>
<row>
<entry><makevar>QT_COMPONENTS</makevar></entry>
<entry>用于指定 Qt4 工具和函数库的依赖。
详情见后。</entry>
</row>
<row>
<entry><makevar>UIC</makevar></entry>
<entry>这个变量会自动设为 <command>uic</command> 的路径 (只读变量)。
默认值与
<makevar>USE_QT_VER</makevar> 有关。</entry>
</row>
<row>
<entry><makevar>QMAKE</makevar></entry>
<entry>这个变量会自动设为 <command>qmake</command> 的路径
(只读变量)。 其默认值与
<makevar>USE_QT_VER</makevar> 有关。</entry>
</row>
<row>
<entry><makevar>QMAKESPEC</makevar></entry>
<entry>这个变量会自动设为
<command>qmake</command> 配置文件的路径 (只读变量)。
其默认值与 <makevar>USE_QT_VER</makevar>
有关。</entry>
</row>
</tbody>
</tgroup>
</table>
<para>当设置了 <makevar>USE_QT_VER</makevar> 时,
系统自动会给 <command>configure</command> 脚本传一系列有用的参数:</para>
<programlisting>CONFIGURE_ARGS+= --with-qt-includes=${QT_PREFIX}/include \
--with-qt-libraries=${QT_PREFIX}/lib \
--with-extra-libs=${LOCALBASE}/lib \
--with-extra-includes=${LOCALBASE}/include
CONFIGURE_ENV+= MOC="${MOC}" CPPFLAGS="${CPPFLAGS} ${QTCPPFLAGS}" LIBS="${QTCFGLIBS}" \
QTDIR="${QT_PREFIX}" KDEDIR="${KDE_PREFIX}"</programlisting>
<para>如果将 <makevar>USE_QT_VER</makevar> 设为 <literal>4</literal>
则还会进行下列配置:</para>
<programlisting>CONFIGURE_ENV+= UIC="${UIC}" QMAKE="${QMAKE}" QMAKESPEC="${QMAKESPEC}"
MAKE_ENV+= QMAKESPEC="${QMAKESPEC}"</programlisting>
</sect2>
<sect2 id="qt4-components">
<title>组件的选择 (仅限 Qt 4.x)</title>
<para>当 <makevar>USE_QT_VER</makevar> 设为 4 时, 可以通过
<makevar>QT_COMPONENTS</makevar> 变量来指定
Qt4 工具和函数库。 下表中列出了最重要的一些组件 (全部组件可以在
<filename>/usr/ports/Mk/bsd.kde.mk</filename> 中的
<makevar>_QT_COMPONENTS_ALL</makevar> 变量中找到)</para>
<table frame="none">
<title>可用的 Qt4 函数库组件</title>
<tgroup cols="2">
<thead>
<row>
<entry>名字</entry>
<entry>描述</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>corelib</literal></entry>
<entry>核心库 (在 port 只使用 <literal>corelib</literal> 而没有用到其他库时可以省略)</entry>
</row>
<row>
<entry><literal>gui</literal></entry>
<entry>图形用户界面库</entry>
</row>
<row>
<entry><literal>network</literal></entry>
<entry>网络函数库</entry>
</row>
<row>
<entry><literal>opengl</literal></entry>
<entry>OpenGL 函数库</entry>
</row>
<row>
<entry><literal>qt3support</literal></entry>
<entry>Qt3 兼容支持函数库</entry>
</row>
<row>
<entry><literal>qtestlib</literal></entry>
<entry>单元测试函数库</entry>
</row>
<row>
<entry><literal>sql</literal></entry>
<entry>SQL 函数库</entry>
</row>
<row>
<entry><literal>xml</literal></entry>
<entry>XML 函数库</entry>
</row>
</tbody>
</tgroup>
</table>
<para>您可以通过在成功编译之后, 通过在主可执行文件上运行
<command>ldd</command> 来确定所需的库。</para>
<table frame="none">
<title>可用的 Qt4 工具组件</title>
<tgroup cols="2">
<thead>
<row>
<entry>名字</entry>
<entry>描述</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>moc</literal></entry>
<entry>元对象编译器 (几乎所有的 Qt 应用程序都需要这个)</entry>
</row>
<row>
<entry><literal>qmake</literal></entry>
<entry>用于 Qt 工程的联编工具</entry>
</row>
<row>
<entry><literal>rcc</literal></entry>
<entry>资源编译器 (如果应用程序中包含
<filename>*.rc</filename> 或 <filename>*.qrc</filename>
文件)</entry>
</row>
<row>
<entry><literal>uic</literal></entry>
<entry>用户界面编译器 (如果应用程序用到了 GUI)</entry>
</row>
</tbody>
</tgroup>
</table>
<table frame="none">
<title>可用的 Qt4 插件组件</title>
<tgroup cols="2">
<thead>
<row>
<entry>名字</entry>
<entry>描述</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>iconengines</literal></entry>
<entry>SVG 图标引擎插件 (如果应用程序使用 SVG 图标)</entry>
</row>
<row>
<entry><literal>imageformats</literal></entry>
<entry>用于 GIF、 JPEG、 MNG 和
SVG 的 imageformat 插件 (如果应用程序使用图片文件)</entry>
</row>
</tbody>
</tgroup>
</table>
<example id="qt4-components-example">
<title>选择 Qt4 组件</title>
<para>下面是 port
<filename role="package">editors/texmaker</filename> 中的一个片段,
它用到了 Qt4 图形用户界面函数库 (这时会默认使用核心函数库) 及联编工具:</para>
<programlisting>USE_QT_VER= 4
QT_COMPONENTS= gui moc qmake rcc uic</programlisting>
</example>
</sect2>
<sect2 id="qt-additional">
<title>其他考虑</title>
<para>如果应用程序没有提供
<filename>configure</filename> 文件, 而是给了一个 <filename>.pro</filename>
文件, 则应这样:</para>
<programlisting>HAS_CONFIGURE= yes
do-configure:
@cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \
${QMAKE} -unix PREFIX=${PREFIX} texmaker.pro</programlisting>
<para>请注意, 这与系统提供的 <filename>BUILD.sh</filename>
中的 <command>qmake</command> 类似。 传递
<makevar>CONFIGURE_ENV</makevar> 能够确保 <command>qmake</command>
可以看到 <makevar>QMAKESPEC</makevar> 变量,
否则它可能无法正常工作。 <command>qmake</command> 会生成标准的
Makefile 因此无需自行编写
<maketarget>build</maketarget> target。</para>
<para>Qt 应用程序通常会编写为能够跨平台使用, 通常 X11/Unix 并不是开发它的平台,
有时这会导致一些边边角角的问题, 例如:</para>
<itemizedlist>
<listitem>
<para><emphasis>缺少必要的 includepaths。</emphasis>
许多应用程序会使用托盘图标支持, 但忽略了这些头或库文件需要在 X11
目录中查找。 您可以通过命令行告诉 <command>qmake</command>
将这些头文件和函数库加入到搜索路径中, 例如:</para>
<programlisting>${QMAKE} -unix PREFIX=${PREFIX} INCLUDEPATH+=${X11BASE}/include \
LIBS+=-L${X11BASE}/lib sillyapp.pro</programlisting>
</listitem>
<listitem>
<para><emphasis>有问题的安装路径。</emphasis>
有时, 类似图标或 .desktop 文件这样的一些数据, 默认情况下没有安装到
XDG-兼容的程序会扫描的路径中。 <filename role="package">editors/texmaker</filename>
就是一个这样的例子 - 请参考这个 port 的 <filename>files</filename>
目录中的 <filename>patch-texmaker.pro</filename>
以了解如何在 Qmake 工程文件中修正这个问题。</para>
</listitem>
</itemizedlist>
<note>
<para>目前, <filename>bsd.kde.mk</filename> 还不支持 pre/postmk
也就是说, 在使用了 <filename>bsd.port.pre.mk</filename> 之后, 就不能再指定
<makevar>USE_QT_VER</makevar> 和 <makevar>QT_COMPONENTS</makevar>
了。 如果您的 port 需要这样做, 请以传统方式编写依赖关系, 例如:</para>
<programlisting>.include &lt;bsd.port.pre.mk&gt;
.if defined(WITH_QT)
BUILD_DEPENDS+= moc4:${PORTSDIR}/devel/qt4-moc
LIB_DEPENDS+= QtCore:${PORTSDIR}/devel/qt4-corelib
.endif
.include &lt;bsd.port.post.mk&gt;</programlisting>
</note>
</sect2>
</sect1>
@ -7741,6 +8037,22 @@ as .putsy.conf and edit it.</programlisting>
请写信询问 &a.ports;。</para>
</sect1>
<sect1 id="testing-porttools">
<title>使用 Port Tools 来完成测试</title>
<para>在 Ports 套件中, 提供了一个 <filename role="package">ports-mgmt/porttools</filename>
程序。</para>
<para><command>port</command> 是一个能够帮助您简化测试工具的前端脚本。
如果希望对新增的 port 或更新 port 时进行测试, 可以用
<command>port test</command> 来完成这些测试工作, 这也包含了
<link linkend="testing-portlint"><command>portlint</command></link>
检查。 这个命令会检测并列出没有在 <filename>pkg-plist</filename> 中列出的文件。
具体用法请参见下面的例子:</para>
<screen>&prompt.root; <userinput>port test /usr/ports/net/csup</userinput></screen>
</sect1>
<sect1 id="porting-prefix">
<title><makevar>PREFIX</makevar> (安装时的顶级目录名) 和 <makevar>DESTDIR</makevar></title>
@ -7862,7 +8174,7 @@ post-install:
<para>如果您是非常热心的 ports 参与者, 则可以看看 <application>Tinderbox</application>。
这是一个强大的用于构建和测试 ports 的系统, 它基于
<link linkend="build-cluster">Pointyhat</link> 的脚本。 您可以使用
<filename role="package">misc/tinderbox</filename> port 来安装
<filename role="package">ports-mgmt/tinderbox</filename> port 来安装
<application>Tinderbox</application>。 请一定仔细阅读随它安装的文档,
因为配置并不简单。</para>
@ -8322,8 +8634,8 @@ post-install:
已经知道 <literal>0.65_7</literal> 版本修正了这个问题。</para>
<para>您需要做的准备工作, 是安装一个新版本的
ports <filename role="package">security/portaudit</filename> 程序以及
<filename role="package">security/portaudit-db</filename>。</para>
ports <filename role="package">ports-mgmt/portaudit</filename> 程序以及
<filename role="package">ports-mgmt/portaudit-db</filename>。</para>
<para>首先, 检查一下是否已经有了关于这个漏洞的描述。
如果已经有过这样的记录, 那么它将匹配较早版本的 package
@ -10019,6 +10331,10 @@ Reference: &lt;http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00
节点的新压缩及加密模式之后的 6.2-STABLE。</entry>
<entry>602104</entry>
</row>
<row>
<entry>MFC 了从 NetBSD 移植的 BSD 授权的 &man.gzip.1; 之后的 6.2-STABLE。</entry>
<entry>602105</entry>
</row>
<row>
<entry>7.0-CURRENT。</entry>
<entry>700000</entry>
@ -10159,6 +10475,11 @@ Reference: &lt;http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00
7.0-CURRENT。</entry>
<entry>700029</entry>
</row>
<row>
<entry>在 IPv4 多播转发代码中删去了 IPIP 隧道封装 (VIFF_TUNNEL) 之后的
7.0-CURRENT。</entry>
<entry>700030</entry>
</row>
</tbody>
</tgroup>
@ -10347,6 +10668,12 @@ post-install:
</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> 的路径形式出现。