QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2318|回复: 8

学习r p m 打包,出错!

[复制链接]
发表于 2004-11-13 11:07:07 | 显示全部楼层 |阅读模式
rocessing files: fltk-1.0.11-1mgc
Provides: libfltk.so.1
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: libX11.so.6 libXext.so.6 libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.1.3) libc.so.6(GLIBC_2.3) libm.so.6 libm.so.6(GLIBC_2.0)
Processing files: fltk-devel-1.0.11-1mgc
error: File not found: /var/tmp/fltk-1.0.11-1mgc-root/usr/bin/fluid
error: File not found by glob: /var/tmp/fltk-1.0.11-1mgc-root/usr/man/*
Processing files: fltk-debuginfo-1.0.11-1mgc
Provides: libfltk.so.1.debug
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1


RPM build errors:
    File not found: /var/tmp/fltk-1.0.11-1mgc-root/usr/bin/fluid
    File not found by glob: /var/tmp/fltk-1.0.11-1mgc-root/usr/man/*
s pe c 文件从源码包修改而来,如下:
%define version 1.0.11
%define release 1mgc
%define prefix /usr

Summary: Fast Light Tool Kit (FLTK)
Name: fltk
Version: %{version}
Release: %{release}
Copyright: LGPL
Group: System Environment/Libraries
Source: ftp://ftp.fltk.org/pub/fltk/%{version}/fltk-%{version}-source.tar.gz
URL: http://www.fltk.org
Packager: ygw_ycf<[email protected]>
# use BuildRoot so as not to disturb the version already installed
BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-root

%description
The Fast Light Tool Kit ("FLTK", pronounced "fulltick") is a LGPL'd
C++ graphical user interface toolkit for X (UNIX(r)), OpenGL(r),
and Microsoft(r) Windows(r) NT 4.0, 95, or 98. It was originally
developed by Mr. Bill Spitzak and is currently maintained by a
small group of developers across the world with a central
repository in the US.

%package devel
Summary: FLTK - development environment
Group: Development/Libraries

%description devel
Install fltk-devel if you need to develop FLTK applications.  You'll
need to install the fltk package if you plan to run dynamically linked
applications.

%prep
%setup

%build
CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" LDFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix} --enable-shared

# If we got this far, all prerequisite libraries must be here.
make

%install
# these lines just make sure the directory structure in the
# RPM_BUILD_ROOT exists
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT

make -e prefix=$RPM_BUILD_ROOT/%{prefix} install

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root)
%{prefix}/lib/libfltk*.so.*

%files devel
%defattr(-,root,root)
%{prefix}/bin/fluid
%{prefix}/include/FL
%{prefix}/include/Fl
%{prefix}/lib/libfltk*.so
%{prefix}/lib/libfltk*.a
%{prefix}/man/*
%{prefix}/share/doc/fltk/*
哪儿还有错误?恳请指教!!!
发表于 2004-11-13 11:18:21 | 显示全部楼层
File not found: /var/tmp/fltk-1.0.11-1mgc-root/usr/bin/fluid
File not found by glob: /var/tmp/fltk-1.0.11-1mgc-root/usr/man/*
回复

使用道具 举报

发表于 2004-11-13 14:32:05 | 显示全部楼层
你首先需要了解软件到底向那个虚拟根目录里安装了什么。如果你在任何 %files 字段指定了虚拟根目录里并不存在的东西,系统就会报错,包括用 %exclude 排除的东西也是这样。显然,系统已经指明,下列箭头指示的文件或目录并不存在:

%files devel
%defattr(-,root,root)
%{prefix}/bin/fluid          <--------
%{prefix}/include/FL
%{prefix}/include/Fl
%{prefix}/lib/libfltk*.so
%{prefix}/lib/libfltk*.a
%{prefix}/man/*            <--------
%{prefix}/share/doc/fltk/*

去掉这两行可以解决问题,但要注意可能确实有文件或目录叫做 fluid 和 man/* 只是路径写错了,简单去掉它们可能造成数据损失,打包不完整。
回复

使用道具 举报

 楼主| 发表于 2004-11-13 15:57:35 | 显示全部楼层
是的,我去掉了
%{prefix}/lib/libfltk*.so.*

%{prefix}/bin/fluid
打包成功,
但是这个spec文件,是源码包自带的,去掉是否就意味安装时,不会安装
/bin/fluid,或/lib/libltk*.so呢
回复

使用道具 举报

发表于 2004-11-13 18:34:28 | 显示全部楼层
yes!
回复

使用道具 举报

发表于 2004-11-13 18:49:39 | 显示全部楼层
去掉 %{prefix}/lib/libfltk*.so.*  干什么?你再仔细看看系统的出错提示。
凡是不列在 %files  字段的东西,都不会自动打进包里。
另一些文件可以是由 spec 作者指定打包的,并没有列在这里。
回复

使用道具 举报

 楼主| 发表于 2004-11-13 19:55:15 | 显示全部楼层
谢谢,这个问题,基本弄懂。用的 源码包属于be ta ,换成re a l se ,不存在这问题
回复

使用道具 举报

 楼主| 发表于 2004-11-13 21:02:14 | 显示全部楼层
In file included from options.cpp:29:
main.h:11:1: warning: "_" redefined
In file included from ../libprozilla/src/netrc.h:26,
                 from ../libprozilla/src/prozilla.h:31,
                 from main.h:7,
                 from options.cpp:29:
../libprozilla/src/common.h:162:1: warning: this is the location of the previous definition
options.cpp: In function `int pref_panel_set_values()':
options.cpp:194: error: using typedef-name `proxy_type' after `enum'
make[2]: *** [options.o] Error 1
make[2]: Leaving directory `/usr/src/redhat/BUILD/prozgui-2.0.5beta/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/src/redhat/BUILD/prozgui-2.0.5beta'
make: *** [all] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.50523 (%build)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.50523 (%build)
这样的错误意味要修改 源码吗?
回复

使用道具 举报

发表于 2004-11-15 21:32:37 | 显示全部楼层
软件自己的错误,是常有的事。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-3-29 18:24 , Processed in 0.068986 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表