掌桥专利:专业的专利平台
掌桥专利
首页

一种yum源完整性测试方法

文献发布时间:2024-04-18 20:02:40


一种yum源完整性测试方法

技术领域

本发明属于Linux软件管理技术领域,具体涉及一种yum源完整性测试方法。

背景技术

Yum源作为CTyunos、OpenEuler、CentOS等操作系统原生开源软件提供远程开源软件仓库,当系统在使用过程中需要某个开源软件的时候,可以通过yum或者dnf命令进行联网安装软件并自动解决正在安装的软件间的依赖问题。

当前的yum源由各个操作系统厂商进行维护。随着仓库中开源软件数量的增加以及开源软件的版本升级,某个开源软件包的升级或者引入可能会打破原有仓库中软件包的依赖关系,这些包可能和当前软件包存在依赖、版本、文件上的冲突,最终导致引入的软件包无法安装或者源内其他软件包无法安装,而软件依赖关系检查通常在使用中遇到问题进行软件包的验证。现有技术主要通过单个软件包进行验证。如果没有出现软件包使用冲突问题则无法出现此问题,属于隐蔽性问题。客户在使用系统过程中出现此问题才会出现,降低了此用户体验。

针对最小化安装系统上开源软件包的安装测试比较容易,创建最小化安装的系统环境进行安装即可。当前软件源中的rpm软件包的数量当前在3000及以上,在进行测试的时候无法直接确认引入或者升级的软件包是否对每个软件包的影响。当前在Linux操作系统中也没有软件包依赖关系完整性检查的工具。在引入或者升级软件包的时候可能会导致yum源中软件包依赖关系被破坏,从而导致用户无部分软件包无法安装,降低用户体验,增加软件源维护成本。

发明内容

本发明的目的是提供一种yum源完整性测试方法,能够用于软件包升级、或者新软件包引入之后进行yum源的依赖完整性检查,避免上线之后软件包依赖关系被破坏导致软件无法安装或者安装失败。

本发明采取的技术方案具体如下:

一种yum源完整性测试方法,包括以下步骤:

读取当前已有软件源中的所有软件包,分析每个软件包的依赖关系,找出具有冲突关系的软件包;

将具有冲突关系的软件包放到不同的列表中,生成多个列表,其中多个列表包括基础软件包列表、冲突软件包列表1、冲突软件包列表2、……冲突软件包列表n;

从基础软件包列表中选择一个软件包,尝试在基础软件包列表的基础上安装该软件包;

安装完成后,进行和update软件源的兼容性验证,并输出验证结果;

其中,在变更软件时,调用冲突软件包分类子系统,确定要测试的软件包应在哪个列表中;

根据确定的列表,调用软件包安装验证子系统进行安装兼容性验证,并输出验证结果。

在一种优选方案中,所述基础软件包列表中的软件包可以和任何冲突软件包列表中的软件包一起安装,冲突软件包列表中的软件包和其他冲突软件包列表中的软件包不能一起安装。

在一种优选方案中,所述软件包的冲突列表通过yum源中的repodata进行分析分类。

在一种优选方案中,所述软件包的冲突列表通过yum源中的repodata进行分析分类的方法如下:

获取everything的repoda,获取list1列表中的所有项目;

获取冲突软件包list2和list3列表中的所有项目;

将list2和list3列表中的软件包及其依赖项合并到一个总的软件包列表中;

从list1中移除对list2和list3的依赖;

安装并验证list1和整合后的list2,然后根据需要调整list2。

需要安装并验证list1和整合后的list3,然后根据需要调整list3。

完成验证。

在一种优选方案中,所述尝试在基础软件包列表的基础上安装该软件包前需进行基础软件包列表中软件包和各个冲突软件包列表中的软件包兼容性验证,是否可以在基础软件包列表基础上安装任意一个冲突软件包列表中的软件包。

在一种优选方案中,所述变更软件包括新软件包引入或升级软件包。

在一种优选方案中,所述冲突软件包分类子系统、软件包安装验证子系统和变更软件包测试子系统均集成在一个自动化的软件包管理系统中。

在一种优选方案中,所述变更软件包测试子系统还能够根据用户的选择,只对特定的冲突软件包列表进行验证。

本发明还提供了一种yum源完整性测试系统,其特征在于,应用于上述的yum源完整性测试方法,该系统包括:

冲突软件包分类子系统,所述冲突软件包分类子系统用于:

读取当前已有软件源中的所有软件包,分析每个软件包的依赖关系,找出具有冲突关系的软件包;

将具有冲突关系的软件包放到不同的列表中,生成多个列表:基础软件包列表、冲突软件包列表1、冲突软件包列表2、冲突软件包列表n;

