diff options
author | Xin LI <delphij@FreeBSD.org> | 2007-02-22 06:34:43 +0000 |
---|---|---|
committer | Xin LI <delphij@FreeBSD.org> | 2007-02-22 06:34:43 +0000 |
commit | d848230019ad7e529aa2b8dfbb3c28b4c28b01ca (patch) | |
tree | a2273eba69f05ac17514af27c1f96b6f7c36c7f1 /zh_CN.GB2312/books | |
parent | e060880a20470761328bef5afdbf9f1863bf3b11 (diff) |
Notes
Diffstat (limited to 'zh_CN.GB2312/books')
-rw-r--r-- | zh_CN.GB2312/books/porters-handbook/book.sgml | 451 |
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 <bsd.port.pre.mk> + +.if defined(WITH_QT) +BUILD_DEPENDS+= moc4:${PORTSDIR}/devel/qt4-moc +LIB_DEPENDS+= QtCore:${PORTSDIR}/devel/qt4-corelib +.endif + +.include <bsd.port.post.mk></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: <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: <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> 的路径形式出现。 |