Manish
Manish

Reputation: 2327

Check if installation folder of rpm exists on target machine then create another folder

I have a rpm spec file which produces a rpm named cdplayer-1.10.x86_64.rpm. The rpm on target machines (rpm -ivh cdplayer-1.10.x86_64.rpm --nodeps)creates a directory "/opt/cd-player/" and put all files in it. What I need is when user runs rpm command on target m/c then it should check if directory exists and if yes then create different directory "/opt/cd-player_2/" and install files there otherwise install as "/opt/cd-player/". If we run one more then it should create "/opt/cd-player_3/".

Spec file:

  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

How can i create a directory before installing and extract rpm there ?

Upvotes: 0

Views: 2216

Answers (1)

Aaron D. Marasco
Aaron D. Marasco

Reputation: 6748

RPM does not support this kind of install. If you want multiple versions, you need to have them install into predefined directories and then have some kind of symlink or something to point to the one you want - see Packaging:Alternatives.

Upvotes: 3

Related Questions