CN110531993B - 软件安装方法、装置、设备及介质 - Google Patents
软件安装方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN110531993B CN110531993B CN201910774530.4A CN201910774530A CN110531993B CN 110531993 B CN110531993 B CN 110531993B CN 201910774530 A CN201910774530 A CN 201910774530A CN 110531993 B CN110531993 B CN 110531993B
- Authority
- CN
- China
- Prior art keywords
- dependent
- target software
- dependency
- software
- component
- 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
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000001419 dependent effect Effects 0.000 claims abstract description 146
- 238000009434 installation Methods 0.000 claims abstract description 72
- 238000011900 installation process Methods 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 35
- 239000000306 component Substances 0.000 description 192
- 238000012545 processing Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 9
- 238000012549 training Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 230000007115 recruitment Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 239000008358 core component Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000013210 evaluation model Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种软件升级方法,包括:获取目标软件的第一版本安装包;运行目标软件的第一版本安装包以安装目标软件,并在安装过程中根据目标软件的依赖关系绘制依赖树,依赖关系表征目标软件的依赖组件,获取依赖组件的第一版本安装包,运行依赖组件的第一版本安装包以安装依赖组件;在满足依赖关系时,控制目标软件执行目标功能得到第一运行结果,保存第一运行结果;根据依赖树按照自下而上的顺序逐个卸载依赖组件,根据每个依赖组件卸载后目标软件执行目标功能所得第二运行结果与第一运行结果确定依赖组件的必要性;根据依赖组件的必要性调整依赖树,根据调整后的依赖树确定目标软件的最小安装方案。本申请还提供了对应的装置、设备及介质。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种软件安装方法、装置、设备及计算机可读存储介质。
背景技术
随着计算机技术的发展,越来越多的软件应用到工作和日常生活中,以实现各种功能。软件是一系列按照特定顺序组织的计算机数据和指令的集合,一般需要在计算机上安装使用。
业界提供了一种软件管理工具,即红帽打包管理(Red-Hat Package Manager,RPM)工具,RPM管理工具提供有RPM命令,通过该命令可以实现对软件的管理,包括软件的安装、升级、卸载。在使用RPM管理工具升级组件时,往往会提示该组件的软件安装包与其他组件的软件安装包之间存在依赖关系。这些依赖关系表示待升级的目标组件运行时,要同时运行被依赖组件,或者执行被依赖组件的库文件。
但这些依赖关系中,有很多不是必需的,仅在特定环境下才会使用。如果不忽略依赖关系,那么就需要升级或安装大量的依赖软件包,冗余的软件包会造成系统过于笨重,增加系统的负担,也会因为增加了新的组件而带来新的软件漏洞。如果忽略依赖关系,只升级目标组件,很可能会导致组件升级后,因为缺少库文件或者相关组件而无法使用目标组件。某些系统核心组件,一旦功能无法使用,就会造成系统无法启动等致命问题。
如何提供一种软件安装方法,既能保障软件功能不会缺失,又能实现软件的最小化安装,成为一个亟待解决的问题。
发明内容
本申请提供了一种软件安装方法,通过先安装后裁剪的方式精剪目标软件的依赖关系,既保障了软件功能不会缺失,又能实现软件的最小化安装。本申请还提供了对应的装置、设备、介质及计算机程序。
本申请第一方面提供了一种软件安装方法,所述方法包括:
获取训练样本集,所述训练样本集中的每个训练样本包括企业在一个统计周期内的招聘信息以及对应的景气程度标签,所述招聘信息包括所述企业在所述统计周期内针对目标招聘岗位的招聘数量均值,所述训练样本集包括行业内多个企业的招聘信息形成的所述训练样本以及同一企业在多个所述统计周期内的招聘信息形成的所述训练样本;
根据所述训练样本集,利用机器学习算法训练景气程度评估模型,直至满足训练结束条件;其中,所述景气程度评估模型以招聘信息为输入,以行业景气程度为输出。
本申请第二方面提供了一种软件安装装置,所述装置包括:
获取模块,用于获取目标软件的第一版本安装包;
绘制模块,用于运行所述目标软件的第一版本安装包以安装所述目标软件,并在安装过程中根据所述目标软件的依赖关系绘制依赖树,所述依赖关系表征所述目标软件的依赖组件,获取所述依赖组件的第一版本安装包,运行所述依赖组件的第一版本安装包以安装所述依赖组件;
保存模块,用于在满足依赖关系时,控制所述目标软件执行目标功能得到第一运行结果,保存所述第一运行结果;
第一确定模块,用于根据所述依赖树按照自下而上的顺序逐个卸载所述依赖组件,根据每个依赖组件卸载后所述目标软件执行目标功能所得第二运行结果与所述第一运行结果确定所述依赖组件的必要性;
第二确定模块,用于根据所述依赖组件的必要性调整所述依赖树,根据调整后的所述依赖树确定所述目标软件的最小安装方案。
可选的,所述绘制模块具体用于:
将所述目标软件确定为依赖树的根节点;
根据所述目标软件安装失败时所提示的依赖关系,将对应的依赖组件确定为依赖树的子节点;
按顺序逐个安装所述依赖组件,若提示安装成功,则针对所述依赖组件的依赖关系结束,若提示安装失败,则根据提示的依赖关系确定所述依赖组件所依赖的依赖组件为所述子节点的子节点。
可选的,所述绘制模块还用于:
在确定子节点之前,判断是否有同名依赖组件已存在于所述依赖树中;
若否,则再执行所述确定子节点的步骤。
可选的,所述第二确定模块用于:
若所述依赖组件的必要性表征所述依赖组件为非必需,则将所述依赖组件对应的节点从所述依赖树中删除;
若所述依赖组件的必要性表征所述依赖组件为必需,则将所述依赖组件对应的节点至根节点之间的所有节点标记为必需。
可选的,所述第一确定模块用于:
针对第k层节点,按照顺序逐个卸载所述第k层节点对应的所述依赖组件以检测各个所述依赖组件的必要性,并在所述第k层节点对应的所述依赖组件卸载完成后按层逐个卸载上层节点对应的所述依赖组件;或者,
针对第k层节点中归属于同一节点的子节点,按照顺序逐个卸载所述子节点对应的所述依赖组件以检测各个所述依赖组件的必要性,并在所述子节点对应的依赖组件卸载完成后卸载上层节点中归属于同一节点的子节点对应的依赖组件。
可选的,所述保存模块具体用于:
所述目标软件为工具类软件时,查看所述目标软件的版本信息以及使用手册;
所述目标软件为服务类软件时,查询服务状态。
可选的,所述目标软件的第一版本安装包包括:
相对于所述目标软件的第二版本的增量安装包;或者,
所述目标软件的第一版本的完整安装包。
本申请第三方面提供了一种设备,所述设备包括处理器和存储器:
所述存储器用于存储程序指令;
所述处理器用于调用所述存储器中的所述程序指令,以执行如第一方面所述的软件安装方法。
本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码被处理器执行时实现如第一方面所述的软件安装方法。
本申请第五方面提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有第一方面所述的软件安装方法的程序。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例提供了一种软件安装方法,具体地,在安装目标软件时,获取目标软件的第一版本安装包,运行目标软件的第一版本安装包以安装目标软件,并在安装过程中根据目标软件的依赖关系自顶向下绘制依赖树,保证依赖组件和依赖树上的节点一一对应,在满足依赖关系时,控制该目标软件执行目标功能得到第一运行结果,保存该第一运行结果,接着根据依赖树按照自下而上的顺序逐个卸载所述依赖组件,根据每个依赖组件卸载后所述目标软件执行目标功能所得第二运行结果与所述第一运行结果确定所述依赖组件的必要性;根据所述依赖组件的必要性调整所述依赖树,根据调整后的所述依赖树确定所述目标软件的最小安装方案。其通过先安装后裁剪的方式精剪依赖组件,忽略不必要的依赖关系,既能保障目标软件的功能不缺失,又能保证目标软件的最小化安装,如此可以节省安装时间,提高安装效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种软件安装方法的流程图;
图2为本申请实施例中一种依赖树的结构示意图;
图3为本申请实施例中一种依赖树的结构示意图;
图4为本申请实施例中一种软件安装装置的结构示意图;
图5为本申请实施例中一种终端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
针对如何提供一种软件安装方法,既能保障软件功能不会缺失,又能实现软件的最小化安装这一技术问题,本申请提供了一种先安装再裁剪的方式进行软件安装,首先按照递归的顺序,根据提示的依赖关系完成所有依赖组件的安装,并绘制依赖树,然后从依赖树的叶节点出发,卸载目标软件的依赖组件,测试卸载依赖组件前后目标软件执行目标功能的运行结果,如果发生变动,则表示存在必需依赖关系,该依赖组件无法删除,并且依赖该组件的依赖组件也无法删除,以此递推。如果某个依赖组件删除后目标软件运行结果没有产生变化,那么表示该依赖组件是非必需的,可以将其删除,如此实现精剪依赖关系,提高了软件安装效率。
可以理解,本申请提供的软件安装方法可以应用于任意具有数据处理能力的处理设备。该处理设备具体可以是终端,也可以是服务器,其中,终端包括但不限于个人计算机(Personal Computer,PC)、小型机、大型机或者工作站等。处理设备部署有操作系统,该操作系统具体可以是linux系统或unix系统等,处理设备通过该操作系统执行上述软件安装方法。
本申请提供的软件安装方法可以计算机程序的形式存储于处理设备。处理设备通过运行计算机程序,实现本申请的软件安装方法。该计算机程序可以是独立的,也可以是集成于其他计算机程序之上的功能模块、插件或者小程序等。
接下来,从终端的角度对本申请实施例提供的软件安装方法进行详细说明。
参见图1所示的软件安装方法的流程图,该方法包括:
S101:获取目标软件的第一版本安装包。
在进行软件安装时,终端可以直接在软件已有版本的基础上升级或降级,或者直接安装。基于此,目标软件的第一版本安装包可以是相对于所述目标软件的第二版本的增量安装包,其中,第一版本可以是第二版本的升级版本,也可以是第二版本的历史版本。当然,目标软件的第一版本安装包也可以是目标软件的第一版本的完整安装包。
S102:运行所述目标软件的第一版本安装包以安装所述目标软件,并在安装过程中根据所述目标软件的依赖关系绘制依赖树,所述依赖关系表征所述目标软件的依赖组件,获取所述依赖组件的第一版本安装包,运行所述依赖组件的第一版本安装包以安装所述依赖组件。
在实际应用时用,终端可以通过RPM管理工具运行目标软件的第一版本安装包以安装目标软件,具体地,当终端上不存在目标软件的其他版本时,终端可以通过执行RPM-ivh命令安装目标软件,当终端上存在目标软件的其他版本时,终端可以通过执行RPM-uvh命令升级目标软件,对于升级得来的目标软件,如果需要降级,也可以执行rpm–e–nodepsXXX命令卸载高版本组件,然后去redhat官网下载原版本组件,再执行rpm–ivh–nodeps XXX安装原版本组件。
以升级软件为例,在升级过程中,如果有依赖关系,则升级失败,未满足的依赖关系可以在命令行中显示,该依赖关系表征目标软件的依赖组件,终端一方面可以根据提示的依赖关系自顶向下地绘制依赖树,另一方面可以获取依赖组件的第一版本安装包,运行依赖组件的第一版本安装包以安装上述依赖组件。
在绘制依赖树时,终端可以将所述目标软件确定为依赖树的根节点,根据所述目标软件安装失败时所提示的依赖关系,将对应的依赖组件确定为依赖树的子节点,按顺序逐个安装所述依赖组件,若提示安装成功,则针对所述依赖组件的依赖关系到此为止,若提示安装失败,则根据提示的依赖关系确定所述依赖组件所依赖的依赖组件为所述子节点的子节点。
下面结合具体示例说明。首先执行RPM-uvh命令升级目标软件,如果有依赖关系,则升级过程失败,未满足的依赖关系会在命令行中显示,此时将未满足的依赖关系记为第2层依赖关系。如图2所示,如果有多个依赖组件,按序号从1到n进行编号。那么从序号为1的组件开始处理,先下载组件的软件包,然后执行RPM-uvh命令升级1号组件。此时有两种情况,如果升级成功,那么1号组件的依赖关系到此为止。如果升级失败,显示1号组件有其他依赖关系,那么先处理1号组件的依赖关系,将1号组件的依赖关系记为第3层依赖关系,也按照从1至n排序。
按照这种递归的方式,当有依赖关系未满足时,就逐层向下查找,那么依赖关系将会有1,2,3...k层,而每个组件的依赖组件会有1,2,3...n个。所以终端可以将依赖关系用依赖树来进行描述,每个依赖组件是依赖树的一个结点。依赖树的根节点就是目标软件,然后根据依赖关系递归向下,k层依赖关系就表明依赖树的高度为k。如果一个组件依赖n个组件,那么它会有n个子结点。
还需要说明的是,考虑到组件之间存在相互依赖的关系,如果一个组件已被依赖一次,那么就无需再放入依赖树中。基于此,终端在确定子节点之前,终端还可以判断是否有同名依赖组件已存在于所述依赖树中,若否,则再执行所述确定子节点的步骤。
S103:在满足依赖关系时,控制所述目标软件执行目标功能得到第一运行结果,保存所述第一运行结果。
递归的出口是目标软件能够直接升级,或者目标软件的依赖组件已经全部出现在依赖树中。对应地,该依赖组件会成为叶节点,然后递归开始返回,最终,所有的依赖关系都会被列出来,然后通过一次升级命令,将所有依赖组件同时升级,那么所有的依赖关系都会被满足,且升级一定成功。
在满足所有依赖关系的情况下,目标软件升级后能够正常运行。当所述目标软件为工具类软件时,终端可以查看所述目标软件的版本信息以及使用手册,并记录目标软件的第一运行结果,当所述目标软件为服务类软件时,终端可以查询服务状态,如通过systemctl工具查询服务状态,并记录目标软件的第一运行结果。当目标软件为实现其他特定功能的软件时,查看特定功能的运行结果,并保存该运行结果。
S104:根据所述依赖树按照自下而上的顺序逐个卸载所述依赖组件,根据每个依赖组件卸载后所述目标软件执行目标功能所得第二运行结果与所述第一运行结果确定所述依赖组件的必要性。
在S102绘制出的依赖树中,终端采用自下而上的顺序,从第k层的叶结点开始,执行RPM–e命令卸载组件,并指定—nodeps选项忽略所有依赖。卸载组件后,再次执行S103中获得目标软件运行结果的操作,记录下此时目标软件输出的第二运行结果,然后与S103中记录的第一运行结果进行对比,从而确定依赖组件的必要性。
需要说明的是,依赖树包括k层,k为正整数,终端在卸载依赖组件时有如下几种实现方式:
一种实现方式为,针对第k层节点,按照顺序逐个卸载所述第k层节点对应的所述依赖组件以检测各个所述依赖组件的必要性,并在所述第k层节点对应的所述依赖组件卸载完成后按层逐个卸载上层节点对应的所述依赖组件。
另一种实现方式为,针对第k层节点中归属于同一节点的子节点,按照顺序逐个卸载所述子节点对应的所述依赖组件以检测各个所述依赖组件的必要性,并在所述子节点对应的依赖组件卸载完成后卸载上层节点中归属于同一节点的子节点对应的依赖组件。也即按照绘制依赖树的逆过程卸载节点对应的依赖组件,以检测各依赖组件的必要性。
S105:根据所述依赖组件的必要性调整所述依赖树,根据调整后的所述依赖树确定所述目标软件的最小安装方案。
如果结果一致,那么表示该组件卸载后,对目标组件的运行状态不会造成影响,即表示该组件并不是必需的。终端可以将该结点从依赖树中删除,然后对第k层的其他结点执行相同操作。如果某个结点删除后,目标组件不能正常运行,那么表示该组件的依赖关系是必需的,并且从该结点到根节点的所有结点都是必需的,将这些结点都标记为已检测状态。
当第k层的结点都被检测完毕后,开始检测第k-1层结点,直到第1层,则检测完毕。经过这样的方法裁剪完毕后,依赖树上剩下的结点都是必需的。记录下结点对应的组件,这些组件就是最小依赖组件。只对这些组件进行升级,就是对目标软件升级的最小升级方案。
由上可知,本申请实施例提供了一种软件安装方法,通过先安装后裁剪的顺序处理目标软件的依赖关系。升级某个软件时,首先按照递归的顺序,根据提示的依赖关系完成所有依赖组件的安装,同时绘制依赖树,其次从依赖树的叶节点出发,删除依赖组件,然后测试删除依赖组件前后目标软件的命令输出变动,如果发生变动,则表示组件间存在必需依赖关系,无法删除,并且依赖该组件的组件也无法删除,以此递推。如果某个组件删除后输出没有产生变化,那么表示该组件是非必需的,可以将其删除。如此,可以实现软件依赖关系的精简。
为了方便理解,下面以升级snmp为例进行介绍。其中,snmp升级可以包括如下三个阶段:
第一阶段:组件升级和依赖树绘制:
(1)系统中net snmp共有四个组件,这四个组件是必须升级的,相对于上文所述的目标软件,终端将其放在最上面的根节点里。
(2)执行rpm–Uvh XXX升级这四个组件,XXX是这四个组件的rpm包名称连接起来,并采用空格分割,在此过程中,终端通过命令行提示依赖关系涉及libmariadb、rpm-libs、perl-libs这三个组件。
依次执行rpm–Uvh XXX三次来分别升级这三个组件,其中rpm–libs会提示和lua-libs xz-libs rpm之间存在依赖关系。
同理,升级xz-libs时会提示和xz之间存在依赖关系,升级rpm时会提示和libarchive之间存在依赖关系。
基于此,终端可以绘制得到依赖树,如图3所示。
第二阶段:记录组件升级后的状态
这次升级涉及的所有组件,即依赖树中的所有组件,终端执行目标功能查看运行结果。比如对于snmp组件,执行systemctl status snmpd查看snmp服务有没有正常工作。对于rpm工具,执行rpm--help查看rpm命令能否正常执行。
第三阶段:裁剪组件
先检测第4层组件,xz是升级而来的,将xz回退后,发现xz工具无法使用(敲相关命令无反应)。这说明xz-libs升级后,如果不升级xz,xz将无法使用。由于xz回退后snmp组件的功能并没有受到影响,仅仅是xz本身无法使用,所以这不能说明新版本snmp的使用和xz-libs存在必须的依赖关系,只是说明xz和xz-libs存在必须的依赖关系。同时,卸载libarchive后各组件都没有受到影响,这说明该组件不是必须的。
再向上一层,lua-libs卸载后,发现snmpd服务的状态是stoped,这说明该组件是必须的,并且引入lua-libs的rpm-libs也是必须的。按照相同的方法,就确定了所有组件的依赖关系。如图3所示,第1层组件11、第2层组件22、23、第3层组件31、32、33以及第4层组件41即是必须升级的组件,而第2层组件21、第4层组件42则是非必须升级的组件。
以上为本申请实施例提供的软件升级方法的一些具体实现方式,基于此,本申请实施例还提供了对应的软件升级装置。下面从功能模块化的角度进行详细介绍。
参见图4所示的软件升级装置的结构示意图,该装置400包括:
获取模块410,用于获取目标软件的第一版本安装包;
绘制模块420,用于运行所述目标软件的第一版本安装包以安装所述目标软件,并在安装过程中根据所述目标软件的依赖关系绘制依赖树,所述依赖关系表征所述目标软件的依赖组件,获取所述依赖组件的第一版本安装包,运行所述依赖组件的第一版本安装包以安装所述依赖组件;
保存模块430,用于在满足依赖关系时,控制所述目标软件执行目标功能得到第一运行结果,保存所述第一运行结果;
第一确定模块440,用于根据所述依赖树按照自下而上的顺序逐个卸载所述依赖组件,根据每个依赖组件卸载后所述目标软件执行目标功能所得第二运行结果与所述第一运行结果确定所述依赖组件的必要性;
第二确定模块450,用于根据所述依赖组件的必要性调整所述依赖树,根据调整后的所述依赖树确定所述目标软件的最小安装方案。
可选的,所述绘制模块420具体用于:
将所述目标软件确定为依赖树的根节点;
根据所述目标软件安装失败时所提示的依赖关系,将对应的依赖组件确定为依赖树的子节点;
按顺序逐个安装所述依赖组件,若提示安装成功,则针对所述依赖组件的依赖关系结束,若提示安装失败,则根据提示的依赖关系确定所述依赖组件所依赖的依赖组件为所述子节点的子节点。
可选的,所述绘制模块420还用于:
在确定子节点之前,判断是否有同名依赖组件已存在于所述依赖树中;
若否,则再执行所述确定子节点的步骤。
可选的,所述第二确定模块450用于:
若所述依赖组件的必要性表征所述依赖组件为非必需,则将所述依赖组件对应的节点从所述依赖树中删除;
若所述依赖组件的必要性表征所述依赖组件为必需,则将所述依赖组件对应的节点至根节点之间的所有节点标记为必需。
可选的,所述第一确定模块440用于:
针对第k层节点,按照顺序逐个卸载所述第k层节点对应的所述依赖组件以检测各个所述依赖组件的必要性,并在所述第k层节点对应的所述依赖组件卸载完成后按层逐个卸载上层节点对应的所述依赖组件;或者,
针对第k层节点中归属于同一节点的子节点,按照顺序逐个卸载所述子节点对应的所述依赖组件以检测各个所述依赖组件的必要性,并在所述子节点对应的依赖组件卸载完成后卸载上层节点中归属于同一节点的子节点对应的依赖组件。
可选的,所述保存模块430具体用于:
所述目标软件为工具类软件时,查看所述目标软件的版本信息以及使用手册;
所述目标软件为服务类软件时,查询服务状态。
可选的,所述目标软件的第一版本安装包包括:
相对于所述目标软件的第二版本的增量安装包;或者,
所述目标软件的第一版本的完整安装包。
本申请实施例还提供了一种用于实现本申请的软件升级方法的设备。该设备具体可以是终端,下面将从硬件实体化的角度进行介绍。
本申请实施例还提供了一种终端设备,如图5所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端可以为PC、工作站等任意终端设备,以终端为PC为例:
图5示出的是与本申请实施例提供的终端相关的PC的部分结构的框图。参考图5,PC包括:射频(英文全称:Radio Frequency,英文缩写:RF)电路510、存储器520、输入单元530、显示单元540、传感器550、音频电路560、无线保真(英文全称:wireless fidelity,英文缩写:WiFi)模块570、处理器580、以及电源590等部件。本领域技术人员可以理解,图5中示出的PC结构并不构成对PC的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图5对PC的各个构成部件进行具体的介绍:
RF电路510可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器580处理;另外,将设计上行的数据发送给基站。通常,RF电路510包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(英文全称:LowNoise Amplifier,英文缩写:LNA)、双工器等。
存储器520可用于存储软件程序以及模块,处理器580通过运行存储在存储器520的软件程序以及模块,从而执行PC的各种功能应用以及数据处理。存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据PC的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元530可用于接收输入的数字或字符信息,以及产生与PC的用户设置以及功能控制有关的键信号输入。具体地,输入单元530可包括触控面板531以及其他输入设备532。触控面板531,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板531上或在触控面板531附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板531可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器580,并能接收处理器580发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板531。除了触控面板531,输入单元530还可以包括其他输入设备532。具体地,其他输入设备532可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元540可用于显示由用户输入的信息或提供给用户的信息以及PC的各种菜单。显示单元540可包括显示面板541,可选的,可以采用液晶显示器(英文全称:LiquidCrystal Display,英文缩写:LCD)、有机发光二极管(英文全称:Organic Light-EmittingDiode,英文缩写:OLED)等形式来配置显示面板541。进一步的,触控面板531可覆盖显示面板541,当触控面板531检测到在其上或附近的触摸操作后,传送给处理器580以确定触摸事件的类型,随后处理器580根据触摸事件的类型在显示面板541上提供相应的视觉输出。虽然在图5中,触控面板531与显示面板541是作为两个独立的部件来实现PC的输入和输入功能,但是在某些实施例中,可以将触控面板531与显示面板541集成而实现PC的输入和输出功能。
PC还可包括至少一种传感器550,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板541的亮度。至于PC还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路560、扬声器551,传声器552可提供用户与PC之间的音频接口。音频电路560可将接收到的音频数据转换后的电信号,传输到扬声器551,由扬声器551转换为声音信号输出;另一方面,传声器552将收集的声音信号转换为电信号,由音频电路560接收后转换为音频数据,再将音频数据输出处理器580处理后,经RF电路510以发送给比如另一PC,或者将音频数据输出至存储器520以便进一步处理。
WiFi属于短距离无线传输技术,PC通过WiFi模块570可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图5示出了WiFi模块570,但是可以理解的是,其并不属于PC的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器580是PC的控制中心,利用各种接口和线路连接整个PC的各个部分,通过运行或执行存储在存储器520内的软件程序和/或模块,以及调用存储在存储器520内的数据,执行PC的各种功能和处理数据,从而对PC进行整体监控。可选的,处理器580可包括一个或多个处理单元;优选的,处理器580可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器580中。
PC还包括给各个部件供电的电源590(比如电池),优选的,电源可以通过电源管理系统与处理器580逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,PC还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该终端所包括的处理器580还具有以下功能:
获取目标软件的第一版本安装包;
运行所述目标软件的第一版本安装包以安装所述目标软件,并在安装过程中根据所述目标软件的依赖关系绘制依赖树,所述依赖关系表征所述目标软件的依赖组件,获取所述依赖组件的第一版本安装包,运行所述依赖组件的第一版本安装包以安装所述依赖组件;
在满足依赖关系时,控制所述目标软件执行目标功能得到第一运行结果,保存所述第一运行结果;
根据所述依赖树按照自下而上的顺序逐个卸载所述依赖组件,根据每个依赖组件卸载后所述目标软件执行目标功能所得第二运行结果与所述第一运行结果确定所述依赖组件的必要性;
根据所述依赖组件的必要性调整所述依赖树,根据调整后的所述依赖树确定所述目标软件的最小安装方案。
可选的,所述处理器580还用于执行本申请提供的软件安装方法的任意一种实现方式的步骤。
本申请实施例还提供一种计算机可读存储介质,用于存储程序代码,该程序代码用于执行前述各个实施例所述的一种软件安装方法中的任意一种实施方式。
本申请实施例还提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行前述各个实施例所述的一种软件安装方法中的任意一种实施方式。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种软件安装方法,其特征在于,所述方法包括:
获取目标软件的第一版本安装包;
运行所述目标软件的第一版本安装包以安装所述目标软件,并在安装过程中根据所述目标软件的依赖关系绘制依赖树,所述依赖关系表征所述目标软件的依赖组件,获取所述依赖组件的第一版本安装包,运行所述依赖组件的第一版本安装包以安装所述依赖组件;
在满足依赖关系时,控制所述目标软件执行目标功能得到第一运行结果,保存所述第一运行结果;
根据所述依赖树按照自下而上的顺序逐个卸载所述依赖组件,根据每个依赖组件卸载后所述目标软件执行目标功能所得第二运行结果与所述第一运行结果确定所述依赖组件的必要性;
根据所述依赖组件的必要性调整所述依赖树,根据调整后的所述依赖树确定所述目标软件的最小安装方案。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标软件的依赖关系绘制依赖树包括:
将所述目标软件确定为依赖树的根节点;
根据所述目标软件安装失败时所提示的依赖关系,将对应的依赖组件确定为依赖树的子节点;
按顺序逐个安装所述依赖组件,若提示安装成功,则针对所述依赖组件的依赖关系结束,若提示安装失败,则根据提示的依赖关系确定所述依赖组件所依赖的依赖组件为所述子节点的子节点。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在确定子节点之前,判断是否有同名依赖组件已存在于所述依赖树中;
若否,则再执行所述确定子节点的步骤。
4.根据权利要求1所述的方法,其特征在于,所述根据所述依赖组件的必要性调整所述依赖树包括:
若所述依赖组件的必要性表征所述依赖组件为非必需,则将所述依赖组件对应的节点从所述依赖树中删除;
若所述依赖组件的必要性表征所述依赖组件为必需,则将所述依赖组件对应的节点至根节点之间的所有节点标记为必需。
5.根据权利要求1所述的方法,其特征在于,所述依赖树包括k层,k为正整数,所述根据所述依赖树按照自下而上的顺序逐个卸载所述依赖组件包括:
针对第k层节点,按照顺序逐个卸载所述第k层节点对应的所述依赖组件以检测各个所述依赖组件的必要性,并在所述第k层节点对应的所述依赖组件卸载完成后按层逐个卸载上层节点对应的所述依赖组件;或者,
针对第k层节点中归属于同一节点的子节点,按照顺序逐个卸载所述子节点对应的所述依赖组件以检测各个所述依赖组件的必要性,并在所述子节点对应的依赖组件卸载完成后卸载上层节点中归属于同一节点的子节点对应的依赖组件。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述目标软件为工具类软件时,所述控制所述目标软件执行目标功能包括:查看所述目标软件的版本信息以及使用手册;
所述目标软件为服务类软件时,所述控制所述目标软件执行目标功能包括:查询服务状态。
7.根据权利要求1至5任一项所述的方法,其特征在于,所述目标软件的第一版本安装包包括:
相对于所述目标软件的第二版本的增量安装包;或者,
所述目标软件的第一版本的完整安装包。
8.一种软件安装装置,其特征在于,所述装置包括:
获取模块,用于获取目标软件的第一版本安装包;
绘制模块,用于运行所述目标软件的第一版本安装包以安装所述目标软件,并在安装过程中根据所述目标软件的依赖关系绘制依赖树,所述依赖关系表征所述目标软件的依赖组件,获取所述依赖组件的第一版本安装包,运行所述依赖组件的第一版本安装包以安装所述依赖组件;
保存模块,用于在满足依赖关系时,控制所述目标软件执行目标功能得到第一运行结果,保存所述第一运行结果;
第一确定模块,用于根据所述依赖树按照自下而上的顺序逐个卸载所述依赖组件,根据每个依赖组件卸载后所述目标软件执行目标功能所得第二运行结果与所述第一运行结果确定所述依赖组件的必要性;
第二确定模块,用于根据所述依赖组件的必要性调整所述依赖树,根据调整后的所述依赖树确定所述目标软件的最小安装方案。
9.一种软件安装设备,其特征在于,所述软件安装设备包括处理器和存储器:
所述存储器用于存储程序指令;
所述处理器用于调用所述存储器中的所述程序指令,以执行如权利要求1至7任一项所述的软件安装方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码被处理器执行时实现如权利要求1至7任一项所述的软件安装方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910774530.4A CN110531993B (zh) | 2019-08-21 | 2019-08-21 | 软件安装方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910774530.4A CN110531993B (zh) | 2019-08-21 | 2019-08-21 | 软件安装方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110531993A CN110531993A (zh) | 2019-12-03 |
CN110531993B true CN110531993B (zh) | 2022-11-25 |
Family
ID=68662417
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910774530.4A Active CN110531993B (zh) | 2019-08-21 | 2019-08-21 | 软件安装方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110531993B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158741B (zh) * | 2019-12-23 | 2024-04-12 | 北京五八信息技术有限公司 | 监控业务模块对第三方类库依赖关系变化的方法及装置 |
CN111162953B (zh) * | 2019-12-31 | 2023-04-28 | 四川省公安科研中心 | 数据处理方法、系统升级方法和服务器 |
CN112230963B (zh) * | 2020-10-29 | 2024-06-21 | 抖音视界有限公司 | 安全漏洞修复的方法、装置、计算机设备和存储介质 |
CN112486512A (zh) * | 2020-11-25 | 2021-03-12 | 湖南麒麟信安科技股份有限公司 | 基于容器和堆叠文件系统的Linux通用软件适配方法及系统 |
CN113254055B (zh) * | 2021-06-29 | 2021-09-28 | 中航信移动科技有限公司 | 无效依赖的删除方法、装置、计算机设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050132350A1 (en) * | 2003-12-16 | 2005-06-16 | Microsoft Corporation | Determining a maximal set of dependent software updates valid for installation |
CN105099739A (zh) * | 2014-05-15 | 2015-11-25 | 中国移动通信集团公司 | 一种基于插件式软件部署方法、装置及应用服务器 |
-
2019
- 2019-08-21 CN CN201910774530.4A patent/CN110531993B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050132350A1 (en) * | 2003-12-16 | 2005-06-16 | Microsoft Corporation | Determining a maximal set of dependent software updates valid for installation |
CN105099739A (zh) * | 2014-05-15 | 2015-11-25 | 中国移动通信集团公司 | 一种基于插件式软件部署方法、装置及应用服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN110531993A (zh) | 2019-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110531993B (zh) | 软件安装方法、装置、设备及介质 | |
CN107943683B (zh) | 一种测试脚本生成方法、装置、电子设备及存储介质 | |
CN107239295B (zh) | 一种软件升级的方法及软件升级装置 | |
CN108268366B (zh) | 测试用例执行方法及装置 | |
CN108089977B (zh) | 一种应用程序的异常处理方法、装置及移动终端 | |
CN106066686B (zh) | 一种信息处理方法及终端设备 | |
CN107908407B (zh) | 编译方法、装置及终端设备 | |
CN107943685B (zh) | 一种遍历路径生成方法、装置、服务器及存储介质 | |
CN108228230A (zh) | Ufs固件的升级方法、终端及计算机可读存储介质 | |
CN103995715A (zh) | 应用程序的修复方法、装置及服务器 | |
CN110968508B (zh) | 一种小程序的加载时间确定方法、装置、终端及存储介质 | |
CN103917981A (zh) | 未授权应用程序的检测系统及方法 | |
CN106484771B (zh) | 差异信息文件生成及应用方法、装置 | |
CN103631625A (zh) | 一种数据获取的方法、用户端、服务器及系统 | |
CN108431767A (zh) | 一种加载软件程序的方法、用户终端及存储介质 | |
CN108170595A (zh) | 一种转储文件生成方法及数据探针的安装和卸载方法 | |
CN106371896B (zh) | 虚拟机内存配置方法及装置、移动终端 | |
CN114398065B (zh) | 微前端系统更新方法、装置、电子设备及存储介质 | |
US10809996B2 (en) | Method and device for creating images of different installation and download software units | |
CN107122204B (zh) | 应用的卸载状态检测方法及装置 | |
CN106933626B (zh) | 应用关联方法及装置 | |
CN111381845A (zh) | 软件灰度升级方法、装置、存储介质、终端和服务器 | |
CN109918340B (zh) | 一种文件处理方法及终端设备 | |
CN106462478A (zh) | 数据恢复方法、装置以及终端 | |
CN109413714B (zh) | 用户代理信息的处理方法、装置、存储介质及终端 |
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 |