当前时区 GMT+8, 现在时间是 2008-7-5 11:34 游客: 注册 登录 仅登录论坛 | 搜索 帮助


标题: 制作rpm包,报错getOutputFrom()断开的管道
xiaopei
新手上路
Rank: 1


UID 205499
精华 0
积分 60
帖子 24
阅读权限 10
注册 2005-11-17
状态 离线
发表于 2006-1-6 15:41  资料  主页 短消息  加为好友  添加 xiaopei 为MSN好友 通过MSN和 xiaopei 交谈 QQ
制作rpm包,报错getOutputFrom()断开的管道

我的spec文件

Summary: ca
Name: ca4.2
Version: 4.2
Release: 2
Vendor: pzy
Copyright: commercial
Group: Applications/Engineering
Source: jakarta-tomcat-4.1.29.tar.gz
%description
caversion4.2
%prep:
#prep start
%build
#build start.
%install
#install start.
%files
%defattr (-,root,root)

/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/conf
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/common
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/work
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/temp
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/shared
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/logs
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/README.txt
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/RELEASE-NOTES-4.1.txt
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/RELEASE-PLAN-4.1.txt
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/LICENSE
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/RUNNING.txt
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/webapps/manager.xml
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/webapps/admin.xml
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/webapps/ROOT/WEB-INF
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/webapps/ROOT/index.jsp
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/webapps/ROOT/jakarta-banner.gif


#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/webapps/ROOT/tomcat.gif
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/webapps/ROOT/tomcat-power.gif
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/webapps/ROOT/
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/webapps/ROOT
#/usr/src/redhat/BUILD/jakarta-tomcat-4.1.29/webapps
#%doc jakarta-tomcat-4.1.29/README.txt
#%doc /usr/src/redhat/SOURCES/asdf.xml
#/usr
%changelog
* Fri May 1 2005 peizhiyou
-ASDF





[root@localhost redhat]# rpmbuild -bb SPECS/ca4.2.spec

执行的信息如下:


Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.32880
+ umask 022
+ cd /usr/src/redhat/BUILD
+ LANG=C
+ export LANG
+ :
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.32880
+ umask 022
+ cd /usr/src/redhat/BUILD
+ LANG=C
+ export LANG
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.32880
+ umask 022
+ cd /usr/src/redhat/BUILD
+ LANG=C
+ export LANG
+ /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
Processing files: ca4.2-4.2-2
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Checking for unpackaged file(s): /usr/lib/rpm/check-files %{buildroot}
getOutputFrom(): 断开的管道


上面的命令有时候成功,但多数情况失败,成功机率极小
我在网上搜了一些信息,有的说是rpm工具包的bug,有的说在spec文件头增加一个什么buildroot之类的变量,有的说redhat8下面可以,redhat9下的不行,总之是没个结果,各位linux 高手集中解决一下这个问题吧,几年前就有人遇到这个文体,老问题了,看来都有几年的历史了,该给个准确答复了.
我等等等等信





我的世界我做主 http://www.zhuyeweb.com
顶部
xLoneStar
版主
Rank: 7Rank: 7Rank: 7


UID 61030
精华 4
积分 3326
帖子 1320
阅读权限 255
注册 2003-9-12
来自 电脑前面
状态 离线
发表于 2006-1-8 01:57  资料  主页 短消息  加为好友  添加 xLoneStar 为MSN好友 通过MSN和 xLoneStar 交谈 QQ ICQ 状态 Yahoo!
你包了一个空的包?

我从来没有遇到过这种情形。是不是因为 Copyright 那行写得不好阿  

顶部
yangh
版主
Rank: 7Rank: 7Rank: 7


UID 40061
精华 3
积分 3192
帖子 1625
阅读权限 255
注册 2003-5-26
来自 China
状态 离线
发表于 2006-1-9 11:29  资料  主页 短消息  加为好友 
BuildRoot:      %{_builddir}/%{name}-%{version}-root

add this line. gold bless you.





顶部
再见情人
版主
Rank: 7Rank: 7Rank: 7


UID 93112
精华 5
积分 3372
帖子 1726
阅读权限 255
注册 2004-2-5
来自 China Guangzhou
状态 离线
发表于 2006-1-9 12:05  资料  短消息  加为好友 
,按yangh兄的试一试看吧,如果解决不了,换台机器试试,
一般我碰到重新一次就好了,有人说是硬件的问题





easy come, easy go 天道本无常, 人生如大梦!
顶部
xiaopei
新手上路
Rank: 1


UID 205499
精华 0
积分 60
帖子 24
阅读权限 10
注册 2005-11-17
状态 离线
发表于 2006-1-10 18:18  资料  主页 短消息  加为好友  添加 xiaopei 为MSN好友 通过MSN和 xiaopei 交谈 QQ
成功了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    谢谢谢

