OEPKGS软件包迁移适配指南

软件包选型

大部分软件源码包都可以在下列地址中找到,可直接进行搜索

Suse https://build.opensuse.org/

Ubuntu Debian -- Package Search Results -- fitspng

Fedora https://koji.fedoraproject.org/koji/builds

Debian https://packages.ubuntu.com/search?keywords=fitspng

整合版 https://pkgs.org/

以python-arviz为例:

选择需要引入的版本,并获取源码包


wget [https://kojipkgs.fedoraproject.org//packages/python-arviz/0.11.4/2.fc36/src/python-arviz-0.11.4-2.fc36.src.rpm](https://kojipkgs.fedoraproject.org/packages/python-arviz/0.11.4/2.fc36/src/python-arviz-0.11.4-2.fc36.src.rpm

rpm2cpio python-arviz-0.11.4-2.fc36.src.rpm |cpio -id

创建构建目录,并解压源码

mkdir –p /root/rpmbuild/SOURCES (注: rpmbuild源码需要存放在目录SOURCES中)

cd /root/rpmbuild/SOURCES

rpm2cpio ~/python-arviz-0.11.4-2.fc36.src.rpm |cpio –id

安装编译依赖

yum-builddep –y python-arviz.spec

编译软件包

rpmbuild –ba python-arviz.spec

注:rpmbuild –ba python-arviz.spec 1>LOG 2>&1 &

可以将编译日志重定向到LOG中,方便查看

可以看到日志最后有打包和清理的动作,说明构建完成。

附:

编译调试,修改spec文件时,遇到不清楚的参数或宏可以在网页(https://fedoraproject.org/wiki/How_to_create_an_RPM_package/zh-cn)上查询

编译失败相关问题

编译报错 缺少头文件

通过日志可以看到缺少 ncurses.h 头文件,那就说明,当前的环境需要安装一个新的包,来提供这个文件

即需要增加编译依赖到spec文件中 BuildRequires:xxx

但是具体哪个包提供了这个文件,可以 百度 或者 通过yum list 命令来查看
如:yum list |grep ncurses

头文件一般由 xxx-lib,libxxx,xxx-devel类似这种结构的包提供,上图可见当前已经安装了ncurses-libs,依旧是缺少文件,很有可能是devel包提供的。

安装依赖包,并在spec中新增Buildrequires:ncurses-devel 即可解决当前问题

Configure阶段缺少头文件

Configure缺少文件 同理2.1 添加对应依赖包即可

Pacp.h → libpcap-devel gsl_rng.h → gsl-devel

宏无法解析

通常从 centos 或 fedora 迁移过来的 语言类包,会遇到这种情况。

原因是, centos 、fedora 语言类包体统的macros和openeuler不同,

两种修改思路:

查询对应的宏的含义,在spec中将宏展开,替代掉宏

将提供宏的macros 所属软件包,引入到仓库,并添加到Buildrequires中

1 个赞