我有一些文件(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
。
有人知道如何解决此问题吗?
答案 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安装一个,而且它们令人讨厌。