2012-02-14 2 views
7

이상한 RPM 문제가 있습니다. 새 것으로 생각됩니다. 빌드를 실행하려면 오류가 발생합니다./var/tmp/rpm-tmp.ajKra4에서 종료 상태가 잘못되었습니다. (% prep)

/var/tmp/rpm-tmp.ajKra4 : 36 행 : cd : hero-01 : 해당 파일이나 디렉토리가 없습니다. 오류 :/var/tmp의 종료 상태가 잘못되었습니다. /rpm-tmp.ajKra4 (% prep)

그런 다음 임시 파일을 확인하고 CD가 존재하지 않는 디렉토리로 이동하려고합니다. 사양 파일에이 파일을 만들어야합니까? 그렇다면 어디에서?

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} 

아마도 내가 놓친 거지 뭔가 : 여기

내 사양 파일입니다? 덕분에 여기

, 최초의 롤하지 않을까요 또한 그 tmp 파일이 출력되는 것입니다 :

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

답변

6

체크 아웃 http://www.rpm.org/max-rpm/s1-rpm-inside-macros.html, 특히 "-n - 설정 이름 빌드 디렉토리의"섹션.

% setup 매크로는 tar.gz를 압축 해제 한 후에 hero-01 디렉토리를 사용할 수 있지만 hero-01.tar.gz는 아마 다른 디렉토리 이름을 생성 할 것입니다. 이름으로.

예를 들어 untarring 후/root/rpmbuild/BUILD에 'hero-01'디렉토리 대신 'hero'디렉토리가있는 경우 '% setup -n hero'을 사용하도록 spec 파일을 업데이트하십시오. '% setup'대신에. 당신의 rpmbuild 폴더에서

+1

굉장하고, 고마워요.이게 바로 접두사 (파일 디렉토리)를 추가하여 고쳐졌습니다. 대단히 고마워요 – DoCnTex

+0

죄송합니다. 어떻게 해결할 수 있습니까? – Markipe

+0

hero-01.tar.gz 파일을 가져 와서 'tar -zxvf hero-01.tar.gz'와 같은 명령으로 일부 임시 디렉토리에서 압축을 푸십시오. 그것은 모든 파일을 포함하는 새로운 디렉토리를 만들 것입니다. % setup 매크로의 '-n'플래그에 대한 인수로 해당 디렉토리 이름을 사용하십시오. – pwan

1

SOURCES로 이동 소스 폴더 이런 식으로 이름을 바꿉니다

mypackage-1.0 

는 다음 타르볼을 만듭니다

mypackage-1.0.tar.gz 

그리고 그것은 작동합니다.

아카이브를 압축 해제 한 후 rpmbuild는 mypackage-1.0 또는 mypackage가 아닌 다른 폴더가 필요합니다.

이름 지정 규칙 준수. 가이드 라인을 확인하십시오