给Kylin iso中添加自定义rpm包

2023-05-16

前言

        在日常产品交付中会有如下需求:

  1.   客户自己安装centos / ubuntu / kylin iso,然后我们把rpm包给到客户
  2.   我们直接将rpm包封装到iso,给客户交付整体iso,这样不管是对于客户还是对于公司都是最省心的,会避免很多因为系统包版本不一致导致的安装失败问题 

当前项目中的需求

  • 在代码中会用到nmap命令来判断远端服务器ip和port是否可用,如果部署集群很多,手动安装显然不是最佳选择

  • 所以我们需要将nmap-7.93-1.x86_64.rpm添加到kylin iso中,最终交付客户

给Kylin iso添加nmap rpm包 

  •  先看未添加nmap rpm包前直接安装kylin iso后,会报如下错误:

        

  •  先去官网找到nmap rpm包并copy到build 服务器
  •  mount iso 并copy iso里全部内容到新的目录 

         

mount /root/SCloud-1.0-v8.0-153-kylin-v10-202212021405-cbf3cc9.iso /mnt/iso/
mkdir /mnt/iso_bak

# 这里一定加-r选项,因为iso会有很多隐藏目录
cp -rfp /mnt/iso/ /mnt/iso_bak/
  •  iso本地路径常见的目录及文件理解
Packages

系统所有的rpm package都在这个目录,下面可有子目录

比如这里就会有Packages/Bigtera/xxx.rpm

repodata

系统rpm包metadate源数据

bigtera-x86_64-comps.xml

isolinux

存放光盘启动时的安装界面信息,里面有两个核心文件

xxx.ks 是kickstart 自动安装应答脚本 

isolinux.cfg,系统引导配置文件,比如标注ks的路径

append initrd=initrd.img inst.stage2=hd:LABEL=Kylin inst.ks=cdrom:/isolinux/bigtera.ks quiet

.disk

会存放一下系统版本,tag,version之类的信息

big_product  big_tag  big_version

images系统启动映像文件

.productinfo

.discinfo

.productinfo会存放系统release版本信息

Kylin Linux Advanced Server
release V10(SP2)/(Sword)-x86_64-Build09/20210524

-----------------------------------------

.discinfo 系统的架构比如x86 or ARM

Kylin Linux Advanced Server
x86_64

EFIUEFI 启动模式下必须文件,Legacy模式下是非必须文件
  •  将我们自定义rpm包copy到iso Package目录

         cp /root/nmap-7.93-1.x86_64.rpm /mnt/iso_bak/iso/Packages/Bigtera/

  •   修改xxx.ks文件,将rpm包添加到对应group

        ks文件%package部分一些理解

%packages --ignoremissing (%packages --- %end之间添加包安装的group或者rpm name)

@^bigtera (指定环境包组, 一定要和repodata/xx.xml <environment> id一样)
@core
@virtualstor (这里是安装core 和 virtualstor 包组,这里的名字要和xml <group> id 一致)
@group_name (安装指定的包组)

%end

        可以看到repodate/xxx.xml里定义了两个group和一个environment    

     ​​​​​​​   

        

  •  修改repodate/xxx.xml 元数据,将自定义包加入

        这里我们是要加到自定义group virtualstor -- packagelist中

       

 开始重新build kylin iso

  1.  重新编译repodate xml元数据
  2. mkisofs重新build iso
  3. 生成iso MD5并插入镜像
createrepo --xz -g repodata/bigtera-x86_64-comps.xml .

mkisofs -r -V "SUPERCLOUD SuperCloud 1.0" -cache-inodes -joliet-long -J -l -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4 -c isolinux/boot.cat -eltorito-alt-boot -e images/efiboot.img -no-emul-boot -o "SCloud-1.0-v8.0-157-kylin-v10-202212021405-cbf3cc9.iso" /mnt/iso_bak/iso/

implantisomd5 SCloud-1.0-v8.0-157-kylin-v10-202212021405-cbf3cc9.iso 

 验证新iso

  •  安装过程省略
  •  查看安装好的kylin 并check nmap是否已成功安装

        ​​​​​​​

iso完美添加自定义rpm包 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

