CN108595186B - 一种飞腾平台上基于完全函数的多版本软件管理方法 - Google Patents

一种飞腾平台上基于完全函数的多版本软件管理方法 Download PDF

Info

Publication number
CN108595186B
CN108595186B CN201810256206.9A CN201810256206A CN108595186B CN 108595186 B CN108595186 B CN 108595186B CN 201810256206 A CN201810256206 A CN 201810256206A CN 108595186 B CN108595186 B CN 108595186B
Authority
CN
China
Prior art keywords
software
version
package
environment
software package
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
Application number
CN201810256206.9A
Other languages
English (en)
Other versions
CN108595186A (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.)
Kirin Software Co Ltd
Original Assignee
Kirin Software 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 Kirin Software Co Ltd filed Critical Kirin Software Co Ltd
Priority to CN201810256206.9A priority Critical patent/CN108595186B/zh
Publication of CN108595186A publication Critical patent/CN108595186A/zh
Application granted granted Critical
Publication of CN108595186B publication Critical patent/CN108595186B/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/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

一种飞腾平台上基于完全函数的多版本软件管理方法,步骤包括:S1、基于完全函数进行软件包的构建;S2、根据每个软件包不同的构建环境生成对应的哈希值,用所述哈希值标记对应的所述软件包。相较于现有技术,本申请的优势在于:生成的包不依赖操作系统已有软件,且包之间没有依赖性,能够允许一个软件多个版本间无冲突的共存,方便用户安装、升级、卸载自己需要的版本的软件。

Description

