第6章  特殊情况

目录
6.1 共享库
6.2 Ports 的发行限制
6.3 联编机制
6.4 利用 GNU autotools
6.5 使用 GNU gettext
6.6 使用 perl
6.7 使用 X11
6.8 使用 GNOME
6.9 使用 Qt
6.10 使用 KDE
6.11 使用 Java
6.12 Web 应用, Apache 和 PHP
6.13 使用 Python
6.14 使用 Tcl/Tk
6.15 使用 Emacs
6.16 使用 Ruby
6.17 使用 SDL
6.18 使用 wxWidgets
6.19 使用 Lua
6.20 使用 Xfce
6.21 使用数据库
6.22 启动和停止服务 (rc 脚本)
6.23 添加用户和用户组
6.24 依赖内核源代码的 Ports

  有一些您在创建port时的特殊情况,我们在这里提一下。

6.1 共享库

  如果您的port安装了一个或多个共享库,那么请定义一个 USE_LDCONFIG make 变量, 在post-install标记把它注册进共享库 缓冲时会调用bsd.port.mk去运行 ${LDCONFIG} -m来指向新库的安装目录。 (通常是 PREFIX/lib) 同样,您也可以适当的在您的 pke-plist文件 中定义一组@exec /sbin/ldconfig -m@unexec /sbin/ldconfig -R, 那么用户可以在安装后马上 就能使用,并且在卸载软件包后系统也不会认为这些共享库仍然存在。

USE_LDCONFIG= yes

  如果您需要把共享库安装在缺省的位置之外, 可以通过定义 make 变量 USE_LDCONFIG 来改变默认的安装路径, 它包含安装共享库的目录列表 例如: 如果您的共享库安装到 PREFIX/lib/fooPREFIX/lib/bar directories目录,您可以在您的 Makefile中这样设置:

USE_LDCONFIG= ${PREFIX}/lib/foo ${PREFIX}/lib/bar

  请务必仔细检查, 通常这是完全不必要的, 或者可以通过 -rpath 或在连接时设置 LD_RUN_PATH 来避免 (参见 lang/moscow_ml 给出的例子), 或者用一个 shell 封装程序来在执行可执行文件之前设置 LD_LIBRARY_PATH, 类似 www/mozilla 那样。

  当在 64-位系统上安装 32-位 的函数库时, 请使用 USE_LDCONFIG32

  尽量将共享库版本号保持为 libfoo.so.0 这样的格式。 我们的运行环境连接器只会检查主 (第一个) 版本数字。

  如果在更新 port 时升级了其库的主版本号, 则其它所有连接了受影响的库的 port 的 PORTREVISION 都应递增, 以强制它们采用新版本的库重新编译。

若您有关于 FreeBSD ports 系统的问题, 请发送电子邮件至 <[email protected]>。
关于此文档的任何问题, 请致函 <[email protected]>。