苦寻良策日日悠,
听君一语解千愁,
新年把盏同乐乐,
祝君开源立潮头.

谢过楼上众兄指点


修改后的spec文件
其中/usr/src/redhat/BUILD路径下有
jakarta-tomcat-4.1.29
j2sdk1.4.2_02
两个文件夹




#BuildRoot:%{_builddir}/%{name}-%{version}-root
BuildRoot:%{_builddir}
Summary: ca
Name: ca4.2
Version: 4.2
Release: 2
Vendor: wxh sjp gwj cgh wxy dff pzy
Copyright: commercial
Group: Applications/Engineering
Source: jakarta-tomcat-4.1.29.tar.gz
%description
caversion4.2
%prep:
%build
%install
%files
%defattr (-,root,root)
                                                                                                                                               
/jakarta-tomcat-4.1.29
/j2sdk1.4.2_02
                                                                                                                                               
                                                                                                                                               
%changelog
* Fri May 1 2005 peizhiyou
-ASDF



执行结果将上述两个文件夹下的文件都打到了ca4.2-4.2-2.i386.rpm包里了,而且多次执行军成功





我的世界我做主 http://www.zhuyeweb.com
顶部
xiaopei
新手上路
Rank: 1


UID 205499
精华 0
积分 60
帖子 24
阅读权限 10
注册 2005-11-17
状态 离线
发表于 2006-1-10 18:25  资料  主页 短消息  加为好友  添加 xiaopei 为MSN好友 通过MSN和 xiaopei 交谈 QQ
再问,
rpm打包后能否在安装时将rpm文件里的文件分别释放安装到指定的不同的路径下面去

比如
我要执行ca4.2-4.2-2.i386.rpm包的安装

rpm -ivh ca4.2-4.2-2.i386.rpm

默认情况它好像是将jakarta-tomcat-4.1.29和j2sdk1.4.2_02文件均释放安装到/usr/src/redhat/BUILD目录下

现在我要他们分别安装到不同的目录下该怎样实现呢,
望指点



ca4.2-4.2-2.i386.rpm





我的世界我做主 http://www.zhuyeweb.com
顶部
xLoneStar
版主
Rank: 7Rank: 7Rank: 7


UID 61030
精华 4
积分 3326
帖子 1320
阅读权限 255
注册 2003-9-12
来自 电脑前面
状态 离线
发表于 2006-1-10 19:27  资料  主页 短消息  加为好友  添加 xLoneStar 为MSN好友 通过MSN和 xLoneStar 交谈 QQ ICQ 状态 Yahoo!
打包前就先放到不同目录下,再包起来。解开后自然就在不同地方了

顶部
yangh
版主
Rank: 7Rank: 7Rank: 7


UID 40061
精华 3
积分 3192
帖子 1625
阅读权限 255
注册 2003-5-26
来自 China
状态 离线
发表于 2006-1-11 09:24  资料  主页 短消息  加为好友 
楼主,你的 spec 问题太多了。

给你一个参照的:
http://svn.gnome-cn.org/repos/gnomerpms/branches/gnome-2-12/specs/gnome-common/gnome-common.spec

The newest RPM guide writed by Eric Foster-Johnson 2005.
http://fedora.redhat.com/docs/drafts/rpm-guide-en/

一个程序怎么可能备安装到 /usr/src/redhat/BUILD 下呢?

jakarta-tomcat-4.1.29 和 j2sdk1.4.2_02 你应该分别做成 2 个包阿。





顶部
xiaopei
新手上路
Rank: 1


UID 205499
精华 0
积分 60
帖子 24
阅读权限 10
注册 2005-11-17
状态 离线
发表于 2006-1-11 11:06  资料  主页 短消息  加为好友  添加 xiaopei 为MSN好友 通过MSN和 xiaopei 交谈 QQ
[quote:bc50522813="xLoneStar"]打包前就先放到不同目录下,再包起来。解开后自然就在不同地方了[/quote]


"打包前就先放到不同目录下,再包起来 "
请问将文件放到不同目录下后,如何再包起来,在哪里做这个操作,spec文件里吗,该怎么写呢?





我的世界我做主 http://www.zhuyeweb.com
顶部
xiaopei
新手上路
Rank: 1


UID 205499
精华 0
积分 60
帖子 24
阅读权限 10
注册 2005-11-17
状态 离线
发表于 2006-1-11 11:34  资料  主页 短消息  加为好友  添加 xiaopei 为MSN好友 通过MSN和 xiaopei 交谈 QQ
[quote:a6bc99ae4e="yangh"]楼主,你的 spec 问题太多了。

给你一个参照的:
http://svn.gnome-cn.org/repos/gnomerpms/branches/gnome-2-12/specs/gnome-common/gnome-common.spec

The newest RPM guide writed by Eric Foster-Johnson 2005.
http://fedora.redhat.com/docs/drafts/rpm-guide-en/

