8.1.根据 make 变量对 pkg-plist 进行修改
有些 port, 特别是 p5-
port, 需要根据其配置的选项 (或 perl
的版本, 在 p5-
port 的情况下) 来改变其 pkg-plist 。为了简化此过程, 在pkg-plist 中的 %%OSREL%%
, %%PERL_VER%%
和 %%PERL_VERSION%%
的任可实例都会被适当地替换掉。%%OSREL%%
的值是操作系统的版本号(例如,4.9
)。%%PERL_VERSION%%
和 %%PERL_VER%%
是 perl
的完整版本号(例如,5.8.9
)。在相关章节中有其他几个与 port 的文档文件有关的 %%VARS%%
介绍。
要进行其他的替换, 可以在 PLIST_SUB
中设置 VAR=VALUE
对的列表, 在 pkg-plist 中 %%VAR%%
的实例将被替换为 VALUE
。
例如, 如果一个 port 在一个特定版本的子目录中安装了许多文件, 则应使用一个版本占位符, 以便在每次更新 port 时不必重新生成 pkg-plist 。例如,set:
在 Makefile 中, 并在 pkg-plist 中显示的版本中使用 %%OCTAVE_VERSION%%
。在升级 port 时,就不需要在 pkg-plist 中编辑几十行 (或在某些情况下几百行) 的内容了。
如果文件的安装取决于在 port 中设置的选项, 通常的处理方法是在 pkg-plist 中为选项启用时需要的行加上 %%OPT%%
前缀,或在选项禁用时加上 %%NO_OPT%%
前缀,并在 Makefile 中加入 OPTIONS_SUB=yes
。参见 OPTIONS_SUB
以了解更多信息。
例如, 如果有一些文件只有在启用 X11
选项时才会安装, 而 Makefile 中有。
在 pkg-plist 中, 将 %%X11%%
放在只有在启用该选项时才会安装的行前面,像这样:
这种替换将在 pre-install
和 do-install
目标之间进行,通过从 PLIST 读取并写入 TMPPLIST (默认是 WRKDIR/.PLIST.mktmp )。因此,如果 port 需要临时建立 PLIST ,应在 pre-install
中或之前完成。另外,如果 port 需要编辑生成的文件, 则应在 post-install
中进行, 并在名为 TMPPLIST 的文件中进行。
另一种修改 port 的打包清单的方法是基于设置 PLIST_FILES
和 PLIST_DIRS
这两个变量。每个变量的值都被看作是一个路径名的列表, 以便与 PLIST
的内容一起写入 TMPPLIST
。虽然在 PLIST_FILES
和 PLIST_DIRS
中列出的名字会受到上述 %VAR%%
的替换,但最好还是直接使用 ${VAR}
。除此以外,PLIST_FILES
中的名字将在最终的打包清单中出现,不会有任何变化,而 @dir
将被预加到 PLIST_DIRS
中的名字上。为了生效,PLIST_FILES
和 PLIST_DIRS
必须在编写 TMPPLIST 之前设置,也就是在 pre-install
或更早的时候。
有时,使用 OPTIONS_SUB
是不够的。在这些情况下,在 Makefile 里面给 PLIST_SUB
添加一个特殊的 TAG
,并加上 @comment
的特殊值,使软件包工具忽略这一行。例如,如果某些文件只有在 X11
选项打开且架构为 i386
时才会被安装。
最后更新于