Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND SYSTEM FOR MAINTAINING SOFTWARE PACKAGE DEPENDENCY
Document Type and Number:
WIPO Patent Application WO/2018/040926
Kind Code:
A1
Abstract:
A method and system for maintaining software package dependency. The method comprises: analyzing a library required by a target program; allocating a version number to an interface of the library; acquiring software package information of interface dependency; associating the version number of the interface and the software package information to generate dependency; acquiring the version number of the interface required by the target program to obtain a first version number; and adding, into a dependency file, dependency corresponding to the first version number. The method is utilized to automatically maintain software package dependency information of an interface of a target program, and implement automatic acquisition of a dependent software package of the target program.

Inventors:
WU XUAN (CN)
CHEN QINGBIN (CN)
WANG BIN (CN)
Application Number:
PCT/CN2017/097826
Publication Date:
March 08, 2018
Filing Date:
August 17, 2017
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
FUJIAN LANDI COMMERCIAL EQUIP (CN)
International Classes:
G06F9/44
Foreign References:
CN106371838A2017-02-01
CN103425512A2013-12-04
CN102141922A2011-08-03
CN102945155A2013-02-27
JP2001356910A2001-12-26
Attorney, Agent or Firm:
BORSAM INTELLECTUAL PROPERTY (FUZHOU) (CN)
Download PDF:
Claims:
权利要求书

一种维护软件包依赖关系的方法, 其特征在于, 包括:

解析目标程序所需的程序库;

为所述程序库中的接口分配版本号;

获取所述接口依赖的软件包信息;

关联所述接口的版本号和所述软件包信息, 形成依赖关系; 获取目标程序所需接口的版本号, 得到第一版本号;

添加与所述第一版本号相应的依赖关系至依赖文件。

根据权利要求 1所述的一种维护软件包依赖关系的方法, 其特征在于

, 为所述程序库中的接口分配版本号, 具体为:

为所述程序库中具有相同依赖关系的接口分配相同的版本号。

根据权利要求 1所述的一种维护软件包依赖关系的方法, 其特征在于

, 所述软件包信息, 包括软件包名称和软件包版本号。

根据权利要求 1所述的一种维护软件包依赖关系的方法, 其特征在于

, 所述软件包版本号为能支持所述程序库中的接口正常运行的软件包 的最低版本号。

根据权利要求 4所述的一种维护软件包依赖关系的方法, 其特征在于 , 还包括:

获取依赖文件中具有相同软件包名称的软件包版本号, 形成软件包版 本号集合;

获取软件包版本号集合中最高的软件包版本号, 得到最优版本号; 关联所述软件包名称和所述最优版本号, 形成最优依赖关系; 添加所述最优依赖关系至所述依赖文件。

根据权利要求 1所述的一种维护软件包依赖关系的方法, 其特征在于 , 还包括:

封装所述目标程序和依赖文件为目标软件包。

根据权利要求 6所述的一种维护软件包依赖关系的方法, 其特征在于 , 还包括: 新增接口至所述程序库;

为所述新增接口分配版本号;

获取所述新增接口依赖的软件包信息;

关联所述新增接口的版本号和所述软件包信息, 形成新增依赖关系; 添加所述新增依赖关系至所述依赖文件;

更新所述目标软件包中的依赖文件。

[权利要求 8] —种维护软件包依赖关系的系统, 其特征在于, 包括:

解析模块, 用于解析目标程序所需的程序库;

第一分配模块, 用于为所述程序库中的接口分配版本号;

第一获取模块, 用于获取所述接口依赖的软件包信息;

第一关联模块, 用于关联所述接口的版本号和所述软件包信息, 形成 依赖关系;

第二获取模块, 用于获取目标程序所需接口的版本号, 得到第一版本 号;

第一添加模块, 用于添加与所述第一版本号相应的依赖关系至依赖文 件。

[权利要求 9] 根据权利要求 8所述的一种维护软件包依赖关系的系统, 其特征在于

, 还包括:

第三获取模块, 用于获取依赖文件中具有相同软件包名称的软件包版 本号, 形成软件包版本号集合;

第四获取模块, 用于获取软件包版本号集合中最高的软件包版本号, 得到最优版本号;

第二关联模块, 用于关联所述软件包名称和所述最优版本号, 形成最 优依赖关系;

第二添加模块, 用于添加所述最优依赖关系至所述依赖文件; 封装模块, 用于封装所述目标程序和依赖文件为目标软件包。