一种飞腾平台上基于完全函数的多版本软件管理方法
技术领域
本发明属于操作系统技术领域,具体地说,涉及一种飞腾平台上基于完全函数的多版本软件管理方法。
背景技术
大多数现代Linux操作系统都提供了一个集中的软件包管理机制,以帮助用户搜索、安装和管理软件。而软件通常以包的形式存储在仓库中,对软件包的使用和管理被称为包管理。而Linux包的基本组成部分通常有:共享库、应用程序、服务和文档。包管理通常不仅限于软件的一次性安装,还包括了对已安装软件包进行升级的工具。包仓库有助于确保代码已经在所使用的系统上进行了审核,并由软件开发者或包维护者进行管理。大多数包管理系统是建立在包文件上的集合,包文件通常包含编译好的二进制文件和其它资源组成的:软件、安装脚本、元数据及其所需的依赖列表。
Linux操作系统上的每个包都有对应的安装路径,当对包进行升级或降级时,默认情况下会覆盖原安装路径下的相应文件。若想同时安装某一软件的不同版本,需要为不同版本指定不同的安装路径。
在Linux操作系统长期的使用过程中,特别是针对服务器版本的操作系统,由于编译环境、系统性能、软件依赖性、用户需求等多方面的原因,经常对操作系统软件的多版本有着迫切和严格的要求。
软件包的安装行为直接受制于包管理工具。Linux操作系统中,RPM和DPKG为最常见的两类软件包管理工具,他们分别应用于基于RPM软件包的Linux发行版本和DEB软件包的Linux发行版本。软件包管理工具的作用是提供在操作系统中安装、升级、卸载需要的软件的方法,并提供对系统中所有软件状态信息的查询。这些现有包管理工具和技术,在解决软件多版本方面均存在一定问题,不能满足用户对多版本的需求。
中国发明专利“软件多版本升级的方法及系统”(申请号CN200610109523.5),该发明是为不同指定版本间的升级任务分别建立不同的指定目录,所述指定目录用于存放与之对应的升级脚本,通过激活与指定版本间的升级任务相对应的指定目录下的升级脚本完成指定版本间的升级。该发明提供的方法仍不能解决软件对于操作系统底层库的依赖问题,不同版本对基础库的依赖仍存在冲突的问题。另外,该发明没有提供软件的同一管理方式,包的升级靠脚本执行,过程相对复杂。该发明未涉及本专利发明中的完全函数式机制,且未涉及本专利中的包垃圾回收和包服务管理机制。
采用RPM或DPKG的方式,在不改变原有安装路径和文件名的情况下,无法实现多软件版本的安装。一种实现方式是改变现有安装路径下的二进制文件的名称,这样虽可以同时安装同一软件的多个版本,但破坏了已有用户对二进制文件的使用。
Alternatives系统通过替换系统中命令的链接指向来实现版本的切换,alternative默认的多版本软件都放在/etc/alternatives路径下,可以通过alternatives来管理系统中不同软件的版本问题。但是,alternatives的实际使用非常复杂,例如,同时安装mysql5.2和mysql5.5,通过alternatives可以进行版本切换,但必须创建一个新的包以更改所有要使用的路径,同时不同版本的mysql对应的mysqlclient库或许存在冲突。使用Alternatives解决软件多版本问题时的工作量非常大,因为必须构建和安装两套完整的软件栈。
容器技术为每一个服务创建一个容器,不同的容器允许同一软件多个版本间的存在,因为容器间做了隔离,软件依赖的库和其它软件相互间不会产生冲突。但是容器技术侧重于应用软件层面,在操作系统底层软件引入了隔离性。同时,容器和宿主机的网络和文件共享等问题增加了使用的复杂程度。
Snaps是一种新的打包方式,区别于传统的deb包和rpm包格式,snaps提供了一种新的打包格式。Snaps提供的包中包含了所有的库和依赖包,这允许同一软件多个版本的存在,snaps采用沙箱方式来隔离应用程序,允许增量更新。但snaps的缺点是只允许使用包内的库,不同包内的库无法共享。另外,snaps的安全机制也会导致应用的隔离性问题。
Flatpak拥有和snaps相同的优势,不同的是它使用SElinux来实现沙箱机制。Flatpak最大的缺点是主要关注于桌面型应用软件,对于操作系统底层软件的实现较少。
Environment Modules作为一个第三方的工具,为每个它使用的软件应用程序设置环境变量信息。通过使用前的shell初始化来修改当前会话环境的环境变量。目前Environment Modules主要针对的是操作系统底层软件的应用,例如gcc、gdb等。而对于桌面型应用,例如QT和Eclipse等,environment modules无法实现该类软件的应用。
SCL可以在系统上安装同一软件的多个版本,而不会对操作系统上的软件产生任何影响。但SCL分发软件包是基于RPM包的Linux发行版。SCL与容器方式有很多相似处,例如基于SCL的软件包处于一个隔离的环境,也就是说在SCL包环境中,无法直接使用操作系统的上其它命令和工具。
Fedora modularity构建了一个模块化的系统,摒弃了传统操作系统软件包的组成形式,modularity通过一个个模块构建了一个新的操作系统,模块间相互独立,没有任何依赖,每个module的版本对应不同的软件版本,module版本的切换不会受到其它module的影响,因此软件版本间可以实现无缝切换。但是这种方式目前只使用于Fedora系统,modularity无法应用于其它Linux发行版。
发明内容
有鉴于此,本发明为了解决现有技术存在的缺陷和不足,提供了一种飞腾平台上基于完全函数的多版本软件管理方法,生成的包不依赖操作系统已有软件,且包之间没有依赖性,能够允许一个软件多个版本间无冲突的共存,方便用户安装、升级、卸载自己需要的版本的软件。
为了解决上述技术问题,本发明公开了一种飞腾平台上基于完全函数的多版本软件管理方法,并采用以下技术方案来实现。
一种飞腾平台上基于完全函数的多版本软件管理方法,步骤包括:S1、基于完全函数进行软件包的构建;S2、根据每个软件包不同的构建环境生成对应的哈希值,用所述哈希值标记对应的所述软件包。
进一步的,所述软件包的构建包括:S11、编写函数表达式;S12、编写构建脚本;S13、软件包构建和测试。
更进一步的,所述S11具体步骤包括:
S111、定义所述函数表达式的参数;
S112、从标准环境中调用组建函数;
S113、定义所要构建的软件包的名称;
S114、指定所需构建脚本的名称;
S115、指定构建的软件包的源码来源;
S116、指定获取所述源码的具体地址;
S117、指定构建的软件包运行时的必需环境。
进一步的,所述S12具体步骤包括:
S121、设置环境变量;
S122、追加必需的依赖环境;
S123、解压所述软件包的源码;
S124、运行源码配置脚本;
S125、对所述源码进行编译。
进一步的,所述S13中软件包构建过程的具体步骤包括:
S131、创建结果符号链接;
S132、解析构建参数;
S133、读取并解析所述函数表达式;
S134、执行构建脚本。
进一步的,所述函数表达式中描述构建所述软件包所需的所有依赖,并以环境变量、源码地址和/或构建依赖作为参数。
进一步的,所述哈希值的生成依据的构建环境包括所述函数表达式的参数和/或依赖,相同的所述参数和所述依赖产生的哈希值相同;不同的所述哈希值对应不同的生成目录。
一种适用于上述任一所述飞腾平台上基于完全函数的多版本软件管理方法的管理系统,包括如下模块:
多版本环境操作:提供操作命令来管理和查询多版本用户环境,完成软件包的安装、升级、更新、删除和/或版本切换的操作;
多版本shell工具:提供一个交互式的shell环境,供用户创建、调试和/或安装软件包;
多版本存储库:包括一个或多个存储库,用于存放多版本软件;安装软件时首先获取并添加所述软件所在的存储库地址;对所述存储库的管理主要对多版本软件所在存储库的地址进行添加和删除;
多版本软件推送:把本地生成的软件包推送并添加到所述存储库,用于对所述存储库内的多版本软件进行更新;
多版本软件拉取:非安装环境下,从所述存储库下载所需软件版本到本地;
多版本软件垃圾回收:用于完全删除想要删除的软件包;
以及多版本软件服务:用于局域网内机器间软件包的相互拷贝,同时允许选择包的来源机器及其包所有的依赖,实现快速安装软件包。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述多版本软件管理方法的步骤。
一种飞腾平台上基于完全函数的多版本软件管理装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上任一所述多版本软件管理方法的步骤。
与现有技术相比,本发明可以获得包括以下技术效果:生成的包不依赖操作系统已有软件,并且生成的包相互间没有依赖性;通过本发明的方法安装的包与操作系统间不存在隔离性,不影响操作系统用户的使用习惯;支持包版本的升级和回滚,同时保证不会覆盖已有软件的版本;生成的包主要以二级制的形式发布,大大提高包安装和卸载的效率;通过本发明方法生成的包具有可移植性,可以做到在Linux不同发行版间通用安装。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明一个实施例的多版本包管理实现方法系统架构示意图。
图2是本发明一个实施例的函数表达式编写流程图。
图3是本发明一个实施例的构建脚本执行流程图。
图4是本发明一个实施例的软件包构建流程图。
图5是本发明一个实施例的多版本软件shell工具工作流程图。
具体实施方式
以下将配合附图及实施例来详细说明本发明的实施方式,藉此对本发明如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
一种飞腾平台上基于完全函数的多版本软件管理方法的系统架构图如图1所示,首先从多版本软件包的构建开始,在多版本软件构建过程中涉及多版本环境操作、多版本shell工具;软件构建完成后要进行软件仓库的构建,软件仓库的构建涉及多版本存储库的管理;存储库构建完成后,进入多版本软件的使用阶段,这一阶段包括多版本软件推送、多版本软件拉取;本专利发明同时开发提供多版本使用中的附加工具和功能,包括垃圾回收机制、多版本软件服务等模块。
(一)多版本软件构建
多版本软件构建包括编写函数表达式、编写构建脚本、软件包构建和测试三个步骤,具体如下:
S1、编写函数表达式;
编写多版本软件包构建所需的函数表达式。设计编写函数表达式,表达式中描述构建包所需的所有依赖,包括依赖性、源代码等。
表达式实际是一个函数,函数以环境变量、源码地址、构建依赖等作为函数的参数。因此在构建包过程中会读取所需的环境变量并获取源码。函数表达式示例,即示例1如下:
Figure BDA0001609024590000071
函数表达式编写流程如图2所示:
S101、参数定义
首先定义软件构建所需的所有参数,参数即构建软件包所需的所有依赖包,上述示例第1行给出了构建hello软件包需要stdenv、feturl、perl三个依赖。以依赖包和依赖环境变量的名称作为参数进行传递。
S102、调用组建函数
从标准环境中调用组建函数,上述示例第2行给出了调用格式,表明后面的所有操作或代码均在mkFuncExpr函数中完成。
S103、定义软件包名称
定义所要构建的软件包名称,上述示例第3行定义所要构建的软件包名称是“hello-2.1.1”。
S104、指定构建脚本名称
设定构建过程中所用构建脚本,上述示例中第4行表示本次构建使用脚本build.sh。
S105、指定构建软件源码来源
所需构建的软件源码可以来自URL地址或本地环境,上述示例第5行表明软件构建源码来自URL地址。
S106、指定具体地址
指明URL的具体地址,在构建过程中,会从该地址获取源代码,上述示例第6行表明了源码地址。
S107、指定运行必需环境
指定软件包运行的必需环境,即运行构建完成的软件包是必须依赖的环境。上述示例第7行表明构建的“hello-2.1.1”软件包在运行时依赖perl环境,因此,必须指定所构建软件包运行时所需要的软件环境。
S2、编写构建脚本;
软件包构建过程中会执行构建脚本中的所有命令,构建脚本描述的是软件包的静态编译的过程。示例2的代码如下:
Figure BDA0001609024590000081
构建脚本执行流程如图3所示:
S201、设置环境变量
上述示例代码第1行所示,调用setup脚本设置环境变量。
S202、依赖环境追加
追加必需的依赖环境,上述示例中软件包的构建依赖per1环境,因此示例第2行在PATH中追加per1环境变量。
S203、解压源码包
解压从src处获取的软件包源码;上述示例第3行解压获取的“hello-2.1.1”源码。
S204、运行源码配置脚本
对解压后的源代码进行配置;上述示例第4行对解压后的“hello-2.1.1”源码进行了配置。
S205、源码编译
对源代码进行编译;上述示例第5行对“hello-2.1.1”源码进行静态编译。
S3、软件包构建和测试;
函数表达式和构建脚本编写完成后,运行构建命令进行构建;构建的示例3代码如下:
1ky-build-A hello
软件包构建流程如图4所示:
S301、创建构建结果符号链接;
构建过程中,首先创建一个隐藏的结果符号链接。
S302、解析构建参数;
解析构建命令的参数;上述示例代码“-A”参数表示选定“hello”属性。
S303、读取并解析函数表达式;
读取编写的函数表达式,解析表达式中的函数定义,包括函数参数和函数表达式中的具体语句。
S304、执行构建脚本;
执行构建脚本;上述示例中执行的是builder.sh,执行构建脚本的过程中会加载函数表达式中定义的环境变量,上述示例中指的是per1环境。设定环境变量后,获取源码,然后进行软件包的构建。上述示例中会先下载“hello-2.1.1”的源码,然后执行解压,编译和安装的过程。
S305、软件包测试;
验证软件包功能是否正常,软件包依赖是否完整;软件构建完成后检验包路径和包名称是否合法。
(1)多版本环境操作:
多版本环境操作主要完成软件包的安装、升级、更新、删除、版本切换等操作。创建一系列针对多版本软件操作的命令,实际就是完成对多版本软件包的操作进行封装,包括包的安装和删除、版本回滚和切换、执行软件来源等。
多版本环境操作用来管理和查询多版本用户环境。多版本用户环境提供操作命令来管理多版本用户环境。用户环境是某个时间点上用户可用软件包的集合。定义用户环境为软件存储库中可用程序的综合视图,可以有很多用户环境。用户环境具有如下特点:
1)不同的用户可以有不同的环境;
2)单个用户可以在不同的环境间切换。
多版本环境只需要一个操作标志,来表示要执行的子命令。
(2)多版本shell工具:
多版本shell工具主要提供一个供用户创建、调试、安装的环境。
构建软件包需要多步来完成,多版本shell工具提供一个交互式的shell环境,在该环境下可以完成构建软件所需的所有步骤,优点是方便进行调试,保证软件构建的效率。
多版本shell工具能够构建基于特定构建软件的所有依赖,但是不能构建软件自身,多版本shell工具工作流程如图5所示:
1)启动一个交互式的shell;
2)设置软件路径,加载环境设置脚本,以此来设置环境;
3)如果路径未被设置,则采用多版本定义文件中的默认值;
4)路径解析:如果路径以"http:"或"https:"开头,则将其解析为下载地址,然后下载压缩文件到临时目录并解压,下载的软件包中至少包含一个默认的构建软件所需的定义文件。
(二)多版本软件管理
软件多版本的管理,涉及对操作系统底层软件和库的无关性,以及多版本机制的构建。
(1)操作系统无关性:
通过多版本软件构建完成的软件包会放到一个独立的目录中,该目录不仅包含了软件包自身,还包含了函数表达式中定义的所有环境依赖,上述几个示例中的依赖指的是per1环境,per1环境同时包含编译、运行软件所需的所有软件包;示例中所用的所有工具如tar、gcc等都会打包到所构建的软件包中,因此通过函数表达式生成的软件对操作系统底层软件库没有任何依赖。示例中hello程序运行所需的所有库文件和依赖都在输出目录中,且和操作系统没有任何关联。
(2)软件多版本管理方案
对通过函数表达式生成的软件包进行重新命名,采取“哈希值+软件包名称”的方式。哈希值的生成由函数表达式的参数和依赖决定。我们规定相同的参数输入和依赖所产生的哈希值相同。
因此,在软件版本发生变化或者依赖环境发生变化时,会产生不同的哈希值,不同的哈希值对应不同的生成目录。由于每个目录都是独立的,且每个目录包含软件运行所需的所有环境,因此解决了软件多个版本的问题。同一软件的多个版本因为有不同的哈希值,所有可以多版本共存且相互之间没有依赖和冲突。
参考上述几个示例,即“hello”示例,的实现,通过“hello-2.1.1”代码构建的软件包生成的哈希值是“wsj2kd8ckcodp0djencdjkerti4oasd3”,则此次生成的软件包(记为A1)及其运行所需的软件库和依赖都会放在“/xx/wsj2kd8ckcodp0djencdjkerti4oasd3-2.1.1”目录中,如果“hello”的版本或者依赖环境(比如purl的版本)发生变化,通过函数表达式生成的哈希值一定不同,假定新的哈希值为“lopf3in89dieodkwqecxklk456jdrildf”,则新的软件包(记为A2)会放在目录“/xx/lopf3in89dieodkwqecxklk456jdrildf-2.1.2”中。其中A1和A2代表“hello”不同版本生成的软件包,但是放在两个完全不同的目录中,每个目录相互间没有任何依赖,实现了软件多个版本。
(3)多版本存储库管理
多版本存储库管理主要包括管理最终形成的软件仓库,所有生成的软件,包括多个多版本软件,全部存放于一个软件仓库。但可以同时定义多个软件仓库。安装软件时需要首先获取并添加软件所在的仓库地址。存储库管理主要对多版本软件仓库的地址进行添加和删除。
多版本软件存储库的建立能够允许自动更新预构建的软件。软件存储库是一个URL地址,该地址指向多版本软件集合和二进制缓存。多版本存储库管理包括如下操作:
1)添加存储库地址;
2)删除存储库地址;
3)列出所有可用存储库;
4)更新存储库;
5)存储库回滚,返回存储库之前的版本状态。
本发明定义存储库的URL包含如下内容:
1)包含所有多版本软件表达式(函数式定义文件)的压缩包,以及构建脚本和patches的引用;
2)一个包含二进制缓存URL的文件。本发明设计规定,如果用户有对二进制缓存的读写权限,则该用户能够自动检查预构建的二进制缓存。
(三)多版本软件的使用:这一阶段包括多版本软件安装、多版本软件推送和多版本软件拉取。
(1)多版本软件推送:
多版本软件推送的目的是可以把本地生成的软件包推送到存储库,即用于添加多版本软件到存储库,方便用户根据自己的需求和业务定制软件。这是一种软件仓库更新的方式。
多版本软件推送生产二进制缓存。二进制缓存目录中包含打包压缩的多版本文件及软件存储库路径的元信息。二进制缓存目录在前面提到的HTTP安装中会被用到。在多版本管理服务的设计中,多版本服务器端实际作为Web服务器被使用,二进制缓存目录的存在可以跳过源码安装的方式,进而直接选择安装二进制缓存文件。
(2)多版本软件拉取:
多版本软件拉取是处理非安装要求的环境下,仅仅从存储库下载所需软件版本到本地。单独从存储库获取软件,拉取的软件是一个完整的软件栈,包括了软件所有的依赖。这种方式获取的软件可以直接拷贝到其它系统上进行安装,加速软件包的安装。从指定URL中获取预构建的软件存储路径列表,获取列表,然后方便下载和更新。
(四)多版本使用中的附加工具和功能:包括多版本软件垃圾回收、多版本软件服务等模块
(1)多版本软件垃圾回收:
多版本垃圾回收的主要任务是彻底删除软件包。多版本软件包括了所需的所有依赖库,随着使用的增多,会在操作系统的文件系统上占用一定的空间,需要对其进行删除。在本申请的多版本环境中,删除软件包的操作只是改变了软件的链接,而不会删除软件包,这样可以方便软件版本回滚和切换。如果想完全删除软件包,需要执行垃圾回收,垃圾回收是一种完全删除软件包的方式,删除本地存储库中不再被应用的软件或不再使用的软件包,进而释放系统磁盘空间。为了方便多版本间的切换和回滚操作,垃圾回收又分两种机制:
1)完全删除全部软件版本;
2)指定软件版本号(版本代号),仅仅删除指定版本前的所有软件版本。
(2)多版本软件服务:
多版本软件服务主要用于软件包的拷贝,同时允许选择包的来源机器及其包所有的依赖。多版本软件默认从标准存储库进行网络安装,多版本软件服务的设计主要是提供一种在局域网内快速安装包的方式,将本地已安装的多版本软件打包为私有存储库供其他机器安装和更新,提供了一种额外的安装途径。采用传统C-S架构,在服务器端启动多版本服务,客户端可以通过多版本环境来进行软件包的相关操作。
为软件的安装,特别是针对飞腾服务器的应用场景,本专利提供了本地化软件部署安装的功能。所有在本地安装的多版本软件实际是一个私有软件库,通过创建多版本管理服务,可以对其它局域网内的机器提供软件包的下载。同时,在客户端机器上提供下载安全的客户端程序。
以HTTP的方式共享软件存储库,开发了多版本软件服务器端软件,多版本服务器管理服务允许通过HTTP下载二进制缓存文件。相应的,设计多版本客户端程序,客户端可以指定二进制安装的URL,进而可以选择目标机器上的多版本服务器管理地址。
本发明的有益效果是:
1)使用软件和软件依赖统一打包的方式,最终以二进制文件的形式提供给用户使用,软件安装过程中会安装软件全部依赖,实现一键式安装;
2)采用一种完全基于函数的软件打包机制,不同软件的输入对应不同软件的输出;因此,不同版本的软件,其输出一定对应不同的输出目录,允许软件多个版本间的共存;另外,软件版本切换靠环境变量的改变即可完成;
3)多版本软件的所有依赖均位于输出的特定目录,因此本发明的多版本软件不会依赖操作系统的任何库;
4)多版本软件不同版本的依赖环境相互独立,同一软件的多个版本间不存在依赖性冲突;
5)多版本软件垃圾回收使得软件占用空间得到优化。
以上对本发明实施例所提供的一种飞腾平台上基于完全函数的多版本软件管理方法,进行了详细介绍。以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
如在说明书及权利要求当中使用了某些词汇来指称特定组件或模块。本领域技术人员应可理解,不同机构可能会用不同名词来称呼同一个组件或模块。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件或模块在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”、“包括”为开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。说明书后续描述为实施本发明的较佳实施方式,然所述描述乃以说明本发明的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围当视所附权利要求所界定者为准。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明创造构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

