8.1.根据 make 变量对 pkg-plist 进行修改
最后更新于
最后更新于
某些 Port,尤其是以 p5-
开头的 Port,需要根据配置的选项(或 p5-
Port 中 perl
的版本)更改其 pkg-plist。为简化此操作,pkg-plist 中出现的 %%OSREL%%
、%%PERL_VER%%
和 %%PERL_VERSION%%
会被自动替换为适当的值。%%OSREL%%
的值是操作系统的数字版本(例如 4.9
);%%PERL_VERSION%%
和 %%PERL_VER%%
是 perl
的完整版本号(例如 5.8.9
)。还有其他一些与 Port 文档文件相关的 %%VARS%%
替换项,在中有说明。
要进行自定义替换,可以在 Makefile 中设置 PLIST_SUB
为 VAR=VALUE
形式的列表,pkg-plist 中出现的 %%VAR%%
就会被替换为 VALUE。
例如,如果一个 Port 在按版本划分的子目录中安装了多个文件,可以使用占位符表示版本号,这样 Port 升级时就无需每次都重新生成 pkg-plist。可以这样设置:
然后在 pkg-plist 中使用 %%OCTAVE_VERSION%%
来代表版本号出现的位置。这样当 Port 升级时,就无需编辑成百上千的 plist 行。
如果文件的安装是取决于 Port 的选项设置,则常见的处理方法是在 pkg-plist 行前加上 %%OPT%%
(表示启用该选项时需要安装该文件),或 %%NO_OPT%%
(表示禁用该选项时需要安装该文件),并在 Makefile 中添加 OPTIONS_SUB=yes
。详见 。
例如,如果有些文件只在启用了 X11
选项时才安装,并且 Makefile 中有:
则在 pkg-plist 中,应在仅在启用该选项时才安装的行前加上 %%X11%%
,例如:
这种替换是在 pre-install
和 do-install
阶段之间完成的,通过读取 PLIST 并写入 TMPPLIST(默认值为 WRKDIR/.PLIST.mktmp)。因此,如果 Port 是动态构建 PLIST,则必须在 pre-install
或之前完成此操作。如果需要修改生成后的文件,应在 post-install
阶段操作,并针对 TMPPLIST 文件。
另一种修改 Port 安装清单的方式是设置变量 PLIST_FILES
和 PLIST_DIRS
。它们的值被视为路径列表,将连同 PLIST 内容一并写入 TMPPLIST。尽管这些名称同样支持 %%VAR%%
替换,但建议直接使用 ${VAR}
。除此之外,PLIST_FILES
中的名称会原样出现在最终的安装清单中,而 PLIST_DIRS
中的名称前会加上 @dir
。这两个变量必须在写入 TMPPLIST 之前设置,也就是要在 pre-install
或更早的时候设置。
有时,仅使用 OPTIONS_SUB
并不够。在这些情况下,可以在 Makefile 的 PLIST_SUB
中为某个特定 TAG
设置特殊值 @comment
,从而使打包工具忽略对应的行。例如,某些文件只在启用了 X11
且架构为 i386
时才会被安装,可以这样设置: