一种Linux操作系统软件包及其依赖关系缺失检测方法

文档序号:6379405阅读:372来源:国知局
专利名称:一种Linux操作系统软件包及其依赖关系缺失检测方法
技术领域
本发明涉及操作系统的移植和软件包管理技术领域,特别涉及一种Linux操作系统软件包及其依赖关系缺失检测方法。
背景技术
为适用不同的芯片架构,Linux等操作系统需要相应地做不同软件包的调整。例如,难于直接将适用于Intel芯片X86架构的平台的Linux操作系统直接移植到基于龙芯芯片架构的平台上,而是要进行软件包内部及软件包之间的调整。换而言之,适用不同芯片平台的Linux操作系统之间的存在较多的潜在风险,主要原因是适用于不同芯片平台架构的操作系统之间存在较大差异,也就导致系统的软件包依赖出现差异。因此,在开发适用于新的芯片平台的操作系统时,往往要修改(例如注释掉)原操
作系统的软件包依赖关系。然而,由于软件包之间的依赖关系错综复杂,操作系统开发人员为了成功编译软件包,往往会在移植操作系统的过程中把一些必要的软件包依赖关系注释掉,从而导致通过移植得到的操作系统存在较大潜在风险,带来了操作系统的很多不稳定因素。在实践中,操作系统开发人员难于确定被注释掉的软件包依赖关系是否是操作系统确实不需要的依赖关系,因此往往需要在注释的过程中不断地反复测试。例如,每注释掉一批依赖有关系便进行一些系统稳定性测试,这会占用操作系统研发人员的大量时间。因此,如何提高操作系统移植或发布过程中软件包依赖关系管理的效率是亟待解决的技术问题。此外,存在一些检测Linux等操作系统是否满足依赖关系的检测方法,这些方法一般用于发布Linux操作系统时进行依赖性检测。然而,这些方法只关注了对操作系统是否满足依赖关系的检测,往往忽视了在编译软件包的过程中被注释掉的依赖关系也可能给所研发的Linux操作系统带来长期潜在的不稳定风险。换而言之,现有技术中的检测难以全面检测出Linux操作系统是否满足依赖关系,尤其难以检测出因注释掉一些依赖关系而导致的依赖关系问题。

发明内容
本发明所要解决的技术问题之一是需要提供一种较全面检测出Linux操作系统是否满足依赖关系,尤其难以检测出因注释掉一些依赖关系而导致的依赖关系问题。为了解决上述技术问题,本发明提供了一种能够较全面检测出Linux操作系统是否满足依赖关系的Linux操作系统软件包及其依赖关系缺失检测方法。该方法包括基于参考操作系统构建参考依赖关系数据库;获取待检测操作系统的所有软件包的包名,得到软件包包名集合BL ;根据参考依赖关系数据库检测软件包包名集合BL中每个软件包所依赖的软件包的包名,得到集合BL中各个软件包所依赖的软件包的包名的集合BR ;
取集合BR和聚合BL的并集,得到集合BLl ;将在所述集合BLl中存在而所述集合BL中不存在的元素对应的软件包确定为所述待检测操作系统缺失的软件包。进一步,该方法还包括基于所述参考依赖关系数据库查询所述待检测操作系统的集合BL中每个元素的依赖关系,得到集合BL中各个元素的依赖关系的集合RRS;将集合RRS中与所述待查询操作系统缺失的软件包中至少一个软件包有关的依赖关系确定为所述待检测操作系统缺失的软件包依赖关系。进一步,该方法还包括通过裁剪一个与所述待检测操作系统的架构不同的操作系统来构建所述参考操作系统,使得裁剪得到的所述参考操作系统与所述待检测操作系统的功能相一致。进一步,在所述基于参考操作系统构建参考依赖关系数据库的步骤包括将所述参考操作系统的所有软件包放入一目录,利用createrepo命令生成所述目录下的全部软 件包的依赖关系数据库,作为所述参考依赖关系数据库。进一步,所述根据参考依赖关系数据库查询软件包包名集合BL中每个软件包所依赖的软件包的包名的步骤中,可通过如下子步骤来查询作为软件包包名集合BL任意之一的软件包P所依赖的软件包的包名根据参考依赖关系数据库的packages表确定与软件包P对应的软件包唯一标识keyO ;基于参考依赖关系数据库的requires表,根据软件包标识keyO,确定与软件包P对应的软件包文件名的集合setR ;基于参考依赖关系数据库的provides和files表,确定提供集合setR中至少一个文件名的软件包的软件包唯一标识的集合setPey ;基于参考依赖关系数据库的packages表确定所述集合setPey中各软件包唯一标识对应的软件包名,作为软件包P所依赖的软件包的包名。此外,所述参考操作系统可为针对X86芯片结构平台的Linux操作系统,所述待检测操作系统为针对龙芯平台的Linux操作系统。与现有技术相比,根据本发明的一个或多个实施例的方法可以较好地避免因操作搭建过程中注释掉(或删除)一些依赖关系而导致操作系统可能存在潜在稳定性风险的问题。虽然在下文中将结合一些示例性实施及使用方法来描述本发明,但本领域技术人员应当理解,为并不旨在将本发明限制于这些实施例。反之,旨在覆盖包含在所附的权利要求书所定义的本发明的精神与范围内的所有替代品、修正及等效物。本发明的其他优点、目标,和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书,权利要求书,以及附图中所特别指出的结构来实现和获得。


