2012-02-14 14 views
7

Ho un problema RPM strano, sono nuovo ad esso, quindi portami con me ... Ho creato il file spec e quando correre a fare la build ottengo un errore:Stato di uscita errato da /var/tmp/rpm-tmp.ajKra4 (% prep)

/var/tmp/rpm-tmp.ajKra4: linea 36: cd: eroe-01: No such file or directory errore: stato di Bad uscita da/var/tmp /rpm-tmp.ajKra4 (% prep)

Quindi controllo il file temporaneo e sta provando a CD in una directory che non esiste. Dovrebbe essere creato nel file spec? se è così dove?

Ecco il mio file spec:

Summary: Install Hero 
    Name: hero 
    Version: 01 
    Release: 1 
    Group: Billing reporting 
    Source: %{name}-%{version}.tar.gz 
    License: SLA 

    %description 
    Hero billing reports system 

    %prep 
    rm -rf %{_topdir}/BUILD/* 

    %setup 

    %install 
    mkdir -p /opt/%{name} 
    cp -r * /opt/%{name} 

    %post 
    find /opt/%{name} -type d -exec chmod 755 {} \; 
    find /opt/%{name} -type f -exec chmod 644 {} \; 
    chmod -R 755 /opt/%{name}/bin 



    %files 
    /opt/%{name} 
    %defattr(-,root,root,0755) 

    %clean 
    rm -rf $RPM_BUILD_ROOT 

    %postun 
    rm -rf /opt/%{name} 

Forse mi manca qualcosa? Non sarebbe la prima lol, grazie

Qui è anche ciò che quel file tmp è l'output:

#!/bin/sh 

     RPM_SOURCE_DIR="/root/rpmbuild/SOURCES" 
     RPM_BUILD_DIR="/root/rpmbuild/BUILD" 
     RPM_OPT_FLAGS="-O2 -g" 
     RPM_ARCH="x86_64" 
     RPM_OS="linux" 
     export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS 
     RPM_DOC_DIR="/usr/share/doc" 
     export RPM_DOC_DIR 
     RPM_PACKAGE_NAME="hero" 
     RPM_PACKAGE_VERSION="01" 
     RPM_PACKAGE_RELEASE="1" 
     export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE 
     LANG=C 
     export LANG 
     unset CDPATH DISPLAY ||: 
     RPM_BUILD_ROOT="/root/rpmbuild/BUILDROOT/hero-01-1.x86_64" 
     export RPM_BUILD_ROOT 

     PKG_CONFIG_PATH="/usr/lib64/pkgconfig:/usr/share/pkgconfig" 
     export PKG_CONFIG_PATH 

     set -x 
     umask 022 
     cd "/root/rpmbuild/BUILD" 
    rm -rf /root/rpmbuild/BUILD/* 

    cd '/root/rpmbuild/BUILD' 
    rm -rf 'hero-01' 
    /usr/bin/gzip -dc '/root/rpmbuild/SOURCES/hero-01.tar.gz' | /bin/tar -xvvf - 
    STATUS=$? 
    if [ $STATUS -ne 0 ]; then 
     exit $STATUS 
    fi 
    cd 'hero-01' 
    /bin/chmod -Rf a+rX,u+w,g-w,o-w . 

    exit 0 

risposta

6

Partenza http://www.rpm.org/max-rpm/s1-rpm-inside-macros.html, in particolare il "-n - Set Nome di costruzione Directory" sezione.

La macro di configurazione% si aspetta che dopo aver tolto il tar.gz, ci sia una directory hero-01 disponibile, ma il tuo hero-01.tar.gz probabilmente creerà un altro nome di directory, probabilmente uno senza la versione inclusa nel nome.

Quindi, ad esempio, se c'è una directory 'eroe' invece di una directory 'hero-01' in/root/rpmbuild/BUILD dopo l'untarring, quindi aggiornare il file spec per usare '% setup -n hero' invece di solo '% setup'.

+1

Impressionante, grazie pwan .. questo l'ha corretto aggiungendo un prefisso (directory per i file). Lo apprezzo molto – DoCnTex

+0

scusa non riesco a capire appieno cosa posso fare per risolverlo? – Markipe

+0

Prendi il tuo file hero-01.tar.gz e decomprimilo in una directory temporanea con un comando come "tar -zxvf hero-01.tar.gz". Creerà una nuova directory che include tutti i file. Utilizzare tale nome di directory come argomento del flag "-n" per la macro di configurazione%. – pwan

1

Nella cartella rpmbuild, vai a SOURCES e rinominare la cartella di origine in questo modo:

mypackage-1.0 

quindi creare il tarball:

mypackage-1.0.tar.gz 

e dovrebbe funzionare.

Quello che succede è che dopo aver rimosso l'archivio, rpmbuild si aspetta una cartella denominata mypackage-1.0 e non mypackage o mypackage-qualcos'altro.

Rispettare le convenzioni di denominazione. Verifica linee guida