【从脚本到软件包:打造你的第一个Python RPM】

1.环境准备

1.1 如果需要多平台运行,需要准备好打包编译的环境如ARM/X86,两套环境编译后的文件只能在各自的平台上运行,我这里准备的环境为如下

在这里插入图片描述

2.依赖安装

2.1 首先需要安装python编译库

pip3 install pyinstaller

2.2 确保你的系统上已经安装了rpm-build包,如果没有安装,可以使用以下命令进行安装:

sudo yum install rpm-build    # For Red Hat, CentOS, Fedora

sudo apt-get install rpm-build   # For Ubuntu, Debian

3.打包文件准备

3.1 首先准备需要打包的python的源文件

就是你需要打包的py文件

3.2 准备需要打包的RPM的spec文件

spec文件规范如下附件,需要按照这个规范来编写
3.3 X86 编写spec

Summary: XXX tool
Name: tool name
Version: 1.0.9
Release: 2
License: GPLv2+
Group: Applications/System
BuildArch: x86_64
%description
This is a command line tool to get PCIe device information.
%files
%defattr(-,root,root,-)
/usr/bin/pcietool
%install
mkdir -p %{buildroot}/usr/bin
cp %{_sourcedir}/pcietool  %{buildroot}/usr/bin
%clean
rm -rf %{buildroot}

%post
#Optional post-installation scripts or commands
%preun
#Optional pre-uninstallation scripts or commands
%postun
#Optional post-uninstallation scripts or commands

3.4 arm编写spec

Name:  pcietool
Version: 1.0.9
Release: 1%{?dist}
License: MIT
Group: Applications/System
Summary:  tool

#依赖关系
Requires: python3
%description
This is a command line tool to get PCIe device information.

#描述文件的安装位置和权限
%files
%defattr(-,root,root,-)
/usr/bin/pcietool
%prep
%build
%install
mkdir -p %{buildroot}/usr/bin
cp %{_sourcedir}/pcietool  %{buildroot}/usr/bin
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
/usr/bin/pcietool

4.打包

4.1首先将py文件打包成二进制可执行文件,因为py文件里依赖了很多运行库和python的库,这里可以使用一键打包成一个可文件(文件会比较大,因为会把所有运行依赖都打包到这里),X86和ARM通用

pyinstaller --onefile tool.py

如下提示就是打包成功
在这里插入图片描述

打包成功之后会在打包目录生成一个dist文件夹,这个就是打包成功之后的二进制文件

4.2 打包成rpm包

将上面dist目录的二进制文件拷贝到rpm 的/root/rpmbuild/SOURCES目录下
在这里插入图片描述

执行打包命令,可以在RPM按照的SPECS目录下执行,也可以在脚本目录执行都可以,前提是需要存在打包的spec文件,我这里直接在脚本目录打包,需要注意的是:打包的spec文件需要和打包的二进制文件同一个命名
在这里插入图片描述

执行命令,我这里执行加的参数是bb,意思就是只构建二进制包,也可根据自己的需求自行编译。

rpmbuild -bb mypackage.spec  # 根据你的spec文件名定义

在这里插入图片描述

编译成功之后会在该目录生成这个rpm文件包,(X86和ARM不在同一个目录,可自己查看编译后的路径)可下载执行rpm -ivh 安装,如果之前有安装过可添加rpm -ivh --force参数

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夏天Aileft

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

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

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

打赏作者

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

抵扣说明:

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

余额充值