附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中图I是根据本发明实施例的操作系统软件包及其依赖关系缺失检测方法的流程图2是本发明实施例中根据参考依赖关系数据库查询集合BL中某一软件包包名为nameO的软件包P所依赖的软件包包名的流程图。
具体实施例方式以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。下面参考图1,以要搭建一个基于龙芯芯片、稳定可靠的Linux操作系统为例,详 细说明根据本发明实施例的操作系统软件包及其依赖关系缺失检测方法。步骤S110,构建参考操作系统。可通过裁剪一个主流的例如X86等与待检测操作系统B的架构类似架构的Linux操作系统来构建一参考操作系统A,这样有助于得到更加稳定的参考操作系统。裁剪完毕后,还可测试其各方面性能,以确保该X86架构的参考Linux操作系统稳定可靠。优选地,使得裁剪得到的参考操作系统A与要搭建的适用于例如龙芯平台的待检测操作系统B的功能相一致,即尽可能相同或类似。需要说明的是,该步骤为可选步骤,也可以选用一个指定操作系统来作为参考操作系统。步骤S120,基于参考操作系统构建参考依赖关系数据库。获取参考操作系统A的所有软件包,并新建一个目录,将所有的软件包放入该新创建的目录,利用Iinux系统内置的createrepo命令生成该参考操作系统的全部软件包(即位于该新建目录下的全部软件包)的依赖关系数据库,作为参考依赖关系数据库。步骤S 130,获取待检测操作系统B的所有软件包的包名,得到软件包包名集合BL0步骤S140,根据参考依赖关系数据库查询软件包包名集合BL中每个软件包所依赖的软件包的包名,得到集合BL中各个软件包所依赖的软件包的包名的集合BR,下文将结合图2详细说明该查询过程。在查询过程中,各软件包所依赖的软件包包名可能会重叠,重叠的软件包包名则不再重复放入集合BR。步骤S150,取集合BR和集合BL的并集,得到集合BLl。例如,可将集合BL和集合BR中的元素放到一个列表中,然后将列表中出现两次的元素去除,剩下的元素构成集合BLl。步骤S160,将在集合BLl中存在而集合BL中不存在的元素对应的软件包确定为操作系统B缺失的软件包。具体地,将集合BL和集合BLl做比较,将在BLl中存在而在BL中缺失的软件包所构成的集合BL2中的元素确定为操作系统B缺失的软件包。
在本发明的一个优选方案中,还可基于所构建的参考依赖关系数据库查询操作系统B的每个软件包(对应于集合BL中的每个元素)的依赖关系,得到操作系统B的各个软件包的依赖关系集合RRS,保存在文件filel。然后,将集合RRS中与集合BL2中至少一个软件包有关的依赖关系确定为操作系统B缺失的软件包依赖关系。发明人经过实践发现,利用上述步骤的处理,可以较好地避免因操作搭建过程中注释掉(或删除)一些依赖关系而导致操作系统可能存在潜在稳定性风险的问题。下面参考图2来详细说明根据参考依赖关系数据库查询集合BL中某一软件包包名为nameO的软件包P所依赖的软件包包名的详细步骤。步骤S241,根据参考依赖关系数据库的packages表确定与软件包P对应的软件包唯一标识(packages-pkgkey) keyO。步骤S242,基于参考依赖关系数据库的requires表,根据软件包标识keyO,确定与软件包P对应的一个或一个以上软件包文件名,该一个或一个以上软件包文件名构成文 件名(requires-name)集合 setR。步骤S243,基于参考依赖关系数据库的provides和files表,确定提供集合setR中至少一个文件名的软件包的软件包唯一标识的集合setPey。更具体地,可输入setR集合中的各个文件名,从参考依赖关系数据库的provides和files表中分别获得提供各个文件的软件包的软件包唯一标识(provides-pkgkey),所获得的各个文件的软件包的软件包唯一标识构成集合setPey。步骤S244,基于参考依赖关系数据库的packages表确定集合setPey中各软件包唯一标识对应的软件包名,作为软件包P所依赖的软件包的包名。针对集合BL中的各个元素分别执行上述步骤S241至S244,即可得到软件包包名集合BL中每个软件包所依赖的软件包的包名,即集合BR。此外,可通过类似地查询处理来基于所构建的参考依赖关系数据库确定参考操作系统B的每个软件包(对应于集合BL中的每个元素)的依赖关系集RRS。在此不再展开说明。本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
权利要求
1.一种Linux操作系统软件包及其依赖关系缺失检测方法,其特征在于,包括 基于参考操作系统构建参考依赖关系数据库; 获取待检测操作系统的所有软件包的包名,得到软件包包名集合BL ; 根据参考依赖关系数据库检测软件包包名集合BL中每个软件包所依赖的软件包的包名,得到集合BL中各个软件包所依赖的软件包的包名的集合BR ; 取集合BR和集合BL的并集,得到集合BLl ; 将在所述集合BLl中存在而所述集合BL中不存在的元素对应的软件包确定为所述待检测操作系统缺失的软件包。
2.根据权利要求I所述的方法,其特征在于,还包括 基于所述参考依赖关系数据库查询所述待检测操作系统的集合BL中每个元素的依赖关系,得到集合BL中各个元素的依赖关系的集合RRS ; 将集合RRS中与所述待查询操作系统缺失的软件包中至少一个软件包有关的依赖关系确定为所述待检测操作系统缺失的软件包依赖关系。
3.根据权利要求I或2所述的方法,其特征在于,还包括 通过裁剪一个与所述待检测操作系统的架构不同的操作系统来构建所述参考操作系统,使得裁剪得到的所述参考操作系统与所述待检测操作系统的功能相一致。
4.根据权利要求I或2所述的方法,其特征在于,在所述基于参考操作系统构建参考依赖关系数据库的步骤包括 将所述参考操作系统的所有软件包放入一目录,利用createrepo命令生成所述目录下的全部软件包的依赖关系数据库,作为所述参考依赖关系数据库。
5.根据权利要求I或2所述的方法,其特征在于,所述根据参考依赖关系数据库查询软件包包名集合BL中每个软件包所依赖的软件包的包名的步骤中,通过如下子步骤来查询作为软件包包名集合BL任意之一的软件包P所依赖的软件包的包名 根据参考依赖关系数据库的packages表确定与软件包P对应的软件包唯一标识keyO ; 基于参考依赖关系数据库的requires表,根据软件包标识keyO,确定与软件包P对应的软件包文件名的集合setR ; 基于参考依赖关系数据库的provides和files表,确定提供集合setR中至少一个文件名的软件包的软件包唯一标识的集合setPey ; 基于参考依赖关系数据库的packages表确定所述集合setPey中各软件包唯一标识对应的软件包名,作为软件包P所依赖的软件包的包名。
6.根据权利要求I或2所述的方法,其特征在于,所述参考操作系统为针对X86芯片结构平台的Linux操作系统,所述待检测操作系统为针对龙芯平台的Linux操作系统。
全文摘要
本发明公开了一种Linux操作系统软件包及其依赖关系缺失检测方法。该方法包括基于参考操作系统构建参考依赖关系数据库;获取待检测操作系统的所有软件包的包名,得到软件包包名集合BL;根据参考依赖关系数据库检测软件包包名集合BL中每个软件包所依赖的软件包的包名,得到集合BL中各个软件包所依赖的软件包的包名的集合BR;取集合BR和聚合BL的并集,得到集合B L1;将在所述集合BL1中存在而所述集合BL中不存在的元素对应的软件包确定为所述待检测操作系统缺失的软件包。该方法能够较全面检测出Linux操作系统是否满足依赖关系。
文档编号G06F9/44GK102945155SQ201210406278
公开日2013年2月27日 申请日期2012年10月22日 优先权日2012年10月22日
发明者徐晶晶 申请人:中标软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1