QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1633|回复: 11

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

[复制链接]
发表于 2008-8-25 22:40:43 | 显示全部楼层 |阅读模式
正确的写法应该在你打包的%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 编辑 ]
发表于 2008-8-25 23:22:14 | 显示全部楼层
顺便问一个:怎么只包含一个目录里面的目录结构中的所有文件,而不包含他们的目录?
也就是
/aaa/bbb/ccc.txt
如果用
/aaa
那么包里面的文件就是
/aaa
/aaa/bbb
/aaa/bbb/ccc.txt
这样会导致冲突。
怎么解决这个问题?

除了详细书写……
回复

使用道具 举报

 楼主| 发表于 2008-8-25 23:52:56 | 显示全部楼层
%file
%defattr(-,root,root,-)
/aaa
%exclude /aaa/bbb/ccc.txt

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

%_enable_debug_packages 1

怎么会这样。。。
回复

使用道具 举报

 楼主| 发表于 2008-8-25 23:54:34 | 显示全部楼层
如果只要文件不要目录你在install项全部整理出来。
回复

使用道具 举报

发表于 2008-8-26 09:09:23 | 显示全部楼层
原帖由 jiangtao9999 于 2008-8-25 23:22 发表
顺便问一个:怎么只包含一个目录里面的目录结构中的所有文件,而不包含他们的目录?
也就是
/aaa/bbb/ccc.txt
如果用
/aaa
那么包里面的文件就是
/aaa
/aaa/bbb
/aaa/bbb/ccc.txt
这样会导致冲突。
...

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

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

使用道具 举报

 楼主| 发表于 2008-8-26 20:57:39 | 显示全部楼层
原帖由 sejishikong 于 2008-8-26 09:09 发表

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

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


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

使用道具 举报

发表于 2008-8-26 20:59:32 | 显示全部楼层
原帖由 sejishikong 于 2008-8-26 09:09 AM 发表

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

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

写 /aaa 貌似会引起冲突。我制作 fbsplash 的包就遇到这个奇怪的问题。
不知道怎么回事。
回复

使用道具 举报

发表于 2008-8-27 10:05:01 | 显示全部楼层
原帖由 haulm 于 2008-8-26 20:57 发表


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

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

使用道具 举报

 楼主| 发表于 2008-8-27 13:21:30 | 显示全部楼层
原帖由 sejishikong 于 2008-8-27 10:05 发表

现在自定义的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文件比较多,我不懂正确是放在哪的。
回复

使用道具 举报

发表于 2008-8-27 14:00:55 | 显示全部楼层
原帖由 sejishikong 于 2008-8-27 10:05 AM 发表

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

是不是编译时不要加入 -g 这个 CFLAGS 参数?好像没他就不会编译 debug 信息了。
回复

使用道具 举报

发表于 2008-8-27 16:12:24 | 显示全部楼层
原帖由 haulm 于 2008-8-27 13:21 发表


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

这不是错误,本来应该是修改了默认的macros文件,包含了这个目录。

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

使用道具 举报

发表于 2008-8-27 17:10:04 | 显示全部楼层
%dir /aaa
/aaa/bbb/ccc.txt

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


另:需要 debuginfo !!
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-27 02:21 , Processed in 0.038318 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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