haulm 发表于 2008-8-25 22:40:43

关于打包软件请不要用%exclude /usr/src 的写法

正确的写法应该在你打包的%file段前就把不要的东西删除掉,或者你重新设置主目录下创建一个名为 .rpmmacros 的文件进行操作。

为何会有这样的讨论?

因为我更新后的rpm打包默认就不生成debuginfo,很多打包遇到有%exclude /usr/src之类会因为debug*不存在出错退出打包。

新的rpm版本还比较严格,检测到未打包进rpm包的文件就会出错退出,正确的方法是在install段就把不要的文件从预安装目录删除。

我们可以在~/.rpmmacros写入一行定义来禁止打包过程生成 debuginfo 包:

指令执行: echo '%debug_package %{nil}' >> ~/.rpmmacros

附加一些常识资料,~/.rpmmacros写入一行

%_topdir /home/your_userid/rpm

则告诉 RPM:它先前在 /usr/src/mBuild下查找的所有目录应该改为在 /home/your_userid/rpm 下查找。

现在,您应该创建这样一个完整的目录树(非root):

~/rpm
~/rpm/SOURCES
~/rpm/SPECS
~/rpm/BUILD
~/rpm/RPMS
~/rpm/RPMS/i386
~/rpm/SRPMS

如果愿意,可以通过在 RPM 中重新定义其它宏,来将其中任何目录放在您想放的任何地方。

您可能需要考虑更改的一些宏包括 %_sourcedir 、 %_specdir 、 %_srcrpmdir 、 %_builddir 和 %_rpmdir 。

有关这些宏的缺省值,请查看/usr/lib/rpm/macros。

[ 本帖最后由 haulm 于 2008-8-25 22:54 编辑 ]

jiangtao9999 发表于 2008-8-25 23:22:14

顺便问一个:怎么只包含一个目录里面的目录结构中的所有文件,而不包含他们的目录?
也就是
/aaa/bbb/ccc.txt
如果用
/aaa
那么包里面的文件就是
/aaa
/aaa/bbb
/aaa/bbb/ccc.txt
这样会导致冲突。
怎么解决这个问题?

除了详细书写……

haulm 发表于 2008-8-25 23:52:56

%file
%defattr(-,root,root,-)
/aaa
%exclude /aaa/bbb/ccc.txt

奇怪,我从magic-rpm-config 发现

%_enable_debug_packages 1

怎么会这样。。。

haulm 发表于 2008-8-25 23:54:34

如果只要文件不要目录你在install项全部整理出来。

sejishikong 发表于 2008-8-26 09:09:23

原帖由 jiangtao9999 于 2008-8-25 23:22 发表 http://www.linuxfans.org/bbs/images/common/back.gif
顺便问一个:怎么只包含一个目录里面的目录结构中的所有文件,而不包含他们的目录?
也就是
/aaa/bbb/ccc.txt
如果用
/aaa
那么包里面的文件就是
/aaa
/aaa/bbb
/aaa/bbb/ccc.txt
这样会导致冲突。
...
这个就是写成/aaa/bbb/ccc.txt就行啊.
其实只写/aaa好像也不会引起冲突的.

新的rpm的配置文件需要修改若干个地方.magic-rpm-config这个包没起作用.

haulm 发表于 2008-8-26 20:57:39

原帖由 sejishikong 于 2008-8-26 09:09 发表 http://www.linuxfans.org/bbs/images/common/back.gif

这个就是写成/aaa/bbb/ccc.txt就行啊.
其实只写/aaa好像也不会引起冲突的.

新的rpm的配置文件需要修改若干个地方.magic-rpm-config这个包没起作用.

我总感觉magic-rpm-config的配置被替换掉了,具体要慢慢掏了,只是我觉得原来的rpm配置没有现在默认的好,编译后垃圾扔在/var/tmp和/usr/src/mBuild我觉得其实很不好,而默认生成debugpackage是根本不必要的。

jiangtao9999 发表于 2008-8-26 20:59:32

原帖由 sejishikong 于 2008-8-26 09:09 AM 发表 http://www.linuxfans.org/bbs/images/common/back.gif

这个就是写成/aaa/bbb/ccc.txt就行啊.
其实只写/aaa好像也不会引起冲突的.

新的rpm的配置文件需要修改若干个地方.magic-rpm-config这个包没起作用.
写 /aaa 貌似会引起冲突。我制作 fbsplash 的包就遇到这个奇怪的问题。
不知道怎么回事。

sejishikong 发表于 2008-8-27 10:05:01

原帖由 haulm 于 2008-8-26 20:57 发表 http://www.linuxfans.org/bbs/images/common/back.gif


我总感觉magic-rpm-config的配置被替换掉了,具体要慢慢掏了,只是我觉得原来的rpm配置没有现在默认的好,编译后垃圾扔在/var/tmp和/usr/src/mBuild我觉得其实很不好,而默认生成debugpackage是根本不必要的。
现在自定义的macros好像应该放在/etc/rpm目录。
debugpackage可以减少rpm的体积。制作发行版的时候必需的。

haulm 发表于 2008-8-27 13:21:30

原帖由 sejishikong 于 2008-8-27 10:05 发表 http://www.linuxfans.org/bbs/images/common/back.gif

现在自定义的macros好像应该放在/etc/rpm目录。
debugpackage可以减少rpm的体积。制作发行版的时候必需的。

magic-rpm-config的macros放置的具体位置是/usr/lib/rpm/mBuild,我不懂得这是不是错误,macros应该是放在/usr/lib/rpm下才对,但默认rpm包已经有了/usr/lib/rpm/macros,默认的rpm配置读的也是这个文件,而magic-rpm-config文件比较多,我不懂正确是放在哪的。

jiangtao9999 发表于 2008-8-27 14:00:55

原帖由 sejishikong 于 2008-8-27 10:05 AM 发表 http://www.linuxfans.org/bbs/images/common/back.gif

现在自定义的macros好像应该放在/etc/rpm目录。
debugpackage可以减少rpm的体积。制作发行版的时候必需的。
是不是编译时不要加入 -g 这个 CFLAGS 参数?好像没他就不会编译 debug 信息了。

sejishikong 发表于 2008-8-27 16:12:24

原帖由 haulm 于 2008-8-27 13:21 发表 http://www.linuxfans.org/bbs/images/common/back.gif


magic-rpm-config的macros放置的具体位置是/usr/lib/rpm/mBuild,我不懂得这是不是错误,macros应该是放在/usr/lib/rpm下才对,但默认rpm包已经有了/usr/lib/rpm/macros,默认的rpm配置读的也是这个文件,而 ...
这不是错误,本来应该是修改了默认的macros文件,包含了这个目录。

生成debug信息,对调试有用。

nihui 发表于 2008-8-27 17:10:04

%dir /aaa
/aaa/bbb/ccc.txt

加一行 %dir 在卸载软件包的时候可以一起删掉~~~


另:需要 debuginfo !!
页: [1]
查看完整版本: 关于打包软件请不要用%exclude /usr/src 的写法