2013-01-22 6 views
1

CentOS 4.1 시스템에서 작업 중이며 필요한 위치의 일부 바이너리를 붙여 넣는 rpm을 만들기 위해 rpm-build를 사용하고 있습니다. 내을 .spec은 예상대로내 src.rpm에 소스 파일이 포함되어 있지 않습니다.

Summary: FOO1 Data 
Name: foo 
Version: 1.0 
Release: 1 
License: GNU 
Group: FOO1 
URL: www.foo1data.com 
Source0: foo.src 
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot 

%description 

%define installdir $RPM_BUILD_ROOT/foo1/foo1-dummy 

%prep 
cd /usr/src/redhat/BUILD 
rm -rf foo.src 
cp -rp /usr/src/redhat/SOURCES/foo.src /usr/src/redhat/BUILD 
if [ $? -ne 0 ]; then 
    exit $? 
fi 
cd foo.src 
cd /usr/src/redhat/BUILD/foo.src 
chown -R root.root . 
chmod -R a+rX,g-w,o-w . 

%build 

cd foo.src/main/ 
./build_all 
cd - 

%install 
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT 

mkdir -p %{installdir}/agg 
install foo.src/main/agg/server/aggd %{installdir}/agg/aggd 
install foo.src/main/tools/conmsgtest %{installdir}/agg/conmsgtest 
mkdir -p $RPM_BUILD_ROOT/usr/local/bin 
ln -f -s /foo1/foo1-dummy/agg/conmsgtest $RPM_BUILD_ROOT/usr/local/bin/conmsgtest 

%clean 
rm -rf $RPM_BUILD_ROOT 

%files 
%defattr(-,root,root) 
/foo1/foo1-dummy/agg/aggd 
/foo1/foo1-dummy/agg/conmsgtest 
/usr/local/bin/conmsgtest 

내 foo는-1.0-1.x86_64.rpm 파일을 수행한다. 하지만, 내 foo는-1.0-1.src.rpm 파일, 내가 명령을 실행

RPM -ivh foo는-1.0-1.src.rpm

foo.src 디렉토리 가져가/usr/src/redhat/SOURCES 디렉토리에 추가 된 파일은 비어 있습니다. 그럼에도 불구하고 올바른 스펙 파일이 SPECS 디렉토리에 추가됩니다.

저는 rpmbuild라는 멍청한 사람입니다. 아무도 내 src rpm에 소스가 포함되도록하기 위해 필요한 것을 말해 줄 수 있습니까? 또한

명령

rpm으로 --rebuild foo는-1.0-1.src.rpm

반환 "--rebuild : 알 수없는 옵션"는 해당 옵션이 나는 할 수있다 CentOS에서 사용 하시겠습니까? 편집

: 사티에 덕분에, 내가 명령

rpmbuild --rebuild foo는-1.0-1.src.rpm 내가 오류를 얻을

을 시도

/var/tmp/rpm-tmp.19105: line 27: cd: foo.src/main/: No such file or directory 
error: Bad exit status from /var/tmp/rpm-tmp.19105 (%build) 
+0

http://www.centos.org/docs/5/html/Deployment_Guide-en에서보세요. -US/s1-rpm-using.html – Satya

+0

@Satya 링크를 제공해 주셔서 감사합니다. 그러나 제공된 링크에서 사양 파일에 이상이있는 것을 찾을 수 없습니다. 또한 --rebuild 옵션은 http://wiki.centos.org/HowTos/RebuildSRPM에 따라 유효하다고 생각되지만 설명서에는 표시되지 않습니다. – SidR

+1

는 rpmbuild 대신 rpmbuild --rebuild 명령이 아닙니다. --rebuild? – Satya

답변

1

나는 문제를 해결할 수 있었다. 일종의. 소스 타르볼이고 디렉토리가 아닙니다 (질문에 게시 된 스펙 파일에서 수행 한 것처럼).

따라서 foo.src 디렉토리를 foo.tar.gz로 압축하고 % prep 단계에서/usr/src/redhat/BUILD 디렉토리를 손상시키지 않아도됩니다. 이제 SRPMS 디렉토리에있는 .src.rpm 파일은 실행될 때 예상대로 SOURCES 디렉토리의 foo.tar.gz 파일을 붙여 넣습니다. (여전히 디렉토리가 허용되지 않는 이유는 여기에 설명되어 있지 않지만 ...)

+1

그건 그냥 ... src' RPM에'spec '파일, 하나 이상의 아카이브 및 0 개 이상의 패치가 있습니다. –

관련 문제