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