Fedora koji构建系统详细教程之二 -- 构建

2024-08-31 16:36

本文主要是介绍Fedora koji构建系统详细教程之二 -- 构建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面

本篇文章是上一篇文章的继续,由于koji里面的内容实在是太多,都塞进一篇文章里会显得很臃肿,于是我就拆成了两部分。在上一篇文章里,我们已经部署好了Fedora koji系统,此时kojihub已经运行、可以通过kojiweb或koji命令去访问,并且也打开了kojira和kojid,这时候你已经具备构建的能力了。在这篇文章里,我会在x86_64上构建x86_64的rpm包,然后再进行RISC-V rpm包的构建,因为这涉及到一个RISC-V虚拟机部署问题,实际上内容和问题也不少。这篇文章仍然需要慢慢完成,内容也比较多,请大家仔细观看。


一、构建前准备

1、创建标签并配置

koji里的标签称为tag,这个tag就是某一个Linux发行版的所有软件包的集合的名称。比如说我要创建一个f40_x86_64这个标签,意思就是说这个标签代表了Fedora40 x86_64这个发行版它所规定的所有软件包集合的名称叫做f40_x86_64.实际上这个名字你是可以随便取的,不过最好是取得要规范。名称只是一个象征,真正重要的是你导入的软件包名和版本信息,它们会和你所创建的这个标签绑定。不仅仅是Fedora可以这样,比如说openEuler你也可以这样,只要你获得了或者自己制作了这个软件包信息的txt文件,就可以创建一个名叫openEuler24.03_x86_64这样一个标签去代表这么一个24.03openEuler的发行版。

甚至于说比如我喜欢LFS,那么我就可以自己制作一个属于自己的Linux发行版。我举个例子,比如我想基于LFS制作一个April Linux发行版,那么我就可以自己弄一个april_pkg_list.txt,然后创建April_x86_64标签,这么构建出来的一套软件包再发行出去。那么我的这个April Linux操作系统就可以发布出去让大家都使用了!

我以iscas的kojiweb展示出来的信息为例,就是说每一个Linux发行版对应一个tag,你每需要一个仓库就得来一个标签。同一发行版如果版本不同,也需要独自创建一个tag.

不知道大家对这个标签tag的概念是否已经清楚,标签代表着某个release(或者基于这个release的变体/开发版本)所包含的所有软件包集合。

koji add-tag f40_x86_64# koji add-tag 标签名      增
# koji remove-tag 标签名   删
# koji list-tags          查

添加(package)软件包列表(只是包名)到这个tag:

cat f40_pkg_list.txt | xargs -n 1024 koji add-pkg --owner kojiadmin f40_x86_64

大家还记得f40_pkg_list.txt吧,这个就是在第一篇文章里从Fedora project的kojihub里获取到的信息,因为那时候april_zhao用户的koji命令默认指向Fedora官方的koji ,所以获取到这个文件是比较容易的。但是你一旦部署好了之后,让其指向你自己部署的kojihub,那么这个文件你就获取不到了,所以我把这部分放在第一篇的最前面。但是如果说你当时没有通过Fedora的kojihub获取到这个文件也没有关系,你可以(待写)。

批量导入包名到标签里。在导入的过程中可能出现database outage的问题,因为postgresql会莫名其妙不太稳定,所以你可以重启一下数据库然后重新执行导入包名的命令。

sudo systemctl restart postgresql koji-sweep-db

一旦你导入了这些包名,那么你的Summary统计信息就不会像以前那样光秃秃的了,而是会把这些信息展示在这里,你可以对比一下Fedora和iscas的kojiweb是不是也是这样。

这里大家可以对比观察现象,就是说你每做一步操作,就去kojiweb里看看有什么地方不一样。眼见为实,你实践过了,就不会觉得这些概念很抽象了。


2、导入组信息

1) fedora功能分组信息
koji import-comps fedora_comps/comps_f40.xml f40_x86_64_build

comps_f40.xml 文件定义了软件包组的列表和描述,这些组可能包括特定的应用程序、工具和库。通过导入这些信息,可以帮助在构建过程中正确选择和安装需要的软件包组,确保构建环境的完整性和一致性。

2) 导入koji编译系统特定的分组信息
koji import-comps comps_f40_koji.xml f40_x86_64_build

comps_f40_koji.xml在第一篇文章里也已经得到了。

comps_f40_koji.xml 文件定义了一系列与构建和打包相关的软件包组,例如 appliance-buildbuildkiwi-buildlivecd-buildlivemedia-buildsrpm-build。这些组包含了一些必需的工具和库,用于特定类型的构建任务,如构建 SRPM 包等。

3、创建构建目标

koji add-target f40_x86_64_build_target f40_x86_64_build f40_x86_64# koji add-target <target name> <build tag> <des tag>   添加构建目标
# koji remove-target <target name>                      删除构建目标
# koji list-targets List the build targets              列出构建目标

构建目标(build target),描述的是一个构建的过程,其中包含你已经创建的前两个标签:tag和build tag。

4、createrepo权限与重建仓库信息

我们现在需要重建仓库,但是host默认的defaut权限是无法进行这个操作的,需要createrepo权限才可以,所以我们需要给我们唯一的host(kojibuilder1)添加这一权限。

koji add-host-to-channel kojibuilder1 createrepo# koji add-host-to-channel host名 channel权限名
# koji remove-host-from-channel host名 channel权限名

可以在命令行如此操作,也可以在kojiweb里点击添加。

koji regen-repo f40_x86_64_build

这也是我们首次提交任务,当你执行这行代码之后,就会在Tasks界面里提交两个任务。

由于我第一次提交任务之前忘记给予kojibuilder1 createrepo权限了,所以我手动把任务1和任务2取消并重新创建。

如图所示,现在kojihub已经自动安排我们的kojibuilder1也就是本机上的kojid进行工作了,因为此时Load负载不为0,并且这个任务本身不难,所以没有把4.0的总负载给占满。

运行一段时间之后,regen-repo成功,我建议的话是这个regen-repo操作就让有权限访问/mnt/koji(这个可以由你来设置)的机器来完成就好。因为它涉及到一个文件系统的访问,如果让其他设备上的kojid来运行可能会没有足够的访问权限、导致regen-repo失败。也就是说regen这些操作由“本机”来做,让对这个目录有读写权限的那台机器来做,给予那台机器对应的kojibuilder这个createrepo权限,这样是最稳妥的。

5、外挂仓库



二、开始构建第一个rpm包


这篇关于Fedora koji构建系统详细教程之二 -- 构建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124420

相关文章

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

Python3.6连接MySQL的详细步骤

《Python3.6连接MySQL的详细步骤》在现代Web开发和数据处理中,Python与数据库的交互是必不可少的一部分,MySQL作为最流行的开源关系型数据库管理系统之一,与Python的结合可以实... 目录环境准备安装python 3.6安装mysql安装pymysql库连接到MySQL建立连接执行S

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1