给Kylin iso中添加自定义rpm包 的相关文章

  • ISO/IEC 27001:2022 发布(中文),信息安全、网络安全和隐私保护 信息安全管理系统 要求

    ISO IEC 27001 2022 发布 中文 信息安全 网络安全和隐私保护 信息安全管理系统 要求 ISOIEC27001 2022中文信息安全 网络安全和隐私保护 数据集文档类资源 CSDN下载ISOIEC27001 2022中文信息
  • centos7下boot空间不足解决办法

    root localhost admin rpm qa grep kernel 看下有哪些 然后用yum remove kernel devel 3 10 0 327 el7 x86 64 删除
  • 市场监管总局关于对锂离子电池等产品实施强制性产品认证管理的公告

    按照 国务院办公厅关于深化电子电器行业管理制度改革的意见 国办发 2022 31号 有关要求 市场监管总局决定对电子电器产品使用的锂离子电池和电池组 移动电源以及电信终端产品配套用电源适配器 充电器 以下统称新纳入产品 实施强制性产品认证
  • 相机 ISO 设置/快门速度

    我正在寻找一种方法来改变我的 Evo 4G 相机的感光度 我知道这不是相机的快门速度 因为它是数码相机 下一个最相关的方面是 ISO 设置 但 Android SDK 没有办法操作它 有人知道另一种选择吗 即场景模式 曝光或效果 param
  • 如何使 RPM 依赖于包 a 或包 b?

    这似乎是一个简单的问题 但是the docs似乎对这个问题没有什么可说的 我想做类似的事情Requires vim or emacs但当我这样做时 我实际上依赖于vim or and emacs 依赖两个包中的一个或另一个的语法是什么 执行
  • Java / 将 ISO-8601 (2010-12-16T13:33:50.513852Z) 转换为 Date 对象

    如何解析一个字符串ISO 8601格式与祖鲁时间 javax xml bind DatatypeConverter parseDateTime 2010 12 16T13 33 50 513852Z returns IllegalArgum
  • 如何在应用程序中将粤语设置为语音搜索语言?

    我当前的代码在使用 ZH ISO 代码表示普通话时工作正常 但不适用于粤语 这是下面的代码 Intent i new Intent RecognizerIntent ACTION RECOGNIZE SPEECH String myLang
  • 如何修改 Fedora 软件包并修复错误

    我有一个来自 Fedora 的老游戏 位于一个名为 6 的包中 它有一个错误 我想添加一些简单的功能 我在这里询问了该过程的一部分 参见如何处理源 RPM 中的构建依赖关系 得到了一些答案 发现学习曲线对于我的老大脑来说实在是太难了 文档往
  • python:直接编辑ISO文件

    是否可以获取 ISO 文件并直接编辑其中的文件 即不解压 更改文件并重新打包 1 可以用Python来做吗 我该怎么做呢 您可以用于列出和提取 我测试了第一个 https github com barneygale iso9660 blob
  • CultureInfo 的 2 个字母 ISO 国家/地区代码

    我有一个 Xamarin Forms 应用程序正在获取 GeoLocation 的 2 个字母的 ISO 国家 地区代码 我需要该应用程序以本地风格显示货币 因此 如果我将手机从英国带到日本 它会显示以日元格式设置的货币字段 设置十进制货币
  • 出现错误时如何退出 rpm 安装

    我正在寻找一种在某些条件不成立时退出 rpm 安装的方法 我在 pre 部分添加了一个小脚本 如果我的条件失败 该脚本将退出安装 我面临的问题是我看到 pre scriptlet 被执行 并且 rpm 安装失败 然而最后我得到了我不想要的这
  • 在javascript中将iso日期转换为毫秒

    我可以将 iso 日期转换为毫秒吗 例如我想转换这个iso 2012 02 10T13 19 11 0000 到毫秒 因为我想比较当前日期和创建日期 创建日期是 iso 日期 Try this var date new Date 11 21
  • 当从 tcl 调用 rpmbuild 时,为什么 topdir 设置为其默认值?

    我有一个 执行 rpmbuild 的 tcl 脚本 这样做时 rpmbuild 使用的 topdir 是错误的 我的主目录中有一个 rpmmacros 文件 如果我手动调用 rpmbuild 它工作正常 即 topdir 不是默认的 我添加
  • 无法在 php 邮件中显示法语口音

    我有以下 php 脚本根据返回的参数发送一封电子邮件
  • rpm 和 rpmbuild - 在 %files 部分使用全局环境变量

    我已经为此苦苦挣扎了一段时间 所以我为我的项目编写了一个 specs 文件 一切都很顺利 rpm 已构建 安装很顺利 但后来我遇到了一些麻烦 因为现在我必须使用自定义全局环境变量来设置安装路径 这将给出一个 files 部分 如下所示 fi
  • 验证 MPD 文件 - 使用 MPEG-DASH

    我刚刚开始使用 MPEG DASH 从客户端 遵循 c057623 ISO IEC 23009 1 2012 规范 有谁知道是否有公共库或开源来验证我收到的 MPD 文件 我处理xml没有问题 任何帮助将不胜感激 您可能想检查一下MPEG
  • 构建 RPM 以仅安装文件

    我需要构建一个 RPM 其唯一目的是安装一些字体 我已经阅读了一些关于此的教程 但是每个人似乎都提出了不同的建议 并且我无法找到类似非常基本的设置之类的东西来做到这一点 是否可以只引用其中的文件 files规范部分 但是我尝试过 RMP总是
  • LSB 中是否有 RPM 文件命名约定?

    RPM 是 LSB 中的包格式 但 LSB 是否强制 RPM 的任何命名标准 类似于 http www rpm org max rpm ch rpm file format html http www rpm org max rpm ch
  • 文件在 rpm 规范文件中列出两次

    我的规范文件的文件部分如下所示 files prefix htdocs config prefix htdocs share settings config inc php 现在 由于配置文件已经包含在 prefix htdocs 我收到警
  • 在 python 中读取具有恶意字节 0xc0 的文件,导致 utf-8 和 ascii 出错

    尝试将制表符分隔的文件读入 pandas 数据帧 gt gt gt df pd read table fn na filter False error bad lines False 它会出错 如下所示 b Skipping line 58

随机推荐