rpm包制作

rpm包制作流程

1、指定rpm包制作位置,默认/root/rpmbuild文件夹里面包含BUILD、BUILDROOT、RPMS、SOURCES、SPECS、SRPMS文件夹
2、将要打包的包放入rpmbuild/SOURCES文件夹下
3、制作spec文件

rpmbuild文件夹 %_topdir
  • BUILD 编译rpm包的临时目录 %_builddir
  • BUILDROOT 编译后生成的软件临时安装目录 %_buildrootdir
  • RPMS 最终生成的可安装rpm包的所在目录 %_rpmdir
  • SOURCES 所有源代码和补丁文件的存放目录 %_sourcedir
  • SPECS 存放SPEC文件的目录(重要) %_specdir
  • SRPMS 软件最终的rpm源码格式存放路径(暂时忽略掉,别挂在心上)
SOURCES

待制作的包放在SOURCES里,注意如果是tar包,解压后的tar包名字必须与spec里的Source0格式一致,否则无法生成rpm包

创建spec文件(任意位置)
  • Name: rpm包的名字,默认amber
  • Version: 版本,默认v2.0.0
  • Release: 发布序号,默认1%{?dist}
  • Summary: rpm包的摘要信息
  • Group: 软件包的安装分类,默认System
  • License: rpm包的授权方式,默认GPL
  • URL: 源码包的下载路径,默认Git
  • Source0: 源代码包的名称(默认时rpmbuid回到SOURCES目录中去找),这里的name和version就是前两行定义的值。如果有其他配置或脚本则依次用Source1、Source2等等往后增加即可,例如 %{name}-%{version}.tar.gz,SOURCES目录下源包的名字必须是amber-v2.0.0.tar.gz
  • BuildRoot: %{_topdir}/BUILDROOT,默认rpmbuild的路径/root/rpmbuild/BUILDROOT
  • BuildRequires: 编译rpm包时需要的辅助工具,以逗号分隔。假如,要求编译rpm时,gcc的版本至少为4.4.2,则可以写成gcc >=4.2.2。还有其他依赖的话则以逗号分别继续写道后面。
  • Requires: 编译好的rpm包在其他机器上安装时,需要依赖的其他软件包,以逗号分隔
  • %description:rpm包的详细说明信息,但最多只能有80个英文字符
  • %install:将制作成功的rpm包里从BUILD拷贝到install指定的目录下,当用户最终用rpm -ivh amber.rpm安装软件包时,这些文件会安装到用户系统中相应的目录里rpm包制作完成后生成的位置
  • %clean:删除源代码

样例展示amber.spec

Name: amber
Version: v2020.05.07
Release: 1%{?dist}
Summary: makerpm for csdn
Group: System
License: GPL
URL: Git
Source0: %{name}-%{version}.tar.gz
%description
This tools may help you know how to make rpm
%prep
%setup -q
%build
%install
install -d $RPM_BUILD_ROOT/usr/local/amber
cp -a ~/rpmbuild/BUILD/%{name}-%{version}/* $RPM_BUILD_ROOT/usr/local/amber
%clean
rm -rf ~/rpmbuild/BUILD/%{name}-%{version}
rm -rf $RPM_BUILD_ROOT
编译spec文件

rpmbuild -bb amber.spec

-bb 只编译二进制rpm包
-bs 只编译源码rpm包(src.rpm)
-ba 同时编译二进制和源码rpm包(src.rpm)
-bp执行到%prep段,解开tar包然后把所有的补丁文件合并而生成一个完整的具最新功能的源文件

验证

1、执行上述spec文件后,若未出现报错,到RPMS里查看是否生成可安装rpm包
2、执行上述可安装rpm包,rpm -ivh amber.rpm到install 指定的位置查看rpm包是否安装成功
3、若在/usr/local/amber目录下看到amber.rpm说明rpm包制作成功!!!

将rpm包上传到yum

1、上传rpm包:rsync -av “rpm包名”
2、通过yum源安装rpm包:yum install --enablerepo=xxx rpm包名
3、查看rpm包信息:yum info rpm包名
4、卸载rpm包:yum remove rpm包名

总结

1、要把待制作的包放入SOURCE目录下,一定记住名字格式要与Source0: %{name}-%{version}.tar.gz一致,并且解压后的文件也需要一致,否则解析时找不到对应包
2、执行spec文件
3、执行成功后在RPMS文件夹下生成对应rpm包,rpm -ivh 生成的包
4、解析成功后在$RPM_BUILD_ROOT/usr/local/amber生成可执行文件

解析时遇到的bug

BUG:ERROR: No build ID note found in xxx

修复:在spec文件莫问追加%define __debug_install_post
%{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} “%{_builddir}/%{?buildsubdir}”
%{nil}

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值