一种Linux操作系统软件包依赖关系检测方法技术方案

技术编号:8215489 阅读:668 留言:0更新日期:2013-01-17 12:48
本发明专利技术公开了一种Linux操作系统软件包依赖关系检测方法。该方法包括如下步骤:构建参考操作系统的所有软件包的依赖关系数据;基于所述依赖关系数据,依照设定的分层逻辑生成与待检测操作系统中特定软件包相关的分层依赖关系;基于所述分层依赖关系生成并显示所述特定软件包的分层依赖关系图,其中所述分层依赖关系图中的各节点表示与所述特定软件包存在依赖或被依赖关系的软件包。本发明专利技术的方法能够较快速地全面检测某个特定软件包的依赖关系的Linux操作系统软件包依赖关系。

【技术实现步骤摘要】

本专利技术涉及一种Linux操作系统领域,尤其涉及Linux操作系统软件包依赖关系检测方法
技术介绍
当前操作系统的软件包依赖关系主要通过系统内置的命令进行依赖文件的查询,如“rpm-q—provide或一requires+软件包包名”,每次只能查询软件包与软件包之间的直接依赖,即只能查询某个软件包所直接依赖或直接提供的文件,而不能查询某个软件包与软件包之间的间接依赖关系。例如,当软件包A依赖于软包B,而软件 包B又依赖于软件包C时,软件包A间接依赖于软件包C,但上述的rpm命令则无法很好地查询这种依赖关系并友好地显示给用户。需要说明的是,对于Linux操作系统分发端而言,检测各软件包是否满足依赖性至关重要,否则只能通过安装及反复测试来判断要发布的操作系统是否满足依赖性。加之,随着Linux操作系统的个性化发展,往往发布Linux操作系统的企业要同时开发众多定制的Linux操作系统,每种定制Linux操作系统又有众多的版本。因此,如何较快速地检测Linux操作系统软件包依赖关系以提高Linux操作系统发布者的工作效率显得越来越重要。存在一种从冲突的角度出发通过排除与软件包关联的冲突来对Linux分发端的软件包依赖完整性进行检查的软件包依赖关系检测方法,但是这种关注软件包依赖关系冲突的检查方法一般只强调依赖树的概念来解决判断依赖性,而忽视了软件包之间的多层依赖关系。这种方法对于特定软件包而言,只能分析出该特定软件包的下层的依赖关系。因此,需要一种能够更全面检测某个特定软件包的依赖关系检测方法,使得在Linux操作系统进行裁剪或添加新功能时,能够较快速地检测操作系统的软件包是否满足依赖关系。
技术实现思路
本专利技术所要解决的技术问题之一是需要提供一种能够较快速地全面检测某个特定软件包的依赖关系的Linux操作系统软件包依赖关系检测方法。为了解决上述技术问题,本专利技术提供了。该方法包括如下步骤构建参考操作系统的所有软件包的依赖关系数据;基于所述依赖关系数据,依照设定的分层逻辑生成与待检测操作系统中特定软件包相关的分层依赖关系;基于所述分层依赖关系生成并显示所述特定软件包的分层依赖关系图;其中,所述分层依赖关系图中的各节点表示与所述特定软件包存在依赖或被依赖关系的软件包。根据本专利技术又一方面,所述构建参考操作系统的所有软件包的依赖关系数据的步骤进一步包括获取所述参考操作系统的所有软件包;利用Linux系统内置的createrepo命令,生成软件包的依赖关系数据库,作为所述依赖关系数据。根据本专利技术又一方面,所述参考操作系统所包括的软件包是所述待检测操作系统中软件包的子集,所述参考操作系统满足软件包依赖性。根据本专利技术又一方面,所述设定的分层逻辑包括基于所述参考操作系统的如下步骤blO)、将所述特定软件包作为待分析软件包;bll)、确定所述待分析软件包的唯一标识;bl2)、依据所述待分析软件包的唯一标识确定所述待分析软件包提供的文件; bl3)、基于所述待分析软件包提供的文件,确定依赖于所述待分析软件包所提供的文件的软件包的唯一标识;bl4)、将与所述软件包的唯一标识对应的软件包确定为所述待分析软件包的上层软件包;bl5)、将所述待分析软件包的上层软件包作为所述待分析软件包,返回子步骤bll),以进一步确定所述待分析软件包的上层软件包的上层软件包。根据本专利技术又一方面,所述设定的分层逻辑包括基于所述参考操作系统的如下步骤b20)、将所述特定软件包作为待分析软件包;b21)、基于所述参考操作系统确定所述待分析软件包的唯一标识;b22)、基于所述参考操作系统,依据所述待分析软件包的唯一标识确定所述待分析软件包所依赖于的文件;b23)、基于所述待分析软件包所依赖于的文件,确定提供所述待分析软件包所依赖于的文件的软件包的唯一标识;b24)、将与所述软件包的唯一标识对应的软件包确定为所述待分析软件包的下层软件包;b25)、将所述待分析软件包的下层软件包作为所述待分析软件包,返回子步骤b21),以进一步确定所述待分析软件包的下层软件包的下层软件包。根据本专利技术又一方面,依据指定层数来确定通过返回处理而执行的循环的次数。根据本专利技术又一方面,在基于所述依赖关系数据、依照设定的分层逻辑生成与待检测操作系统中特定软件包相关的分层依赖关系的步骤中,根据用户输入的软件包名来确定所述特定软件包;或者,将所述待检测操作系统中区别于所述参考操作系统的软件包确定为所述特定软件包。根据本专利技术又一方面,所述基于所述分层依赖关系生成并显示所述特定软件包的分层依赖关系图的步骤进包括基于所述分层依赖关系,依照设定的分层逻辑生成符合指定层数要求的所述特定软件包的分层依赖关系图、或者依照设定的分层逻辑生成所述特定软件包的分层依赖关系显示所生成的符合指定层数要求的所述特定软件包的分层依赖关系图;其中,所述指定层数包括所述特定软件包的分层依赖关系图的总层数、位于所述特定软件包的上层的层数和/或下层的层数。根据本专利技术又一方面,所述基于所述分层依赖关系生成并显示所述特定软件包的分层依赖关系图的步骤包括基于所述分层依赖关系,依照设定的分层逻辑生成所述特定软件包的分层依赖关系图;检测所述待测操作系统中是否存在所述特定软件包的分层依赖关系图中各结点表示的软件包; 区别显示所述分层依赖关系图中在所述待测操作系统中不存在的软件包所对应的节点。根据本专利技术又一方面,所述基于所述依赖关系数据、依照设定的分层逻辑生成与待检测操作系统中特定软件包相关的分层依赖关系的步骤包括,依据设定的分层逻辑,将软件包之间的多层依赖关系利用Dot描述语言形式输出到Dot文件中;所述基于所述分层依赖关系生成并显示所述特定软件包的分层依赖关系图的步骤包括基于所述Dot文件,根据用户输入的软件包名、或者包含包名及层数,利用软件包graphviz的dot命令分层显示所述分层依赖关系图。与现有技术相比,本专利技术的一个或多个实施例可以具有如下优点构建参考操作系统的所有软件包的依赖关系数据,基于依赖关系数据,依照设定的分层逻辑生成与待检测操作系统中特定软件包相关的分层依赖关系。可以较快速地检测特定软件包与操作系统中其它软件包的依赖关系。通过显示特定软件包的分层依赖关系图,可以更方便用户查看软件包的依赖关系。本专利技术的其他优点、目标,和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本专利技术的实践中得到教导。本专利技术的目标和其他优点可以通过下面的说明书,权利要求书,以及附图中所特别指出的结构来实现和获得。附图说明附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实施例共同用于解释本专利技术,并不构成对本专利技术的限制。在附图中图I是根据本实施例的Linux操作系统软件包依赖关系检测方法的流程图;图2A和图2B是根据本实施例的Linux操作系统软件包依赖关系检测方法中用于确定特定软件包的上层和下层软件包的各子步骤的流程图;图3A和图3B是根据本专利技术实施例的Linux操作系统软件包依赖关系检测方法来显示特定软件包的分层依赖关系图的一个例子。具体实施例方式以下将结合附图及实施例来详细说明本专利技术的实施方式,借此对本专利技术如何应用技术手段来解决技术问本文档来自技高网
...

【技术保护点】
一种Linux操作系统软件包依赖关系检测方法,其特征在于,包括如下步骤:构建参考操作系统的所有软件包的依赖关系数据;基于所述依赖关系数据,依照设定的分层逻辑生成与待检测操作系统中特定软件包相关的分层依赖关系;基于所述分层依赖关系生成并显示所述特定软件包的分层依赖关系图;其中,所述分层依赖关系图中的各节点表示与所述特定软件包存在依赖或被依赖关系的软件包。

【技术特征摘要】

【专利技术属性】
技术研发人员:徐晶晶
申请(专利权)人:中标软件有限公司
类型:发明
国别省市:

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

1