软件包安装验证子系统,所述软件包安装验证子系统用于:

从基础软件包列表中选择一个软件包;

尝试在基础软件包列表的基础上安装该软件包;

安装完成后,进行和update软件源的兼容性验证;

输出验证结果;

变更软件包测试子系统:所述变更软件包测试子系统用于:

调用冲突软件包分类子系统,并确定要测试的软件包应在哪个列表中;

根据确定的列表,调用软件包安装验证子系统进行安装兼容性验证。

本发明还提供了一种计算机可读存储介质,其上存储有指令,当该指令被执行时,实现执行上述的yum源完整性测试方法。

本发明取得的技术效果为:通过分析yum源中的repodata,将软件包按照冲突关系进行分类,减少了人工干预的需求,且能使用户能够清楚地了解每个软件包的冲突关系,通过将具有冲突关系的软件包放到不同的列表中,可以避免不同冲突软件包列表中的软件包同时安装导致的问题,提高系统的稳定性,而基础软件包列表中的软件包可以和任何冲突软件包列表中的软件包一起安装,简化了用户的操作流程,提高了用户体验。

本发明的软件包安装验证子系统可以验证基础软件包列表中软件包和各个冲突软件包列表中的软件包的兼容性,确保在安装过程中不会出现问题,安装完成后,还可以完成与update软件源的兼容性验证,保证系统的稳定和安全性。

本发明的变更软件包测试子系统可以根据需要调用冲突软件包分类子系统确定软件包应在的列表,并进行相应的安装兼容性验证,方便进行变更管理。

附图说明

图1是本发明的整体架构图;

图2是本发明中冲突软件包列表划分示意图;

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合说明书附图对本发明的具体实施方式做详细的说明。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。

其次,此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本说明书中不同地方出现的“在一个较佳的实施方式中”并非均指同一个实施例,也不是单独的或选择性的与其他实施例互相排斥的实施例。

再其次,本发明结合示意图进行详细描述,在详述本发明实施例时,为便于说明,表示器件结构的剖面图会不依一般比例作局部放大,而且所述示意图只是示例,其在此不应限制本发明保护的范围。此外,在实际制作中应包含长度、宽度及深度的三维空间尺寸。

实施例1

请参阅附图1所示,为本发明第一个实施例,该实施例提供了一种yum源完整性测试方法,包括以下步骤:

读取当前已有软件源中的所有软件包,分析每个软件包的依赖关系,找出具有冲突关系的软件包;

将具有冲突关系的软件包放到不同的列表中,生成多个列表,其中多个列表包括基础软件包列表、冲突软件包列表1、冲突软件包列表2、……冲突软件包列表n;

从基础软件包列表中选择一个软件包,尝试在基础软件包列表的基础上安装该软件包;

安装完成后,进行和update软件源的兼容性验证,并输出验证结果;

其中,在变更软件时,调用冲突软件包分类子系统,确定要测试的软件包应在哪个列表中,所述变更软件包括新软件包引入或升级软件包。

根据确定的列表,调用软件包安装验证子系统进行安装兼容性验证,并输出验证结果。

在上述方法中,通过分析软件包的依赖关系,找出具有冲突关系的软件包,并将其放到不同的列表中,可以避免在安装过程中出现冲突,提高系统的稳定性,同时将具有冲突关系的软件包分到不同的列表中,用户只需要关注特定列表中的软件包,避免了混淆和错误,在安装完成后进行与update软件源的兼容性验证,可以确保新安装的软件包与现有系统的其他软件包兼容,避免潜在的问题和冲突。

需要说明的是,基础软件包列表中的软件包可以和任何冲突软件包列表中的软件包一起安装,冲突软件包列表中的软件包和其他冲突软件包列表中的软件包不能一起安装。

采用上述方式,通过将软件包按照是否具有冲突进行分类,用户只需要关注特定列表中的软件包,避免了混淆和错误,使得软件包的管理变得更加清晰和方便,在安装完成之后,进行与update软件源的兼容性验证可以确保新安装的软件包与现有系统的其他软件包兼容,避免潜在的问题和冲突,且由于已经对具有冲突关系的软件包进行了分类和管理,因此在安装时可以避免因冲突软件包同时存在而导致的错误。

在其中一个较佳的实施中,所述软件包的冲突列表通过yum源中的repodata进行分析分类;

请参阅图2,具体的分类方法为:

获取everything的repoda,获取list1列表中的所有项目;

获取冲突软件包list2和list3列表中的所有项目;

