首页 > 技术笔记 > 创建rpm包的一些case

创建rpm包的一些case

2013年11月20日 发表评论 阅读评论

一、 去除 rpmbuild 自动发现的依赖关系 (automatic dependencies)
背景:在创建rpm包时,rpmbuild自动依赖了很多perl包,实际是没有的,而且在直接用tar包make,make install时也是没有报错的,所以为了不影响安装,需要去掉这些依赖。
方法一
spec文件中添加
AutoReqProv: no
这个参数有一定风险,Note that turning off all dependency information for an RPM you buildcan cause problems and frustrate your customers too.
方法二
更改 %__perl_requires 宏定义
最直接的是在spec中添加
%define __perl_requires /bin/true
或者温柔点 精准去掉某个perl包依赖,在spec文件中添加
cat << EOF > %{name}-req
#!/bin/sh
%{__perl_requires} $* |\
sed -e ‘/perl(yourperlfile.pl)/d’
EOF
%define __perl_requires %{_builddir}/%{name}-req
chmod 755 %{__perl_requires}
方法三 通过更改此脚本find-requires
备注:
rpmbuild宏定义在/usr/lib/rpm/macros这个文件中

 #%__find_provides       /usr/lib/rpm/rpmdeps --provides
    #%__find_requires       /usr/lib/rpm/rpmdeps --requires
    %__find_provides        /usr/lib/rpm/find-provides
    %__find_requires        /usr/lib/rpm/find-requires
    #%__perl_provides       /usr/lib/rpm/perldeps.pl --provides
    #%__perl_requires       /usr/lib/rpm/perldeps.pl --requires
    %__perl_provides        /usr/lib/rpm/perl.prov
    %__perl_requires        /usr/lib/rpm/perl.req
    %__python_provides      /usr/lib/rpm/pythondeps.sh --provides
    %__python_requires      /usr/lib/rpm/pythondeps.sh --requires
    %__mono_provides        /usr/lib/rpm/mono-find-provides %{_builddir}/%{?buildsubdir} %{buildroot} %{_libdir}
    %__mono_requires        /usr/lib/rpm/mono-find-requires %{_builddir}/%{?buildsubdir} %{buildroot} %{_libdir}

定义的一些脚本都在/usr/lib/rpm下

二、centos 5 与 6,rpmbuild的一些区别

centos5 topdir 宏定义是 /usr/src/redhat
centos6 topdir 宏定义是 ~/rpmbuild

centos5 默认没定义RPM_BUILD_ROOT,需要在spec中添加BuildRoot: /dir 变量,或者在rpmbuild命令行添加 –buildroot /dir 参数,需要显示添加%clean 删除RPM_BUILD_ROOT目录内容的动作
centos6 默认定义了RPM_BUILD_ROOT,目录在BUILDROOT。系统默认清空RPM_BUILD_ROOT内容

%install 时都需要如下DESTDIR=$RPM_BUILD_ROOT,否则软件会安装到实际目录
make DESTDIR=$RPM_BUILD_ROOT install

%files 文件指的是RPM_BUILD_ROOT 这个相对路径下
/usr/local/ 在RPM_BUILD_ROOT的相对路径

推荐一本书 Maximum RPM,很详细
Maximum RPM

分类: 技术笔记 标签:
  1. 2013年11月21日16:35 | #1

    超爷更新了,表示关注。

  1. 本文目前尚无任何 trackbacks 和 pingbacks.