我有一个rpm spec文件,它生成一个名为cdplayer-1.10.x86_64.rpm的rpm。目标机器上的rpm(rpm -ivh cdplayer-1.10.x86_64.rpm --nodeps)创建一个目录“/ opt / cd-player /”并将所有文件放入其中。我需要的是当用户在目标m / c上运行rpm命令然后它应检查目录是否存在,如果是,则创建不同的目录“/ opt / cd-player_2 /”并在那里安装文件,否则安装为“/ opt / cd-播放器/”。如果我们再运行一次,那么它应该创建“/ opt / cd-player_3 /".
规格文件:
BuildArch: x86_64
Prefix: /opt
code_root=/home/user/
%install
rm -rf $RPM_BUILD_ROOT
vds_root=$RPM_BUILD_ROOT/opt/cd-player
cp $code_root/abc $vds_root/abc
%files
%defattr(-,root,root)
/opt/cd-player
%pre
count=`rpm -qa | grep cd-player | wc -l`
name=`rpm -qa | grep cd-player`
if [ $count -gt 0 ]; then
echo
echo "Error: $name is already installed!!!"
echo
exit 1
fi
如何在安装和提取rpm之前创建目录?
答案 0 :(得分:3)
RPM不支持这种安装。如果你想要多个版本,你需要将它们安装到预定义的目录中,然后使用某种符号链接或指向你想要的那个 - 请参阅Packaging:Alternatives。