[权利要求 10] 根据权利要求 8所述的一种维护软件包依赖关系的系统, 其特征在于 , 还包括: 新增模块, 用于新增接口至所述程序库;

第二分配模块, 用于为所述新增接口分配版本号;

第五获取模块, 用于获取所述新增接口依赖的软件包信息; 第三关联模块, 用于关联所述新增接口的版本号和所述软件包信息 形成新增依赖关系;

第三添加模块, 用于添加所述新增依赖关系至所述依赖文件; 更新模块, 用于更新所述目标软件包中的依赖文件。

Description:
一种维护软件包依赖关系的方法及系统 技术领域

[0001] 本发明涉及软件包维护领域, 尤其涉及一种维护软件包依赖关系的方法及系 统 背景技术

[0002] 随着国内电子支付市场和支付技术的发展, 支付终端的软件系统也日益复杂。

目前的支付终端, 大都使用了基于 Linux甚至 Android的复杂操作系统, 并支持包 括 IC卡、 磁卡、 射频卡、 各种通讯方式等多种外设驱动, 并实现了 GUI、 设备服 务、 管理以及多应用等多种软件功能。 这些功能由于涉及不同幵发部门, 升级 频率也不同, 所以难以统一管理。 基于这个特性, 通常把相关一类软件做成软 件模块统一管理。 比如: 打印驱动、 IC卡驱动等。 常用的维护软件模块的方式 是做成软件包, 比如: ipkg格式软件包。 这些软件包通过版本信息进行维护。 这 样就实现了以软件包为单位进行维护。 在软件包之间存在这一定的依赖关系, 所谓软件包依赖关系, 就是一个软件包只有在终端上特定一些软件模 块存在且 版本满足一定要求才能安装到该终端上。 以 1.3.1版本的软件包 testapp的依赖关系 为例: testsdkl (>=0.9), testsdk2 (>=1.3) , testsdk3 (>=1.0)。 在这个依赖关系中, 该软件包需要依赖三个软件包: testsdkl、 testsdk2和 testsdk3。 三者版本要求分别 是: 不低于 0.9, 不低于 1.3, 不低于 1.0。 只有满足上面条件的终端才能安装 1.3.1 版本的软件包。

[0003] 比较常见的依赖是一个软件包中的程序或库调 用了另外一个软件包中的库。 目 前常见方法是生成软件包吋, 手工填写该软件包对其他软件包的依赖关系。 但 是, 手工填写软件包依赖关系的方法具有如下缺点 : 首先, 如果一个软件包中 程序和库依赖于其它库的数量较多, 则依赖关系容易漏填。 其次, 随着软件升 级, 许多库要新增接口, 手工填写易出错。 再者, 支付终端上的应用程序由客 户幵发, 应用软件包对依赖关系的填写更难以控制, 会造成无法正常运行程序 等问题。 技术问题

[0004] 本发明所要解决的技术问题是: 提供一种维护软件包依赖关系的方法及系统, 实现可自动获取目标程序关联的软件包。

问题的解决方案

技术解决方案

[0005] 为了解决上述技术问题, 本发明采用的技术方案为:

[0006] 本发明提供一种维护软件包依赖关系的方法, 包括:

[0007] 解析目标程序所需的程序库;

[0008] 为所述程序库中的接口分配版本号;

[0009] 获取所述接口依赖的软件包信息;

[0010] 关联所述接口的版本号和所述软件包信息, 形成依赖关系;

[0011] 获取目标程序所需接口的版本号, 得到第一版本号;

[0012] 添加与所述第一版本号相应的依赖关系至依赖 文件。

[0013] 本发明还提供一种维护软件包依赖关系的系统 , 包括:

[0014] 解析模块, 用于解析目标程序所需的程序库;

[0015] 第一分配模块, 用于为所述程序库中的接口分配版本号;

[0016] 第一获取模块, 用于获取所述接口依赖的软件包信息;

[0017] 第一关联模块, 用于关联所述接口的版本号和所述软件包信息 , 形成依赖关系

[0018] 第二获取模块, 用于获取目标程序所需接口的版本号, 得到第一版本号; [0019] 第一添加模块, 用于添加与所述第一版本号相应的依赖关系至 依赖文件。

发明的有益效果

有益效果

[0020] 本发明的有益效果在于: 通过为程序库中的接口分配版本号, 有利于对程序库 中的接口进行统一管理; 通过关联程序库中的接口的版本号与所述接口 依赖的 软件包的信息, 有利于维护程序库中的接口与其它软件包的依 赖关系; 通过聚 集与目标程序所需接口相对应的依赖关系, 形成依赖文件, 有利于通过所述依 赖文件获知目标程序所依赖的软件包的信息; 实现可根据依赖文件自动获取目 标程序所依赖的软件包。

