把一个目录打包成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语法

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
将jar打包rpm的步骤如下: 1. 安装rpmbuild工具 在Linux系统上,可以使用以下命令安装rpmbuild工具: ``` sudo yum install rpm-build ``` 2. 创建rpm目录结构 在rpmbuild的根目录下,创建一个名为SPECS的目录,用于存放.spec文件,以及一个名为SOURCES的目录,用于存放源文件。 ``` mkdir -p ~/rpmbuild/{SPECS,SOURCES} ``` 3. 编写.spec文件 .spec文件是用于打包和安装rpm文件,需要根据实际情况编写。以下是一个简单的.spec文件示例: ``` Name: myapp Version: 1.0 Release: 1%{?dist} Summary: My Java Application License: GPL URL: http://www.example.com/myapp Source0: myapp.jar BuildRequires: java-devel Requires: java %description My Java Application %prep %setup -q %build %install rm -rf %{buildroot} mkdir -p %{buildroot}/usr/share/myapp cp -a * %{buildroot}/usr/share/myapp/ %files %defattr(-,root,root,-) /usr/share/myapp ``` 在.spec文件中,需要指定应用程序的名称、版本、许可证、依赖关系等信息,并指定应用程序的源文件(在本例中为myapp.jar)。同时,还需要指定应用程序的安装路径和文件列表。 4. 将源文件复制到SOURCES目录下 将应用程序的源文件(在本例中为myapp.jar)复制到SOURCES目录下。 ``` cp myapp.jar ~/rpmbuild/SOURCES/ ``` 5. 使用rpmbuild打包 使用rpmbuild命令打包.rpm: ``` rpmbuild -bb ~/rpmbuild/SPECS/myapp.spec ``` 此命令将在rpmbuild的根目录下生一个.rpm,可以使用以下命令进行安装: ``` sudo yum localinstall ~/rpmbuild/RPMS/x86_64/myapp-1.0-1.el7.x86_64.rpm ``` 其中,x86_64是指64位系统,el7是指CentOS 7操作系统版本。具体的操作系统版本可能会有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大帅不是我

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

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

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

打赏作者

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

抵扣说明:

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

余额充值