我的src.rpm不包含源文件

时间:2013-01-22 06:48:46

标签: rpm rpmbuild rpm-spec

我正在使用CentOS 4.1机器,我正在使用rpm-build来创建一个rpm,在所需位置粘贴一些二进制文件。 我的.spec是:

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

在/ usr / src / redhat / SOURCES目录中添加的foo.src目录为空。然而,正确的spec文件确实会添加到SPECS目录中。

我是一个完全noob w.r.t rpmbuild,所以有人可以告诉我我需要做什么,以便我的src rpm包含来源?

另外,命令

  

rpm --rebuild foo-1.0-1.src.rpm

返回“--rebuild:unknown option”,我可以在CentOS中使用等效选项吗?

编辑: 感谢Satya,我尝试了命令

  

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)

1 个答案:

答案 0 :(得分:1)

我设法解决了这个问题。似乎源 tarball ,而不是目录(就像我在问题中发布的spec文件中所做的那样)。

因此,在%prep阶段将foo.src目录压缩到foo.tar.gz,并将其压缩到/ usr / src / redhat / BUILD目录似乎对我有用。现在,在SRPMS目录中找到的.src.rpm文件在运行时按预期将foo.tar.gz文件粘贴到SOURCES目录中。 (虽然,这仍然无法解释为什么不接受目录....)