对附图的简要说明

附图说明

[0021] 图 1为本发明一种维护软件包依赖关系的方法的 程框图;

[0022] 图 2为本发明一种维护软件包依赖关系的系统的 构框图;

[0023] 标号说明:

[0024] 1、 解析模块; 2、 第一分配模块; 3、 第一获取模块; 4、 第一关联模块; 5、 第二获取模块; 6、 第一添加模块; 7、 第三获取模块; 8、 第四获取模块; 9、 第二关联模块; 10、 第二添加模块; 11、 封装模块; 12、 新增模块; 13、 第二 分配模块; 14、 第五获取模块; 15、 第三关联模块; 16、 第三添加模块; 17、 更新模块。

具体实施方式

[0025] 本发明最关键的构思在于: 通过自动维护目标程序中的接口所依赖的软件 包的 信息, 实现可自动获取目标程序所依赖的软件包。

[0026]

[0027] 如图 1所示, 本发明提供一种维护软件包依赖关系的方法, 包括:

[0028] 解析目标程序所需的程序库;

[0029] 为所述程序库中的接口分配版本号;

[0030] 获取所述接口依赖的软件包信息;

[0031] 关联所述接口的版本号和所述软件包信息, 形成依赖关系;

[0032] 获取目标程序所需接口的版本号, 得到第一版本号;

[0033] 添加与所述第一版本号相应的依赖关系至依赖 文件。

[0034] 进一步地, 为所述程序库中的接口分配版本号, 具体为:

[0035] 为所述程序库中具有相同依赖关系的接口分配 相同的版本号。

[0036] 由上述描述可知, 可对具有相同依赖关系的接口进行统一的管理 , 当目标程序 所需的程序库较多吋, 有利于维护目标程序依赖的软件包信息。

[0037] 进一步地, 所述软件包信息, 包括软件包名称和软件包版本号。 [0038] 由上述描述可知, 通过软件包名称和软件包版本号可明确接口的 依赖关系。

[0039] 一般地, 在软件包之间存在这一定的依赖关系, 所谓软件包依赖关系, 就是一 个软件包只有在终端上特定一些软件模块存在 且版本满足一定要求才能安装到 该终端上。 因此在描述目标程序所需接口的依赖关系吋, 应说明所依赖的软件 包名称及其要求的版本号。

[0040] 进一步地, 所述软件包版本号为能支持所述程序库中的接 口正常运行的软件包 的最低版本号。

[0041] 由上述描述可知, 软件包通常可向前兼容, 即更高版本的软件包包含较低版本 的所有功能, 因此通过接口所依赖的软件包的最低版本号可 获知可支持接口正 常运行的所有软件包的版本号。

[0042] 进一步地, 还包括:

[0043] 获取依赖文件中具有相同软件包名称的软件包 版本号, 形成软件包版本号集合

[0044] 获取软件包版本号集合中最高的软件包版本号 , 得到最优版本号;

[0045] 关联所述软件包名称和所述最优版本号, 形成最优依赖关系;

[0046] 添加所述最优依赖关系至所述依赖文件。

[0047] 由上述描述可知, 实现可减少获取目标程序依赖的软件包的数量 。 依赖文件描 述的是目标程序中所有接口所依赖的软件包的 信息, 可能存在有些接口依赖的 软件包相同但软件包版本号不同的情况, 由于软件包通常可向前兼容, 则只需 获取依赖文件中与最高要求版本号相应的软件 包, 即可满足所有依赖同一软件 包的接口的需求。

[0048] 进一步地, 还包括:

[0049] 封装所述目标程序和依赖文件为目标软件包。

[0050] 由上述描述可知, 目标软件包可根据依赖文件中描述的依赖关系 自动获取目标 程序依赖的软件包。

[0051] 进一步地, 还包括:

[0052] 新增接口至所述程序库;

[0053] 为所述新增接口分配版本号; [0054] 获取所述新增接口依赖的软件包信息;

[0055] 关联所述新增接口的版本号和所述软件包信息 , 形成新增依赖关系;

[0056] 添加所述新增依赖关系至所述依赖文件;

[0057] 更新所述目标软件包中的依赖文件。

[0058] 由上述描述可知, 当目标程序的程序库新增接口吋, 自动将新增接口的依赖关 系更新至依赖文件。

