龙蜥开发者说:构建软件包?不,是构建开源每一个角落!| 第 20 期

news2024/12/22 18:13:37

「龙蜥开发者说」第 20 期来了!开发者与开源社区相辅相成,相互成就,这些个人在龙蜥社区的使用心得、实践总结和技术成长经历都是宝贵的,我们希望在这里让更多人看见技术的力量。本期故事,我们邀请了龙蜥社区开发者任博来分享「构建软件包?不,是构建开源每一个角落」。

欢迎阅读上期故事《亲历从基础设施构建到系统质量保障,龙蜥未来可期》。开发者说系长期活动,对于积极投稿、多次分享的童鞋,我们还有神秘大礼鼓励!诚邀开发者们分享真实体验,以文会友、共同学习、一起进步。

​本期故事主角:任博,龙蜥社区产品发布 SIG Contributor,2022 龙蜥社区年度优秀贡献奖-代码之星获得者!杭州博彦信息技术有限公司测试开发工程师,主要参与产品发布 SIG,负责发行版软件包打包及相关工具开发。

自 2021 年 9 月左右加入龙蜥社区后,我就一直在产品发布小组负责软件包构建和一些工具的开发维护工作。截至目前,我不仅参与了龙蜥操作系统版本从 Anolis 8.4 到 Anolis 8.8 的发布、维护,龙芯 LoongArch 架构软件包的构建,也参与建设了像龙蜥钉钉群里答疑机器人“龙蜥小二“这样的项目。参与建设龙蜥一年多的时间以来,我深深的感觉到社区项目没有大小之分,每个工作都有它的意义所在。

还记得我刚加入社区的时候,正值 Anolis 8.4 软件包的构建。当时因为还处于“新手阶段”,于是先被分配了几个软件包练手。虽然一度的结果是分配给我的构建问题往往很长时间都得不到解决,对于个人的信心建立很不友好,但非常感谢当时小组成员对我的包容和自己一直的坚持,我想没有这些我很难走到今天。一人行快,众人行远!龙蜥社区近两年的发展越来越壮大,参与到社区的小伙伴也会愈发多。在这样一个开放、包容的社区中,相信大家也会和社区一起成长。

在这里分享一个我使用 koji 的小收获,也希望这个小收获可以帮助到一些小伙伴。我觉得 koji 的 tag 和继承是很神奇的设计,使用 koji 每次触发构建时会根据构建时选择的 tag 生成一份 mock 的配置,因为这个 tag 和它继承的 tag 下 build 是变化的,所以每次生成的这份 mock 配置也可能是不一样的。我们在构建过程中会碰到各种依赖问题,通过 tag 的继承优先级可以为每个包找到依赖包和合适的版本,包括 module 包的构建,即 MBS (Module Build Service),继承也在其中起着很重要的作用。module 包构建时会为一组软件包统一建立 target ,在构建时可以基于此 target 来影响 module 构建过程中的依赖关系。在我刚开始的工作中,对 tag 的继承有很多疑问,也请教了我身边的小伙伴,慢慢的在解决构建依赖的途中对它有了更深的理解。

我在工作中也遇到了其他有趣的问题,在解释小版本升级和无感升级时,对于系统中 /etc/yum.repos.d/AnolisOS-BaseOS.repo 文件中 $releasever 的值由什么决定产生了疑问。如下:

​(图/ Anolis OS-BaseOS.repo 内容 )

在搜索了各种答案后,发现网上大家对于 $releasever 值的解释都不太一样,后来就自己看代码摸索了下 yum 是怎么获取这个值的。最终发现,它的取值跟 system-release(releasever) 等变量的值有关,接着我通过 yum provides ‘system-release(releasever)’ 的返回结果,发现在 anolis-release 这个包中 provides 了该变量,如图:

​(图/system-release(releasever) 查询结果)

​(图/ anolis-release.spec)

为了验证,我尝试修改 spec 文件中 system-release(releasever) 的值,通过 mock 构建出 rpm 包安装到系统中,测试发现 $releasever 变成了我修改的值,从而验证了自己的结论。虽然是个很小的问题,但是记得当时验证成功后感觉很兴奋。当然以上是我的个人结论,事实也有可能跟我想的不一样,如果有技术同学有不同的意见或建议,也欢迎加入龙蜥社区,和共同热爱开源的小伙伴们一起讨论交流。

