2012-02-14 32 views
7

Tôi đang gặp vấn đề về RPM lạ, tôi mới sử dụng tính năng này với tôi ... Tôi có tệp spec được tạo và khi tôi chạy để xây dựng tôi gặp lỗi:Trạng thái thoát xấu từ /var/tmp/rpm-tmp.ajKra4 (% prep)

/var/tmp/rpm-tmp.ajKra4: dòng 36: cd: hero-01: Không có tệp hoặc thư mục nào như vậy lỗi: Trạng thái thoát khỏi/var/tmp /rpm-tmp.ajKra4 (% prep)

Sau đó, tôi kiểm tra tệp tạm thời đó và nó đang cố gắng CD vào một thư mục không tồn tại .. Có nên tạo tệp này trong tệp spec không? nếu vậy ở đâu?

Dưới đây là file spec của tôi:

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} 

Có lẽ tôi thiếu cái gì? Sẽ không phải là lần đầu tiên lol, nhờ

Đây cũng là những gì mà tập tin tmp được xuất ra là:

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

Trả lời

6

Check-out http://www.rpm.org/max-rpm/s1-rpm-inside-macros.html, đặc biệt là "-n - Set Tên của Build Directory" phần. Các thiết lập% macro dự kiến ​​rằng sau khi untaring tar.gz, sẽ có một thư mục hero-01 có sẵn, nhưng hero-01.tar.gz của bạn có thể tạo ra một số tên thư mục khác, có lẽ một mà không có phiên bản bao gồm trong tên. Ví dụ, nếu có thư mục 'hero' thay vì thư mục 'hero-01' trong/root/rpmbuild/BUILD sau khi untarring, sau đó cập nhật tập tin spec để sử dụng '% setup -n hero' thay vì chỉ '% thiết lập'.

+1

Tuyệt vời, cảm ơn bạn pwan .. điều này đã sửa lỗi bằng cách thêm tiền tố (thư mục cho tệp). Rất cảm kích nó – DoCnTex

+0

xin lỗi tôi không thể hoàn toàn hiểu những gì tôi có thể làm để sửa chữa nó? – Markipe

+0

Lấy tập tin hero-01.tar.gz của bạn và giải nén nó trong một thư mục tạm thời với lệnh như 'tar -zxvf hero-01.tar.gz'. Nó sẽ tạo một thư mục mới bao gồm tất cả các tệp. Sử dụng tên thư mục đó làm đối số cho cờ '-n' cho macro% setup. – pwan

1

Trong thư mục rpmbuild của bạn, hãy để SOURCES và đổi tên thư mục nguồn của bạn theo cách này:

mypackage-1.0 

sau đó tạo tarball:

mypackage-1.0.tar.gz 

Và nó cũng làm việc.

Điều gì xảy ra là sau khi gỡ bỏ lưu trữ, rpmbuild mong đợi một thư mục có tên mypackage-1.0 chứ không phải mypackage hoặc mypackage-something khác.

Tôn trọng quy ước đặt tên. Kiểm tra Nguyên tắc

Các vấn đề liên quan