rpm%config(noreplace)覆盖%config

Kyl*_*ham 2 linux rpm rpm-spec

在我的rpm中,我有一个完整的目录,我想用%config(noreplace)标记.使用%config中的语义,我希望在每次安装时使用rpm中的最新版本替换该目录中的文件.

使用这里的指南:http://www-uxsup.csx.cam.ac.uk/~jw35/docs/rpm_config.html,我尝试了以下内容:

%files
%config(noreplace) /my/saved/dir/*
%config /my/saved/dir/file1
Run Code Online (Sandbox Code Playgroud)

%files
%config /my/saved/dir/file1
%config(noreplace) /my/saved/dir/*
Run Code Online (Sandbox Code Playgroud)

希望特定的命令会覆盖glob,但它不起作用.是否有任何类似RPM的命令我可以用来强制嵌套在%config(noreplace)目录下的文件上的%config行为?

msu*_*chy 5

来自:http: //ftp.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html

%config指令有一个限制,并且该限制是%config之后不能超过一个文件名.这意味着以下示例是指定配置文件的唯一允许方式:

%config /etc/foonly
Run Code Online (Sandbox Code Playgroud)

请注意,在构建时安装文件的完整路径是必需的.

但是,您可以在%install部分中动态创建该列表:

%install
echo '%dir /etc' >> list.txt
echo '%config(noreplace) /etc/foo' >> list.txt
# use for-loop or any other shell scripting technique

%files -f list.txt
Run Code Online (Sandbox Code Playgroud)