[0059]

[0060] 如图 2所示, 本发明还提供一种维护软件包依赖关系的系统 , 包括:

[0061] 解析模块 1, 用于解析目标程序所需的程序库;

[0062] 第一分配模块 2, 用于为所述程序库中的接口分配版本号;

[0063] 第一获取模块 3, 用于获取所述接口依赖的软件包信息;

[0064] 第一关联模块 4, 用于关联所述接口的版本号和所述软件包信息 , 形成依赖关 系;

[0065] 第二获取模块 5, 用于获取目标程序所需接口的版本号, 得到第一版本号; [0066] 第一添加模块 6, 用于添加与所述第一版本号相应的依赖关系至 依赖文件。

[0067] 进一步地, 还包括:

[0068] 第三获取模块 7, 用于获取依赖文件中具有相同软件包名称的软 件包版本号, 形成软件包版本号集合;

[0069] 第四获取模块 8, 用于获取软件包版本号集合中最高的软件包版 本号, 得到最 优版本号;

[0070] 第二关联模块 9, 用于关联所述软件包名称和所述最优版本号, 形成最优依赖 关系;

[0071] 第二添加模块 10, 用于添加所述最优依赖关系至所述依赖文件;

[0072] 封装模块 11, 用于封装所述目标程序和依赖文件为目标软件 包。

[0073] 进一步地, 还包括:

[0074] 新增模块 12, 用于新增接口至所述程序库;

[0075] 第二分配模块 13, 用于为所述新增接口分配版本号;

[0076] 第五获取模块 14, 用于获取所述新增接口依赖的软件包信息; [0077] 第三关联模块 15, 用于关联所述新增接口的版本号和所述软件包 信息, 形成新 增依赖关系;

[0078] 第三添加模块 16, 用于添加所述新增依赖关系至所述依赖文件;

[0079] 更新模块 17, 用于更新所述目标软件包中的依赖文件。

[0080]

[0081] 本发明的实施例一为:

[0082] 解析目标程序所需的程序库;

[0083] 为所述程序库中具有相同依赖关系的接口分配 相同的版本号;

[0084] 获取所述接口依赖的软件包的名称和版本号; 所述版本号为能支持所述程序库 中的接口正常运行的软件包的最低版本号;

[0085] 关联所述接口的版本号和所述软件包信息, 形成依赖关系;

[0086] 获取目标程序所需接口的版本号, 得到第一版本号;

[0087] 添加与所述第一版本号相应的依赖关系至依赖 文件;

[0088] 封装所述目标程序和依赖文件为目标软件包。

[0089] 由上述描述可知, 本实施例可通过目标软件包中的依赖文件自动 获取目标程序 所依赖的软件包。

[0090] 本实施例的应用场景为:

[0091] 通过 readelf命令解析目标程序 testapp, 获取目标程序所用到的程序库 libtestsdkl.

SO ;

[0092] 程序库 libtestsdkl. so中包含接口 funcl、 接口 func2和接口 func3, 由于上述接口 具有相同的依赖关系, 因此为它们分配相同的版本号 TESTSDK1_1.0;

[0093] 关联版本号 TESTSDK1_1.0和依赖的软件包的信息, 具体为:

[0094] [LibName]

[0095] Name=libtestsdkl.so

[0096] [Depends]

[0097] TESTSDKl_1.0=testsdkl(>=1.0); 其中, Name表示对应程序库文件名称, [Dep ends]描述了库的每个接口版本对一些软件包的 赖关系, 一般是该库所在的软 件包, 在库的特定接口版本吋的软件包版本要求。 ; [0098] 库 libtestsdkl.so位于软件包 testsdkl中, 所以上面的写法表明: 如果应用程序或 应用库调用了 libtestsdkl.so中属于接口版本" TESTSDK1_1.0"的函数 (比如 func2

) , 那么, 该应用程序或应用库依赖于软件包 testsdkl , 且该软件包版本必须大 等于 1.0。

[0099] 获取目标程序 testapp所需接口 funcl的版本号, 得到第一版本号 TESTSDK1_1.0

[0100] 添加与所述第一版本号 TESTSDK1_1.0相应的依赖关系至依赖文件;

[0101] 封装所述目标程序和依赖文件为目标软件包。

[0102]

[0103] 本发明的实施例二为:

[0104] 在实施例一的基础上, 新增接口至所述程序库;

[0105] 为所述新增接口分配版本号;

[0106] 获取所述新增接口依赖的软件包信息;

