免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6781 | 回复: 6
打印 上一主题 下一主题

rpmbuild总不能正确找到/usr/src/redhat/SOURCE下面的.tar.gz文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-14 21:29 |只看该作者 |倒序浏览
第一个问题,我做了个测试,在/usr/src/redhat/SOURCE下面放置了hellow-0.1-1.tar.gz,在/usr/src/redhat/SPEC下面写了hellow-0.1-1.spec。

在运行rpmbuild -ba hellow-0.1-1.spec时出现下面错误:

cd /usr/src/redhat/BUILD
LANG=c
export LANG
unset DISPLAY
tar -zxvf /hellow-0.1-1.tar.gz
tar: /hellow-0.1-1.tar.gz: Cannot open: No such file or directory


我奇怪为什么他到根目录下面找hellow-0.1-1.tar.gz,而不是在/usr/src/redhat/SOURCE下面找?即使我export RPM_SOURCE_DIR=/usr/src/redhat/SOURCE,也无法rpmbuild成功,报告同样的错误。但是我把文件hellow-0.1-1.tar.gz拷贝到根目录下后就能运行成功。

第二个问题,能否在运行rpmbuild的时候,不要进行实际的安装?我发现在生成二进制rpm包的同时,也进行安装了。

第三个问题,rpmbuild -ba后,缺省是生成的*.i386.rpm,我看RPM目录下有i486, i586, i686,为什么不是生成i686的?我是用笔记本跑虚拟机做的测试。i386和i686有没有什么区别,能否混合安装使用?

论坛徽章:
0
2 [报告]
发表于 2008-12-15 10:12 |只看该作者
不会,给你顶一下。

论坛徽章:
0
3 [报告]
发表于 2008-12-15 11:00 |只看该作者
rpmbuild的用法很复杂,建议你多看看rpm相关的电子文档,下面是我以前写过的一个简单的rpm SPEC文件,供参考,功能只是把一个tar包变与一个rpm,打包过程中不做任何编译,安装时也只相当于用tar包解压。

Summary: EIAS_httpd_conf
Name: EIAS_conf
Version: 1.0
Release: 0
Copyright: distributable
Group: Databases
Source0: EIAS_conf.tar.gz
Url: http://www.test.com
BuildRoot: /var/tmp/EIAS_conf-buildroot/
#BuildRequires:
#Requires: MySQl

%description
Runmmit EIAS component

# Provide perl-specific find-{provides,requires}.
%define __find_provides /usr/lib/rpm/find-provides.perl
%define __find_requires /usr/lib/rpm/find-requires.perl

%prep
#%setup -q -n vpopmail-%{version}
#mkdir -p ../usr/src
#cp -dpR $RPM_BUILD_DIR/apache_%{apache_version} ../usr/src

%build

%clean
rm -rf $RPM_BUILD_ROOT

%install
rm -rf $RPM_BUILD_ROOT

# install binary
#tar c -C .. usr/src | tar x -C $RPM_BUILD_ROOT
mkdir $RPM_BUILD_ROOT
tar -C $RPM_BUILD_ROOT -zxf EIAS_conf.tar.gz


%files
%defattr(-,root,root)
/etc/httpd
/etc/admserv
/etc/rc.d/init.d/httpd
/etc/rc.d/init.d/admserv

#%dir /home/vpopmail

#%files source
#%defattr(-,root,root)
#/usr/src/apache_%{apache_version}
#%doc README.ADVX

论坛徽章:
0
4 [报告]
发表于 2008-12-15 13:00 |只看该作者

回复 #1 HenrySmith 的帖子

rpmbuild --rebuild 相对也不是很复杂,你的运行的屏幕输出有明确的错误提示吗

论坛徽章:
0
5 [报告]
发表于 2008-12-15 14:28 |只看该作者
我发现的错误是路径的错误,把tar ball拷贝到根目录执行没问题。

# echo $RPM_SOURCE_DIR

# echo $RPM_BUILD_DIR

等没有显示

论坛徽章:
0
6 [报告]
发表于 2008-12-15 15:52 |只看该作者

回复 #5 HenrySmith 的帖子

这些变量只是存在子shell中,没有export出来的

论坛徽章:
0
7 [报告]
发表于 2013-03-15 11:21 |只看该作者
[root@localhost SPECS]# rpmbuild -ba hello-0.1-1.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.33140
+ umask 022
+ cd /usr/src/redhat/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ tar zxvf /usr/src/redhat/SOURCES/hello-0.1-1.tar.gz
hello/
hello/makefile
hello/hello.c
hello/configure
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.33140
+ umask 022
+ cd /usr/src/redhat/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /usr/src/redhat/SOURCES/hello
+ ./configure
+ make
gcc -o hello hello.c
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.33140
+ umask 022
+ cd /usr/src/redhat/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /usr/src/redhat/SOURCES/hello
+ make install
cp ../hello /home/ -R
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/brp-python-bytecompile
+ /usr/lib/rpm/redhat/brp-java-repack-jars
Checking for unpackaged file(s): /usr/lib/rpm/check-files %{buildroot}
Wrote: /usr/src/redhat/SRPMS/hellow-0.1-1.src.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.64450
+ umask 022
+ cd /usr/src/redhat/BUILD
+ rm -fr /usr/src/redhat/SOURCES/hello
+ exit 0
[root@localhost SPECS]#

为什么我的只生成了源码的rpm包,没有生成二进制的RPM包,是哪里写错了吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP