有一些您在创建port时的特殊情况,我们在这里提一下。
如果您的port安装了一个或多个共享库,那么请定义一个 INSTALLS_SHLIB make 变量, 在post-install标记把它注册进共享库 缓冲时会调用bsd.port.mk去运行 ${LDCONFIG} -m来指向新库的安装目录。 (通常是 PREFIX/lib) 同样,您也可以适当的在您的 pke-plist文件 中定义一组@exec /sbin/ldconfig -m 和@unexec /sbin/ldconfig -R, 那么用户可以在安装后马上 就能使用,并且在卸载软件包后系统也不会认为这些共享库仍然存在。
如果您需要把共享库安装在缺省的位置之外, 可以定义 LDCONFIG_DIRS make 变量,它包含安装共享库的目录列表 例如: 如果您的共享库安装到 PREFIX/lib/foo 和 PREFIX/lib/bar directories目录,您可以在您的 Makefile中这样设置:
INSTALLS_SHLIB= yes LDCONFIG_DIRS= %%PREFIX%%/lib/foo %%PREFIX%%/lib/bar
要时刻谨记, 非标准的目录不会在 (重) 启动时自动传递给 ldconfig(8) ! 如果有 port 真的需要这样做, 则需要像 x11/kdelibs3 那样安装一个启动脚本。 请务必仔细检查, 通常这是完全不必要的, 或者可以通过 -rpath 或在连接时设置 LD_RUN_PATH 来避免 (参见 lang/moscow_ml 给出的例子), 或者用一个 shell 封装程序来在执行可执行文件之前设置 LD_LIBRARY_PATH, 类似 www/mozilla 那样。
值得注意的是这里 LDCONFIG_DIRS 的内 容就像 pkg-plist 的其它部分一样要通过sed(1)过滤,所 以 PLIST_SUB 置换也会应用。我们推荐您使用 %%PREFIX%% 替换 PREFIX,%%LOCALBASE%% 替换LOCALBASE,%%X11BASE%% 替换X11BASE.
尽量将共享库版本号保持为 libfoo.so.0 这样的格式。 我们的运行环境连接器只会检查主 (第一个) 版本数字。
如果在更新 port 时升级了其库的主版本号, 则其它所有连接了受影响的库的 port 的 PORTREVISION 都应递增, 以强制它们采用新版本的库重新编译。