Claims (4)

1.一种飞腾平台上基于完全函数的多版本软件管理方法,其特征在于:步骤包括:S1、基于完全函数进行软件包的构建;S2、根据每个软件包不同的构建环境生成对应的哈希值,用所述哈希值标记对应的所述软件包;
所述软件包的构建包括:
S11、编写函数表达式;
S12、编写构建脚本;
S13、软件包构建和测试;
所述S11具体步骤包括:
S111、定义所述函数表达式的参数;
S112、从标准环境中调用组建函数;
S113、定义所要构建的软件包的名称;
S114、指定所需构建脚本的名称;
S115、指定构建的软件包的源码来源;
S116、指定获取所述源码的具体地址;
S117、指定构建的软件包运行时的必需环境;
所述S12具体步骤包括:
S121、设置环境变量;
S122、追加必需的依赖环境;
S123、解压所述软件包的源码;
S124、运行源码配置脚本;
S125、对所述源码进行编译;
所述S13中软件包构建过程的具体步骤包括:
S131、创建结果符号链接;
S132、解析构建参数;
S133、读取并解析所述函数表达式;
S134、执行构建脚本;
所述函数表达式中描述构建所述软件包所需的所有依赖,并以环境变量、源码地址和/或构建依赖作为参数;
所述哈希值的生成依据的构建环境包括所述函数表达式的参数和/或依赖,相同的所述参数和所述依赖产生的哈希值相同;不同的所述哈希值对应不同的生成目录。
2.一种适用于权利要求1所述飞腾平台上基于完全函数的多版本软件管理方法的管理系统,其特征在于:包括如下模块:
多版本环境操作:提供操作命令来管理和查询多版本用户环境,完成软件包的安装、升级、更新、删除和/或版本切换的操作;
多版本shell工具:提供一个交互式的shell环境,供用户创建、调试和/或安装软件包;
多版本存储库:包括一个或多个存储库,用于存放多版本软件;安装软件时首先获取并添加所述软件所在的存储库地址;对所述存储库的管理主要对多版本软件所在存储库的地址进行添加和删除;
多版本软件推送:把本地生成的软件包推送并添加到所述存储库,用于对所述存储库内的多版本软件进行更新;
多版本软件拉取:非安装环境下,从所述存储库下载所需软件版本到本地;
多版本软件垃圾回收:用于完全删除想要删除的软件包;
以及多版本软件服务:用于局域网内机器间软件包的相互拷贝,同时允许选择包的来源机器及其包所有的依赖,实现快速安装软件包。
3.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1所述多版本软件管理方法的步骤。
4.一种飞腾平台上基于完全函数的多版本软件管理装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现如权利要求1所述多版本软件管理方法的步骤。
CN201810256206.9A 2018-03-27 2018-03-27 一种飞腾平台上基于完全函数的多版本软件管理方法 Active CN108595186B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810256206.9A CN108595186B (zh) 2018-03-27 2018-03-27 一种飞腾平台上基于完全函数的多版本软件管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810256206.9A CN108595186B (zh) 2018-03-27 2018-03-27 一种飞腾平台上基于完全函数的多版本软件管理方法

