linux rpm 依赖关系,终于找到打rpm包时依赖关系Requires怎么写了

终于找到打rpm包时依赖关系Requires怎么写了

发布时间:2008-03-15 11:29:03来源:红联作者:ztonline

spec文件中有个Autoreq字段,默认为1或者不写就是开启自动标注依赖关系的功能。自动依赖校验只会通过 pkgconfig 找出依赖的 .so 文件,而绝对不是软件包!可以通过命令反查生成的 rpm 包所依赖的这些 .so 文件属于哪个包,再把这些依赖的包的名称写进 spec,最后重新编译就行了。

我怀疑的是如果此时host机器上已经有了这些.so文件还会把它们装进去吗?

那BuildRequires字段呢?

晕了,居然把%files字段放到BuildRequires下面了,看来效率真的不高了。

任何没有被列在 %files 字段的目录或文件都不会被自动打进 rpm 包里。反之如果你在任何 %files 字段指定了虚拟根目录里并不存在的东西,系统就会报错,包括用 %exclude 排除的东西也是这样。通常我们只需要在 %files 字段指定所有顶层目录就可以了。若要了解软件到底向系统内安装了哪些目录和文件,你可以采取下列办法之一:(第一个办法很不好,东西太多了)

1. 在 %files 字段内只写进 %{_prefix}:

%files

%defattr(-,root,root)

%{_prefix}

这样所有东西都将被打进 rpm 包。打好包之后,用如下命令查询生成的 rpm 包的目录结构:

rpm -qpl xxx.rpm

2. 打包前手工执行配置、安装,当 ./configure 执行后,重定向安装到一个虚拟根目录里。例如(注意大小写):

./configure

make (这步可以省略,不信就试试)

make DESTDIR=/var/tmp/xxx install 或者 make prefix=/var/tmp/xxx install

然后进入 /var/tmp/xxx 目录查看里面的目录结构:

cd /var/tmp/xxx

tree

3. 打包前手工执行配置、安装,当 ./configure 执行后,查看生成的 Makefile 的 install 字段。注意:如果软件不符合 GNU 规范,可能并没有提供 configure 脚本,而是直接提供了 Makefile。这些通常都是游戏软件。这比较复杂,如果你不懂编程,可能看不懂 Makefile。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值