System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种查询yum源中rpm包版本与路径的方法及系统技术方案_技高网

一种查询yum源中rpm包版本与路径的方法及系统技术方案

技术编号:40968572 阅读:3 留言:0更新日期:2024-04-18 20:49
本发明专利技术公开了一种查询yum源中rpm包版本与路径的方法及系统,涉及IT与软件开发中操作系统领域,该方法包括确定Yum源的根目录,并获取本地源中与Yum源路径相同的目录,将查询结果写入文件A,并裁剪出Yum源路径存入文件B;基于文件A获取所有包名的信息,并存入文件C作为查询时的关键信息;基于文件A获取所有包的完整版本信息,并存入文件D,版本信息由epoch、version‑release组成;根据存储的信息,拼接和格式化成"包名‑版本‑路径"形式的JSON文件;定期检测并更新JSON文件,并同步至相应的服务目录。本发明专利技术基于Yum源的包管理系统具有数据准确性、实时更新和用户友好的特点,利用自身数据和优势可以为用户提升Yum源和Linux发行版提供方的基础服务能力。

【技术实现步骤摘要】

本申请涉及it与软件开发中操作系统领域,更具体地,涉及一种查询yum源中rpm包版本与路径的方法及系统


技术介绍

1、yum源是linux系统中rpm软件安装包的来源,通常情况下一类linux发行版都对应有yum源,以持续性地提供linux发行版的服务能力。yum源通过web形式提供给使用者,yum源的提供者需先在本地服务器创建本地源,再将本地更新同步至yum源,因此yum源和本地源数据是一致的。yum源的使用,通过在linux发行版的/etc/yum.repos.d/目录下配置好可用的repo文件后,系统解析指定的yum源路径中的repodata文件(该文件记录了repodata所在目录下的所有rpm软件包的路径、版本和依赖等信息),使用者可以利用yum命令对rpm软件包进行在线查询、安装和卸载等管理。

2、目前在主流linux发行版对应的官方yum源中,根据软件包的类别通常有几个到十几个数目不等的软件目录,而在不同目录下根据架构放置了不同的repodata。这种方式的配置便于yum管理防止混淆,但是存在一个缺点,当需要查询正在使用的linux发行版是否支持某个rpm软件,以及软件所在的repodata路径和版本这两类最关键的信息时,则需要先知道软件所在的yum源路径才能查询,如果已配置的repo中不包含该软件包信息,直接查询则得不到该包信息。

3、因此,如何便捷、高效的获取软件所在的yum源路径是目前有待解决的技术问题。


技术实现思路

1、本专利技术提供一种查询yum源中rpm包版本与路径的方法及系统,用以解决难以便捷、高效的获取软件所在的yum源路径的问题。

2、一方面,本专利技术提出了一种查询yum源中rpm包版本与路径的方法,包括:

3、步骤1,确定yum源的根目录,并获取本地源中与yum源路径相同的目录,将查询结果写入文件a,并裁剪出yum源路径存入文件b;

4、步骤2,基于文件a获取所有包名的信息,并存入文件c作为查询时的关键信息;

5、步骤3,基于文件a获取所有包的完整版本信息,并存入文件d,版本信息由epoch、version-release组成;

6、步骤4,根据存储的信息,拼接和格式化成"包名-版本-路径"形式的json文件;

7、步骤5,定期检测并更新json文件,并同步至相应的服务目录;

8、步骤6,提供web界面给用户进行展示,用户只需输入包名并提交即可获取json文件数据。

9、优选的,所述步骤1中查询方式和存储流程为:

10、通过linux中的find命令查询出本地源中相同目录下所有的rpm包文件的完整路径并重定向存入文件a,并通过对比yum源实际根路径使用awk进行裁剪出和yum源相同对应的路径、并重定向存入文件b。

11、优选的,所述步骤2中获取每个包名信息的具体方法为:

12、使用cat文件a然后利用管道符“|”并使用xargs将参数分段传递给rpm–q命令,并且和queryformat参数约定查询包名,得到单独的不带版本号和架构等信息,并将查询到的所有信息重定向存入新的存储文件c。

13、优选的,所述步骤3中得到每个包完整版本信息的方法为:

14、通过cat文件a利用管道符和xargs命令传递文件a中信息给rpm查询命令并使用queryformat参数打印epoch:version-release格式的版本信息,对于epoch本身为空的版本信息使用sed命令截取掉,最后将版本信息重定向存入到存储文件d。

15、优选的,所述步骤4中拼接和得到最终json文件的方式为:

16、使用paste命令将文件c、d、和b进行按行组合为文件e,文件e中即是rpm包名、包版本信息和包所在yum源路径的key-values对应关系;并使用jq命令将文件e中的每组对应关系处理为json对象并重定向存入json文件f。