一个程序怎么可能备安装到 /usr/src/redhat/BUILD 下呢?

jakarta-tomcat-4.1.29 和 j2sdk1.4.2_02 你应该分别做成 2 个包阿。[/quote]

问题的确很多,这是我要做的第一个rpm包,很多东西还很不理解,还请高人多指点
执行rpm后会安装到 /usr/src/redhat/BUILD 是我写错了,那它被安装到哪里去了呢
它只是说包已经安装了,安到哪里了?

[root@localhost i386]# rpm -ivh ca4.2-4.2-2.i386.rpm
Preparing...                ########################################### [100%]
        package ca4.2-4.2-2 is already installed





我的世界我做主 http://www.zhuyeweb.com
顶部
xiaopei
新手上路
Rank: 1


UID 205499
精华 0
积分 60
帖子 24
阅读权限 10
注册 2005-11-17
状态 离线
发表于 2006-1-11 11:39  资料  主页 短消息  加为好友  添加 xiaopei 为MSN好友 通过MSN和 xiaopei 交谈 QQ
[quote:f1be3c5c18="yangh"]
jakarta-tomcat-4.1.29 和 j2sdk1.4.2_02 你应该分别做成 2 个包阿。[/quote]

我之所以放了jakarta-tomcat-4.1.29 和 j2sdk1.4.2_02两个已经解开的文件,是希望rpm在安装的时候能直接生成文件夹形式,我不清楚在执行rpm安装命令的时候,他能否把*.tar.gz压缩包自动解压缩,

请问RPM包执行安装时能将*.tar.gz自动解压吗





我的世界我做主 http://www.zhuyeweb.com
顶部
yangh
版主
Rank: 7Rank: 7Rank: 7


UID 40061
精华 3
积分 3192
帖子 1625
阅读权限 255
注册 2003-5-26
来自 China
状态 离线
发表于 2006-1-11 16:35  资料  主页 短消息  加为好友 
[quote:9c95eb62b6="xiaopei"][quote:9c95eb62b6="yangh"]
jakarta-tomcat-4.1.29 和 j2sdk1.4.2_02 你应该分别做成 2 个包阿。[/quote]

我之所以放了jakarta-tomcat-4.1.29 和 j2sdk1.4.2_02两个已经解开的文件,是希望rpm在安装的时候能直接生成文件夹形式,我不清楚在执行rpm安装命令的时候,他能否把*.tar.gz压缩包自动解压缩,

请问RPM包执行安装时能将*.tar.gz自动解压吗[/quote]
不能。

可以简单的认为制作 RPM 的过程就是 执行一次 make install, 但是呢,是安装到 build-root 下,然后把这些安之好的文件大包,在 rpm -i xx.rpm 时把包解开并放到 / 下。make install 前后, rpm -i 前后都可能需要准备工作,分别对应于 spec 中的各个 section.

还是得看看文档先,本来看文档就可以明白的,不需要花几倍的时间去摸索。





顶部
xLoneStar
版主
Rank: 7Rank: 7Rank: 7


UID 61030
精华 4
积分 3326
帖子 1320
阅读权限 255
注册 2003-9-12
来自 电脑前面
状态 离线
发表于 2006-1-13 00:36  资料  主页 短消息  加为好友  添加 xLoneStar 为MSN好友 通过MSN和 xLoneStar 交谈 QQ ICQ 状态 Yahoo!
楼主并非想用 rpm 来做通常的编译和安装,他想包的是个 binary 包。就是纯打包,而没有编译过程。

把要包入的文件放到 buildroot 下面,在 files 段中写上他们相对于 buildroot 的相对路径。包完安装时,他们就会被装到相对于 / 的同名相对路径中。

顶部
xiaopei
新手上路
Rank: 1


UID 205499
精华 0
积分 60
帖子 24
阅读权限 10
注册 2005-11-17
状态 离线
发表于 2006-1-13 09:35  资料  主页 短消息  加为好友  添加 xiaopei 为MSN好友 通过MSN和 xiaopei 交谈 QQ
[quote:77bcf82514="xLoneStar"]楼主并非想用 rpm 来做通常的编译和安装,他想包的是个 binary 包。就是纯打包,而没有编译过程。

把要包入的文件放到 buildroot 下面,在 files 段中写上他们相对于 buildroot 的相对路径。包完安装时,他们就会被装到相对于 / 的同名相对路径中。[/quote]


版主说的就是我的想法,一点没错,
我的BuildRoot:%{_builddir} 实际指向的是/usr/src/redhat/BUILD路径,如果如版主上面所说,是否意味着我自己制作的rpm包在安装后,文件也会放到/usr/src/redhat/BUILD路径下?





我的世界我做主 http://www.zhuyeweb.com
顶部
 


Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
清除 Cookies - 联系我们 - 中国Linux公社 - WAP