【问题标题】:Linux RPM subpackages installing different file content to same file locationLinux RPM 子包将不同的文件内容安装到相同的文件位置
【发布时间】:2020-12-01 19:15:18
【问题描述】:

我有一个构建 RPM 以部署 apache 配置设置的存储库。到目前为止,我为两台不同的服务器提供了两个不同的存储库。现在,我在构建中添加了另外三种服务器类型,并且不想继续为简单的配置更改创建存储库。配置设置相似,但略有不同。有些使用相同的文件,有些使用不同的文件,有些具有相同的文件但内容不同(如代理配置/证书定义/等)。

我开始研究使用 RPM 子包功能。但是,我遇到了名称相同但内容略有不同的文件的问题。这是我的规范文件的示例:

Summary: Installs http conf files.
Name: web-conf
Version: 1.0
Release: 1
SOURCE0 : %{name}-%{version}-%{release}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildArch: noarch

%description

%Summary

%package srv2
Summary: Installs srv2 http conf files.
SOURCE1 : %{name}-srv2-%{version}-%{release}.tar.gz
%description srv2

%Summary

%prep

%setup -q -c -n "srv1"
%setup -c -T -b 1 -n "srv2"

%build
# Empty section.

%install
rm -rf %{buildroot}

mkdir -p %{buildroot}

# in builddir

/bin/cp -Ra * %{buildroot}

%clean

/bin/rm -rf %{buildroot}

%files

%config %attr(0440,apache,apache) /etc/httpd/conf.d/rewrite.conf
%config %attr(0440,apache,apache) /etc/httpd/conf.d/ssl.conf
%config %attr(0440,apache,apache) /etc/httpd/conf/httpd.conf

%files srv2

%config %attr(0440,apache,apache) /etc/httpd/conf.d/apiproxy.conf
%config %attr(0440,apache,apache) /etc/httpd/conf.d/proxy.conf
%config %attr(0440,apache,apache) /etc/httpd/conf.d/rewrite.conf
%config %attr(0440,apache,apache) /etc/httpd/conf.d/ssl.conf
%config %attr(0440,apache,apache) /etc/httpd/conf/httpd.conf

这确实构建了两个 RPM:web-conf-1.0-1.noarch.rpm 和 web-conf-srv2-1.0-1.noarch.rpm。但是,问题在于相同位置的文件是相同的文件(当它们应该不同时)。 prep 部分显示了两个不同的源被解压缩到 srv1 和 srv2 目录中。但是,当 install 部分从 rpmbuild 进程输出时,它只显示在处理两个不同的 %files 部分之前执行 cd 进入 srv2 目录。

有没有办法在处理%files 部分之前强制%install 部分使用不同的目录?我究竟做错了什么?分包不是这里的路吗?

【问题讨论】:

  • 一般来说,RPM 并不打算用作机器特定配置的包装。使用 Ansible 管理配置。

标签: linux apache rpm


【解决方案1】:

没有。这是不可能的。 %files 部分中的所有文件都取自同一个 buildroot。因此具有相同路径的两个文件必须具有相同的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2014-01-19
    • 1970-01-01
    相关资源
    最近更新 更多