Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1787427
  • 博文数量: 787
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-22 15:17
文章分类

全部博文(787)

文章存档

2008年(787)

我的朋友

分类:

2008-09-25 16:06:05

  也许有时候资料看多了并不是好事,RPM的制作就是这样,上次被BuildRoot的搞得极度郁闷,本以为是解决不了了的,可是近日跟lon交流才发现根本没那么麻烦,%install段用一个%makeinstall宏就够了,原来的问题纯属东西看多看杂把脑子看进水了。[@more@]

  原来自己做RPM的时候总是在%files段把所有文件给列出来,忙得晕头转向,看了lon写的spec文件后发现自己又错了,在使用了BuildRoot的情况下,若想把所有文件打包进来,只要
%defattr(-,root,root)
%{_prefix}
两行即可。

  可是随即产生了一个奇怪的问题,%makeinstall宏总是把文件安装到/usr下,可是我想安装到/usr/local下怎么办呢?Subbo说使用make prefix=$RPM_BUILD_ROOT/usr/local install,资料上也是这么说的,于是我注释掉%makeinstall,加上make prefix=$RPM_BUILD_ROOT/usr/local install,神了,竟然安装双份,/usr和/usr/local下都有。然后我干脆把prefix=$RPM_BUILD_ROOT/usr/local install也注释掉,你猜怎么着?/usr/local下没有了,但/usr下照样有!这时候我就怀疑是不是%makeinstall注释了也还在生效,但Subbo说不可能。那么,是不是make的时候就包含了make install呢?应该也不可能,因为自己手动make时并没有make install。

  Subbo帮我做了次测试,结果也是一样,他觉得无法解释,建议我装到/usr算了。我想也是,虽然progsreiserfs和reiserfs-utils有冲突,但是可以用%pre和%preun来进行文件重命名啊,于是就不再管这个问题。正当我打算写%pre和%preun时,我发现/usr/sbin下竟然没有mkfs.reiserfs等命令,搜索发现是在/sbin下面。也就是说,所谓progsreiserfs和reiserfs-utils冲突纯属子虚乌有,难道是上回眼睛花了?

  这下好了,%pre和%preun也不要了,但是又出现一个怪事,打好包的progsreiserfs竟然不能安装,说缺少libreiserfs,我晕,明明libreiserfs是progsreiserfs的一部分啊!

  肯定是哪个环节出了问题,于是我在建包过程中强行中断,然后去查看/var/tmp下的临时脚本,发现竟然有两次configure,一个是把%configure宏展开(我已经加#注释了的),另一个当然是我自己写的./configure啦。

  经过多次测试后发现,以%开头的宏用#注释是没用的,系统在生成临时脚本的时候会将这一行截断,从%开始新的一行。原来那个%makeinstall宏注释导致安装双份是同样的原因。这回算是晕到了极点了。

  这一次建的包是最终版了吗?根据前几次的经历,也许未必。



--------------------next---------------------

阅读(730) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~