diff options
author | Xin LI <delphij@FreeBSD.org> | 2006-08-14 02:06:18 +0000 |
---|---|---|
committer | Xin LI <delphij@FreeBSD.org> | 2006-08-14 02:06:18 +0000 |
commit | 437d59d3a8ad662a97294f81786f0bf2d0dbac33 (patch) | |
tree | 267d9d8507123e7fa94ad60e428bbfe47616eb1c /zh_CN.GB2312/books | |
parent | 6e6caafb94920ed122e830c73e56340c14caaead (diff) |
Notes
Diffstat (limited to 'zh_CN.GB2312/books')
-rw-r--r-- | zh_CN.GB2312/books/porters-handbook/book.sgml | 319 |
1 files changed, 107 insertions, 212 deletions
diff --git a/zh_CN.GB2312/books/porters-handbook/book.sgml b/zh_CN.GB2312/books/porters-handbook/book.sgml index c37754b6ea..7f749ba7f0 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.734 + Original Revision: 1.745 $FreeBSD$ --> @@ -2150,8 +2150,9 @@ PORTEPOCH= 1</programlisting> 例如 X-contrib、 GNU, 或 Perl CPAN 等等之一, 您可能会希望使用 <makevar>MASTER_SITE_<replaceable>*</replaceable></makevar> - (例如 <makevar>MASTER_SITE_XCONTRIB</makevar> 和 - <makevar>MASTER_SITE_PERL_GNU</makevar>) 来简化撰写。 简单地将 + (例如 <makevar>MASTER_SITE_XCONTRIB</makevar>、 + <makevar>MASTER_SITE_GNU</makevar> 和 + <makevar>MASTER_SITE_PERL_CPAN</makevar>) 来简化撰写。 简单地将 <makevar>MASTER_SITES</makevar> 设置为这些变量之一, 并使用 <makevar>MASTER_SITE_SUBDIR</makevar> 来指定路径就可以达到目的。 下面是一个例子:</para> @@ -4527,7 +4528,7 @@ PORTVERSION= 1.0</programlisting> <row> <entry><makevar>USE_X_PREFIX</makevar></entry> - <entry>此 port 将文件安装到 <makevar>X11BASE</makevar> 而非通常的 + <entry>此 port 将文件安装到 <makevar>X11BASE_REL</makevar> 而非通常的 <makevar>PREFIX</makevar>。</entry> </row> @@ -6462,33 +6463,46 @@ as .putsy.conf and edit it.</programlisting> </sect1> <sect1 id="porting-prefix"> - <title><makevar>PREFIX</makevar> (安装时的顶级目录名)</title> - - <para>尽可能让 port 安装到 - <makevar>PREFIX</makevar> 之下的目录。 (一般情况下, - 这个变量的值是 <makevar>LOCALBASE</makevar> (默认为 + <title><makevar>PREFIX</makevar> (安装时的顶级目录名) 和 <makevar>DESTDIR</makevar></title> + + <para><makevar>PREFIX</makevar> 能够决定 port 安装时的目的位置。 + 一般情况下这个位置是 <filename>/usr/local</filename> + 或 <filename>/opt</filename>。 用户可以将 <makevar>PREFIX</makevar> + 设为其希望的任意值。 您的 port 则必须遵循这个变量。</para> + + <para>除此之外, 如果用户配置了 <makevar>DESTDIR</makevar>, + 则表示希望将 port 安装到另一个环境, 通常是 jail + 或在 <filename>/</filename> 以外的其他位置挂接的系统中。 + 实际上, port 会安装到 + <makevar>DESTDIR</makevar>/<makevar>PREFIX</makevar>, + 并注册到位于 <makevar>DESTDIR</makevar>/var/db/pkg + 的预编译包数据库中。 在撰写 port 时, 遵循 + <makevar>DESTDIR</makevar> 的配置十分重要。</para> + + <para>一般而言 <makevar>PREFIX</makevar> 会设为 + <makevar>LOCALBASE_REL</makevar> (默认是 <filename>/usr/local</filename>)。 如果设置了 <makevar>USE_X_PREFIX</makevar> 或 <makevar>USE_IMAKE</makevar>, - 则 <makevar>PREFIX</makevar> 将是 <makevar>X11BASE</makevar> (默认为 + 则 <makevar>PREFIX</makevar> 会设为 <makevar>X11BASE_REL</makevar> (默认是 <filename>/usr/X11R6</filename>)。 如果设置了 - <makevar>USE_LINUX_PREFIX</makevar>, <makevar>PREFIX</makevar> - 将是 <makevar>LINUXBASE</makevar> (默认为 + <makevar>USE_LINUX_PREFIX</makevar>, 则 <makevar>PREFIX</makevar> + 会设为 <makevar>LINUXBASE_REL</makevar> (默认是 <filename>/compat/linux</filename>)。</para> - <para>避免在源代码中的任何地方硬编码 <filename>/usr/local</filename> 或 - <filename>/usr/X11R6</filename> 这样的路径, 这会让您的 - port 灵活许多, 而且能够适应大型站点的需求。 - 对于使用了 <command>imake</command> 的 X port 而言, - 这是自动的; 对于其它 port, - 这通常可以通过把在 脚本/<filename>Makefile</filename> - 中出现的 <filename>/usr/local</filename> (或对于不使用 imake 的 X port, - <filename>/usr/X11R6</filename>) 改为使用 - <makevar>${PREFIX}</makevar> 来完成, - 因为这个变量会传达到构建和安装的各个步骤。</para> - - <para>确认一下您的应用程序不会错误地把文件安装到 - <filename>/usr/local</filename> 而非 <makevar>PREFIX</makevar>。 - 简单的测试步骤是:</para> + <para>避免将 <filename>/usr/local</filename> 或 + <filename>/usr/X11R6</filename> 硬编码到源代码中, + 能够大大提高 port 的灵活性, 并适应不同环境的需要。 + 对于使用 <command>imake</command> 的 X port, + 这一工作是自动完成的; 其他情况下, 通常可以简单地将 port + 所用到的 <filename>Makefile</filename> 脚本中出现的 + <filename>/usr/local</filename> (或对于没有使用 imake 的 X port 而言, + <filename>/usr/X11R6</filename>) 替换为读取 + <makevar>${PREFIX}</makevar> 变量就能达到目的了, + 因为这个变量在联编和安装的过程中, 会自动向下传递。</para> + + <para>一定要避免让您的 port 在 + <filename>/usr/local</filename> 而不是正确的 <makevar>PREFIX</makevar> + 中安装文件。 简单的测试方法是:</para> <screen>&prompt.root; <userinput>make clean; make package PREFIX=/var/tmp/$(make -V PORTNAME)</userinput></screen> @@ -6502,8 +6516,7 @@ as .putsy.conf and edit it.</programlisting> 中测试安装好的软件, 才能够达到这样的目的。</para> <para>除非真的需要, 否则不要设置 <makevar>USE_X_PREFIX</makevar> - (例如, 如果它需要连接或引用 <makevar>X11BASE</makevar> 中的 X - 库或文件)。</para> + (例如, 如果它需要引用 <makevar>X11BASE</makevar> 中的文件)。</para> <para>您可以在自己的 <filename>Makefile</filename> 中改变 <makevar>PREFIX</makevar> 变量的值, 也可以通过用户环境变量来影响它。 @@ -6521,6 +6534,47 @@ as .putsy.conf and edit it.</programlisting> <literal>-DPAGER=\"/usr/local/bin/less\"</literal>。 这种方法能够增加在系统管理员把整个 <filename>/usr/local</filename> 目录挪到其它位置时安装成功的机会。</para> + + <para>请注意 <makevar>LOCALBASE</makevar>、 + <makevar>LINUXBASE</makevar>、 <makevar>X11BASE</makevar>、 + <makevar>DOCSDIR</makevar>、 <makevar>EXAMPLESDIR</makevar>、 + <makevar>DATADIR</makevar> 以及 <makevar>DESKTOPDIR</makevar> + 这些变量中已经包含了 <makevar>DESTDIR</makevar>。 使用 + <makevar>DESTDIR</makevar> <makevar>LOCALBASE</makevar> + 是错误的。 在您需要相对于 <makevar>DESTDIR</makevar> 的路径时, + 应使用 <makevar>LOCALBASE_REL</makevar>、 + <makevar>LINUXBASE_REL</makevar> 和 <makevar>X11BASE_REL</makevar>。 + 为了使脚本撰写过程不过分地繁琐, 可以用 <makevar>TARGETDIR</makevar> + 来代替 <makevar>DESTDIR</makevar> <makevar>PREFIX</makevar>。</para> + + <para>以下是一些正确的用法:</para> + + <programlisting>post-install: + ${INSTALL_PROGRAM} ${WRKSRC}/helper ${TARGETDIR}/bin/helper + ${INSTALL_DATA} ${WRKSRC}/guide.txt ${DOCSDIR}</programlisting> + + <para>在引用 port 的依赖关系时, 会用到 + <makevar>LOCALBASE</makevar>, 因为我们正在目标环境中进行工作。 + 如果必须在软件中将路径硬编码进去, + 则应使用 <makevar>LOCALBASE_REL</makevar> 的值, + 因为这些软件会在目标环境内使用。</para> + + <para>以下是一些正确的用法:</para> + + <programlisting>RUN_DEPENDS= ${LOCALBASE}/share/gonzo/launch.dat:${PORTSDIR}/games/gonzo + +post-patch: + @${REINPLACE_CMD} -e 's|/usr/gonzo/launch.dat|${LOCALBASE_REL}/share/gonzo/launch.dat}' ${WRKSRC}/main.c + @${REINPLACE_CMD} -e 's|/etc/game.conf|${PREFIX}/etc/game.conf|' ${WRKSRC}/loader.c + +post-install: + @${INSTALL_DATA} ${WRKSRC}/example/conf ${TARGETDIR}/etc/game.conf</programlisting> + + <para>在装箱单和 <filename>pkg-*</filename> 脚本中, + <literal>%%LOCALBASE%%</literal>、 <literal>%%LINUXBASE%%</literal> + 和 <literal>%%X11BASE%%</literal> 在扩展时, + 会自动剔除 <makevar>DESTDIR</makevar>, + 因为这些文件都会在目标环境中使用。</para> </sect1> </chapter> @@ -6786,8 +6840,9 @@ as .putsy.conf and edit it.</programlisting> 它有一个强制性的字段, <literal>vid</literal>, 用于为此记录 (它包含的部分) 指定一个全局唯一标识符 (UUID)。 您应为每一个新的 vuXML 生成新的 UUID (而且别忘了要把模板中的 - UUID 换成新的, 如果您不是从头开始的话)。 在 FreeBSD 5.x - 和更高版本中, 可以使用 &man.uuidgen.1;。此外也可以用 <filename + UUID 换成新的, 如果您不是从头开始的话)。 您可以使用 &man.uuidgen.1; + 来生成 VuXML UUID; 另外, 如果您使用的是 FreeBSD 4.x + 版本, 也可以用 <filename role="package">devel/p5-Data-UUID</filename> 并执行:</para> <programlisting>perl -MData::UUID -le 'print lc new Data::UUID->create_str'</programlisting> @@ -8638,6 +8693,11 @@ Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00 <entry>601103</entry> </row> <row> + <entry>在 OpenSSL 中启用了 DSO (动态共享库) + 支持之后的 6.1-STABLE。</entry> + <entry>601104</entry> + </row> + <row> <entry>7.0-CURRENT。</entry> <entry>700000</entry> </row> @@ -8728,6 +8788,10 @@ Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-00 <entry>引入了 snd_emu10kx 之后的 7.0-CURRENT。</entry> <entry>700018</entry> </row> + <row> + <entry>引入了 OpenSSL 0.9.8b 之后的 7.0-CURRENT。</entry> + <entry>700019</entry> + </row> </tbody> </tgroup> </table> @@ -8998,192 +9062,24 @@ exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar "$@"</programlisting> <sect1 id="dads-uid-and-gids"> <title>UID 和 GID</title> + <para>最新的预留 UID 和 GID 可以在 <filename>ports/UIDs</filename> 和 + <filename>ports/GIDs</filename> 这两个文件中找到。</para> + <para>如果您的 port 安装到系统上之前需要一些用户, 请使用 <filename>pkg-install</filename> 脚本来调用 <command>pw</command> 以便自动地创建它们。 请参见 - <filename role="package">net/cvsup-mirror</filename> 提供的例子。</para> + <filename role="package">net/cvsup-mirror</filename> 提供的例子。 + 请注意我们强烈地不推荐这样做。 + 请在前面提到的那两个文件中注册所需的用户/组 ID 号。</para> <para>如果您的 port 需要与其编译成安装包时同样的用户/组 ID, - 则必须在 50 到 999 之间选择一个未用的 UID。 请参见 + 则必须在 50 到 999 之间选择一个未用的 UID 并在 + <filename>ports/UIDs</filename> (用于用户) 或 + <filename>ports/GIDs</filename> (用于组) 中进行注册。 请参见 <filename role="package">japanese/Wnn6</filename> 提供的例子。</para> - <para>一定不要使用系统或其它 port 已经使用的 UID。</para> - - <para>下面是目前预留的 50 到 999 之间的 UID。</para> - - <!-- Please keep this list sorted by uid --> - <programlisting>bind:*:53:53:Bind Sandbox:/:/sbin/nologin -majordom:*:54:54:Majordomo Pseudo User:/usr/local/majordomo:/nonexistent -rdfdb:*:55:55:rdfDB Daemon:/var/db/rdfdb:/bin/sh -spamd:*:58:58:SpamAssassin user:/var/spool/spamd:/sbin/nologin -cyrus:*:60:60:the cyrus mail server:/nonexistent:/nonexistent -gnats:*:61:1:GNATS database owner:/usr/local/share/gnats/gnats-db:/bin/sh -proxy:*:62:62:Packet Filter pseudo-user:/nonexistent:/nonexistent -uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico -xten:*:67:67:X-10 daemon:/usr/local/xten:/nonexistent -pop:*:68:6:Post Office Owner (popper):/nonexistent:/sbin/nologin -wnn:*:69:7:Wnn:/nonexistent:/nonexistent -pgsql:*:70:70:PostgreSQL pseudo-user:/usr/local/pgsql:/bin/sh -oracle:*:71:71::0:0:Oracle:/usr/local/oracle7:/sbin/nologin -ircd:*:72:72:IRC daemon:/nonexistent:/nonexistent -ircservices:*:73:73:IRC services:/nonexistent:/nonexistent -simscan:*:74:74:Simscan User:/nonexistent:/sbin/nologin -ifmail:*:75:66:Ifmail user:/nonexistent:/nonexistent -www:*:80:80:World Wide Web Owner:/nonexistent:/sbin/nologin -alias:*:81:81:QMail user:/var/qmail/alias:/nonexistent -qmaild:*:82:81:QMail user:/var/qmail:/nonexistent -qmaill:*:83:81:QMail user:/var/qmail:/nonexistent -qmailp:*:84:81:QMail user:/var/qmail:/nonexistent -qmailq:*:85:82:QMail user:/var/qmail:/nonexistent -qmailr:*:86:82:QMail user:/var/qmail:/nonexistent -qmails:*:87:82:QMail user:/var/qmail:/nonexistent -mysql:*:88:88:MySQL Daemon:/var/db/mysql:/sbin/nologin -vpopmail:*:89:89:VPop Mail User:/usr/local/vpopmail:/nonexistent -firebird:*:90:90:Firebird Database Administrator:/usr/local/firebird:/bin/sh -mailman:*:91:91:Mailman User:/usr/local/mailman:/sbin/nologin -gdm:*:92:92:GDM Sandbox:/:/sbin/nologin -jabber:*:93:93:Jabber Daemon:/nonexistent:/nonexistent -p4admin:*:94:94:Perforce admin:/usr/local/perforce:/sbin/nologin -interch:*:95:95:Interchange user:/usr/local/interchange:/sbin/nologin -squeuer:*:96:96:SQueuer Owner:/nonexistent:/bin/sh -mud:*:97:97:MUD Owner:/nonexistent:/bin/sh -msql:*:98:98:mSQL-2 pseudo-user:/var/db/msqldb:/bin/sh -rscsi:*:99:99:Remote SCSI:/usr/local/rscsi:/usr/local/sbin/rscsi -squid:*:100:100:squid caching-proxy pseudo user:/usr/local/squid:/sbin/nologin -quagga:*:101:101:Quagga route daemon pseudo user:/usr/local/etc/quagga:/sbin/nologin -ganglia:*:102:102:Ganglia User:/nonexistent:/sbin/nologin -sgeadmin:*:103:103:Sun Grid Engine Admin:/nonexistent:/sbin/nologin -slimserv:*:104:104:Slim Devices SlimServer pseudo-user:/nonexistent:/sbin/nologin -dnetc:*:105:105:distributed.net client and proxy pseudo-user:/nonexistent:/sbin/nologin -clamav:*:106:106:Clamav Antivirus:/nonexistent:/sbin/nologin -cacti:*:107:107:Cacti Sandbox:/nonexistent:/sbin/nologin -webkit:*:108:108:WebKit Default User:/usr/local/www/webkit:/bin/sh -quickml:*:109:109:quickml Server:/nonexistent:/sbin/nologin -vscan:*:110:110:Scanning Virus Account:/var/amavis:/bin/sh -fido:*:111:111:Fido System:/usr/local/fido:/bin/sh -dcc:*:112:112:Distributed Checksum Clearinghouse:/nonexistent:/sbin/nologin -amavis:*:113:113:Amavis-stats Account:/nonexistent:/sbin/nologin -dhis:*:114:114:DHIS Daemon:/nonexistent:/sbin/nologin -_symon:*:115:115:Symon Account:/var/empty:/sbin/nologin -hplip:*:116:116:HPLIP Server:/nonexistent:/sbin/nologin -postfix:*:125:125:Postfix Mail System:/var/spool/postfix:/sbin/nologin -_bgpd:*:130:130:BGP Daemon:/var/empty:/sbin/nologin -_ospfd:*:131:131:OSPF Daemon:/var/empty:/sbin/nologin -rbldns:*:153:153:rbldnsd pseudo-user:/nonexistent:/sbin/nologin -sfs:*:171:171:Self-Certifying File System:/nonexistent:/sbin/nologin -agk:*:172:172:AquaGateKeeper:/nonexistent:/nonexistent -polipo:*:173:173:polipo web cache:/nonexistent:/sbin/nologin -bogomilter:*:174:174:milter-bogom:/nonexistent:/sbin/nologin -moinmoin:*:192:192:MoinMoin User:/nonexistent:/sbin/nologin -sympa:*:200:200:Sympa Owner:/nonexistent:/sbin/nologin -privoxy:*:201:201:Privoxy proxy user:/nonexistent:/sbin/nologin -dspam:*:202:202:Dspam:/nonexistent:/sbin/nologin -shoutcast:*:210:210:Shoutcast sandbox:/nonexistent:/bin/sh -_tor:*:256:256:Tor anonymising router:/var/db/tor:/bin/sh -smxs:*:260:260:Sendmail X SMTPS:/nonexistent:/sbin/nologin -smxq:*:261:261:Sendmail X QMGR:/nonexistent:/sbin/nologin -smxc:*:262:262:Sendmail X SMTPC:/nonexistent:/sbin/nologin -smxm:*:263:263:Sendmail X misc:/nonexistent:/sbin/nologin -smx:*:264:264:Sendmail X other:/nonexistent:/sbin/nologin -mrtg:*:279:279:MRTG daemon:/nonexistent:/sbin/nologin -ldap:*:389:389:OpenLDAP Server:/nonexistent:/sbin/nologin -drweb:*:426:426:Dr.Web Mail Scanner:/nonexistent:/sbin/nologin -courier:*:465:465:Courier Mail Server:/nonexistent:/sbin/nologin -_bbstored:*:505:505::0:0:BoxBackup Store Daemon:/nonexistent:/bin/sh -ejabberd:*:544:544::0:0:ejabberd pseudo user:/var/spool/ejabberd:/bin/sh -qtss:*:554:554:Darwin Streaming Server:/nonexistent:/sbin/nologin -ircdru:*:555:555:Russian hybrid IRC server:/nonexistent:/bin/sh -messagebus:*:556:556:D-BUS Daemon User:/nonexistent:/sbin/nologin -avahi:*:558:558:Avahi Daemon User:/nonexistent:/sbin/nologin -bnetd:*:700:700:Bnetd user:/nonexistent:/sbin/nologin -bopm:*:717:717:Blitzed Open Proxy Monitor:/nonexistent:/bin/sh -openxpki:*:777:777:OpenXPKI Owner:/nonexistent:/usr/sbin/nologin -bacula:*:910:910:Bacula Daemon:/var/db/bacula:/sbin/nologin</programlisting> - - <para>下面是目前预留的 GID。</para> - - <!-- Please keep this list sorted by gid --> - <!-- XXX incomplete! --> - <programlisting>bind:*:53: -rdfdb:*:55: -spamd:*:58: -cyrus:*:60: -proxy:*:62: -authpf:*:63: -uucp:*:66: -xten:*:67: -dialer:*:68: -network:*:69: -pgsql:*:70: -simscan:*:74: -audit:*:77: -www:*:80: -qnofiles:*:81: -qmail:*:82: -mysql:*:88: -vpopmail:*:89: -firebird:*:90: -mailman:*:91: -gdm:*:92: -jabber:*:93: -p4admin:*:94: -interch:*:95: -squeuer:*:96: -mud:*:97: -msql:*:98: -rscsi:*:99: -squid:*:100: -quagga:*:101: -ganglia:*:102: -sgeadmin:*:103: -slimserv:*:104: -dnetc:*:105: -clamav:*:106: -cacti:*:107: -webkit:*:108: -quickml:*:109: -vscan:*:110: -fido:*:111: -dcc:*:112: -amavis:*:113: -dhis:*:114: -_symon:*:115: -postfix:*:125: -maildrop:*:126: -_bgpd:*:130: -_ospfd:*:131: -rbldns:*:153: -sfs:*:171: -agk:*:172: -polipo:*:173: -moinmoin:*:192: -sympa:*:200: -dspam:*:202: -_tor:*:256: -smxs:*:260: -smxq:*:261: -smxc:*:262: -smxm:*:263: -smx:*:264: -mrtg:*:279: -ldap:*:389: -drweb:*:426: -courier:*:465: -_bbstored:*:505: -ejabberd:*:544: -qtss:*:554: -ircdru:*:555: -messagebus:*:556: -realtime:*:557: -avahi:*:558: -bnetd:*:700: -bopm:*:717: -openxpki:*:777: -bacula:*:910:</programlisting> - <para>如果您的 port 需要在这一范围内预留新的 UID 或 GID 的话, - 请在提交 (或升级) 时予以说明。 - 这样我们就能够让这份列表中的保留 ID 与现实同步了。</para> + 请同时提交修改这两个文件的补丁。</para> </sect1> <sect1 id="dads-rational"> @@ -9562,10 +9458,9 @@ IGNORE=POINTYHAT is not supported <command>make index</command> 中所进行的那种, 都不得不运行一条命令, 这会使这一操作变得更慢。</para> - <para>在使用 <filename>sysctl</filename> 时, - 应务必使用完整路径即 <filename>/sbin/</filename>, - 因为某些用户可能并不在他们的 <envar>PATH</envar> - 中包含这个目录。</para> + <para>在使用 &man.sysctl.8; 时, + 务必通过 <makevar>SYSCTL</makevar> 变量来进行, + 因为此变量将展开成命令的完整路径, 并且用户可以根据需要另行指定。</para> </sect1> <sect1 id="dads-workarounds"> |