[0107] 关联所述新增接口的版本号和所述软件包信息 , 形成新增依赖关系;

[0108] 添加所述新增依赖关系至所述依赖文件;

[0109] 更新所述目标软件包中的依赖文件。

[0110] 由上述描述可知, 本实施例实现新增接口吋自动维护依赖文件。

[0111] 本实施例的应用场景为: 新增接口 fimc4, 为其分配版本号 TESTSDK1_1.1。 获 取接口 fimc4依赖的软件包信息为 te S tsdklC>=l. l)。 将新增接口 func4的依赖关系 添加至依赖文件。

[0112]

[0113] 本发明的实施例三为:

[0114] 在实施例一的基础上, 本实施例:

[0115] 获取依赖文件中具有相同软件包名称的软件包 版本号, 形成软件包版本号集合

[0116] 获取软件包版本号集合中最高的软件包版本号 , 得到最优版本号;

[0117] 关联所述软件包名称和所述最优版本号, 形成最优依赖关系;

[0118] 添加所述最优依赖关系至所述依赖文件。 [0119] 由上述描述可知, 本实施例实现减少获取目标程序依赖的软件包 的数量。

[0120] 对于用到的每一个库, 生成最优依赖关系。 比如: 目标程序使用了接口 fimc4 和接口 funcl , 则库 libtestsdkl.so的最高接口版本为 TESTSDK1_1.1。 在 SDK的所 有系统库的库依赖文件中, 对 testapp用到的每个库, 根据最高接口版本找到对应 依赖关系。 根据最高接口版本的依赖关系获取相应的软件 包。

[0121]

[0122] 本发明的实施例四为:

[0123] 解析模块 1解析目标程序所需的程序库;

[0124] 第一分配模块 2为所述程序库中的接口分配版本号;

[0125] 第一获取模块 3获取所述接口依赖的软件包信息;

[0126] 第一关联模块 4关联所述接口的版本号和所述软件包信息, 形成依赖关系; [0127] 第二获取模块 5获取目标程序所需接口的版本号, 得到第一版本号;

[0128] 第一添加模块 6添加与所述第一版本号相应的依赖关系至依 文件;

[0129] 第三获取模块 7获取依赖文件中具有相同软件包名称的软件 版本号, 形成软 件包版本号集合;

[0130] 第四获取模块 8获取软件包版本号集合中最高的软件包版本 , 得到最优版本 号;

[0131] 第二关联模块 9关联所述软件包名称和所述最优版本号, 形成最优依赖关系;

[0132] 第二添加模块 10添加所述最优依赖关系至所述依赖文件;

[0133] 新增模块 12新增接口至所述程序库;

[0134] 第二分配模块 13为所述新增接口分配版本号;

[0135] 第五获取模块 14获取所述新增接口依赖的软件包信息;

[0136] 第三关联模块 15关联所述新增接口的版本号和所述软件包信 , 形成新增依赖 关系;

[0137] 第三添加模块 16添加所述新增依赖关系至所述依赖文件;

[0138] 更新模块 17更新所述目标软件包中的依赖文件;

[0139] 封装模块 11封装所述目标程序和依赖文件为目标软件包

[0140] 综上所述, 本发明提供的一种维护软件包依赖关系的方法 及系统, 通过为程序 库中的接口分配版本号, 有利于对程序库中的接口进行统一管理; 通过关联程 序库中的接口的版本号与所述接口依赖的软件 包的信息, 有利于维护程序库中 的接口与其它软件包的依赖关系; 通过聚集与目标程序所需接口相对应的依赖 关系, 形成依赖文件, 有利于通过所述依赖文件获知目标程序所依赖 的软件包 的信息; 实现可根据依赖文件自动获取目标程序所依赖 的软件包; 进一步地, 可对具有相同依赖关系的接口进行统一的管理 , 当目标程序所需的程序库较多 吋, 有利于维护目标程序依赖的软件包信息; 进一步地, 通过软件包名称和软 件包版本号可明确接口的依赖关系; 进一步地, 软件包通常可向前兼容, 即更 高版本的软件包包含较低版本的所有功能, 因此通过接口所依赖的软件包的最 低版本号可获知可支持接口正常运行的所有软 件包的版本号; 进一步地, 实现 可减少获取目标程序依赖的软件包的数量; 进一步地, 还包括: 目标软件包可 根据依赖文件中描述的依赖关系自动获取目标 程序依赖的软件包; 进一步地, 当目标程序的程序库新增接口吋, 自动将新增接口的依赖关系更新至依赖文件