17、优选的,所述步骤5中定时更新json文件的方法为:

18、在本地源服务器的定时任务crontab中集成加入生成json文件f的流程工具,在执行生成json的流程前,通过计算文件a的md5值判断是否需要进行所述步骤1-所述步骤5的所有流程,当新的文件a的md5值若和旧md5值相同则说明yum源数据没有变化,不需要更新json文件;在更新生成新的json文件后,使用cp/scp命令将json文件定时更新到所述步骤2中的html文件同目录,即可完成json文件的更新并保持查询工具的数据时效性。

19、优选的,所述步骤6中展示给使用者的使用方式为:

20、通过html生成包含搜索输入栏和可点击搜索按键的简易静态搜索框,并通过onclick事件关联到javascript中的自定义函数g以实现交互,使发生点击“搜索”按钮的事件时,触发javascript传递初始页数和包名给后端nodejs,后端nodejs通过包名和当前页数查询json文件并仅返回当前页内容和总的计数给函数g,函数g传递json和总数给函数h,h根据总数和json分页显示当前页的数据到前端,并判断是否发生页数点击事件,若发生则调用函数g查询该页数据。

21、另一方面,本专利技术提出了查询yum源中rpm包版本与路径的系统,包括:

22、信息处理模块,所述信息处理模块用于确定yum源的根目录,并获取本地源中与yum源路径相同的目录,将查询结果写入文件a,并裁剪出yum源路径存入文件b;所述信息处理模块还用于,基于文件a获取所有包名的信息,并存入文件c作为查询时的关键信息;所述信息处理模块还用于基于文件a获取所有包的完整版本信息,并存入文件d,版本信息由epoch、version-release组成;根据存储的信息,拼接和格式化成"包名-版本-路径"形式的json文件;

23、自动检测模块,定期检测并更新json文件,并同步至相应的服务目录;

24、交互模块,提供web界面给用户进行展示,用户只需输入包名并提交即可获取json文件数据。

25、优选的,所述信息处理模块的查询方式和存储流程为:

26、通过linux中的find命令查询出本地源中相同目录下所有的rpm包文件的完整路径并重定向存入文件a,并通过对比yum源实际根路径使用awk进行裁剪出和yum源相同对应的路径、并重定向存入文件b;

27、所述信息处理模块的获取每个包名信息的具体方法为:

28、使用cat文件a然后利用管道符“|”并使用xargs将参数分段传递给rpm–q命令,并且和queryformat参数约定查询包名,得到单独的不带版本号和架构等信息,并将查询到的所有信息重定向存入新的存储文件c;

29、所述信息处理模块得到每个包完整版本信息的方法为:

30、通过cat文件a利用管道符和xargs命令本文档来自技高网...

【技术保护点】

1.一种查询yum源中rpm包版本与路径的方法,其特征在于,包括:

2.如权利要求1所述的查询yum源中rpm包版本与路径的方法,其特征在于,所述步骤1中查询方式和存储流程为:

3.如权利要求1所述的查询yum源中rpm包版本与路径的方法,其特征在于,所述步骤2中获取每个包名信息的具体方法为:

4.如权利要求1所述的查询yum源中rpm包版本与路径的方法,其特征在于,所述步骤3中得到每个包完整版本信息的方法为:

5.如权利要求1所述的查询yum源中rpm包版本与路径的方法,其特征在于,所述步骤4中拼接和得到最终json文件的方式为:

6.如权利要求1所述的查询yum源中rpm包版本与路径的方法,其特征在于,所述步骤5中定时更新json文件的方法为:

7.如权利要求1所述的查询yum源中rpm包版本与路径的方法,其特征在于,所述步骤6中展示给使用者的使用方式为:

8.一种查询yum源中rpm包版本与路径的系统,其特征在于,包括:

9.如权利要求8所述的查询yum源中rpm包版本与路径的系统,其特征在于,所述信息处理模块的查询方式和存储流程为:

10.如权利要求8所述的查询yum源中rpm包版本与路径的系统,其特征在于,

...

【技术特征摘要】

1.一种查询yum源中rpm包版本与路径的方法,其特征在于,包括:

2.如权利要求1所述的查询yum源中rpm包版本与路径的方法,其特征在于,所述步骤1中查询方式和存储流程为:

3.如权利要求1所述的查询yum源中rpm包版本与路径的方法,其特征在于,所述步骤2中获取每个包名信息的具体方法为:

4.如权利要求1所述的查询yum源中rpm包版本与路径的方法,其特征在于,所述步骤3中得到每个包完整版本信息的方法为:

5.如权利要求1所述的查询yum源中rpm包版本与路径的方法,其特征在于,所述步骤4中拼接和得到最终jso...

【专利技术属性】
技术研发人员:邬祥钊姜少涛王麟杨桃吴开顺
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1