[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
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
[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
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.
Tags rpm