在参与软件包构建工作中,我遇到了各种大大小小的问题,好奇心驱使着我去思考和解决问题,当然傻瓜式不放弃地去追究一个问题也不好。社区中也有很多令人崇拜的“大神”,遇到自己解决不了的问题或者不懂的地方,也可以向他们请教。在参与社区工作这个过程中,我遇到了很多未曾接触的技术栈和知识,同时自己也获得了成长和乐趣,这段经历对我来说也意义深刻。过去的一年中,我也获得了 “ 2022 龙蜥社区年度优秀贡献奖-代码之星”奖项。热爱可抵岁月漫长!这份荣誉对我来说只是起点,而我将继续带着这份热爱,投身到开源的每个角落。

​开源就像是一张无形的大网,将整个互联网都联系了起来,每位开发者都会在这张网上编织属于自己的独家符号。在未来的某一天,你编织的这份独家符号,也将会帮助千千万万个同样热爱开源的“你”,因为这些独有的符号也会奏出最美的音响,传承万年。希望未来能有更多的人加入开源世界,加入龙蜥,让我们一起打造面向云时代的操作系统。

相关链接地址:

产品发布 SIG 主页:https://openanolis.cn/sig/SIG-Distro

—— 完 ——

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/543979.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaWeb-Ajax的学习

Ajax 今日目标: 能够使用 axios 发送 ajax 请求熟悉 json 格式,并能使用 Fastjson 完成 java 对象和 json 串的相互转换使用 axios json 完成综合案例 概述 AJAX (Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。 我们先来…

LED显示屏的部件组成

LED显示屏通常由以下几个主要部件组成: LED模块:LED模块是构成LED显示屏的基本单元,包含多个LED发光元件以及相应的电路和连接器。LED模块通常以方形或长方形的形式存在,可以根据需要组合成各种尺寸和形状的显示屏。免费送你Led模…

【2023秋招】华为od-4.14三道题思路题解

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200道互联网大厂模拟练习题&…

Go Etcd 分布式锁实战

1 分布式锁概述 谈到分布式锁,必然是因为单机锁无法满足要求,在现阶段微服务多实例部署的情况下,单机语言级别的锁,无法满足并发互斥资源的安全访问。常见的单机锁如Java的jvm锁Lock、synchronized,golang的Mutex等 对…

mysql8之前如何实现row_number() over(partition by xxx order by xxx asc/desc)

文章目录 背景问题分析难点解决方案:总结公式多字段作为分组如何处理 背景 最近笔者在进行对广告业务的数据统计时遇到这种情况,业务方嫌弃离线数仓太慢,又无需太高的实时性本该使用即席查询的OLAP去做,但是当前公司调研的OLAP还…

Unity 2022 版本 寻路 NavMesh

首先装包 先给地图 和 阻挡 设置为静态 然后给地上行走的地方 添加组件 可以直接bake 然后会显示蓝色的可行走路径 player 添加插件 然后给角色添加脚本 using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerMove : Mon…

SpringBoot自动配置底层源码解析

1,配置分类 对于一个Spring项目,主要就是有两种配置 一种是类似端口号、数据库地址、用户名密码等一种是各种Bean,比如整合Mybatis需要配置的MapperFactoryBean,比如整合事务需要配置DataSourceTransactionManager SpringBoot中…

Github copilot几个使用技巧,自动补全代码

一、常用快捷键 快捷键含义tab应用提示代码esc拒绝提示代码ctrlenter打开提示面板选用10个意见代码中的一个Alt]切换建议代码Alt ->逐个应用代码 这些快捷键其实就是红色框的功能,也可以通过鼠标点击操作 下面具体介绍一下常用的三个功能: 1. tab自…

Maven——Maven仓库

1.概念 2.远程仓库 3.本地仓库 4.仓库配置和JDK配置 配置远程仓库&#xff1a; <mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/publ…

EAI(Enterprise Application Integration,企业应用集成)