Publications (2)

Publication Number Publication Date
CN108595186A CN108595186A (zh) 2018-09-28
CN108595186B true CN108595186B (zh) 2021-12-10

Family

ID=63623730

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810256206.9A Active CN108595186B (zh) 2018-03-27 2018-03-27 一种飞腾平台上基于完全函数的多版本软件管理方法

Country Status (1)

Country Link
CN (1) CN108595186B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109460236B (zh) * 2018-10-19 2021-12-07 中国银行股份有限公司 程序版本构建和检查方法及系统
CN109558382B (zh) * 2018-12-06 2022-07-19 Oppo广东移动通信有限公司 文件管理方法、电子装置及计算机可读存储介质
CN110377306A (zh) * 2019-07-18 2019-10-25 上海擎感智能科技有限公司 用于车载设备升级包的管理方法及装置、介质、服务器
CN111338651B (zh) * 2020-02-19 2023-04-21 北京字节跳动网络技术有限公司 下载资源提供方法及装置、资源下载方法及装置
CN113535138B (zh) * 2020-04-15 2023-09-29 北京华为数字技术有限公司 软件项目打包方法及相关设备
CN112562104A (zh) * 2020-11-26 2021-03-26 东南大学 一种可编程自适应单片式车载单元
CN113076115B (zh) * 2021-04-21 2023-12-26 扬州万方科技股份有限公司 基于国产平台的基础软件封装方法
CN114217773B (zh) * 2021-12-13 2022-12-16 中国船舶重工集团公司第七0九研究所 一种c/c++语言软件包二进制接口兼容性自动化判别方法
CN115167888A (zh) * 2022-04-02 2022-10-11 统信软件技术有限公司 软件包更新方法、装置与计算设备
CN114924755A (zh) * 2022-05-23 2022-08-19 深圳微言科技有限责任公司 一种应用部署方法和系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103186653B (zh) * 2011-12-30 2016-04-13 国际商业机器公司 辅助查询方法和设备、查询方法和设备及命名查询系统
US20160253769A1 (en) * 2015-02-26 2016-09-01 Don Waldhalm Method of preserving secrecy during source code comparison
CN106528086A (zh) * 2016-10-10 2017-03-22 广州视源电子科技股份有限公司 一种安卓软件升级的方法及系统

