RPM规范在帖子中使用前缀

时间:2019-11-07 14:59:30

标签: rpm

我有一些文件(RPM),我想打包成一个RPM,并使其在其他地方作为存储库可用。

此RPM的要求是使其可重新定位。 rpm -Uvh --prefix ...

重新安置本身没有问题,并且按预期进行。 在我要预配置结果存储库的规范文件的%post(重要的部分,用#标记)中,当我像这样调用它时,prefix参数不会改变: rpm -Uvh --prefix /some/other/path some_rpm_name-some_rpm_version

我尝试了很多事情,但是不会改变:

Prefix: /mnt/extern
%global SOME_VAR %{prefix}
Prefix: /mnt/extern
%global REPO_NAME somerepo

Name:           some_rpm_name
Version:        some_rpm_version
Release:        1%{?dist}

Source:         yum.tar.gz

%prep
%setup -n yum

%install
mkdir -p %{buildroot}%{prefix}
cp -r %{_builddir}/yum %{buildroot}%{prefix}

%files
%{prefix}/yum

%post
echo '[%{REPO_NAME}]' | sudo tee /etc/yum.repos.d/%{CABIS_REPO_FILE}.repo 
echo 'name = %{REPO_NAME}' | sudo tee -a  /etc/yum.repos.d/%{CABIS_REPO_FILE}.repo 
########################
echo 'baseurl = file://%{prefix}/yum/' | sudo tee -a  /etc/yum.repos.d/%{CABIS_REPO_FILE}.repo 
########################
echo 'gpgcheck = 0' | sudo tee -a  /etc/yum.repos.d/%{CABIS_REPO_FILE}.repo 
echo 'enabled = 1' | sudo tee -a  /etc/yum.repos.d/%{CABIS_REPO_FILE}.repo 

预期结果:

[somerepo]
name = somerepo
baseurl = file:///some/other/path/yum/
gpgcheck = 0
enabled = 1

实际结果:

[somerepo]
name = somerepo
baseurl = file:///mnt/extern/yum/
gpgcheck = 0
enabled = 1

但是文件将被重定位到/some/other/path

有人知道如何解决此问题吗?

2 个答案:

答案 0 :(得分:0)

根据文档:   http://ftp.rpm.org/api/4.4.2.2/relocatable.html

调用rpm的格式为:

rpm -Uvh --prefix /mnt/extern=/some/other/path some_rpm_name-some_rpm_version.

答案 1 :(得分:0)

我认为您要使用的变量是$RPM_INSTALL_PREFIX0$RPM_INSTALL_PREFIX1等。请参见this example

老实说,我从来都不喜欢可重定位的RPM,因为您仍然限于每个RPM DB安装一个,而且它们令人讨厌。