目录 1.表示集成&#xff08;界面集成&#xff0c;iframe&#xff09; 2.数据集成&#xff08;中间件&#xff0c;数据库上面一层&#xff09; 3.控制集成&#xff08;API&#xff09; 4.业务流程集成 5.企业之间的应用集成 ​最后推荐一个图片转文字网站 最后推荐一个抖音去…

PowerShell if 使用参考

if 参考 与许多其他语言一样&#xff0c;PowerShell 提供了用于在脚本中有条件地执行代码的语句。 其中一个语句是 If 语句。 今天&#xff0c;我们将深入探讨 PowerShell 中最基本的命令之一。 Powershell 下载&#xff0c;参考 PowershellPowershell 相关文档&#xff0c;…

常用在线工具,非常实用,快收藏起来!

作者丨黑蛋 今天给大家介绍一些常用到的在线工具&#xff0c;能方便我们的日常学习&#xff1a; 编码工具&#xff1a; AES加密解密&#xff1a;http://www.jsons.cn/aesencrypt/ DNA编码解码&#xff1a;https://web.expasy.org/translate/ 双16进制编码解码&#xff1a;ht…

素材发布资源下载 OSS存储+用户组打折+下载限速 V1.1.3(one_market)

插件简介 插件用于各类 资源下载站、数字产品下载站、作品模型下载网站、数字市场网站 等 所有插件都使用管理控制台进行管理,方便后续的统一管理。 管理操作使用AJAX交互,站长管理更加高效快捷。让站长体验更加方便、快捷、高效的管理操作 插件管理功能 全局设置 [基本设置]…

[AI图片生成]自己搭建StableDiffusion安装过程

前言 最近尝试玩玩AI图片生成,安装一路坑 出个一路安装成功的记录 开始 找个空间大的盘符,这玩意将来会很占空间.一个模型大约5g左右,你可能还会装很多模型创建个目录,路径不要有中文安装git 下载地址 详细教程 (如果有忽略)下载 Python3.10.0,记得勾选添加到环境变量选项,安…

看板管理解析:如何通过看板提升项目管理效率?

在目前市面上的项目管理工具中&#xff0c;项目看板功能基本上成为了标配。看板作为敏捷的项目管理工具&#xff0c;可以帮助我们将项目工作可视化展现。 项目看板的作用 1&#xff0c;提高团队信息流动性&#xff1a;看板工具可以及时的传递项目工作中的最新讯息&#xff0c;保…

CC++动态内存管理

C&C动态内存管理 C语言动态内存管理 关于C语言动态内存管理实际上就三个函数malloc和calloc以及realloc&#xff0c;更多的是去理解&#xff0c;用C语言去实现数据结构阶段如果细心你就会可以发现&#xff0c;所有的数据结构都是使用动态内存管理的方式&#xff0c;在堆区…

什么是自然语言处理的文本分析?

自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是一种人工智能技术&#xff0c;旨在使计算机能够理解、解释和生成自然语言。文本分析是NLP的一个重要领域&#xff0c;它涉及到从文本数据中提取有用信息的过程。本文将详细介绍自然语言处理的…

如何压缩pdf文件的大小?四种方法值得收藏

如何压缩pdf文件的大小&#xff1f;实际上&#xff0c;压缩PDF文件的主要原因是为了减小文件的大小以便于存储、传输和分享。通常情况下&#xff0c;PDF文件包含大量的图像、文本和其他媒体元素&#xff0c;因此它们的文件大小可能会非常大。如果您需要通过电子邮件或网络共享P…

Qt- QSS样式表用法及用例说明

这里写自定义目录标题 QSS样式表用法1.Qt样式表语法2.选择器3.属性列表4.冲突解决5.全局添加QSS QSS样式表用法 整理qss样式表语法知识&#xff0c;方便今后查看。 1.Qt样式表语法 Qt样式表支持各种属性、伪状态和子控件&#xff0c;可以自定义小部件的外观 selector { attr…

这篇文章教你截图怎么翻译

在我们日常生活和工作中&#xff0c;可能会遇到一些需要翻译的文字内容&#xff0c;例如外语文件、国外的路标等。此时&#xff0c;我们也可以选择手动输入这些文字进行翻译&#xff0c;但是这样不仅费时费力&#xff0c;还容易出现翻译错误的情况。相比之下&#xff0c;我认为…