aboutsummaryrefslogtreecommitdiff
path: root/zh_CN.GB2312/books
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2007-02-22 06:34:43 +0000
committerXin LI <delphij@FreeBSD.org>2007-02-22 06:34:43 +0000
commitd848230019ad7e529aa2b8dfbb3c28b4c28b01ca (patch)
treea2273eba69f05ac17514af27c1f96b6f7c36c7f1 /zh_CN.GB2312/books
parente060880a20470761328bef5afdbf9f1863bf3b11 (diff)
Notes
Diffstat (limited to 'zh_CN.GB2312/books')
-rw-r--r--zh_CN.GB2312/books/porters-handbook/book.sgml451
1 files changed, 389 insertions, 62 deletions
diff --git a/zh_CN.GB2312/books/porters-handbook/book.sgml b/zh_CN.GB2312/books/porters-handbook/book.sgml
index 56113a8ff2..9921e93736 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.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> 的样式是否符合规范,
@@ -1132,15 +1132,6 @@ PORTEPOCH= 1</programlisting>
</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>
<entry>emiclock</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,
@@ -10020,6 +10332,10 @@ Reference: &lt;http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00
<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>
</row>
@@ -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> 的路径形式出现。