制作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
# 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 高手集中解决一下这个问题吧,几年前就有人遇到这个文体,老问题了,看来都有几年的历史了,该给个准确答复了.
我等等等等信 你包了一个空的包?
我从来没有遇到过这种情形。是不是因为 Copyright 那行写得不好阿:mrgreen: BuildRoot: %{_builddir}/%{name}-%{version}-root
add this line.:) gold bless you. :mrgreen: :twisted: ,按yangh兄的试一试看吧,如果解决不了,换台机器试试,
一般我碰到重新一次就好了,有人说是硬件的问题 成功了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
谢谢谢
苦寻良策日日悠,
听君一语解千愁,
新年把盏同乐乐,
祝君开源立潮头.
谢过楼上众兄指点
修改后的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包里了,而且多次执行军成功 再问,
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 打包前就先放到不同目录下,再包起来。解开后自然就在不同地方了 楼主,你的 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 个包阿。 打包前就先放到不同目录下,再包起来。解开后自然就在不同地方了
"打包前就先放到不同目录下,再包起来 "
请问将文件放到不同目录下后,如何再包起来,在哪里做这个操作,spec文件里吗,该怎么写呢? 楼主,你的 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 个包阿。
问题的确很多,这是我要做的第一个rpm包,很多东西还很不理解,还请高人多指点
执行rpm后会安装到 /usr/src/redhat/BUILD 是我写错了,那它被安装到哪里去了呢
它只是说包已经安装了,安到哪里了?
# rpm -ivh ca4.2-4.2-2.i386.rpm
Preparing... ###########################################
package ca4.2-4.2-2 is already installed
jakarta-tomcat-4.1.29 和 j2sdk1.4.2_02 你应该分别做成 2 个包阿。
我之所以放了jakarta-tomcat-4.1.29 和 j2sdk1.4.2_02两个已经解开的文件,是希望rpm在安装的时候能直接生成文件夹形式,我不清楚在执行rpm安装命令的时候,他能否把*.tar.gz压缩包自动解压缩,
请问RPM包执行安装时能将*.tar.gz自动解压吗
jakarta-tomcat-4.1.29 和 j2sdk1.4.2_02 你应该分别做成 2 个包阿。
我之所以放了jakarta-tomcat-4.1.29 和 j2sdk1.4.2_02两个已经解开的文件,是希望rpm在安装的时候能直接生成文件夹形式,我不清楚在执行rpm安装命令的时候,他能否把*.tar.gz压缩包自动解压缩,
请问RPM包执行安装时能将*.tar.gz自动解压吗
不能。
可以简单的认为制作 RPM 的过程就是 执行一次 make install, 但是呢,是安装到 build-root 下,然后把这些安之好的文件大包,在 rpm -i xx.rpm 时把包解开并放到 / 下。make install 前后, rpm -i 前后都可能需要准备工作,分别对应于 spec 中的各个 section.
还是得看看文档先,本来看文档就可以明白的,不需要花几倍的时间去摸索。 楼主并非想用 rpm 来做通常的编译和安装,他想包的是个 binary 包。就是纯打包,而没有编译过程。
把要包入的文件放到 buildroot 下面,在 files 段中写上他们相对于 buildroot 的相对路径。包完安装时,他们就会被装到相对于 / 的同名相对路径中。 楼主并非想用 rpm 来做通常的编译和安装,他想包的是个 binary 包。就是纯打包,而没有编译过程。
把要包入的文件放到 buildroot 下面,在 files 段中写上他们相对于 buildroot 的相对路径。包完安装时,他们就会被装到相对于 / 的同名相对路径中。
版主说的就是我的想法,一点没错,
我的BuildRoot:%{_builddir} 实际指向的是/usr/src/redhat/BUILD路径,如果如版主上面所说,是否意味着我自己制作的rpm包在安装后,文件也会放到/usr/src/redhat/BUILD路径下?
页:
[1]