Also Published As

Publication number Publication date
CN108595186A (zh) 2018-09-28

Similar Documents

Publication Publication Date Title
CN108595186B (zh) 一种飞腾平台上基于完全函数的多版本软件管理方法
US7530079B2 (en) Managing application customization
US6178546B1 (en) System and method of making software product deliverables
US10824442B2 (en) Method and apparatus for loading multiple differing versions of a native library into a native environment
US5617533A (en) System and method for determining whether a software package conforms to packaging rules and requirements
JP5007046B2 (ja) コンポーネントベースのソフトウェア・プロダクトの保守
US20060020937A1 (en) System and method for extraction and creation of application meta-information within a software application repository
TWI566180B (zh) 一種動態創建可附加和可拆除二進位檔案的系統和方法
US9542175B2 (en) Continuous deployment
US20170277524A1 (en) Dynamic container deployment with parallel conditional layers
CN110727440B (zh) 一种软件封装方法
US7904484B2 (en) Incremental packaging
US6748591B1 (en) Method, system, program, and data structures for loading programs into a runtime environment
CN112835584B (zh) 基于ReactNative实现组件扩展和管理的方法
CN112286504B (zh) 移动APP中基于ReactNative实现小程序开发并加载的方法
JP2004158012A (ja) ソフトウェアアプリケーション管理のためのシステムおよび方法
CN114398075A (zh) 一种go微服务自动化部署的方法及系统
CN117707543A (zh) 一种应用安装包制作和安装方法、计算设备及存储介质
CN101840337B (zh) 一种适用于捕包应用的裁减系统定制方法
CN115640005A (zh) 混合应用的生成方法及装置
US8190587B1 (en) In-place image promotion
US8453108B1 (en) Static, configurable kernel interface
Skibo et al. Working with Microsoft visual studio 2005
US20080307446A1 (en) Interoperable Managed and Unmanaged Code in a Document Environment
Martin Creating an Operator with Kubebuilder

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
CB02 Change of applicant information

Address after: 6-8 / F, building 3, Xin'an venture Plaza, Tanggu marine science and Technology Park, Binhai New Area, Tianjin 300450

Applicant after: Kirin Software Co.,Ltd.

Address before: 300457 floors 6-8, building 3, Xin'an entrepreneurship Plaza, Tanggu marine science and Technology Park, Binhai high tech Zone, Binhai New Area, Tianjin

Applicant before: TIANJIN KYLIN INFORMATION TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant