1.本发明涉及计算机技术领域,特别是涉及一种软件包制作方法、一种软件包制作装置、一种电子设备以及一种存储介质。
背景技术:2.计算机操作系统目前有redhat系列和debian系列两大主流系列。redhat系列采用的应用软件包的格式为rpm格式,debian系列采用的应用软件包的格式为deb格式。两个主流系列操作系统分别采用的rpm与deb格式,两种打包格式互不兼容。此外,对于同一应用软件的不同版本,或者,对于同一应用软件的相同版本,即使采用相同的打包格式,也可能因为应用软件的依赖不同而导致相同格式的应用软件不兼容的情况,从而导致系统平台安装的应用软件受限。
技术实现要素:3.鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种软件包制作方法,使得软件包可以兼容不同系统平台。
4.相应的,本发明实施例还提供了一种软件包制作装置、电子设备、以及一种存储介质,用以保证上述方法的实现及应用。
5.第一方面,本发明实施例公开了一种软件包制作方法,所述方法包括:接收用户的输入信息,所述输入信息包括预置应用的应用类型和原始软件包,所述原始软件包根据所述预置应用打包得到;根据所述输入信息生成目标包名;基于所述目标包名,构建目标软件包的目录结构;根据所述应用类型和所述原始软件包,生成所述目录结构下的目标文件,所述目标文件至少包括所述预置应用的镜像文件;对所述目录结构下的目标文件按照所述目标软件包的打包规范进行打包,得到目标软件包。
6.第二方面,本发明实施例公开了一种软件包制作装置,所述装置包括:信息接收模块,用于接收用户的输入信息,所述输入信息包括预置应用的应用类型和原始软件包,所述原始软件包根据所述预置应用打包得到;包名生成模块,用于根据所述输入信息生成目标包名;目录构建模块,用于基于所述目标包名,构建目标软件包的目录结构;文件生成模块,用于根据所述应用类型和所述原始软件包,生成所述目录结构下的目标文件,所述目标文件至少包括所述预置应用的镜像文件;文件打包模块,用于对所述目录结构下的目标文件按照所述目标软件包的打包规范进行打包,得到目标软件包。
7.第三方面,本发明实施例公开了一种电子设备,包括:处理器、存储器、通信接口和
通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如前述中任一所述的软件包制作方法的步骤。
8.第四方面,本发明实施例公开了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时能够实现本发明实施例中一个或多个所述的软件包制作方法。
9.本发明实施例提供的软件包制作方法、装置、电子设备及存储介质包括以下优点:本发明实施例定义了一种可兼容不同系统平台的软件包格式,通过本发明实施例的软件包制作方法,可以将已有的原始软件包转换为本发明自定义格式的目标软件包。所述原始软件包根据预置应用打包得到,所述预置应用可以包括应用程序、运行环境、以及中间组件中的任意一种,所述目标软件包中包含所述预置应用的镜像文件。通过组合不同类型预置应用的目标软件包,可以包含应用程序运行所需要的所有软件依赖、库文件以及运行环境依赖。由此,可以在不同版本的linux系统平台中安装目标软件包以运行应用程序,从而实现目标软件包可以兼容不同系统平台。
附图说明
10.图1是本发明的一种软件包制作方法实施例的步骤流程图;图2是本发明一个示例中的软件包制作方法流程示意图;图3是本发明一个示例中的一种目标软件包的目录结构示意图;图4是本发明实施例中步骤104的一种流程示意图;图5是本发明实施例中生成校验目录的一种流程示意图;图6是本发明又一个示例中的软件包制作方法流程示意图;图7是本发明再一个示例中的软件包制作方法流程示意图;图8是本发明实施例中步骤105的一种流程示意图;图9是本发明的一种软件包制作装置实施例的结构框图;图10是本发明实施例提供的电子设备的结构示意图。
具体实施方式
11.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
12.本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本发明实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
13.图1示出了本发明的一种软件包制作方法实施例的步骤流程图,参照图1,该实施
例提供的软件包制作方法可以包括如下步骤:步骤101、接收用户的输入信息,所述输入信息包括预置应用的应用类型和原始软件包,所述原始软件包根据所述预置应用打包得到;步骤102、根据所述输入信息生成目标包名;步骤103、基于所述目标包名,构建目标软件包的目录结构;步骤104、根据所述应用类型和所述原始软件包,生成所述目录结构下的目标文件,所述目标文件至少包括所述预置应用的镜像文件;步骤105、对所述目录结构下的目标文件按照所述目标软件包的打包规范进行打包,得到目标软件包。
14.本发明实施例定义了一种可兼容不同系统平台的软件包格式,在本发明实施例中,将该软件包格式称为lmg(loongnix image,loongnix镜像)格式。本发明实施例提供的软件包制作方法可以将已存在的不同格式的软件包统一转换为本发明的lmg格式的软件包。例如,可以将rpm格式的软件包转换为lmg格式的软件包,也可以将deb格式的软件包转换为lmg格式的软件包,等等。lmg格式的软件包可以看作是一个压缩文件,其中包含预置应用的镜像文件。在预置应用为应用程序时,该镜像文件可以包含应用程序运行所需要的除运行环境依赖之外的所有软件依赖和库文件。在预置应用为运行环境时,该镜像文件即为应用程序运行时依赖的运行环境的镜像文件。在预置应用为中间组件时,该镜像文件为运行环境的附加功能的镜像文件。
15.在具体实施中,应用程序类型的lmg格式软件包、运行环境类型的lmg格式软件包、以及中间组件类型的lmg格式软件包,可以单独使用或者组合使用。例如,通过组合使用应用程序类型的lmg格式软件包和运行环境类型的lmg格式软件包,可以包含应用程序运行所需要的所有软件依赖、库文件以及运行环境依赖,由此可以在不同版本的linux系统平台中安装lmg格式软件包以执行应用程序,从而实现目标软件包可以兼容不同系统平台。又如,在系统平台中已安装应用程序所依赖的运行环境时,可以仅安装应用程序类型的lmg格式软件包,即可运行该应用程序。
16.在本发明实施例中,所述预置应用可以包括应用程序、运行环境、以及中间组件中的任意一种。所述应用类型可以包括应用程序类、运行环境类、以及中间组件类中的任意一种。在预置应用为应用程序时,预置应用的应用类型为应用程序类;在预置应用为运行环境时,预置应用的应用类型为运行环境类;在预置应用为中间组件时,预置应用的应用类型为中间组件类。
17.其中,应用程序,指为完成某项或多项特定工作的计算机程序。运行环境,是应用程序运行时所依赖的基础运行时(baseruntime)环境。中间组件,指在运行环境的基础上增加的附件功能。
18.本发明实施例的软件包制作方法主要包括两个部分,第一部分为基础预设部分,第二部分为制作处理部分。基础预设部分主要包括步骤101至步骤103,制作处理部分主要包括步骤104和步骤105。
19.进一步地,所述原始软件包的格式与所述应用类型具有预设的匹配关系,所述预设的匹配关系可以包括:若所述应用类型为应用程序(applications)类或者中间组件类,则所述原始软件包的格式可以包括如下任意一种:rpm格式、deb格式、以及tar格式;若所述
应用类型为运行环境(baseruntime)类,则所述原始软件包的格式可以包括tar格式。
20.tar格式是unix/linux系统中的压缩文件格式,tar包是一种压缩文件,在linux系统中可以直接解压使用这种压缩文件。
21.具体地,本发明实施例可以将已有的rpm格式、deb格式、以及tar格式中任意一种格式的原始软件包转换为本发明的lmg格式的目标软件包,所述rpm格式、deb格式、以及tar格式中任意一种格式的原始软件包可以为应用程序类或者中间组件类的软件包。或者,本发明实施例可以将已有的tar格式的原始软件包转换为本发明的lmg格式的目标软件包,该tar格式的原始软件包可以为运行环境类的软件包。
22.进一步地,在所述应用类型为运行环境类时,所述原始软件包可以为预先制作的tar格式的运行环境的镜像文件。
23.图2示出了本发明一个示例中的软件包制作方法流程示意图,参照图2,该实施例提供的软件包制作方法可以包括如下步骤:步骤201、选择打包类型。具体地,可以提供选择界面以供用户选择打包类型。此处接收到的用户选择的打包类型即为预置应用的应用类型。示例性地,可供选择的打包类型包括运行环境类(baseruntime)和应用程序类(applications)。当然,在具体实施中,可供选择的打包类型还可以包括中间组件类。在选择打包类型为运行环境类时,执行步骤202a和203a;在选择打包类型为应用程序类时,执行步骤202b和203b。
24.步骤202a、选择打包类型为运行环境类(baseruntime)。
25.步骤203a、输入tar包的路径。该tar包为已打包好的运行环境的软件包。
26.步骤202b、选择打包类型为应用程序类(applications)。
27.步骤203b、输入rpm包或deb包或tar包的路径。该rpm包或deb包或tar包为已打包好的应用程序的软件包。
28.步骤204、开始制作lmg包。
29.根据203a或者步骤203b接收到的用户输入的路径,可以获取该路径下保存的原始软件包,进而可以根据接收到的打包类型和所述原始软件包制作lmg包。制作lmg包的过程可以参照如图1所示的步骤,此处不再赘述。
30.步骤205、输出lmg包。例如,将制作好的lmg包(目标软件包)输出至用户指定的输出目录下。
31.需要说明的是,用户的输入信息包括步骤201中选择的打包类型(也即预置应用的应用类型)。用户的输入信息还可以包括步骤203a中输入的路径或者步骤203b中输入的路径,根据步骤203a或者步骤203b中输入的路径,可以获取该路径下保存的原始软件包。此外,用户的输入信息还可以包括用户选择的制作目标软件包的工作目录以及目标软件包的输出目录等信息,图2所示的流程中还可以包括设置制作目标软件包的工作目录以及设置目标软件包的输出目录等步骤(图2未示出)。本发明实施例可以在用户指定的工作目录下构建目标软件包的目录结构。在转换得到目标软件包之后,将目标软件包输出至用户指定的输出目录下。
32.本发明实施例可以根据用户输入的原始软件包生成目标包名,根据该目标包名,构建目标软件包的目录结构。其中,目标包名指目标软件包的名称。
33.需要说明的是,本发明实施例对生成目标包名的具体方式不做限制。示例性地,本
发明实施例定义lmg包的命名规范可以包括如下任意一项或多项:lmg包的命名长度不超过预设长度,以精简为好,不宜过长;lmg包的命名不包含厂商信息;lmg包的命名包含有架构信息;lmg包的命名包含上游版本信息和release版本信息,release版本以1为初始版本,每次加1。
34.一个示例中,目标包名可以满足如下格式:[软件名]_[上游版本]_[lmg包的release版本]_[架构].[lmg]进一步地,在具体实施中,可以限制目标包名的长度不超过256字符,并且目标包名中仅包含数字、小写字符、连接线
“‑”
、以及下划线“_”。
[0035]
例如,假设原始软件包的名称如下:vlc_3.0.11-3+deb10u1.lnd.1_loongarch64.deb本发明实施例根据该原始软件包的命名可以生成如下目标包名:vlc_3.0.11-3_1.loong64.lmg其中,vlc为软件名,3.0.11-3为上游版本,1为lmg包的release版本,loong64为架构信息,lmg为后缀名。若原始软件包来源于开源社区,则开源社区的版本称为上游版本。
[0036]
在生成目标包名之后,可以基于所述目标包名,构建目标软件包的目录结构。示例性地,本发明实施例利用目标包名—.lmg+.app作为构建的目录结构的目录名。例如,上述示例中生成的目标包名为vlc_3.0.11-3_1.loong64.lmg,则根据该目标包名可以生成如下目录名:vlc_3.0.11-3_1.loong64.app,可以构建以该目录名为名称的目录结构。
[0037]
在本发明实施例中,该目录结构至少包括用于存放预置应用的镜像文件的目录(以下称该目录为镜像目录或者image目录)。当然,该目录结构还可以包括用于存放运行预置应用所需的其他文件的目录。
[0038]
可选地,本发明实施例构建的目标软件包的目录结构可以包括如下目录:镜像目录、原始信息目录、管理目录、校验目录、以及数据目录。
[0039]
参照图3,示出了本发明一个示例中的一种目标软件包的目录结构300示意图。如图3所示,该目录结构300包括如下目录:image目录301、baseinfo目录302、meta目录303、verify目录304、以及data目录305。
[0040]
其中,image目录301为镜像目录,用于保存预置应用的镜像文件。对于应用程序类的预置应用,所述镜像文件可以为应用程序的应用层镜像文件(不包含该应用程序依赖的运行环境)。对于运行环境类的预置应用,所述镜像文件可以为应用程序依赖的运行环境的镜像文件。对于中间组件类的预置应用,所述镜像文件可以为中间组件层镜像,也即运行环境的附加功能的镜像文件。baseinfo目录302为原始信息目录,用于保存目标软件包的原始信息,所述原始信息可以包括原始软件包的包名和版本等信息。meta目录303为管理目录,用于保存目标软件包的管理信息,所述管理信息可以包括目标软件包的包名和版本、程序启动入口等信息。verify目录304为校验目录,用于保存目标文件的签名信息和/或校验和文件。data目录305为数据目录,用于保存目标软件包中的应用数据(appdata)3051和宿主机数据(source)3052。
[0041]
作为一种可选方式,针对不同的情况,指定目录可以为空目录。
[0042]
在本发明的一种可选实施例中,所述方法还可以包括:从所述原始软件包中提取应用数据和宿主机数据,并将提取的应用数据和宿主机数据保存至所述目录结构的数据目
录下。
[0043]
其中,应用数据(appdata)3051可以包括需要导出到宿主机环境中的文件,比如桌面文件(desktop文件)和/或图标(icon)等。宿主机数据(source)3052可以包括待安装到宿主机系统目录中的文件资源,包括目录和文件。示例性地,图3中所示的source中包括如下目录:d1和d2,以及包括如下文件:f1、f2、f3和f4。
[0044]
在本发明的一种可选实施例中,所述方法还可以包括:获取目标软件包的管理信息,并将获取的管理信息保存至所述目录结构的管理目录下,其中,所述管理信息包括接收的用户输入的管理信息和/或从所述原始软件包中提取的管理信息。
[0045]
所述管理信息可以包括用户输入的管理信息,用户输入的管理信息包括但不限于待生成的lmg包的release版本等信息。所述管理信息还可以包括从原始软件包中提取的管理信息,提取的管理信息包括但不限于制作者信息和软件描述信息等。制作者信息包括但不限于制作者的邮件和姓名等。
[0046]
在本发明实施例中,可以在所述管理目录(meta目录)下创建管理文件,以下称为meta文件,meta文件可以包括预置字段,通过meta文件的各预置字段记录目标软件包的管理信息。因此,目录结构下的目标文件可以包括meta目录下的meta文件。
[0047]
一个示例中,管理文件(meta文件)的命名可以满足如下规范:[软件名]_[上游版本]_[lmg包的release版本].[架构].[yaml]其中,yaml为后缀名。
[0048]
在本发明的一种可选实施例中,所述管理文件的预设字段可以包括并行字段(如记为parallel字段),用于指示预置应用是否支持多实例运行。
[0049]
在本发明的一种可选实施例中,所述管理文件的预设字段可以包括权限字段(如记为permission字段),用于指示用户对预置应用设置的权限。例如,所述权限可以包括但不限于如下任意一种或多种:图形权限、声音权限、输入法权限、以及目录访问权限等。通过权限划分,可以设置预置应用具有哪些功能的使用权限以及哪些目录的访问权限,可以对预置应用进行限定和管控,进而保证系统的安全。
[0050]
在本发明的一种可选实施例中,所述管理文件的预设字段可以包括依赖字段(如记为dependence字段),用于指示预置应用依赖的运行环境。为便于描述,以下将预置应用依赖的运行环境称为base环境。base环境指原始软件包可以正常安装运行的环境。
[0051]
例如,对于待转换的原始软件包,其预置应用依赖的运行环境为uos20_1_1,则将该运行环境的信息(uos20_1_1)写入meta目录下的meta文件的dependence字段。
[0052]
需要说明的是,管理文件(meta文件)的预设字段不限于上述列举的几种,在具体实施中,可以根据实际需要设置meta文件包含的预设字段。参照表1,示出了本发明的一种meta文件的预设字段的示例。
[0053]
表1:
预设字段值类型说明appname字符串软件名appversion字符串软件版本arch字符串所属架构contact字典联系方式contact.bugreport字符串bug报告地址
contact.email字符串邮件联系description字符串软件描述generate字典软件生成方式generate.from字符串制作方式,包括手动构建(manal)或应用转换(convert)generate.tool字典制作工具generate.tool.name字符串制作工具名generate.tool.version字符串制作工具版本dependence字符串依赖的运行环境(还可以包括依赖的软件包)permission字符串权限(如图形权限、声音权限、输入法权限、以及目录访问权限等)publisher字典发布者信息publisher.email字符串发布者邮件publisher.name字符串发布者名称parallel 字符串表示程序是否可以同时运行多个实例apptag字符串软件包内镜像的标识(用于标识镜像文件)
在构建目标软件包的目录结构之后,根据所述应用类型和所述原始软件包,生成所述目录结构下的目标文件,所述目标文件至少包括预置应用的镜像文件;对所述目录结构下的目标文件按照目标软件包的打包规范进行打包,得到目标软件包。所述目标软件包的打包规范可以包括lmg包的格式规范和命名规范。
[0054]
可以理解的是,本发明实施例对用户的输入信息的种类不做限制。一个示例中,用户的输入信息可以包括:应用类型、制作目标软件包的工作目录、目标软件包的输出目录、预置应用所属的架构、预置应用依赖的运行环境、和/或待转换的原始软件包(rpm包、deb包、以及tar包中任意一种格式)。
[0055]
在具体实施中,在用户选择的应用类型为应用程序类时,用户的输入信息还可以包括lmg包的release版本、应用程序所属的架构、和/或应用程序依赖的运行环境等信息。在用户选择的应用类型为运行环境类时,用户的输入信息还可以包括运行环境所属的架构等信息。
[0056]
在本发明的一种可选实施例中,在所述应用类型为应用程序类时,上述步骤104中所述根据所述应用类型和所述原始软件包,生成所述目录结构下的目标文件的步骤如图4所示,可以包括:步骤s11、检测当前系统是否已安装所述预置应用依赖的运行环境,若未安装,则安装所述运行环境;步骤s12、在所述运行环境中安装所述原始软件包;步骤s13、从所述运行环境中导出安装所述原始软件包后的所有变更文件,得到所述预置应用的镜像文件。
[0057]
在所述应用类型为应用程序类时,也即预置应用为某个应用程序时,原始软件包为该应用程序的安装包,该安装包可以为rpm格式、deb格式、以及tar格式中的任意一种,本发明实施例可以将该应用程序的安装包转换为lmg包。
[0058]
为实现lmg包的平台兼容性,本发明实施例在将rpm包、deb包、以及tar包中任意一种格式转换为lmg包时,先检测当前系统中是否已安装该应用程序依赖的运行环境(base环境),如果已安装,则在该base环境中安装原始软件包;如果当前系统中未安装该base环境,则先安装该base环境,然后在该base环境中安装原始软件包。在该base环境中安装原始软
件包后,导出安装原始软件包后的所有变更文件,得到应用程序的镜像文件。由于该镜像文件是安装所述原始软件包后相对于安装所述原始软件包之前,该base环境中的所有变更文件,因此,该镜像文件为该应用程序剥离系统环境得到的应用层镜像文件。
[0059]
示例性地,在预置应用为应用程序时,本发明实施例首先生成用于制作镜像的构建文件(如记为dockerfile),该构建文件中包含用于指导如何将原始软件包安装到base环境中以及如何导出镜像文件的指令。然后通过容器(docker)执行所述构建文件中的指令以制作镜像文件。
[0060]
本发明实施例在支持制作应用程序的lmg包的同时,还支持制作应用程序所依赖的应用环境(base环境)的lmg包。由此,在某个系统中安装某个应用程序的lmg包时,如果该系统中已安装该base环境,则可以直接安装该应用程序的lmg包,对该应用程序的lmg包进行解压、注册、导出镜像文件,该镜像文件和该base环境即可组合成容器,在该容器中运行该应用程序。如果该系统中未安装该base环境,则可以提示用户先安装该base环境,由于本发明实施例可以制作该base环境的lmg包,因此可以直接安装该base环境的lmg包,在安装该base环境后,即可在该base环境中安装该应用程序的lmg包,从而实现该应用程序可以安装于任意linux系统平台,不受系统平台的限制,可以实现软件的安装、升级、运行相兼容。此外,本发明实施例通过镜像方式制作目标软件包,可以保证应用程序与运行环境绑定,该运行环境中包含了应用程序运行所需的所有底层资源,解决了现有的软件包无法处理底层依赖的问题。
[0061]
在本发明的一种可选实施例中,所述方法还可以包括如图5所示的如下步骤:步骤s21、对所述目录结构下的所有目标文件进行安全哈希算法计算,得到校验和文件;步骤s22、对所述校验和文件进行签名,生成签名信息;步骤s23、将所述签名信息保存至所述目录结构的校验目录下。
[0062]
为保证目标软件包的完整性和可靠性,本发明实施例在生成所述目录结构下的所有目标文件之后,还可以对所有目标文件进行安全哈希算法计算,例如进行sha256计算,得到校验和文件,如checksum文件。基于用户选择的证书对checksum文件进行签名生成签名信息,并将签名信息保存在校验目录下的签名信息(如lmgsign)文件中。
[0063]
图6示出了本发明又一个示例中的软件包制作方法流程示意图,参照图6,该实施例提供的软件包制作方法可以包括如下步骤:步骤601、接收用户的输入信息。
[0064]
所述输入信息可以包括预置应用的应用类型和原始软件包。
[0065]
步骤602、生成目标包名。
[0066]
根据所述输入信息可以生成目标包名。
[0067]
步骤603、构建目录结构。基于所述目标包名,可以构建目标软件包的目录结构。
[0068]
步骤604、生成管理目录内容。meta目录为管理目录,用于保存目标软件包的管理信息,所述管理信息可以包括目标软件包的包名和版本、程序启动入口等信息。
[0069]
步骤605、判断依赖的运行环境是否已安装;若未安装,则执行步骤606;若已安装,则执行步骤607。
[0070]
所述运行环境指预置应用依赖的运行环境(base环境)。判断当前系统中是否已安
装预置应用依赖的base环境,若未安装,则执行步骤606安装该base环境;若已安装,则执行步骤607。
[0071]
步骤606、安装依赖的运行环境。在当前系统中未安装预置应用依赖的base环境时,可以先检测本地是否存在该base环境的安装包,若本地存在,则安装该base环境;若本地不存在,则可以连接仓库下载该base环境的安装包进行安装。进一步地,该base环境的安装包可以为通过本发明的软件制作方法制作的lmg包。
[0072]
步骤607、生成数据目录内容。也即生成data目录下的目标文件。data目录305为数据目录,用于保存目标软件包中的应用数据3051和宿主机数据3052。
[0073]
在预置应用依赖的base环境中安装预置应用的原始软件包,并从该base环境中导出安装所述原始软件包后的所有变更文件,可以得到所述预置应用的镜像文件,将该镜像文件保存至image目录301下。
[0074]
在生成所述预置应用的镜像文件之后,可以运行该镜像文件,从而构建并启动一个容器,并在该容器中运行该预置应用,进而可以在该容器中提取appdata文件3051和source文件3052,保存至data目录305下。
[0075]
步骤608、生成checksum文件。对所述目录结构下的所有目标文件进行安全哈希算法计算,得到checksum文件。
[0076]
步骤609、生成签名信息。基于用户选择的证书对checksum文件进行签名,生成签名信息。
[0077]
步骤608和步骤609用于生成verify目录304下的目标文件,具体地,可以执行如图5所示的步骤。
[0078]
步骤610、将目录结构打包为lmg包。对所述目录结构下的目标文件按照所述目标软件包的打包规范进行打包,得到目标软件包。
[0079]
本发明实施例可以将rpm格式、deb格式、以及tar格式中任意一种格式的应用程序的软件包转换为lmg格式的软件包。此外,对于应用程序依赖的运行环境(base环境),本发明实施例可以制作该base环境的镜像文件,该镜像文件可以为tar格式,并且通过本发明实施例的软件包制作方法将该tar格式的base环境的镜像文件转换为lmg包。
[0080]
图7示出了本发明再一个示例中的软件包制作方法流程示意图,参照图7,该实施例提供的是将deb包转换为lmg包的流程,具体可以包括如下步骤:步骤701、输入deb包。该deb包指预置应用的原始软件包。此外,该步骤还可以接收用户输入的应用类型。该示例中以应用程序类为例。
[0081]
步骤702、生成目标包名。根据用户的输入信息可以生成目标包名。
[0082]
步骤703、构建目录结构。基于所述目标包名,可以构建目标软件包的目录结构。
[0083]
步骤704、获取管理信息。所述管理信息可以包括但不限于目标软件包的包名和版本、程序启动入口、镜像类型等信息。所述管理信息可以包括用户输入的信息以及从原始软件包中提取的信息。
[0084]
步骤705、写入管理文件(meta文件)。将获取的管理信息写入meta目录下的meta文件。
[0085]
步骤706、判断是否为deb包。该示例中以将deb包转换为lmg包为例。此处需判断接收到的原始软件包是否为deb包。
[0086]
步骤707、输入留存信息。若接收到的原始软件包不是deb包,则可以输入留存信息,示例性地,该留存信息可以为空或者预留信息,所述预留信息可以包括制作者记录的版本信息等。
[0087]
步骤708、提取deb包的原始信息。所述原始信息可以包括原始软件包的包名和版本等信息。
[0088]
步骤709、保存至原始信息目录(baseinfo目录)。将提取的原始软件包的包名和版本等原始信息保存至baseinfo目录。
[0089]
步骤710、选择权限。可选地,可以向用户提供权限选择界面,以供用户选择预置应用具有的权限,如图形权限、声音权限、输入法权限、以及目录访问权限等中的一项或多项。
[0090]
步骤711、写入meta文件的权限字段(permission字段)。将用户选择的权限写入meta文件的permission字段,如表1所示。
[0091]
步骤712、选择依赖的运行环境。该依赖的运行环境指预置应用依赖的基础运行时环境(base环境)。
[0092]
步骤713、判断是否已安装运行环境。检测当前系统是否已安装预置应用依赖的运行环境。如果为是,则执行步骤715;否则执行步骤714。
[0093]
步骤714、安装运行环境。若检测到当前系统未安装预置应用依赖的运行环境,则在当前系统中安装预置应用依赖的运行环境。进一步地,该运行环境的安装包可以为预先通过本发明实施例所述的软件制作方法制作的lmg包。
[0094]
步骤715、判断是否为deb包。由于不同格式的软件包的安装流程可能会有所不同。该示例中以将deb包转换为lmg包为例,在安装原始软件包之前,判断该原始软件包是否为deb包。
[0095]
步骤716、在运行环境下安装deb包。若检测到接收到的原始软件包是deb包,则在所述运行环境下安装所述deb包。
[0096]
步骤717、生成应用层镜像。在所述运行环境中安装所述deb包之后,从所述运行环境中导出安装所述原始软件包后的所有变更文件,可以得到所述预置应用的镜像文件,该镜像文件为剥离系统环境的应用层镜像。
[0097]
步骤718、保存至镜像目录(image目录)。将生成的镜像文件保存至image目录下。
[0098]
步骤719、运行镜像,提取应用数据(appdata)和宿主机数据(source)。在生成预置应用的镜像文件之后,可以运行该镜像文件以启动容器,并在该容器中运行该预置应用,进而可以在该容器中提取该预置应用的appdata文件和source文件。
[0099]
步骤720、保存至数据目录(data目录)。将提取的appdata文件和source文件保存至data目录下。
[0100]
步骤721、生成校验和(checksum)文件。在生成所述目录结构下的所有目标文件后,对所有目标文件进行安全哈希算法计算,得到checksum文件。
[0101]
步骤722、保存至校验目录(verify目录)。基于用户选择的证书对checksum文件进行签名生成签名(lmgsign)信息,并将签名信息保存在校验目录(verify目录)下的lmgsign文件中。
[0102]
步骤723、将目录结构打包为lmg包。对所述目录结构下的目标文件按照所述目标软件包的打包规范进行打包,得到目标软件包。
[0103]
需要说明的是,图7所示的流程以将deb包转换为lmg包为例,将rpm包和tar包中任意一种格式的包转换为lmg包的流程与将deb包转换为lmg包的流程相类似,此处不再进行赘述,相互参照即可。
[0104]
在本发明的一种可选实施例中,上述步骤105所述对所述目录结构下的目标文件按照所述目标软件包的打包规范进行打包,得到目标软件包的步骤如图8所示,可以包括:步骤s31、将所述目录结构下的目标文件划分为数据文件和管理文件;步骤s32、对所述数据文件和管理文件分别使用预设压缩算法进行打包压缩,得到数据文件压缩包和管理文件压缩包;步骤s33、通过预设命令对所述数据文件压缩包和管理文件压缩包进行归档,得到目标软件包。
[0105]
在具体实施中,用户可能存在需要获取目标软件包中的管理信息的需求,此时需要将整个目标软件包进行解压,在解压得到的大量数据中查找管理信息,时间成本和操作成本较高。
[0106]
为解决该问题,本发明实施例在打包目标软件包时,将所述目录结构下的目标文件划分为数据文件和管理文件,将数据文件和管理文件两部分单独进行打包压缩,再对两个压缩包进行归档,生成lmg包。本发明实施例将数据文件和管理文件分别进行打包压缩,从而将lmg包定义为包含数据文件压缩包和管理文件压缩包两个独立压缩包的归档文件,以使用户可以单独解压数据文件压缩包或者管理文件压缩包,解决了在查看管理信息时需要对整个lmg包整体解压的问题,从而可以在快速获取管理信息,可以减少用户的时间成本和操作成本。
[0107]
对于图3所示的lmg包的目录结构进行优化后的lmg包的目录结构可以包括数据目录和管理目录,数据目录中包括数据文件,管理目录中包括管理文件。例如,数据目录可以包括图3中的image目录301和data目录305,管理目录可以包括图3中的meta目录303、verify目录304和baseinfo目录302。将数据目录和管理目录分别使用预设压缩算法进行打包压缩,得到数据文件压缩包比如data.zstd和管理文件压缩包比如meta.zstd。通过预设命令对data.zstd和meta.zstd进行归档,得到目标软件包。
[0108]
所述预设压缩算法可以包括但不限于zstandard(zstd)压缩算法。使用zstd压缩算法,速度相比于deb的压缩解压更快。此外,所述预设命令可以包括但不限于tar命令。
[0109]
综上,本发明实施例定义了一种可兼容不同系统平台的软件包格式,通过本发明实施例的软件包制作方法,可以将已有的原始软件包转换为本发明自定义格式的目标软件包。所述原始软件包根据预置应用打包得到,所述预置应用可以包括应用程序、运行环境、以及中间组件中的任意一种,所述目标软件包中包含所述预置应用的镜像文件。通过组合不同类型预置应用的目标软件包,可以包含应用程序运行所需要的所有软件依赖、库文件以及运行环境依赖。由此,可以在不同版本的linux系统平台中安装目标软件包以运行应用程序,从而实现目标软件包可以兼容不同系统平台。
[0110]
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施
例所必须的。
[0111]
参照图9,示出了本发明的一种软件包制作装置实施例的结构框图,可以包括如下模块:信息接收模块901,用于接收用户的输入信息,所述输入信息包括预置应用的应用类型和原始软件包,所述原始软件包根据所述预置应用打包得到;包名生成模块902,用于根据所述输入信息生成目标包名;目录构建模块903,用于基于所述目标包名,构建目标软件包的目录结构;文件生成模块904,用于根据所述应用类型和所述原始软件包,生成所述目录结构下的目标文件,所述目标文件至少包括所述预置应用的镜像文件;文件打包模块905,用于对所述目录结构下的目标文件按照所述目标软件包的打包规范进行打包,得到目标软件包。
[0112]
可选地,所述应用类型包括应用程序类、运行环境类、以及中间组件类中的任意一种。
[0113]
可选地,当所述应用类型为应用程序类时,所述文件生成模块904,包括:环境检测子模块,用于检测当前系统是否已安装所述预置应用依赖的运行环境,若未安装,则安装所述运行环境;环境安装子模块,用于在所述运行环境中安装所述原始软件包;镜像生成子模块,用于从所述运行环境中导出安装所述原始软件包后的所有变更文件,得到所述预置应用的镜像文件。
[0114]
可选地,所述文件打包模块905,包括:文件划分子模块,用于将所述目录结构下的目标文件划分为数据文件和管理文件;文件压缩子模块,用于对所述数据文件和管理文件分别使用预设压缩算法进行打包压缩,得到数据文件压缩包和管理文件压缩包;文件归档子模块,用于通过预设命令对所述数据文件压缩包和管理文件压缩包进行归档,得到目标软件包。
[0115]
可选地,所述原始软件包的格式与所述应用类型满足预设的匹配关系,所述预设的匹配关系包括:若所述应用类型为应用程序类或者中间组件类,则所述原始软件包的格式包括如下任意一种:rpm格式、deb格式、以及tar格式;若所述应用类型为运行环境类,则所述原始软件包的格式包括tar格式。
[0116]
可选地,所述目录结构包括:镜像目录、原始信息目录、管理目录、校验目录、以及数据目录;其中,所述镜像目录用于保存所述预置应用的镜像文件;所述原始信息目录,用于保存所述目标软件包的原始信息;所述管理目录,用于保存所述目标软件包的管理信息;所述校验目录,用于保存所述目标文件的签名信息;所述数据目录,用于保存所述目标软件包中的应用数据和宿主机数据。
[0117]
可选地,所述装置还包括:管理信息保存模块,用于获取目标软件包的管理信息,并将获取的管理信息保存至所述目录结构的管理目录下,其中,所述管理信息包括接收的用户输入的管理信息和/或从所述原始软件包中提取的管理信息。
[0118]
可选地,所述装置还包括:应用信息保存模块,用于从所述原始软件包中提取应用数据和宿主机数据,并将提取的应用数据和宿主机数据保存至所述目录结构的数据目录下。
[0119]
可选地,所述装置还包括:哈希计算模块,用于对所述目录结构下的所有目标文件进行安全哈希算法计算,得到校验和文件;文件签名模块,用于对所述校验和文件进行签名,生成签名信息;签名保存模块,用于将所述签名信息保存至所述目录结构的校验目录下。
[0120]
可选地,当所述应用类型为运行环境类时,所述原始软件包为预先制作的tar格式的运行环境的镜像文件。
[0121]
本发明实施例定义了一种可兼容不同系统平台的软件包格式,通过本发明实施例的软件包制作方法,可以将已有的原始软件包转换为本发明自定义格式的目标软件包。所述原始软件包根据预置应用打包得到,所述预置应用可以包括应用程序、运行环境、中间组件中的任意一种,所述目标软件包中包含所述预置应用的镜像文件。通过组合不同类型预置应用的目标软件包,可以包含应用程序运行所需要的所有软件依赖、库文件以及运行环境依赖。由此,可以在不同版本的linux系统平台中安装目标软件包以运行应用程序,从而实现目标软件包可以兼容不同系统平台。
[0122]
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0123]
参照图10,是本发明实施例提供的电子设备的结构示意图。如图10所示,所述电子设备包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行前述实施例的访存控制方法的步骤。
[0124]
本发明实施例提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由终端的程序或处理器执行时,使得终端能够执行前述实施例的软件包制作方法的步骤。
[0125]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0126]
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0127]
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中
指定的功能的装置。
[0128]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0129]
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0130]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0131]
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
技术特征:1.一种软件包制作方法,其特征在于,所述方法包括:接收用户的输入信息,所述输入信息包括预置应用的应用类型和原始软件包,所述原始软件包根据所述预置应用打包得到;根据所述输入信息生成目标包名;基于所述目标包名,构建目标软件包的目录结构;根据所述应用类型和所述原始软件包,生成所述目录结构下的目标文件,所述目标文件至少包括所述预置应用的镜像文件;对所述目录结构下的目标文件按照所述目标软件包的打包规范进行打包,得到目标软件包。2.根据权利要求1所述的方法,其特征在于,所述应用类型包括应用程序类、运行环境类、以及中间组件类中的任意一种。3.根据权利要求2所述的方法,其特征在于,当所述应用类型为应用程序类时,所述根据所述应用类型和所述原始软件包,生成所述目录结构下的目标文件,包括:检测当前系统是否已安装所述预置应用依赖的运行环境,若未安装,则安装所述运行环境;在所述运行环境中安装所述原始软件包;从所述运行环境中导出安装所述原始软件包后的所有变更文件,得到所述预置应用的镜像文件。4.根据权利要求1所述的方法,其特征在于,所述对所述目录结构下的目标文件按照所述目标软件包的打包规范进行打包,得到目标软件包,包括:将所述目录结构下的目标文件划分为数据文件和管理文件;对所述数据文件和管理文件分别使用预设压缩算法进行打包压缩,得到数据文件压缩包和管理文件压缩包;通过预设命令对所述数据文件压缩包和管理文件压缩包进行归档,得到目标软件包。5.根据权利要求1或2所述的方法,其特征在于,所述原始软件包的格式与所述应用类型满足预设的匹配关系,所述预设的匹配关系包括:若所述应用类型为应用程序类或者中间组件类,则所述原始软件包的格式包括如下任意一种:rpm格式、deb格式、以及tar格式;若所述应用类型为运行环境类,则所述原始软件包的格式包括tar格式。6.根据权利要求1所述的方法,其特征在于,所述目录结构包括:镜像目录、原始信息目录、管理目录、校验目录、以及数据目录;其中,所述镜像目录用于保存所述预置应用的镜像文件;所述原始信息目录用于保存所述目标软件包的原始信息;所述管理目录用于保存所述目标软件包的管理信息;所述校验目录用于保存所述目标文件的签名信息;所述数据目录用于保存所述目标软件包中的应用数据和宿主机数据。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:获取目标软件包的管理信息,并将获取的管理信息保存至所述目录结构的管理目录下,其中,所述管理信息包括接收的用户输入的管理信息和/或从所述原始软件包中提取的管理信息。8.根据权利要求6所述的方法,其特征在于,所述方法还包括:从所述原始软件包中提取应用数据和宿主机数据,并将提取的应用数据和宿主机数据
保存至所述目录结构的数据目录下。9.根据权利要求6所述的方法,其特征在于,所述方法还包括:对所述目录结构下的所有目标文件进行安全哈希算法计算,得到校验和文件;对所述校验和文件进行签名,生成签名信息;将所述签名信息保存至所述目录结构的校验目录下。10.根据权利要求2所述的方法,其特征在于,当所述应用类型为运行环境类时,所述原始软件包为预先制作的tar格式的运行环境的镜像文件。11.一种软件包制作装置,其特征在于,所述装置包括:信息接收模块,用于接收用户的输入信息,所述输入信息包括预置应用的应用类型和原始软件包,所述原始软件包根据所述预置应用打包得到;包名生成模块,用于根据所述输入信息生成目标包名;目录构建模块,用于基于所述目标包名,构建目标软件包的目录结构;文件生成模块,用于根据所述应用类型和所述原始软件包,生成所述目录结构下的目标文件,所述目标文件至少包括所述预置应用的镜像文件;文件打包模块,用于对所述目录结构下的目标文件按照所述目标软件包的打包规范进行打包,得到目标软件包。12.一种电子设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1至10中任一项所述的软件包制作方法的步骤。13.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1至10任一所述的软件包制作方法的步骤。
技术总结本发明实施例提供了一种软件包制作方法、装置、电子设备及存储介质,其中的方法包括:接收用户的输入信息,所述输入信息包括预置应用的应用类型和原始软件包,所述原始软件包根据所述预置应用打包得到;根据所述输入信息生成目标包名;基于所述目标包名,构建目标软件包的目录结构;根据所述应用类型和所述原始软件包,生成所述目录结构下的目标文件,所述目标文件至少包括所述预置应用的镜像文件;对所述目录结构下的目标文件按照所述目标软件包的打包规范进行打包,得到目标软件包。本发明实施例可以在不同版本的linux系统平台中安装目标软件包以运行应用程序,从而实现目标软件包可以兼容不同系统平台。可以兼容不同系统平台。可以兼容不同系统平台。
技术研发人员:张家岭 桑猛 王怀卿 武瑞龙 王洪虎
受保护的技术使用者:龙芯中科技术股份有限公司
技术研发日:2022.05.16
技术公布日:2022/7/5