把一个目录打包成rpm包

最近做一个需求:把某个目录打包成rpm。就像tar包打包一样,不过要求是rpm包。

环境

  • openEuler-21.09
  • rpmbuild

安装软件

yum install rpm-build rpmdevtools -y

执行以下命令,生成rpm构建目录

rpmdev-setuptree

生成的目录结构如下

目录说明:

  • BUILD:源代码解压以后放的位置,只需提供BUILD目录,具体里面放什么,不用我们管,所以真正的制作车间是BUILD目录。
  • BUILDROOT:假根,使用install临时安装到这个目录,把这个目录当作根来用的,所以在这个目录下的目录文件,才是真正的目录文件。当打包完成后,在清理阶段,这个目录将被删除。
  • RPMS:制作完成后的rpm包存放目录,为特定平台指定子目录(i386,i686,ppc)。
  • SOURCES:收集的源文件,源材料,补丁文件等存放位置。
  • SPECS:存放spec文件,作为制作rpm包的领岗文件,文件以.spec结尾。
  • SRPMS:src格式的rpm包位置 ,既然是src格式的包,就没有平台的概念了

将要打包的目录放在 SOURCES目录下

例如:我这里创建了test目录,并在该目录下创建a.txt文件,文件内容为openEuler

 

 在SPECS目录下创建spec文件

vi test.spec

内容如下,spec书写的规则查看最后的链接吧,比较复杂。

Name:test
Version:1.0
Release:0%{?dist}
Summary: test
Group:test
License:GPL
AutoReqProv: no
BuildRoot:%(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
%description -l zh_CN
"the tools for test"
%prep
echo "Nothong to do"
%install
cd %{_sourcedir}
cp -ar * %{buildroot}/
%files
/test
%postun
rm -rf /test

rpmbuild进行打包

rpmbuild -bb test.spec

执行成功后,在RPMS目录下有制作好的rpm包

查看rpm里的内容 

rpm -qpl test-1.0-0.x86_64.rpm

 

 解压rpm包

rpm2cpio test-1.0-0.x86_64.rpm | cpio -div

 参考:

SPEC语法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大帅不是我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值