QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2033|回复: 8

如何获得制作 RPM 包时 %file 段需要的文件名?

[复制链接]
发表于 2004-5-14 13:37:32 | 显示全部楼层 |阅读模式
我想做 WINE 的 RPM、SRPM 包,却发现 %file 段根本不知道写什么………
发表于 2004-5-14 13:41:44 | 显示全部楼层
2. %files
本段是文件段,它定义的是软件包需要包含哪些文件。本段通常放在描述文件尾部,以便于添加文件名,便于编辑。
本段段名描述格式为:
%files [子包选项] [-f 文件名]

注: []所括为可选项。
当没有任何选项时,本段内容定义的是父包要打包的文件列表;
当有子包选项时,本段内容定义的则是子包要打包的文件列表;
当选择-f选项时,RPM除了从文件段读取打包文件列表外,还将从指定的文件中读取要打包的文件列表。指定的文件中,一个文件名占用一行。此选项方便了软件包制作者,他们可以通过程序自动产生有关软件的文件列表,并将其写入到一个特定的文件中,这样制作软件包时,只需引用一下这个文件,RPM就会自动从这个文件中读取文件名并将其加入包中。如果没有此选项,软件包制作者只能在文件段里,将要打包的文件名一个一个写进去,有点麻烦。

文件段的内容格式为:
[修饰符1 [修饰符2] ...] 文件名
其中:修饰符是可选的,一个文件可以有多个修饰符,文件名必须以/开头(绝对路径形式)。
修饰符有以下几类:

(1) 文件相关
* %doc :
此修饰符设定文件类型为说明文档(参见LZE描述文件第72,73行);
* %config :
此修饰符设定文件类型为配置文件(参见LZE描述文件第70,71行);
* %config(missingok) :
此修饰符设定文件类型为配置文件,且此文件可丢失。即使丢失了,RPM在卸载软件包时并不认为这是个错误,并不报错。
此修饰符通常用于那些软件包安装后建立的符号连接文件,如/etc/rc.d/rc2.d/S55named等。此类文件在软件包卸载后可能需要删除,所以丢失了也不要紧。
* %config(noreplace) :
此修饰符设定文件类型为配置文件,且如果安装时系统中有同名的文件,则软件包中的这个文件将换个名字安装,其文件名后缀加个.rpmnew。(如果不用此修饰符,则安装时RPM若发现有同名文件,则RPM会将系统中的这个文件换个名字,其后缀加上.rpmorig,而软件包中的文件则还用原来的名字。)在软件包卸载时,系统中的同名文件被RPM换个名字保存起来,其后缀加上了.rpmsave。
如描述文件的文件段中定义了这么一行:
%config(noreplace) /etc/hello
则制成的包在安装时,若系统中已有此文件/etc/hello,则RPM会提示:
warning: /etc/hello created as /etc/hello.rpmnew
这表明包中的/etc/hello文件被创建为/etc/hello.rpmnew文件了。
如果卸载这个软件包,则系统中的/etc/hello将会改名为/etc/hello.rpmsave。
* %ghost :
此修饰符所修饰的文件,其内容不被包含到软件包中。这样的文件一般是日志文件(log file)一类的文件,其文件属性(文件名,属主,属组等)很重要,但是文件内容并不重要。用此修饰符后,RPM仅将其文件属性加入包中。
* %attr :
此修饰符设定文件的属性信息,使用格式为:
%attr(权限,属主,属组)
注: 权限常用数字形式(八进制),属主和属组可以是数字,也可以是字符串。如果文件的权限,属主和属组想使用系统默认值,则可用减号(-)表示它。
如下例采用两个修饰符,定义/etc/funkey.def文件的权限为755,属主默认,属组为root,类型为配置文件:
%attr(755,-,root) %config /etc/funkey.def
* %verify :
此修饰符设定文件需要校验的那些属性。这些属性有wner(属主),group(属组),mode(权限),md5(MD5检查和),size(大小),maj(主设备号),min(从设备号),symlink(符号连接),mtime(最后修改时间)。
此修饰符使用格式为:
%verify([not] owner group mode md5 size maj min symlink mtime)
注: not可选。当选用not时,表明需要校验除选定属性以外的那些属性。
如下例指示RPM校验/dev/ttyS0文件时,要校验其权限,MD5检查和,大小,主设备号,从设备号,符号连接和最后修改时间共七项属性信息:
%verify(mode md5 size maj min symlink mtime) /dev/ttyS0
这也可以采用not选项来实现,因为除去属主owner和属组group两项属性,剩下的就是需要校验的属性了:
%verify(not owner group) /dev/ttyS0
回复

使用道具 举报

 楼主| 发表于 2004-5-14 13:57:59 | 显示全部楼层
我的问题是,WINE 都有哪些文件?文件名是什么?
我不能写个 * 就解决了吧?
回复

使用道具 举报

发表于 2004-5-14 14:52:14 | 显示全部楼层
%file可以只包含一些基本的文档如readme.txt等文件,只要你安装的文件在SPEC在%install中有定义好就可以了。例如你在
%install
make install
那么你在%file中只需要一些要保留和附带的文档就行了。你可以到/usr/share/doc/softwarename看看里面包含的文件就知道了。
回复

使用道具 举报

发表于 2004-5-14 21:28:54 | 显示全部楼层
也就是说即使什么都不写,必要的文件也会自动复制过去?
回复

使用道具 举报

发表于 2004-5-15 00:49:11 | 显示全部楼层
贴一个最简单的spec,其模式可以满足一般软件的建包需要:

Name:           kaffeine
Version:        0.4.3
Release:        0.2mgc
Epoch:          0
Summary:        A xine-based Media Player for KDE

Group:          Applications/Multimedia
License:        GPL
URL:            http://kaffeine.sourceforge.net/
Source0:        kaffeine-0.4.3.tar.bz2
Patch:        playlist.patch
BuildRoot:      /var/tmp/kaffeine-root

# BuildRequires:  xine-lib-devel >= 0:1.0.0, gettext, qt-devel >= 1:3.0.3

%description
Kaffeine is a xine based media player for KDE3. It plays back CDs,
DVDs, and VCDs. It also decodes multimedia files like AVI, MOV, WMV,
and MP3 from local disk drives, and displays multimedia streamed over
the Internet. It interprets many of the most common multimedia formats
available - and some of the most uncommon formats, too. Additionally,
Kaffeine is fully integrated in KDE3, it supports Drag and Drop and
provides an editable playlist, a bookmark system, a Konqueror plugin,
a Mozilla plugin, OSD an much more.


%prep
%setup -q
%patch -p1
%Build
# ./autogen.sh
./configure --prefix=/usr --disable-rpath

make
%install
mkdir -p $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root)
/usr
%exclude /usr/lib/debug/*
回复

使用道具 举报

 楼主| 发表于 2004-5-15 09:41:15 | 显示全部楼层
[quote:e01ad410ac="樱家冢"]也就是说即使什么都不写,必要的文件也会自动复制过去?[/quote]
求证…………

我写的 wine.spec 在生成RPM包时会显示这里的文件找不到!!
这段可以不用么?
回复

使用道具 举报

发表于 2004-5-16 03:47:13 | 显示全部楼层
人家的意思是,不知道要制作的RPM包具体包含那些文件。
回复

使用道具 举报

 楼主| 发表于 2004-5-16 11:04:48 | 显示全部楼层
我试了,%files 必须写,不然 RPMBUILD 不把那些需要的文件打包…………
完成后会显示一堆文件已经建立但没有打包。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-4 03:49 , Processed in 0.071185 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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