检查目标机器上是否存在rpm的安装文件夹,然后创建另一个文件夹

时间:2015-02-12 08:38:25

标签: rpm rpmbuild rpm-spec

我有一个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之前创建目录?

1 个答案:

答案 0 :(得分:3)

RPM不支持这种安装。如果你想要多个版本,你需要将它们安装到预定义的目录中,然后使用某种符号链接或指向你想要的那个 - 请参阅Packaging:Alternatives