文章插图
导读:pyp2rpm 使得创建 RPM 包的过程更加自动化 。
本文字数:4940,阅读时长大约: 5分钟
pyp2rpm 使得创建 RPM 包的过程更加自动化 。
当你安装一个应用程序时,你通常是在安装一个软件包,其中包含应用程序的可执行代码和重要文件,如文档、图标等 。在 linux上,软件一般被打包成 RPM 或 DEB 等格式,用户只要通过
dnf或者apt等命令就可以进行安装了,这取决于你使用的 Linux 发行版 。然而几乎每天都有新的 Python/ target=_blank class=infotextkey>Python 模块发布,因此你很容易遇到一个尚未打包的 Python 模块 。这就是pyp2rpm存在的意义了 。最近我在尝试安装一个叫
python-concentration的模块,但是进展并不太顺利:【4 步打包一个新的 Python 模块】
-
$ sudo dnf install python-concentration
-
Updating Subscription Management repositories.
-
Last metadata expiration check: 1:23:32 ago on Sat 11 Jun 2022 06:37:25.
-
No match for argument: python-concentration
-
Error: Unable to find a match: python-concentration
虽然这是一个发布在 PyPi 的包,但它仍不能被打包成 RPM 包 。好消息是你可以使用
pyp2rpm以一个相对简单的过程将它打包成 RPM 包 。首先你需要设置两个目录:
-
$ mkdir rpmbuild
-
$ cd rpmbuild && mkdir SPECS
像这样去安装
pyp2rpm:-
$ sudo dnf install pyp2rpm
1、生成 spec 文件
RPM 包的基础是一种 spec 文件,这个文件包含你创建这个包的所有信息,如所需的依赖关系、应用的版本号、安装的文件等信息 。当指向某个 Python 模块时,
pyp2rpm会为它构建一个 spec 文件,你可以用它来创建 RPM 包 。下面以
python-concentration为例演示如何构建一个 spec 文件:-
$ pyp2rpm concentration > ~/rpmbuild/SPECS/concentration.spec
下面是它生成的文件:
-
# Created by pyp2rpm-3.3.8
-
%global pypi_name concentration
-
%global pypi_version 1.1.5
-
-
Name: python-%{pypi_name}
-
Version: %{pypi_version}
-
Release: 1%{?dist}
-
Summary: Get work done when you need to, goof off when you don't
-
-
License: None
-
URL: None
-
Source0: %{pypi_source}
-
BuildArch: noarch
-
-
BuildRequires: python3-devel
-
BuildRequires: python3dist(setuptools)
-
-
%description
-
Concentration [