instalação RPM + rpm (não crie diretório de acordo com o SPEC)

1

Preciso de conselhos sobre o seguinte

Eu construo um arquivo de especificação simples e construo o rpm

Eu transfiro o novo rpm para outra máquina Linux para instalar o novo rpm

de acordo com o arquivo de especificações, o novo rpm - > test.sh-6.2-2.i386.rpm deve criar o diretório / tmp / MY_RPM_TESTS, mas este rpm não cria os MY_RPM_TESTS e subdiretórios por favor, conselhos porque, o que eu preciso consertar no arquivo spec?

Instalação do RPM:

   [root@linux1 rpm -Uvh  /root/rpmbuild/RPMS/i386/test.sh-6.2-2.i386.rpm
   Preparing...                ########################################### [100%]
   This is preinstall script
   Linux linux 2.6.18-164.2.1.el5PAE #1 SMP Mon Sep 21 04:45:05 EDT 2009 i686 i686 i386 GNU/Linux
   1:test.sh                ########################################### [100%]
   Linux linux 2.6.18-164.2.1.el5PAE #1 SMP Mon Sep 21 04:45:05 EDT 2009 i686 i686 i386 GNU/Linux
   Now we wait for sleep
   100

   [root@linux1 ls /tmp

   preinstall_dir

meu arquivo SPEC:

  root@linux /usr/src/redhat/SPECS]# more my_spec.spec
  Summary: An example tool. To show a simple rpm build of the tool.
  Name: test.sh
  Version: 6.2
  Release: 2
  Source0: /root/test.sh 
  Source1: /root/urim.sh
  Group: Development/Debuggers
  BuildRoot:/tmp/MY_RPM_TESTS
  License: OtherLicense
  %description


  %pre -p /bin/ksh
  print "This is preinstall script"
  uname -a
  rm -rf /tmp/preinstall_dir
  mkdir /tmp/preinstall_dir

  %install
  rm -rf %{buildroot}

  mkdir -p %{buildroot}
  mkdir -p %{buildroot}/home
  mkdir -p %{buildroot}/home/home1

  cp %SOURCE0 %{buildroot}/home
  cp %SOURCE0 %{buildroot}/home/home1

  cp %SOURCE1  %{buildroot}/home

  %files
  /home/test.sh
  /home/home1/test.sh
  /home/urim.sh



  %post -p /bin/ksh

  uname -a
  print "Now we wait for sleep" ; sleep  1
  NUM=100
  print $NUM

Construa o rpm:

  [root@linux /usr/src/redhat/SPECS]# rpm -ba   /usr/src/redhat/SPECS/my_spec.spec
  Executing(%install): /bin/sh -e /root/rpmbuild/tmp/rpm-tmp.83360
  + umask 022
  + cd /root/rpmbuild/BUILD
  + rm -rf /tmp/MY_RPM_TESTS
  + mkdir -p /tmp/MY_RPM_TESTS
  + mkdir -p /tmp/MY_RPM_TESTS/home
  + mkdir -p /tmp/MY_RPM_TESTS/home/home1
  + cp /root/rpmbuild/SOURCES/test.sh /tmp/MY_RPM_TESTS/home
  + cp /root/rpmbuild/SOURCES/test.sh /tmp/MY_RPM_TESTS/home/home1
  + cp /root/rpmbuild/SOURCES/urim.sh /tmp/MY_RPM_TESTS/home
  + /usr/lib/rpm/brp-compress
  + /usr/lib/rpm/brp-strip
  + /usr/lib/rpm/brp-strip-static-archive
  + /usr/lib/rpm/brp-strip-comment-note
  Processing files: test.sh-6.2-2
  Requires(interp): /bin/ksh /bin/ksh
  Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib    (PayloadFilesHavePrefix) <= 4.0-1
  Requires(pre): /bin/ksh
  Requires(post): /bin/ksh
  Checking for unpackaged file(s): /usr/lib/rpm/check-files /tmp/MY_RPM_TESTS
  Wrote: /root/rpmbuild/SRPMS/test.sh-6.2-2.src.rpm
  Wrote: /root/rpmbuild/RPMS/i386/test.sh-6.2-2.i386.rpm
    
por yael 17.04.2011 / 15:29

2 respostas

1

[It] should create the /tmp/MY_RPM_TESTS directory...

Isso está errado. A raiz da compilação é usada somente ao construir, e depois apagada, e somente arquivos / diretórios / etc. listado na seção %files será criado.a

    
por 17.04.2011 / 16:08
1

As seções %install e %post do specfile são executadas em ambientes completamente diferentes. O script %install é executado apenas em sua máquina de construção como parte do processo de compilação do pacote. O script %post é executado na máquina que você está tentando instalar o RPM (a "máquina de destino").

Não é possível nem desejado que a máquina alvo saiba alguma coisa sobre o ambiente de compilação usado na sua máquina de compilação para criar o pacote. É por isso que você não vê /tmp/MY_RPM_TESTS sendo criado na máquina de destino; essa pasta foi criada na máquina de compilação durante o processo %install .

Dito isso, a partir da aparência desse specfile, você não precisa criar a pasta /tmp/MY_RPM_TESTS na máquina de destino. Quando você instala seu RPM, os arquivos devem existir em ...

/home/test.sh
/home/home1/test.sh
/home/urim.sh

... conforme definido pela sua seção% files. Se você precisar dos scripts para serem instalados em /tmp/MY_RPM_TESTS , seu arquivo de especificações deverá se parecer com isto:

%install
rm -rf %{buildroot}
mkdir -p %{buildroot}/tmp/MY_RPM_TESTS/home/home1
cp %SOURCE0 %{buildroot}/tmp/MY_RPM_TESTS/home
cp %SOURCE0 %{buildroot}/tmp/MY_RPM_TESTS/home/home1
cp %SOURCE1 %{buildroot}/tmp/MY_RPM_TESTS/home

%files
/tmp/MY_RPM_TESTS/home/test.sh
/tmp/MY_RPM_TESTS/home/home1/test.sh
/tmp/MY_RPM_TESTS/home/urim.sh

Ao comparar o acima com o seu arquivo de especificações original, você deve ser capaz de ver a diferença e, esperançosamente, entender melhor como o %{buildroot} deve ser usado.

    
por 03.06.2011 / 22:30

Tags