ygw_ycf 发表于 2004-11-13 11:07:07

学习r p m 打包,出错!

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/*
哪儿还有错误?恳请指教!!!

lovewilliam 发表于 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/*

KDE 发表于 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/* 只是路径写错了,简单去掉它们可能造成数据损失,打包不完整。

ygw_ycf 发表于 2004-11-13 15:57:35

是的,我去掉了
%{prefix}/lib/libfltk*.so.*

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

lovewilliam 发表于 2004-11-13 18:34:28

yes!

KDE 发表于 2004-11-13 18:49:39

去掉 %{prefix}/lib/libfltk*.so.*干什么?你再仔细看看系统的出错提示。
凡是不列在 %files字段的东西,都不会自动打进包里。
另一些文件可以是由 spec 作者指定打包的,并没有列在这里。

ygw_ycf 发表于 2004-11-13 19:55:15

谢谢,这个问题,基本弄懂。用的 源码包属于be ta ,换成re a l se ,不存在这问题

ygw_ycf 发表于 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: *** Error 1
make: Leaving directory `/usr/src/redhat/BUILD/prozgui-2.0.5beta/src'
make: *** Error 1
make: Leaving directory `/usr/src/redhat/BUILD/prozgui-2.0.5beta'
make: *** 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)
这样的错误意味要修改 源码吗?

KDE 发表于 2004-11-15 21:32:37

软件自己的错误,是常有的事。
页: [1]
查看完整版本: 学习r p m 打包,出错!