CN112148351A - 一种应用软件跨版本兼容的方法和系统 - Google Patents

一种应用软件跨版本兼容的方法和系统 Download PDF

Info

Publication number
CN112148351A
CN112148351A CN202010973053.7A CN202010973053A CN112148351A CN 112148351 A CN112148351 A CN 112148351A CN 202010973053 A CN202010973053 A CN 202010973053A CN 112148351 A CN112148351 A CN 112148351A
Authority
CN
China
Prior art keywords
software
application software
target application
file
host system
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.)
Granted
Application number
CN202010973053.7A
Other languages
English (en)
Other versions
CN112148351B (zh
Inventor
周天
范渊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Dbappsecurity Technology Co Ltd
Original Assignee
Hangzhou Dbappsecurity Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Dbappsecurity Technology Co Ltd filed Critical Hangzhou Dbappsecurity Technology Co Ltd
Priority to CN202010973053.7A priority Critical patent/CN112148351B/zh
Publication of CN112148351A publication Critical patent/CN112148351A/zh
Application granted granted Critical
Publication of CN112148351B publication Critical patent/CN112148351B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting

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

本申请涉及一种应用软件跨版本兼容的方法、系统、计算机设备和计算机可读存储介质,其中,所述方法包括:获取目标应用软件的原始软件包;根据所述原始软件包,在宿主系统中构建所述目标应用软件的软件运行环境;在所述宿主系统中运行所述目标应用软件时,通过调用所述软件运行环境中的组件实现所述目标应用软件的运行。通过本申请,可以在不修改原始软件包或宿主系统中文件的前提下,实现用于软件的跨版本兼容,解决了应用软件不能兼容Linux操作系统不同发行版本的问题。

Description

一种应用软件跨版本兼容的方法和系统
技术领域
本申请涉及计算机领域,特别是涉及一种应用软件跨版本兼容的方法、系统、计算机设备和计算机可存储介质。
背景技术
随着计算机技术的发展,为了满足用户多样化的需要,Linux操作系统发行了多个版本,存在商业公司维护的发行版本,例如Red Hat,也有社区组织维护的发行版本,例如Debian。在发行的版本多了以后,不同发行版本间存在差异,会导致都是基于Linux开发的软件,但是在不同的发行版本上运行的时候,存在软件与操作系统不兼容,软件无法运行的问题。
在相关技术中,解决兼容性问题主要通过以下方式:
1.通过容器技术,提供一套完整的依赖环境,将软件放置在该依赖环境中运行,但这种方式并不能完全解决版本兼容性的问题,因为存在一些较老的发行版本,例如Centos5,就不支持容器技术。
2.通过修改环境中库依赖路径,使得软件在运行时调用指定路径的依赖库文件来解决兼容性的问题。假设操作系统中存在一个文件/sys/bin/example依赖于系统自带的/sys/lib/libexample.so,而交付件中存在同样名称的库文件/pdt/lib/libexample.so,如果这种情况下,修改了环境的库依赖路径,则会导致/sys/bin/example依赖于/pdt/lib/libexample.so,进而产生不可预期的影响,如/sys/bin/example执行异常。
3.通过在编译时写入库的依赖路径,使得软件在运行时调用指定路径的依赖库文件来解决兼容性的问题。但是在不同的发行版本之间,可能存在可执行文件不兼容的问题,导致软件无法运行。
目前,针对相关技术中应用软件不能兼容Linux操作系统的不同发行版本的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种应用软件跨版本兼容的方法、系统、电子设备和存储介质,以至少解决相关技术中应用软件不能兼容Linux操作系统的不同发行版本的问题。
第一方面,本申请实施例提供了一种应用软件跨版本兼容的方法,所述方法包括:
获取目标应用软件的原始软件包;
根据所述原始软件包,在宿主系统中构建所述目标应用软件的软件运行环境;
在所述宿主系统中运行所述目标应用软件时,通过调用所述软件运行环境中的组件实现所述目标应用软件的运行。
在其中一些实施例中,根据所述原始软件包,在宿主系统中构建所述目标应用软件的软件运行环境,包括以下步骤:
根据所述原始软件包中的可执行文件、共享库文件和脚本文件,获取所述目标应用软件运行时所依赖的工具链和所述工具链的依赖;
根据所述目标应用软件运行时所依赖的工具链和所述工具链的依赖,生成所述软件运行环境。
在其中一些实施例中,所述在所述宿主系统中运行所述目标应用软件时,通过调用所述软件运行环境中的组件实现所述目标应用软件的运行,包括以下步骤:
在所述宿主系统中运行所述目标应用软件时,启动所述软件运行环境;
在启动所述软件运行环境后,调用并启动所述目标应用软件;
在所述目标应用软件的运行过程中,通过将外部数据挂载至所述软件运行环境中,在所述宿主系统与所述软件运行环境之间共享数据。
在其中一些实施例中,所述数据包括硬件资源和软件资源。
第二方面,本申请实施例提供了一种应用软件跨版本兼容的系统,所述系统包括原始软件包获取模块、软件运行环境构建模块、以及软件运行模块;
所述原始软件包获取模块,用于获取目标应用软件的原始软件包;
所述软件运行环境构建模块,用于根据所述原始软件包,在宿主系统中构建所述目标应用软件的软件运行环境;
所述软件运行模块,在所述宿主系统中运行所述目标应用软件时,通过调用所述软件运行环境中的组件实现所述目标应用软件的运行。
在其中一些实施例中,所述软件运行环境构建模块包括依赖获取单元和环境生成单元;
所述依赖获取单元,用于根据所述原始软件包中的可执行文件、共享库文件和脚本文件,获取所述目标应用软件运行时所依赖的工具链和所述工具链的依赖;
所述环境生成单元,用于根据所述目标应用软件运行时所依赖的工具链和所述工具链的依赖,生成所述软件运行环境。
在其中一些实施例中,所述软件运行模块包括外部进程管理单元、内部进程管理单元、以及数据交换单元;
所述外部进程管理单元,用于在所述宿主系统中运行所述目标应用软件时,启动所述软件运行环境,并调用所述内部进程管理单元;
所述内部进程管理单元,用于调用所述目标应用软件启动;
所述数据交换单元,用于在所述目标应用软件的运行过程中,通过将外部数据挂载至所述软件运行环境中,在所述宿主系统与所述软件运行环境之间共享数据。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的一种应用软件跨版本兼容的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的一种应用软件跨版本兼容的方法。
本申请提供的一种应用软件跨版本兼容的方法、系统、计算机设备和计算机可读存储介质,通过根据所述目标应用软件的原始软件包在所述宿主系统中构建的软件运行环境,以提供目标应用软件运行所需的组件,在所述宿主系统中运行所述目标应用软件时,通过调用所述软件运行环境中的组件实现所述目标应用软件的运行。因此,利用本申请,可以在不修改原始软件包或宿主系统中文件的前提下,实现用于软件的跨版本兼容,解决了应用软件不能兼容Linux操作系统不同发行版本的问题。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种应用软件跨版本兼容的方法的流程图;
图2是根据本申请另一个实施例的一种应用软件跨版本兼容的方法的流程图;
图3是根据本申请又一个实施例的一种应用软件跨版本兼容的方法的流程图;
图4是根据本申请实施例的一种应用软件跨版本兼容的系统的结构图;
图5是根据本申请另一个实施例的一种应用软件跨版本兼容的系统的结构图;
图6是根据本申请再一个实施例的一种应用软件跨版本兼容的系统的结构图;
图7是根据本发明实施例中计算机设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本发明适用于解决应用软件在不同的Linux操作系统的发行版本中不兼容的问题。其中,该应用软件可以是基于Linux操作系统的某一个发行版本开发的,且与该发行版本兼容。
本实施例还提供了一种应用软件跨版本兼容的方法,可用于应用软件跨版本兼容。图1是根据本申请实施例的一种应用软件跨版本兼容的方法的流程图,如图1所示,所述方法包括如下步骤:
步骤S101,获取目标应用软件的原始软件包。上述目标应用软件可以是基于Linux操作开发的软件。
步骤S102,根据所述原始软件包,在宿主系统中构建所述目标应用软件的软件运行环境。所述宿主系统指的是的Linux操作系统。
步骤S103,在所述宿主系统中运行所述目标应用软件时,通过调用所述软件运行环境中的组件实现所述目标应用软件的运行。当宿主系统无法提供目标应用软件需要的组件的时候,所述目标应用软件会在所述软件运行环境中调用所需的组件,使应用软件运行。
上述步骤S101至S103,通过获取目标应用软件的原始软件包后,根据所述原始软件包在宿主系统中构建目标软件的软件运行环境。若无本发明所提供的方法,当宿主系统无法提供所述目标应用软件中所需的全部组件时,目标应用软件就无法在宿主系统中运行,即所述目标软件与所述宿主系统不兼容。在本发明所提供的方法中,通过根据所述目标应用软件的原始软件包在所述宿主系统中构建的软件运行环境会提供目标应用软件运行所需的组件,实现目标应用软件在所述宿主系统中的运行。因此,本申请实施例提供的一种应用软件跨版本兼容的方法,在不修改原始软件包或宿主系统中配置文件的前提下,能够实现用于软件的跨版本兼容,解决了应用软件不能兼容Linux操作系统不同发行版本的问题。
在一个可选实施例中,所述原始软件包包括二进制文件、文本文件、以及数据文件,其中,所述二进制文件包括可执行文件和共享库文件,所述文本文件包括脚本文件、配置文件和超文本文件。
本实施例还提供了一种应用软件跨版本兼容的方法,可用于应用软件跨版本兼容。图2是根据本申请另一个实施例的一种应用软件跨版本兼容的方法的流程图,如图2所示,所述该方法流程包括如下步骤:
步骤S201,获取目标应用软件的原始软件包。上述目标应用软件可以是基于Linux操作开发的软件。
步骤S202,根据所述原始软件包中的可执行文件、共享库文件和脚本文件,获取所述目标应用软件运行时所依赖的工具链和所述工具链的依赖。
可执行文件和共享库文件由应用软件的私有源码编译出的,该可执行文件和共享库文件属于应用软件原始软件包中的二进制文件。该脚本文件主要是指需要解释器来执行的文本文件。
上述的目标应用软件运行时所依赖的工具链指的是保证目标应用软件正常时,需要调用的第三方组件,例如gpg、mysql、nginx、libyaml、bash和glibc等。
上述工具链的依赖指的是保证工具链正常工作,需要调用的第三方依赖,例如nginx的依赖和mysql的依赖等。
步骤S203,根据所述目标应用软件运行时所依赖的工具链和所述工具链的依赖,生成所述软件运行环境。
步骤S204,在所述宿主系统中运行所述目标应用软件时,通过调用所述软件运行环境中的组件实现所述目标应用软件的运行。当宿主系统无法提供目标应用软件需要的组件的时候,所述目标应用软件会在所述软件运行环境中调用所需的组件,使应用软件运行。
上述步骤S201至步骤S204,通过获取目标软件的软件包后,根据软件包中的私有文件中的可执行文件、共享库文件和脚本文件获取目标应用软件运行时依赖的工具链,再根据工具链获取该工具链的依赖,然后根据所述目标软件运行时依赖的工具链和该工具链的依赖构建生产软件运行环境,当宿主系统无法提供目标应用软件需要的组件的时候,所述目标应用软件会在所述软件运行环境中调用所需的组件,使应用软件运行。因此,本申请实施例提供的一种应用软件跨版本兼容的方法,在不修改原始软件包或宿主系统中配置文件的前提下,能够实现用于软件的跨版本兼容,解决了应用软件不能兼容Linux操作系统不同发行版本的问题。
本实施例还提供了一种应用软件跨版本兼容的方法,可用于应用软件跨版本兼容。图3是根据本申请又一个实施例的一种应用软件跨版本兼容的方法的流程图,如图3所示,所述该方法流程包括如下步骤:
步骤S301,获取目标应用软件的原始软件包。上述目标应用软件可以是基于Linux操作开发的软件。
步骤S302,根据所述原始软件包中的可执行文件、共享库文件和脚本文件,获取所述目标应用软件运行时所依赖的工具链和所述工具链的依赖。其中,可执行文件和共享库文件由应用软件的私有源码编译出的,该可执行文件和共享库文件属于应用软件原始软件包中的二进制文件。该脚本文件主要是指需要解释器来执行的文本文件。
上述的目标应用软件运行时所依赖的工具链指的是保证目标应用软件正常时,需要调用的第三方组件,例如gpg、mysql、nginx、libyaml、bash和glibc等。
上述工具链的依赖指的是保证工具链正常工作,需要调用的第三方依赖,例如nginx的依赖和mysql的依赖等。
步骤S303,根据所述目标应用软件运行时所依赖的工具链和所述工具链的依赖,生成所述软件运行环境。
步骤S304,在所述宿主系统中运行所述目标应用软件时,启动所述软件运行环境。在用户需要在该宿主系统中运行所述目标应用软件的时候,应该先再所述宿主系统中启动所述软件运行环境。
步骤S305,在启动所述软件运行环境后,调用并启动所述目标应用软件。在软件运行环境启动后,再由软件运行环境调用并启动所述目标应用软件,所述目标应用软件启动后在所述软件运行环境中运行。
步骤S306,在所述目标应用软件的运行过程中,通过将外部数据挂载至所述软件运行环境中,在所述宿主系统与所述软件运行环境之间共享数据。
上述软件运行环境就像是一个“壳”,包裹在目标应用软件的外面,通过与目标应用软件的数据交互和与宿主系统的数据交互。所述目标应用软件在软件运行环境中运行时,会需要与宿主系统发现一些数据交换,所以将需要的外部数据挂载至锁住的软件运行环境中,让宿主系统通过软件运行环境与目标应用环境进行间接的数据交互。
上述步骤S301至步骤S306,通过获取目标软件的软件包后,根据软件包中的私有文件中的可执行文件、共享库文件和脚本文件获取目标应用软件运行时依赖的工具链,再根据工具链获取该工具链的依赖,然后根据所述目标软件运行时依赖的工具链和该工具链的依赖构建生产软件运行环境,当宿主系统无法提供目标应用软件需要的组件的时候,所述目标应用软件会在所述软件运行环境中调用所需的组件,使应用软件运行。当用户需要在宿主系统中使用所述目标应用软件的时候,需要先启动所述软件运行环境,再由软件运行环境调用并启动所述目标应用软件,使目标应用软件在软件运行环境中运行,并且当目标应用软件的运行过程中,通过将外部数据挂载至所述软件运行环境中,在所述宿主系统与所述软件运行环境之间共享数据。因此,本申请实施例提供的一种应用软件跨版本兼容的方法,在不修改原始软件包或宿主系统中配置文件的前提下,能够实现用于软件的跨版本兼容,解决了应用软件不能兼容Linux操作系统不同发行版本的问题。
在一个可选实施例中,所述数据包括硬件资源和软件资源。
在一个可选实施例中,所述原始软件包包括二进制文件、文本文件、以及数据文件,其中,所述二进制文件包括可执行文件和共享库文件,所述文本文件包括脚本文件、配置文件和超文本文件。
本实施例还提供了一种应用软件跨版本兼容的系统,可用于应用软件跨版本兼容。图4是根据本申请实施例的一种应用软件跨版本兼容的系统的结构图,如图4所示,所述系统包括原始软件包获取模块41、软件运行环境构建模块42、以及软件运行模块43。
所述原始软件包获取模块41,用于获取目标应用软件的原始软件包。上述目标应用软件可以是基于Linux操作开发的软件。
所述软件运行环境构建模块42,用于根据所述原始软件包,在宿主系统中构建所述目标应用软件的软件运行环境。所述宿主系统指的是的Linux操作系统。
所述软件运行模块43,在所述宿主系统中运行所述目标应用软件时,通过调用所述软件运行环境中的组件实现所述目标应用软件的运行。当宿主系统无法提供目标应用软件需要的组件的时候,所述目标应用软件会在所述软件运行环境中调用所需的组件,使应用软件运行。
上述应用软件跨版本兼容的系统,通过获取目标应用软件的原始软件包后,根据所述原始软件包在宿主系统中构建目标软件的软件运行环境。若无本发明所提供的系统,当宿主系统无法提供所述目标应用软件中所需的全部组件时,目标应用软件就无法在宿主系统中运行,即所述目标软件与所述宿主系统不兼容。在本发明所提供的系统中,会根据所述目标应用软件的原始软件包在所述宿主系统中构建的软件运行环境会提供目标应用软件运行所需的组件,实现目标应用软件在所述宿主系统中的运行。因此,本申请实施例提供的一种应用软件跨版本兼容的系统,在不修改原始软件包或宿主系统中配置文件的前提下,能够实现用于软件的跨版本兼容,解决了应用软件不能兼容Linux操作系统不同发行版本的问题。
本实施例还提供了一种应用软件跨版本兼容的系统,可用于应用软件跨版本兼容。图5是根据本申请另一个实施例的一种应用软件跨版本兼容的系统的结构图,如图5所示,所述系统包括原始软件包获取模块41、软件运行环境构建模块42以及软件运行模块43,其中,软件运行环境构建模块42包括依赖获取单元421和环境生成单元422。
所述原始软件包获取模块41,用于获取目标应用软件的原始软件包。
所述依赖获取单元421,用于根据所述原始软件包中的可执行文件、共享库文件和脚本文件,获取所述目标应用软件运行时所依赖的工具链和所述工具链的依赖。其中,可执行文件和共享库文件由应用软件的私有源码编译出的,该可执行文件和共享库文件属于应用软件原始软件包中的二进制文件。该脚本文件主要是指需要解释器来执行的文本文件。
上述的目标应用软件运行时所依赖的工具链指的是保证目标应用软件正常时,需要调用的第三方组件,例如gpg、mysql、nginx、libyaml、bash和glibc等。
上述工具链的依赖指的是保证工具链正常工作,需要调用的第三方依赖,例如nginx的依赖和mysql的依赖等。
所述环境生成单元422,用于根据所述目标应用软件运行时所依赖的工具链和所述工具链的依赖,生成所述软件运行环境。
所述软件运行模块43,在所述宿主系统中运行所述目标应用软件时,通过调用所述软件运行环境中的组件实现所述目标应用软件的运行。当宿主系统无法提供目标应用软件需要的组件的时候,所述目标应用软件会在所述软件运行环境中调用所需的组件,使应用软件运行。
上述系统通过获取目标软件的软件包后,根据软件包中的私有文件中的可执行文件、共享库文件和脚本文件获取目标应用软件运行时依赖的工具链,再根据工具链获取该工具链的依赖,然后根据所述目标软件运行时依赖的工具链和该工具链的依赖构建生产软件运行环境,当宿主系统无法提供目标应用软件需要的组件的时候,所述目标应用软件会在所述软件运行环境中调用所需的组件,使应用软件运行。因此,本申请实施例提供的一种应用软件跨版本兼容的系统,在不修改原始软件包或宿主系统中配置文件的前提下,能够实现用于软件的跨版本兼容,解决了应用软件不能兼容Linux操作系统不同发行版本的问题。
本实施例还提供了一种应用软件跨版本兼容的系统,可用于应用软件跨版本兼容。图6是根据本申请再一个实施例的一种应用软件跨版本兼容的系统的结构图,如图6所示,所述系统包括原始软件包获取模块41、软件运行环境构建模块42、以及软件运行模块43,其中软件运行环境构建模块42包括依赖获取单元421和环境生成单元422,软件运行模块43包括外部进程管理单元431、内部进程管理单元432以及数据交换单元433。
所述原始软件包获取模块41,用于获取目标应用软件的原始软件包。上述目标应用软件可以是基于Linux操作开发的软件。
所述依赖获取单元421,用于根据所述原始软件包中的可执行文件、共享库文件和脚本文件,获取所述目标应用软件运行时所依赖的工具链和所述工具链的依赖。其中,可执行文件和共享库文件由应用软件的私有源码编译出的,该可执行文件和共享库文件属于应用软件原始软件包中的二进制文件。该脚本文件主要是指需要解释器来执行的文本文件。
上述的目标应用软件运行时所依赖的工具链指的是保证目标应用软件正常时,需要调用的第三方组件,例如gpg、mysql、nginx、libyaml、bash和glibc等。
上述工具链的依赖指的是保证工具链正常工作,需要调用的第三方依赖,例如nginx的依赖和mysql的依赖等。
所述环境生成单元422,用于根据所述目标应用软件运行时所依赖的工具链和所述工具链的依赖,生成所述软件运行环境。
所述外部进程管理单元431,用于在所述宿主系统中运行所述目标应用软件时,启动所述软件运行环境,并调用所述内部进程管理单元。在用户需要在该宿主系统中运行所述目标应用软件的时候,应该先再所述宿主系统中启动所述软件运行环境。
所述内部进程管理单元432,用于调用所述目标应用软件启动。在软件运行环境启动后,再由软件运行环境调用并启动所述目标应用软件,所述目标应用软件启动后在所述软件运行环境中运行。
所述数据交换单元433,用于在所述目标应用软件的运行过程中,通过将外部数据挂载至所述软件运行环境中,在所述宿主系统与所述软件运行环境之间共享数据。上述软件运行环境就像是一个“壳”,包裹在目标应用软件的外面,通过与目标应用软件的数据交互和与宿主系统的数据交互。所述目标应用软件在软件运行环境中运行时,会需要与宿主系统发现一些数据交换,所以将需要的外部数据挂载至锁住的软件运行环境中,让宿主系统通过软件运行环境与目标应用环境进行间接的数据交互。
上述系统通过获取目标软件的软件包后,根据软件包中的私有文件中的可执行文件、共享库文件和脚本文件获取目标应用软件运行时依赖的工具链,再根据工具链获取该工具链的依赖,然后根据所述目标软件运行时依赖的工具链和该工具链的依赖构建生产软件运行环境,当宿主系统无法提供目标应用软件需要的组件的时候,所述目标应用软件会在所述软件运行环境中调用所需的组件,使应用软件运行。当用户需要在宿主系统中使用所述目标应用软件的时候,需要先启动所述软件运行环境,再由软件运行环境调用并启动所述目标应用软件,使目标应用软件在软件运行环境中运行,并且当目标应用软件的运行过程中,通过将外部数据挂载至所述软件运行环境中,在所述宿主系统与所述软件运行环境之间共享数据。因此,本申请实施例提供的一种应用软件跨版本兼容的系统,在不修改原始软件包或宿主系统中配置文件的前提下,能够实现用于软件的跨版本兼容,解决了应用软件不能兼容Linux操作系统不同发行版本的问题。
在一个实施例中,提供了一种计算机设备,图7是根据本发明实施例中区块链交易查询计算机设备的结构示意图,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储区块链交易查询数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种应用软件跨版本兼容的方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述一种应用软件跨版本兼容的方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种应用软件跨版本兼容的方法,其特征在于,所述方法包括:
获取目标应用软件的原始软件包;
根据所述原始软件包,在宿主系统中构建所述目标应用软件的软件运行环境;
在所述宿主系统中运行所述目标应用软件时,通过调用所述软件运行环境中的组件实现所述目标应用软件的运行。
2.根据权利要求1所述的方法,其特征在于,根据所述原始软件包,在宿主系统中构建所述目标应用软件的软件运行环境,包括以下步骤:
根据所述原始软件包中的可执行文件、共享库文件和脚本文件,获取所述目标应用软件运行时所依赖的工具链和所述工具链的依赖;
根据所述目标应用软件运行时所依赖的工具链和所述工具链的依赖,生成所述软件运行环境。
3.根据权利要求1所述的方法,其特征在于,所述在所述宿主系统中运行所述目标应用软件时,通过调用所述软件运行环境中的组件实现所述目标应用软件的运行,包括以下步骤:
在所述宿主系统中运行所述目标应用软件时,启动所述软件运行环境;
在启动所述软件运行环境后,调用并启动所述目标应用软件;
在所述目标应用软件的运行过程中,通过将外部数据挂载至所述软件运行环境中,在所述宿主系统与所述软件运行环境之间共享数据。
4.根据权利要求3所述的方法,其特征在于,所述数据包括硬件资源和软件资源。
5.根据权利要求1至4任一项所述方法,其特征在于,所述原始软件包包括二进制文件、文本文件、以及数据文件,其中,所述二进制文件包括可执行文件和共享库文件,所述文本文件包括脚本文件、配置文件和超文本文件。
6.一种应用软件跨版本兼容的系统,其特征在于,包括原始软件包获取模块、软件运行环境构建模块、以及软件运行模块;
所述原始软件包获取模块,用于获取目标应用软件的原始软件包;
所述软件运行环境构建模块,用于根据所述原始软件包,在宿主系统中构建所述目标应用软件的软件运行环境;
所述软件运行模块,在所述宿主系统中运行所述目标应用软件时,通过调用所述软件运行环境中的组件实现所述目标应用软件的运行。
7.根据权利要求6所述的系统,其特征在于,所述软件运行环境构建模块包括依赖获取单元和环境生成单元;
所述依赖获取单元,用于根据所述原始软件包中的可执行文件、共享库文件和脚本文件,获取所述目标应用软件运行时所依赖的工具链和所述工具链的依赖;
所述环境生成单元,用于根据所述目标应用软件运行时所依赖的工具链和所述工具链的依赖,生成所述软件运行环境。
8.根据权利要求6所述的系统,其特征在于,所述软件运行模块包括外部进程管理单元、内部进程管理单元、以及数据交换单元;
所述外部进程管理单元,用于在所述宿主系统中运行所述目标应用软件时,启动所述软件运行环境,并调用所述内部进程管理单元;
所述内部进程管理单元,用于调用所述目标应用软件启动;
所述数据交换单元,用于在所述目标应用软件的运行过程中,通过将外部数据挂载至所述软件运行环境中,在所述宿主系统与所述软件运行环境之间共享数据。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至5中任一项所述的方法。
CN202010973053.7A 2020-09-16 2020-09-16 一种应用软件跨版本兼容的方法和系统 Active CN112148351B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010973053.7A CN112148351B (zh) 2020-09-16 2020-09-16 一种应用软件跨版本兼容的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010973053.7A CN112148351B (zh) 2020-09-16 2020-09-16 一种应用软件跨版本兼容的方法和系统

Publications (2)

Publication Number Publication Date
CN112148351A true CN112148351A (zh) 2020-12-29
CN112148351B CN112148351B (zh) 2024-05-28

Family

ID=73893817

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010973053.7A Active CN112148351B (zh) 2020-09-16 2020-09-16 一种应用软件跨版本兼容的方法和系统

Country Status (1)

Country Link
CN (1) CN112148351B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114706564A (zh) * 2022-05-16 2022-07-05 龙芯中科技术股份有限公司 软件包制作方法、装置、电子设备及存储介质
CN114780950A (zh) * 2022-06-20 2022-07-22 中国人民解放军国防科技大学 应用软件跨版本兼容运行的方法、系统、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102289374A (zh) * 2011-08-31 2011-12-21 中兴通讯股份有限公司 一种构建跨平台软件运行环境的方法及装置
CN106020935A (zh) * 2016-05-26 2016-10-12 国云科技股份有限公司 一种跨版本运行openstack组件服务的方法
CN106164861A (zh) * 2014-02-17 2016-11-23 泰雷兹公司 用于部署一组软件应用的方法
CN106598681A (zh) * 2016-12-21 2017-04-26 北京恒华伟业科技股份有限公司 开发环境构建方法及装置
CN109032602A (zh) * 2018-06-07 2018-12-18 山东超越数控电子股份有限公司 一种软件自动适配操作系统的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102289374A (zh) * 2011-08-31 2011-12-21 中兴通讯股份有限公司 一种构建跨平台软件运行环境的方法及装置
CN106164861A (zh) * 2014-02-17 2016-11-23 泰雷兹公司 用于部署一组软件应用的方法
CN106020935A (zh) * 2016-05-26 2016-10-12 国云科技股份有限公司 一种跨版本运行openstack组件服务的方法
CN106598681A (zh) * 2016-12-21 2017-04-26 北京恒华伟业科技股份有限公司 开发环境构建方法及装置
CN109032602A (zh) * 2018-06-07 2018-12-18 山东超越数控电子股份有限公司 一种软件自动适配操作系统的方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114706564A (zh) * 2022-05-16 2022-07-05 龙芯中科技术股份有限公司 软件包制作方法、装置、电子设备及存储介质
CN114706564B (zh) * 2022-05-16 2022-08-30 龙芯中科技术股份有限公司 软件包制作方法、装置、电子设备及存储介质
CN114780950A (zh) * 2022-06-20 2022-07-22 中国人民解放军国防科技大学 应用软件跨版本兼容运行的方法、系统、装置及存储介质
CN114780950B (zh) * 2022-06-20 2022-09-06 中国人民解放军国防科技大学 应用软件跨版本兼容运行的方法、系统、装置及存储介质

Also Published As

Publication number Publication date
CN112148351B (zh) 2024-05-28

Similar Documents

Publication Publication Date Title
CN108062252B (zh) 一种信息交互方法、对象管理方法及装置和系统
CN108121594B (zh) 一种进程管理方法及装置
CN109445845B (zh) 接口调用方法、装置、计算机设备和存储介质
US9189300B2 (en) Dynamic service discovery
US20140033208A1 (en) Method and device for loading application program
CN110162344B (zh) 一种隔离限流的方法、装置、计算机设备及可读存储介质
CN106056000B (zh) 基于系统权限的移动设备存储分区配置方法及装置
CN112148351B (zh) 一种应用软件跨版本兼容的方法和系统
CN113835713B (zh) 源码包下载方法、装置、计算机设备和存储介质
CN110955448A (zh) 智能合约分离方法、合约处理方法、装置、设备及介质
CN109254765B (zh) 定时任务管理方法、装置、计算机设备及存储介质
CN110531984B (zh) 代码编译方法、装置、系统、计算机设备和存储介质
CN111884834A (zh) 基于zookeeper的分布式系统升级方法、系统和计算机设备
CN106293790B (zh) 基于Firefox操作系统的应用程序升级方法和装置
CN106775608B (zh) 独立系统进程的实现方法和装置
CN111552524A (zh) 一种插件加载方法、装置及计算机可读存储介质
CN108536444B (zh) 插件编译方法、装置、计算机设备和存储介质
CN114860204A (zh) 程序处理、运行方法、装置、终端、智能卡及存储介质
CN112149951A (zh) 风险控制方法、装置、计算机设备和存储介质
CN113032118A (zh) 用于计算机应用程序的异步操作处理方法和相应的系统
CN112214213A (zh) Linux内核的开发和管理方法、装置、计算机设备和存储介质
CN108804236B (zh) 一种aidl文件的共享方法及系统
US20240152387A1 (en) Method, apparatus, electronic device and storage medium for application launch
CN116541085B (zh) 一种Android/Linux融合方法、装置、设备及存储介质
CN111984299A (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