将list2和list3列表中的软件包及其依赖项合并到一个总的软件包列表中;

从list1中移除对list2和list3的依赖;

安装并验证list1和整合后的list2,然后根据需要调整list2。

需要安装并验证list1和整合后的list3,然后根据需要调整list3。

完成验证。

在上述分类中,将多个列表的软件包进行整合和管理,使得软件包的管理变得更加清晰和方便。例如,可以将list1、list2和list3中的软件包及其依赖项整合到一个总的软件包列表中,然后根据需要进行调整,在安装并验证软件包的过程中,可以确保新安装的软件包与现有系统的其他软件包兼容,避免潜在的问题和冲突。例如,在安装并验证list1和整合后的list2之后,可以根据需要调整list2,以确保其与list1的兼容性,在安装并验证软件包的过程中,可以确保软件包的稳定性和可靠性。例如,在安装并验证list1和整合后的list2之后,可以根据需要调整list2,以确保其稳定性和可靠性。

在其中一个较佳的实施方式中,所述尝试在基础软件包列表的基础上安装该软件包前需进行基础软件包列表中软件包和各个冲突软件包列表中的软件包兼容性验证,是否可以在基础软件包列表基础上安装任意一个冲突软件包列表中的软件包。

具体的,在尝试安装一个冲突软件包列表中的软件包之前,需要进行兼容性验证。这是因为基础软件包列表中的软件包和冲突软件包列表中的软件包之间可能存在依赖关系或兼容性问题。如果在没有进行验证的情况下直接安装,可能会导致系统不稳定、功能缺失或其他潜在问题。在完成所有冲突软件包的兼容性验证后,可以选择性地安装其中一个或多个冲突软件包。在安装过程中,务必密切关注系统状态,以便及时发现并解决可能出现的问题。

在其中一个较佳的实施方式中,冲突软件包分类子系统、软件包安装验证子系统和变更软件包测试子系统均集成在一个自动化的软件包管理系统中,部署的过程中所有的操作全部自动化,无需人工干预,对于传统的手动部署来说,一旦项目增多,部署频繁,整体效率就会低下,而自动化部署可以显著提高效率。可以使用户更方便地管理系统中的软件,并确保软件的正确性和稳定性。它通常包含一个软件仓库,其中存储了各种软件包及其相关信息,包括版本、依赖关系和许可证等。

在一个较佳的实施方式中,变更软件包测试子系统还能够根据用户的选择,只对特定的冲突软件包列表进行验证,在不需要对所有软件包进行验证的情况下,仅对特定的冲突软件包进行验证,可以节省计算资源,提高验证速度,用户可以根据自己的需要选择需要验证的软件包,提高了系统的灵活性。

实施例2

本发明还提供了一种yum源完整性测试系统,该系统包括:

冲突软件包分类子系统,所述冲突软件包分类子系统用于:

读取当前已有软件源中的所有软件包,分析每个软件包的依赖关系,找出具有冲突关系的软件包;

将具有冲突关系的软件包放到不同的列表中,生成多个列表:基础软件包列表、冲突软件包列表1、冲突软件包列表2、冲突软件包列表n;

软件包安装验证子系统,所述软件包安装验证子系统用于:

从基础软件包列表中选择一个软件包;

尝试在基础软件包列表的基础上安装该软件包;

安装完成后,进行和update软件源的兼容性验证;

输出验证结果;

变更软件包测试子系统:所述变更软件包测试子系统用于:

调用冲突软件包分类子系统,并确定要测试的软件包应在哪个列表中;

根据确定的列表,调用软件包安装验证子系统进行安装兼容性验证。

实施例3

本发明还提供了一种计算机可读存储介质,其上存储有指令,当该指令被执行时,实现上述的yum源完整性测试方法。

本发明的工作原理为:通过分析yum源中的repodata,将软件包按照冲突关系进行分类,减少了人工干预的需求,且能使用户能够清楚地了解每个软件包的冲突关系,通过将具有冲突关系的软件包放到不同的列表中,可以避免不同冲突软件包列表中的软件包同时安装导致的问题,提高系统的稳定性,而基础软件包列表中的软件包可以和任何冲突软件包列表中的软件包一起安装,简化了用户的操作流程,提高了用户体验;

软件包安装验证子系统可以验证基础软件包列表中软件包和各个冲突软件包列表中的软件包的兼容性,确保在安装过程中不会出现问题,安装完成后,还可以完成与update软件源的兼容性验证,保证系统的稳定和安全性。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本发明中未具体描述和解释说明的结构、装置以及操作方法,如无特别说明和限定,均按照本领域的常规手段进行实施。

技术分类

06120116587965