CN110990051B - 软件包依赖关系的维护方法、装置、介质和设备 - Google Patents
软件包依赖关系的维护方法、装置、介质和设备 Download PDFInfo
- Publication number
- CN110990051B CN110990051B CN201911185697.3A CN201911185697A CN110990051B CN 110990051 B CN110990051 B CN 110990051B CN 201911185697 A CN201911185697 A CN 201911185697A CN 110990051 B CN110990051 B CN 110990051B
- Authority
- CN
- China
- Prior art keywords
- software package
- interface
- dependency
- file
- target file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Abstract
本发明涉及一种软件包依赖关系的维护方法、装置、介质和设备,可以对编译输出的至少一个目标文件进行扫描,自动确定出依赖接口表,从而可以根据获取的接口与软件包版本关联表、以及依赖接口表,自动确定出目标文件对应的依赖软件包表,使得在生成至少一个目标文件对应的目标软件包时,可以根据依赖软件包表自动包含正确的软件包依赖描述。无需开发人员手工维护软件包依赖关系,减少人力资源的浪费,并可以有效提高软件包依赖关系维护效率和准确性。
Description
技术领域
本发明涉及网络通信技术领域,特别涉及一种软件包依赖关系的维护方法、装置、介质和设备。
背景技术
网络操作系统多采用模块化开发方式,即将系统功能划分为若干个功能内聚的模块,单个模块可能由驱动程序、服务程序、库程序等多个文件构成,把这些文件放在软件包中维护,一个模块对应一个软件包。软件包之间可能存在依赖关系,所谓的软件包依赖,实际是接口的依赖。
假设A软件包中的bar_server服务程序使用了B软件包中的libfoo库程序的某个接口foo_api1,该接口在B软件包的1.2.0版本才开始提供,那么A软件包就对B软件包存在依赖,依赖关系可以描述为B>=1.2.0。只有当设备上的B软件包版本大于等于1.2.0,才允许安装A软件包,否则不允许安装。
目前软件包依赖关系的维护方式,可以使用gcc编译工具的符号版本机制,由软件包开发人员为接口分配符号版本。这要求软件包开发人员维护一个.vers文件,该文件举例如下:
上述.vers文件表示在符号版本TEST_1.0中提供了接口ex_func1,在TEST_1.1版本中继承了符号版本TEST_1.0的接口并再提供一个新接口ex_func2。
此外,还要为符号版本和软件包版本建立关联关系,这要求软件包开发人员维护一个.depends文件,该文件举例如下:
[depends]
TEST_1.0=B(>=1.1.0)
TEST_1.1=B(>=1.2.0)
上述.depends文件表示符号版本TEST_1.0在B软件包1.1.0版本开始提供,符号版本TEST_1.1在B软件包1.2.0版本开始提供。
假设A软件包的bar_server服务程序使用了ex_func1接口,gcc在编译bar_server服务程序时会将ex_func1接口所属的符号版本TEST_1.0记录在bar_server服务程序对应的目标文件(可以简单记为bar_server目标文件)中。在打包时,打包程序读取bar_server目标文件中的符号版本TEST_1.0,再通过.depends文件确定符号版本TEST_1.0由B软件包的1.1.0版本开始提供,那么打包程序会将依赖关系(B>=1.1.0)写入A软件包。
上述软件包依赖关系的维护方式中,在打包时可以自动创建正确的软件包依赖关系,而创建软件包依赖关系依据的.vers和.depends文件需要由软件包开发人员手工维护,这会浪费人力资源、降低维护的效率和准确性。
发明内容
本发明实施例提供一种软件包依赖关系的维护方法、装置、介质和设备,用于解决软件包依赖关系维护浪费人力资源,效率和准确率低的问题。
本发明提供了一种软件包依赖关系的维护方法,所述方法包括:
扫描编译输出的至少一个目标文件,确定依赖接口表,所述依赖接口表包括所述至少一个目标文件依赖的接口;
获取接口与软件包版本关联表,所述接口与软件包版本关联表包括每个完成归档的软件包对应的软件包名称、软件包版本和提供的所有接口的对应关系;
根据所述接口与软件包版本关联表、以及所述依赖接口表,确定所述至少一个目标文件对应的依赖软件包表,所述依赖软件包表包括所述至少一个目标文件依赖的软件包名称和软件包版本。
本发明还提供了一种软件包依赖关系的维护装置,所述装置包括:
依赖接口扫描模块,用于扫描编译输出的至少一个目标文件,确定依赖接口表,所述依赖接口表包括所述至少一个目标文件依赖的接口;
获取模块,用于获取接口与软件包版本关联表,所述接口与软件包版本关联表包括每个完成归档的软件包对应的软件包名称、软件包版本和提供的所有接口的对应关系;
依赖绑定模块,用于根据获取的接口与软件包版本关联表、以及所述依赖接口表,确定所述至少一个目标文件对应的依赖软件包表,所述依赖软件包表包括所述至少一个目标文件依赖的软件包名称和软件包版本。
本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有可执行程序,该可执行程序被处理器执行实现如上所述的方法。
本发明还提供了一种软件包依赖关系的维护设备,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述方法的步骤。
根据本发明实施例提供的方案,可以对编译输出的目标文件进行扫描,自动确定出依赖接口表,从而可以根据获取的接口与软件包版本关联表、以及依赖接口表,自动确定出目标文件对应的依赖软件包表,无需开发人员手工维护软件包依赖关系,减少人力资源的浪费,并可以有效提高软件包依赖关系维护的效率和准确性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的软件包依赖关系维护系统的结构示意图;
图2为本发明实施例一提供的导出接口扫描模块的工作流程示意图;
图3为本发明实施例一提供的依赖接口扫描模块的工作流程示意图;
图4为本发明实施例一提供的依赖绑定模块的工作流程示意图;
图5为本发明实施例一提供的打包模块的工作流程示意图;
图6为本发明实施例二提供的归档系统的结构示意图;
图7为本发明实施例三提供的编译系统的结构示意图;
图8为本发明实施例四提供的软件包依赖关系的维护方法的步骤流程图;
图9为本发明实施例五提供的软件包依赖关系的维护方法的步骤流程图;
图10为本发明实施例六提供的软件包依赖关系的维护设备的结构示意图。
具体实施方式
为了解决现有的维护软件包依赖关系的方案存在的问题,本发明实施例提供一种自动维护软件包依赖关系的方案,消除手工维护软件包依赖关系的各种弊端。
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本文中提及的“多个或者若干个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
本发明实施例一提供一种软件包依赖关系的维护系统,该系统的结构可以如图1所示,包括:
导出接口扫描模块11用于对每个完成归档的软件包进行扫描,来更新接口与软件包版本关联表(接口与软件包版本关联表初始可以为空),所述接口与软件包版本关联表包括每个完成归档的软件包对应的软件包名称、软件包版本和提供的所有接口的对应关系;
依赖接口扫描模块12用于扫描编译输出的至少一个目标文件,确定依赖接口表,所述依赖接口表包括所述至少一个目标文件依赖的接口;
需要说明的是,如果编译输出的目标文件不止一个,那么依赖接口扫描模块12会对编译输出的所有目标文件进行扫描。确定出的依赖接口表可以理解为所有目标文件依赖的接口的去重列表。
依赖绑定模块13用于根据所述接口与软件包版本关联表、以及所述依赖接口表,确定所述至少一个目标文件对应的依赖软件包表,所述依赖软件包表包括所述至少一个目标文件依赖的软件包名称和软件包版本。
需要说明的是,依赖绑定模块13确定出的依赖软件包表,可以理解为至少一个目标文件对应的目标软件包所对应的依赖软件包表。依赖软件包表可以理解为至少一个目标文件依赖的每个接口对应的软件包去重后,对应的软件包名称和软件包版本列表,即可以理解为至少一个目标文件对应的目标软件包依赖的所有软件包去重后,对应的软件包名称和软件包版本列表。
所述系统还可以进一步包括打包模块14:
打包模块14用于打包所述至少一个目标文件和所述依赖软件包表,生成目标软件包。
根据依赖软件包表,打包模块14生成的目标软件包中可以包含正确的软件包依赖描述。即可以理解为打包模块14生成的目标软件包中,包括依赖软件包中名称相同的软件包的最高版本对应的软件包名称和软件包版本信息。
可以理解为,导出接口扫描模块11可以扫描出哪些软件包的哪些版本提供了哪些接口,并记录为接口与软件包版本关联表。依赖接口扫描模块12可以扫描出目标文件依赖的接口,并记录为依赖接口表。依赖绑定模块13可以根据输入的依赖接口表和接口与软件包版本关联表,输出依赖软件包表。打包模块14可以根据输入的目标文件和依赖软件包表,输出包含正确软件包依赖关系的目标软件包。
如图1所示,在本实施例提供的方案中,导出接口扫描模块11可以但不限于嵌入在归档系统中,实现自动化更新接口与软件包版本关联表。依赖接口扫描模块12、依赖绑定模块13和打包模块14可以但不限于嵌入在编译系统中,并可以结合接口与软件包版本关联表,实现自动化维护软件包依赖关系。
下面结合图1所提供的示意图,以导出接口扫描模块11嵌入在归档系统中,依赖接口扫描模块12、依赖绑定模块13和打包模块14嵌入在编译系统中为例,对本发明实施例一提供的方案进行简单说明。
完成归档的软件包(包括软件包名称为A、软件包版本为1.1.0的软件包(简单记为A_1.1.0),软件包名称为A、软件包版本为1.2.0的软件包(简单记为A_1.2.0),软件包名称为B、软件包版本为1.1.0的软件包(简单记为B_1.1.0),以及软件包名称为B、软件包版本为1.2.0的软件包(简单记为B_1.2.0))作为导出接口扫描模块的输入,由导出接口扫描模块对其进行扫描,并输出对应的接口与软件包版本关联表。
在编译系统中,输入的C模块源代码经过编译后,得到输出的至少一个目标文件。编译输出的至少一个目标文件作为依赖接口扫描模块的输入,由依赖接口扫描模块对其进行扫描,并输出对应的依赖接口表。
依赖接口表以及接口与软件包版本关联表作为依赖绑定模块的输入,由依赖绑定模块根据其确定出对应的依赖软件包表并输出。
进一步的,编译输出的至少一个目标文件以及依赖软件包表作为打包模块的输入,由打包模块进行打包,生成目标软件包(在图1中记为软件包名称为C、软件包版本为1.1.0的软件包(简单记为C_1.1.0))。
需要进一步说明的是,在一种可能的实现方式中,所述导出接口扫描模块11对每个完成归档的软件包进行扫描,来更新接口与软件包版本关联表,可以包括:
利用文件提取命令,提取每个完成归档的软件包内的选定文件;
利用库文件获取命令,从提取出的选定文件中获取库文件;
利用接口获取命令,获取每个库文件提供的接口;
将确定出的每个完成归档的软件包对应的软件包名称、软件包版本、以及获取到的接口更新到接口与软件包版本关联表。
此时,导出接口扫描模块的工作流程示意图可以如图2所示,包括:
1、提取软件包内的选定文件。
如图2所示,以软件包(在图2中示意为软件包名称为B、软件包版本为1.1.0的软件包(简单记为B_1.1.0))为deb格式为例,可以使用dpkg-x命令将该软件包内的选定文件提取到output目录。
2、找出软件包内的所有库文件。
如图2所示,可以但不限于配合使用find、file、grep、awk命令,从提取出的选定文件中获取库文件列表。
3、找出库文件提供的接口。
如图2所示,可以但不限于配合使用readelf、grep、awk、sed命令,获取到步骤2找出的所有库文件提供的接口列表。
4、将软件包名称、软件包版本、软件包内所有库文件提供的接口列表更新到接口与软件包版本关联表(在图2中简单记为接口-软件包关联表)。
如图2所示,对接口与软件包版本关联表实现更新后,还可以输出接口与软件包版本关联表,便于后续对接口与软件包版本关联表的使用。
在一种可能的实现方式中,所述依赖接口扫描模块12对编译输出的至少一个目标文件进行扫描,确定依赖接口表,可以包括:
利用目标文件获取命令,获取编译输出的至少一个目标文件;
利用接口获取命令,获取每个目标文件依赖的接口;
将获取的接口输出到依赖接口表。
此时,依赖接口扫描模块的工作流程示意图可以如图3所示,包括:
1、找出编译输出的所有目标文件。
如图3所示,可以但不限于配合使用find、file、grep、awk命令,获取目标文件列表。
2、找出目标文件依赖的接口。
如图3所示,可以但不限于配合使用readelf、grep、awk、sed命令,获取到所有目标文件依赖的接口列表。
3、将所有目标文件依赖的接口列表输出到依赖接口表。
如图3所示,还可以进一步输出依赖接口表,便于后续对依赖接口表的使用。
在一种可能的实现方式中,所述依赖绑定模块13根据所述接口与软件包版本关联表、以及所述依赖接口表,确定所述至少一个目标文件对应的依赖软件包表,可以包括:
遍历所述依赖接口扫描模块确定出的依赖接口表中的每个接口,从所述接口与软件包版本关联表中查找提供遍历到的接口的软件包名称和软件包版本;
将查找出的软件包名称和软件包版本输出到所述至少一个目标文件对应的依赖软件包表。
此时,依赖绑定模块的工作流程示意图可以如图4所示,包括:
1、下载接口-软件包关联表(即接口与软件包版本关联表)。
在本实施例中,可以使用任意的文件下载方式下载接口-软件包关联表。例如,ftp、sftp、tftp、http、git、svn等。如图4所示使用支持http的wget命令进行下载。当然,需要说明的是,获取接口-软件包关联表的方式不限于下载的方式。
2、遍历依赖接口表的每一个接口,从接口-软件包关联表查找提供遍历到的接口的软件包名称和软件包版本。
在本实施例中,可以但不限于在循环中使用grep命令的正则表达式进行匹配查找。
3、将匹配的软件包名称、软件包版本信息输出到依赖软件包表。
如图4所示,还可以进一步输出依赖软件包表,便于后续对依赖软件包表的使用。
在一种可能的实现方式中,所述打包模块14打包所述至少一个目标文件和所述依赖软件包表,生成目标软件包,可以包括:
解析所述依赖绑定模块确定出的依赖软件包表,将解析出的软件包名称和软件包版本写入描述文件;
根据所述至少一个目标文件和所述描述文件创建目标软件包。此时,打包模块的工作流程示意图可以如图5所示,包括:
1、解析依赖软件包表,将依赖的软件包名称、软件包版本信息写入目标软件包的描述文件。
以目标软件包为deb格式为例,可以将软件包依赖信息写入control文件的Depends域。
2、创建目标软件包。
以目标软件包为deb格式为例,可以但不限于使用tar、ar等命令,构建目标软件包.deb,该软件包包含了正确的软件包依赖信息。
进一步地,如图5所示,还可以输出创建的目标软件包,便于后续对目标软件包的使用。
根据本发明实施例提供的方案,可以由归档系统和编译系统自动化维护软件包依赖关系,不再需要内部软件包开发人员手工维护接口与软件包版本的关系、以及软件包间的依赖关系,节省了开发资源,提升了开发效率。软件包依赖关系由手工维护转为系统自动化维护,完全消除了手工操作引入错误的风险。
与实施例一提供的系统对应的,提供以下的装置。
实施例二
本发明实施例二提供一种软件包依赖关系的维护装置,以该装置集成在归档系统中为例,该归档系统(亦可以理解为软件包依赖关系维护装置)的结构可以如图6所示,包括导出接口扫描模块21:
导出接口扫描模块21用于对每个完成归档的软件包进行扫描,来更新接口与软件包版本关联表(接口与软件包版本关联表初始可以为空),所述接口与软件包版本关联表包括每个完成归档的软件包对应的软件包名称、软件包版本和提供的所有接口的对应关系;
以便依赖接口扫描模块对编译输出的至少一个目标文件进行扫描,确定依赖接口表,所述依赖接口表包括所述至少一个目标文件依赖的接口;以及,依赖绑定模块根据所述接口与软件包版本关联表、以及所述依赖接口表,确定所述至少一个目标文件对应的依赖软件包表,所述依赖软件包表包括所述至少一个目标文件依赖的软件包名称和软件包版本。
下面结合图6对本实施例提供的归档系统进行简单说明。
如图6所示,软件包开发者将准备发布的软件包提交到归档系统后,归档系统对输入的软件包完成归档。经过归档的软件包输出后,作为导出接口扫描模块的输入,由导出接口扫描模块对该软件包进行扫描,获得该软件包提供的所有接口,并可以将该软件包名称、版本、提供的接口等信息更新到接口-软件包版本关联表(即接口与软件包版本关联表)。
实施例三
本发明实施例三提供一种软件包依赖关系的维护装置,以该装置集成在编译系统中为例,该编译系统(亦可以理解为软件包依赖关系维护装置)的结构可以如图7所示,包括依赖接口扫描模块31、获取模块32和依赖绑定模块33,其中:
依赖接口扫描模块31用于扫描编译输出的至少一个目标文件,确定依赖接口表,所述依赖接口表包括所述至少一个目标文件依赖的接口;
获取模块32用于获取接口与软件包版本关联表,所述接口与软件包版本关联表包括每个完成归档的软件包对应的软件包名称、软件包版本和提供的所有接口的对应关系;
依赖绑定模块33用于根据从所述获取模块32获取的接口与软件包版本关联表、以及所述依赖接口表,确定所述至少一个目标文件对应的依赖软件包表,所述依赖软件包表包括所述至少一个目标文件依赖的软件包名称和软件包版本。
获取模块32获取的所述接口与软件包版本关联表,可以进一步通过对每个完成归档的软件包进行扫描,来实现更新。所述装置还包括更新模块34,用于:
利用文件提取命令,提取每个完成归档的软件包内的选定文件;
利用库文件获取命令,从提取出的选定文件中获取库文件;
利用接口获取命令,获取每个库文件提供的接口;
将确定出的每个完成归档的软件包对应的软件包名称、软件包版本、以及获取到的接口更新到接口与软件包版本关联表。
获取模块32和更新模块34可以理解为共同构成本实施例提供的装置中的导出接口扫描模块,并和实施例一提供的导出接口扫描模块具有相同的功能,本实施例不再赘述。
需要说明的是,在一种可能的实现方式中,获取模块32和更新模块34的功能可以由实施例二提供的装置中的导出接口扫描模块提供。
所述编译系统还包括打包模块35:
打包模块35用于打包所述至少一个目标文件和所述依赖软件包表,生成目标软件包。
需要说明的是,本实施例中与本发明实施例一提供的系统中各相同名称模块的功能可以相同,本实施例不再赘述。
下面以接口与软件包版本关联表是实施例二提供的装置中的导出接口扫描模块确定出的为例,结合图7对本实施例提供的编译系统进行简单说明。
如图7所示,软件包开发者将源代码提交到编译系统后,编译系统对输入的源代码编译输出至少一个目标文件。编译系统调用依赖接口扫描模块对输入的至少一个目标文件进行扫描,得到依赖接口表并输出。
编译系统调用依赖绑定模块从归档系统(可以理解为导出接口扫描模块)下载接口-软件包版本关联表(即接口与软件包版本关联表),并综合处理输入的依赖接口表和接口-软件包版本关联表,输出依赖软件包表。
编译系统调用打包模块,综合处理至少一个目标文件和依赖软件包表,自动构建出包含正确的软件包依赖关系的目标软件包,并可以输出得到的目标软件包。
与实施例一提供的系统对应的,提供以下的方法。
实施例四
本发明实施例四提供一种软件包依赖关系的维护方法,该方法的步骤流程可以如图8所示,包括:
步骤101、确定完成归档的软件包。
步骤102、确定接口与软件包版本关联表。
在本步骤中,可以对每个完成归档的软件包进行扫描,来更新接口与软件包版本关联表(接口与软件包版本关联表初始可以为空),所述接口与软件包版本关联表包括每个完成归档的软件包对应的软件包名称、软件包版本和提供的所有接口的对应关系;
以便对编译输出的至少一个目标文件进行扫描,确定依赖接口表,所述依赖接口表包括所述至少一个目标文件依赖的接口;以及,根据所述接口与软件包版本关联表、以及所述依赖接口表,确定所述至少一个目标文件对应的依赖软件包表,所述依赖软件包表包括所述至少一个目标文件依赖的软件包名称和软件包版本。
实施例五
本发明实施例五提供一种软件包依赖关系的维护方法,该方法的步骤流程可以如图9所示,包括:
步骤201、确定依赖接口表。
在本步骤中,可以扫描编译输出的至少一个目标文件,确定依赖接口表,所述依赖接口表包括所述至少一个目标文件依赖的接口。
在一种可能的实现方式中,扫描编译输出的至少一个目标文件,确定依赖接口表,可以包括:
利用目标文件获取命令,获取编译输出的至少一个目标文件;
利用接口获取命令,获取每个目标文件依赖的接口;
将获取的接口输出到依赖接口表。
步骤202、确定依赖软件包表。
在本步骤中,可以根据获取的接口与软件包版本关联表、以及所述依赖接口表,确定所述至少一个目标文件对应的依赖软件包表,所述依赖软件包表包括所述至少一个目标文件依赖的软件包名称和软件包版本;
其中,所述接口与软件包版本关联表包括每个完成归档的软件包对应的软件包名称、软件包版本和提供的所有接口的对应关系。
获取的所述接口与软件包版本关联表,可以进一步通过对每个完成归档的软件包进行扫描,来实现更新。对所述接口与软件包版本关联表的更新可以包括:
利用文件提取命令,提取每个完成归档的软件包内的选定文件;
利用库文件获取命令,从提取出的选定文件中获取库文件;
利用接口获取命令,获取每个库文件提供的接口;
将确定出的每个完成归档的软件包对应的软件包名称、软件包版本、以及获取到的接口更新到接口与软件包版本关联表。
在一种可能的实现方式中,在本步骤中,根据所述接口与软件包版本关联表、以及所述依赖接口表,确定所述至少一个目标文件对应的依赖软件包表,可以包括:
遍历依赖接口表中的每个接口,从所述接口与软件包版本关联表中查找提供遍历到的接口的软件包名称和软件包版本;
将查找出的软件包名称和软件包版本输出到所述至少一个目标文件对应的依赖软件包表。
进一步的,本实施例还可以包括步骤203:
步骤203、打包生成目标软件包。
在本步骤中,可以打包所述至少一个目标文件和所述依赖软件包表,生成目标软件包。
在一种可能的实现方式中,在本步骤中,打包所述至少一个目标文件和所述依赖软件包表,生成目标软件包,可以包括:
解析所述依赖软件包表,将解析出的软件包名称和软件包版本写入描述文件;
根据所述至少一个目标文件和所述描述文件创建目标软件包。
需要说明的是,打包生成的目标软件包完成归档后,也可以用于更新接口与软件包版本关联表。
基于同一发明构思,本发明实施例提供以下的设备和介质。
实施例六
本发明实施例六提供一种软件包依赖关系的维护设备,该设备的结构可以如图10所示,包括至少一个处理器41;以及与所述至少一个处理器通信连接的存储器42;其中,所述存储器42存储有可被所述至少一个处理器41执行的指令,所述指令被所述至少一个处理器41执行,以使所述至少一个处理器41能够执行本发明实施例四和五所述方法的步骤。
可选的,所述处理器41具体可以包括中央处理器(CPU)、特定应用集成电路(ASIC,application specific integrated circuit),可以是一个或多个用于控制程序执行的集成电路,可以是使用现场可编程门阵列(FPGA,field programmable gate array)开发的硬件电路,可以是基带处理器。
可选的,所述处理器41可以包括至少一个处理核心。
可选的,所述存储器42可以包括只读存储器(ROM,read only memory)、随机存取存储器(RAM,random access memory)和磁盘存储器。存储器42用于存储至少一个处理器41运行时所需的数据。存储器42的数量可以为一个或多个。
本发明实施例七提供一种非易失性计算机存储介质,所述计算机存储介质存储有可执行程序,当可执行程序被处理器执行时,实现本发明实施例四和五提供的方法。
在具体的实施过程中,计算机存储介质可以包括:通用串行总线闪存盘(USB,Universal Serial Bus flash drive)、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的存储介质。
在本发明实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性或其它的形式。
在本发明实施例中的各功能单元可以集成在一个处理单元中,或者各个单元也可以均是独立的物理模块。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备,例如可以是个人计算机,服务器,或者网络设备等,或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(universal serial bus flash drive)、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (9)
1.一种软件包依赖关系的维护方法,其特征在于,所述方法包括:
扫描编译输出的至少一个目标文件,确定依赖接口表,所述依赖接口表包括所述至少一个目标文件依赖的接口;
获取接口与软件包版本关联表,所述接口与软件包版本关联表包括每个完成归档的软件包对应的软件包名称、软件包版本和提供的所有接口的对应关系;
根据所述接口与软件包版本关联表、以及所述依赖接口表,确定所述至少一个目标文件对应的依赖软件包表,所述依赖软件包表包括所述至少一个目标文件依赖的软件包名称和软件包版本;
所述方法还包括:
打包所述至少一个目标文件和所述依赖软件包表,生成目标软件包。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
利用文件提取命令,提取每个完成归档的软件包内的选定文件;
利用库文件获取命令,从提取出的选定文件中获取库文件;
利用接口获取命令,获取每个库文件提供的接口;
将确定出的每个完成归档的软件包对应的软件包名称、软件包版本、以及获取到的接口更新到接口与软件包版本关联表。
3.如权利要求1所述的方法,其特征在于,扫描编译输出的至少一个目标文件,确定依赖接口表,包括:
利用目标文件获取命令,获取编译输出的至少一个目标文件;
利用接口获取命令,获取每个目标文件依赖的接口;
将获取的接口输出到依赖接口表。
4.如权利要求1所述的方法,其特征在于,根据所述接口与软件包版本关联表、以及所述依赖接口表,确定所述至少一个目标文件对应的依赖软件包表至少一个目标文件,包括:
遍历所述依赖接口表中的每个接口,从所述接口与软件包版本关联表中查找提供遍历到的接口的软件包名称和软件包版本;
将查找出的软件包名称和软件包版本输出到所述至少一个目标文件对应的依赖软件包表。
5.如权利要求1所述的方法,其特征在于,打包所述至少一个目标文件和所述依赖软件包表,生成目标软件包,包括:
解析所述依赖软件包表,将解析出的软件包名称和软件包版本写入描述文件;
根据所述至少一个目标文件和所述描述文件创建目标软件包。
6.一种软件包依赖关系的维护装置,其特征在于,所述装置包括:
依赖接口扫描模块,用于扫描编译输出的至少一个目标文件,确定依赖接口表,所述依赖接口表包括所述至少一个目标文件依赖的接口;
获取模块,用于获取接口与软件包版本关联表,所述接口与软件包版本关联表包括每个完成归档的软件包对应的软件包名称、软件包版本和提供的所有接口的对应关系;
依赖绑定模块,用于根据获取的接口与软件包版本关联表、以及所述依赖接口表,确定所述至少一个目标文件对应的依赖软件包表,所述依赖软件包表包括所述至少一个目标文件依赖的软件包名称和软件包版本;
所述装置还包括:
打包模块,用于打包所述至少一个目标文件和所述依赖软件包表,生成目标软件包。
7.如权利要求6所述的装置,其特征在于,所述装置还包括更新模块,用于:
利用文件提取命令,提取每个完成归档的软件包内的选定文件;
利用库文件获取命令,从提取出的选定文件中获取库文件;
利用接口获取命令,获取每个库文件提供的接口;
将确定出的每个完成归档的软件包对应的软件包名称、软件包版本、以及获取到的接口更新到接口与软件包版本关联表。
8.一种非易失性计算机存储介质,其特征在于,所述计算机存储介质存储有可执行程序,该可执行程序被处理器执行实现权利要求1~5任一所述的方法。
9.一种软件包依赖关系的维护设备,其特征在于,所述设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1~5任一权利要求所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911185697.3A CN110990051B (zh) | 2019-11-27 | 2019-11-27 | 软件包依赖关系的维护方法、装置、介质和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911185697.3A CN110990051B (zh) | 2019-11-27 | 2019-11-27 | 软件包依赖关系的维护方法、装置、介质和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110990051A CN110990051A (zh) | 2020-04-10 |
CN110990051B true CN110990051B (zh) | 2023-07-21 |
Family
ID=70087496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911185697.3A Active CN110990051B (zh) | 2019-11-27 | 2019-11-27 | 软件包依赖关系的维护方法、装置、介质和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110990051B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113535220B (zh) * | 2020-04-15 | 2023-11-03 | 北京京东振世信息技术有限公司 | 一种代码包管理方法和装置 |
CN112416421A (zh) * | 2020-11-17 | 2021-02-26 | 用友网络科技股份有限公司 | 软件依赖关系分析方法、分析装置和可读存储介质 |
CN114816393B (zh) * | 2022-05-18 | 2023-12-19 | 北京百度网讯科技有限公司 | 信息生成方法、装置、设备以及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015057188A1 (en) * | 2013-10-14 | 2015-04-23 | Hewlett-Packard Development Company, L.P. | Package dependency maps for distributed computing |
CN106371838A (zh) * | 2016-08-31 | 2017-02-01 | 福建联迪商用设备有限公司 | 一种维护软件包依赖关系的方法及系统 |
CN106980501A (zh) * | 2017-02-23 | 2017-07-25 | 北京小鸟看看科技有限公司 | 一种软件包管理方法、装置和系统 |
CN107562464A (zh) * | 2017-09-13 | 2018-01-09 | 郑州云海信息技术有限公司 | 一种命令行接口的调用方法、装置及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7774771B2 (en) * | 2005-09-26 | 2010-08-10 | InstallShield, Inc. | Method and system for managing and organizing software package installations |
-
2019
- 2019-11-27 CN CN201911185697.3A patent/CN110990051B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015057188A1 (en) * | 2013-10-14 | 2015-04-23 | Hewlett-Packard Development Company, L.P. | Package dependency maps for distributed computing |
CN106371838A (zh) * | 2016-08-31 | 2017-02-01 | 福建联迪商用设备有限公司 | 一种维护软件包依赖关系的方法及系统 |
CN106980501A (zh) * | 2017-02-23 | 2017-07-25 | 北京小鸟看看科技有限公司 | 一种软件包管理方法、装置和系统 |
CN107562464A (zh) * | 2017-09-13 | 2018-01-09 | 郑州云海信息技术有限公司 | 一种命令行接口的调用方法、装置及设备 |
Non-Patent Citations (1)
Title |
---|
Android系统非应用层软件的管理和优化;蔡完锡等;《计算机工程与设计》;20160516(第05期);第1375-1383页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110990051A (zh) | 2020-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110990051B (zh) | 软件包依赖关系的维护方法、装置、介质和设备 | |
CN106775723B (zh) | 基于Android平台的系统固件定制的方法和Android设备 | |
US10782936B1 (en) | Programming migration system and methods | |
US20120174061A1 (en) | Code suggestion in a software development tool | |
EP2597579A1 (en) | Database backing-up and recovering method and device | |
CN111796831B (zh) | 一种多芯片兼容的编译方法和装置 | |
CN107506219A (zh) | 一种基于Android系统的通用版本升级方法 | |
CN110442371B (zh) | 一种发布代码的方法、装置、介质及计算机设备 | |
US20100162217A1 (en) | Debugging System Using Static Analysis | |
CN102156643A (zh) | 软件集成方法及系统 | |
US20110126179A1 (en) | Method and System for Dynamic Patching Software Using Source Code | |
US10248409B1 (en) | Limiting the effects of source code patches on corresponding native-code patches | |
CN110109671B (zh) | 一种webpack标签尺寸样式转换方法及装置 | |
CN109614325B (zh) | 一种确定控件属性的方法及装置、电子设备和存储介质 | |
US20200257524A1 (en) | Generating interaction libraries | |
CN104881311A (zh) | 一种版本兼容的判断方法及装置 | |
CN110737437A (zh) | 一种基于代码集成的编译方法和装置 | |
CN108694049B (zh) | 一种更新软件的方法和设备 | |
CN110659210A (zh) | 一种信息获取方法、装置、电子设备及存储介质 | |
CN112256670A (zh) | 数据迁移方法、终端设备及可读存储介质 | |
US20160253157A1 (en) | Software refactoring | |
CN104598382A (zh) | 一种测试控制方法和装置 | |
CN114116505A (zh) | 代码测试方法及装置 | |
CN111858359A (zh) | 可执行文件的工程代码位置获取方法和装置 | |
US10956136B2 (en) | User interface resource file optimization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |