2012-02-14 11 views
7

Tengo un problema de RPM extraño, soy nuevo, así que tenga paciencia ... Tengo el archivo de especificación creado y cuando ejecutar para hacer la construcción me sale un error:Estado de salida incorrecta de /var/tmp/rpm-tmp.ajKra4 (% preparación)

/var/tmp/rpm-tmp.ajKra4: línea 36: cd: hero-01: No existe tal archivo o directorio error: estado de salida incorrecta de/var/tmp /rpm-tmp.ajKra4 (% prep)

Luego verifico ese archivo temporal y está tratando de crear un CD en un directorio que no existe ... ¿Debería crear esto en el archivo de especificación? ¿si es así, donde?

Aquí está mi archivo de especificaciones:

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} 

Tal vez me estoy perdiendo algo? No sería la primera lol, gracias

Aquí es también lo que ese archivo tmp está emitiendo:

#!/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 

Respuesta

6

Salida http://www.rpm.org/max-rpm/s1-rpm-inside-macros.html, en concreto el "-n - Establecer nombre del directorio de construcción" sección.

El% setup macro espera que después de quitar el tar.gz, haya un directorio hero-01 disponible, pero su hero-01.tar.gz probablemente cree otro nombre de directorio, probablemente uno sin la versión incluida en el nombre.

Por lo tanto, si hay un directorio 'héroe' en lugar de un directorio 'hero-01' en/root/rpmbuild/BUILD después del desencriptado, actualice el archivo espec para usar '% setup -n hero' en lugar de solo '% setup'.

+1

Impresionante, gracias pwan ... esto lo solucionó agregando un prefijo (directorio para los archivos). Lo agradezco muchísimo – DoCnTex

+0

lo siento, no puedo entender totalmente qué puedo hacer para solucionarlo? – Markipe

+0

Tome su archivo hero-01.tar.gz y descomprímalo en algún directorio temporal con un comando como 'tar -zxvf hero-01.tar.gz'. Hará un nuevo directorio que incluye todos los archivos. Utilice ese nombre de directorio como argumento para el indicador '-n' para la macro% setup. – pwan

1

En su carpeta rpmbuild, vaya a SOURCES y cambiar el nombre de la carpeta de origen de esta manera:

mypackage-1.0 

continuación, crear el archivo tar:

mypackage-1.0.tar.gz 

y debería funcionar.

Lo que sucede es que después de quitar el marcador del archivo, rpmbuild espera una carpeta llamada mypackage-1.0 y no mypackage o mypackage-algo más.

Respetar las convenciones de nomenclatura. Consulte las Pautas

Cuestiones relacionadas