一种基于国产操作系统的开源软件编译安装方法与流程
未命名
07-22
阅读:141
评论:0
1.本发明涉及计算机软件技术领域,尤其是一种基于国产操作系统的开源软件编译安装方法。
背景技术:
2.近年来,信息技术应用创新(以下简称信创)产业蓬勃发展。然而在推进信创工作中却发现广大用户以国产软件的生态系统不完善,应用程序不丰富,缺乏相应的软件体系和软件工程方法等为由而放弃使用。诚然,目前信创平台的产品生态不够丰富,尚未形成基于操作系统为核心的软件生态。部分windows平台常用或好用的软件无法找到替代方案,软件数量匮乏、功能缺少、操作体验差等因素也降低了用户对信创终端的使用信心。
3.引入主流linux社区的开源软件能够快速地丰富信创终端上的软件应用,但国产操作系统对开源软件的编译安装方式与国外主流linux系统存在差异。通过引入主流linux社区的开源软件生态能很好地增添当下国产软件生态的多样性,但大部分的开源软件需要进行编译或者通过命令行执行,需要用户掌握一定的编程知识与linux知识。
技术实现要素:
4.为了解决上述问题,本发明提供一种基于国产操作系统的开源软件编译安装方法,能够适用于主流国产操作系统的开源软件打包,有效提升开源软件的编译安装质量和效率,促进信创终端软件生态的发展。
5.为了实现上述目的,本发明采用的技术方案为:
6.一种基于国产操作系统的开源软件编译安装方法,包括下述步骤:
7.s1.根据开源软件的开发语言,将所述开源软件的源码包编译为二进制包,自定义所述二进制包的包名及应用名称;
8.s2.建立临时目录,以收纳构建软件包过程中产生的临时文件;
9.s3.在所述临时目录下分别创建文件目录、图标目录、创建桌面入口目录及共有目录,且对所述二进制包的信息进行编辑及配置;
10.s4.在启动终端命令行,对所述临时目录执行dpkg-deb
‑‑
build命令,以对所述二进制包构建为软件包。
11.进一步地,在步骤s1中,对于java语言的开源软件通过创建可运行jar文件包,编译为二进制包;对于python语言的开源软件通过pyinstaller工具编译为二进制包;对于c/c++语言的开源软件通过makefile编译为二进制包。
12.进一步地,在步骤s3中,在所述临时目录下,创建文件目录,将所述二进制包复制至所述文件目录;
13.在所述临时目录下,创建图标目录,将所述开源软件的图标移动至所述图标目录,且重命名所述图标;
14.在所述临时目录下,创建桌面入口目录及共有目录,在所述桌面入口目录创建桌
面启动器文件,且编辑所述桌面启动器文件的信息,在将编辑信息后的所述桌面启动器文件复制存储至所述共有目录;
15.在所述临时目录下,创建配置目录,在所述配置目录创建控制器文件,编辑所述控制器文件,以将二进制包的配置信息进行写入;
16.进一步地,在所述步骤s3中,所述图标目录根据所述图标的分辨率大小名称,命名所述图标目录;所述图标的命名与所述开源软件的名称相同。
17.进一步地,在步骤s3中,所述桌面启动器文件的编辑信息包括软件类型、软件版本、软件启动路径及软件图标。
18.进一步地,在步骤s3中,所述控制器文件的配置信息包括软件名称、软件版本、软件架构及软件主要维护者。
19.进一步地,在步骤4中,完成构建所述软件包后,删除所述临时目录。
20.本发明的有益效果是:
21.本发明适范围包括统信桌面操作系统及银河麒麟桌面操作系统,通过在在所述桌面入口目录创建桌面启动器文件,且编辑所述桌面启动器文件的信息,在将编辑信息后的所述桌面启动器文件复制存储至所述共有目录,保证兼容国产操作系统的桌面启动器规则;同时不新增打包目录下的info文件,桌面启动器文件能够满足软件信息的描述;通过将所述图标设置在图标目录下,同时在桌面启动器文件中指向到对应图标,能够使国产操作系统中的图标正常显示。本发明能够使同一个安装包可在不同的国产操作系统上完成安装,使用体验良好。通过提升开源软件编译安装部署的便利性,有助于推广信创生态和提升信创生态的用户粘度,更能加快国产软件行业的适配与发展。
附图说明
22.图1是本发明一较佳实施方式的基于国产操作系统的开源软件编译安装方法的流程图。
23.图2是本发明一较佳实施方式的基于国产操作系统的开源软件编译安装方法的在统信桌面操作系统运行结果图。
24.图3是本发明一较佳实施方式的基于国产操作系统的开源软件编译安装方法的在银河麒麟桌面操作系统运行结果图。
具体实施方式
25.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
26.需要说明的是,当组件被称为“固定于”另一个组件,它可以直接在另一个组件上或者也可以存在居中的组件。当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中组件。当一个组件被认为是“设置于”另一个组件,它可以是直接设置在另一个组件上或者可能同时存在居中组件。本文所使用的术语“垂直的”、“水平的”、“左”、“右”以及类似的表述只是为了说明的目的。
27.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
28.请参见图1至图3,本发明一较佳实施方式的基于国产操作系统的开源软件编译安装方法,包括下述步骤:
29.s1.根据开源软件的开发语言,将开源软件的源码包编译为二进制包,自定义二进制包的包名及应用名称。
30.在步骤s1中,对于java语言的开源软件通过创建可运行jar文件包,编译为二进制包。开源软件创建可运行jar文件包的几种常见的方式:
31.1)使用ide(集成开发环境)进行创建。java语言知名的ide均内置了创建可运行jar文件包的功能,例如eclipse、intellij idea等。
32.2)使用mvn命令进行构建。当下较多的java开源项目都使用了maven这个个跨平台的项目管理工具,maven项目的标志性在于根目录下会存放一个pom.xml文件。
33.3)使用开发者文档中推荐的创建方式。有些开发者会有符合自己开发习惯的创建方法,建议参照执行。
34.4)使用命令jar cvfm test.jar manifest.mf test构建,manifest.mf即为java程序的一种配置文件。
35.对于python语言的开源软件通过pyinstaller工具编译为二进制包。
36.pyinstaller主要的功能是将.py文件打包为二进制字节码的可执行文件,只要编译安装的环境依赖正常并能成功执行python开源软件,那么使用该工具生成的可执行文件则能做到处处运行,无需额外安装依赖。pyinstaller推荐使用将所有相关文件打包成一个可执行文件的方式,命令为:pyinstaller-f目标文件.py
37.对于c/c++语言的开源软件通过makefile编译为二进制包。
38.通过makefile指导make的编译,在软件根目录输入以下基本的编译命令即可:./configure&&make#注意这些命令大多需要获取root权限。
39.在./configure那一步就会告知环境里是否缺少必要依赖,若依赖满足,执行make后通常会在软件根目录下生成对应的二进制可执行文件。这一整个过程就相当于从源码包到二进制包的转换了。
40.s2.建立临时目录,以收纳构建软件包过程中产生的临时文件。
41.s3.在临时目录下分别创建文件目录、图标目录、创建桌面入口目录及共有目录,且对二进制包的信息进行编辑及配置。
42.在本实施例的步骤s3中,在临时目录下,创建文件目录,将二进制包复制至文件目录。本实施例的文件目录为/opt/apps/软件名称/files。
43.在临时目录下,创建图标目录,将开源软件的图标移动至图标目录,且重命名图标。图标目录根据图标的分辨率大小名称,命名图标目录;图标的命名与开源软件的名称相同。本实施例的图标目录为/opt/apps/软件名称/entries/icons/hicolor/256x256/apps,256x256为图标的分辨率。
44.在临时目录下,创建桌面入口目录及共有目录,在桌面入口目录创建桌面启动器
文件,且编辑桌面启动器文件的信息,在将编辑信息后的桌面启动器文件复制存储至共有目录。本实施例的桌面启动器文件的编辑信息包括软件类型、软件版本、软件启动路径及软件图标。
45.本实施例桌面入口目录为/opt/apps/软件名称/entries/applications;共有目录为/usr/share/applications;桌面启动器文件为desktop文件。
46.在临时目录下,创建配置目录,在配置目录创建控制器文件,编辑控制器文件,以将二进制包的配置信息进行写入。本实施例的控制器文件的配置信息包括软件名称、软件版本、软件架构及软件主要维护者。配置目录为debian,且在配置目录创建控制器文件control,编辑控制器文件,写入软件的配置信息。
47.本实施例的临时目录如下所示:
[0048][0049]
s4.在启动终端命令行,对临时目录执行dpkg-deb
‑‑
build命令,以对二进制包构建为软件包。本实施例中,完成构建软件包后,删除临时目录。
[0050]
本实施例适范围包括统信桌面操作系统及银河麒麟桌面操作系统,统信uos打包方法相较于debian linux与麒麟kylin中最大的差异在于取消了打包目录下的/usr/share/目录,软件的icons图标文件以及桌面启动器.desktop文件均放入了打包目录下的/opt/apps/软件包名/。uos官方的说明为,软件包不允许直接向$home目录直接写入文件,后期系统将会使用沙箱技术重新定向$home,任何依赖该特性的行为都可能失效。统信uos强调自己独特的生态建立,而麒麟kylin选择的是拥抱debian linux以寻求更广泛的软件适用性。
[0051]
因此本实施例通过在在所述桌面入口目录创建桌面启动器文件,且编辑所述桌面启动器文件的信息,在将编辑信息后的所述桌面启动器文件复制存储至所述共有目录,保证兼容国产操作系统的桌面启动器规则;同时不新增打包目录下的info文件,桌面启动器
文件能够满足软件信息的描述;通过将所述图标设置在图标目录下,同时在桌面启动器文件中指向到对应图标,能够使国产操作系统中的图标正常显示。
[0052]
优选地,本实施例还适用于能够提供二进制包的软件。linux系统上的应用,基本都是要进入相应的bin目录,然后执行相应的脚本去运行起来,通过本实施例基于国产操作系统的开源软件编译安装方法,能够直接在国产操作系统的桌面上打开应用,对于习惯了windows操作系统的用户切换到国产操作系统,提供了极大的便利,该方法能极大简化了软件使用流程,有效提高了效率。
[0053]
本实施例对开源性能测试工具软件jmeter进行打包,其具体打包脚本设计如下:
[0054]
#!/bin/sh
[0055]
#包名
‑‑
也是相对文件的目录名
[0056]
app=org.apache.jmeter
[0057]
#应用名称
[0058]
appname=jmeter
[0059]
#临时文件的位置
[0060]
appdir=${app}_5.4.3_all
[0061]
#创建必要的文件夹
[0062]
mkdir-p$appdir/opt/apps/$app/files/$appdir
[0063]
#桌面入口文件位置.desktop
[0064]
mkdir-p$appdir/opt/apps/$app/entries/applications
[0065]
mkdir-p$appdir/usr/share/applications
[0066]
#图标
[0067]
mkdir-p$appdir/opt/apps/$app/entries/icons/hicolor/1024x1024/apps
[0068]
mkdir-p$appdir/opt/apps/$app/entries/icons/hicolor/256x256/apps
[0069]
#创建debian文件夹
[0070]
mkdir-p$appdir/debian
[0071]
#将源文件中的图标放到指定目录
[0072]
cp$app/bin/report-template/content/pages/icon-apache.png
[0073]
$appdir/opt/apps/$app/entries/icons/hicolor/1024x1024/apps/${app}.png
[0074]
cp$app/bin/report-template/content/pages/icon-apache.png
[0075]
$appdir/opt/apps/$app/entries/icons/hicolor/256x256/apps/${app}.png
[0076]
#主体文件
[0077]
cp-pr$app/*$appdir/opt/apps/$app/files/$appdir
[0078]
#桌面入口文件
[0079]
cat》$appdir/opt/apps/$app/entries/applications/${app}.desktop《《eof
[0080]
[desktop entry]
[0081]
version=1.0
[0082]
type=application
[0083]
name=$appname
[0084]
#name[zh_cn]=当该软件有中文名时可这样添加
[0085]
exec=/opt/apps/$app/files/$appdir/bin/jmeter.sh
[0086]
icon=/opt/apps/$app/entries/icons/hicolor/1024x1024/apps/${app}.png
[0087]
terminal=false
[0088]
categories=development
[0089]
startupwmclass=$app
[0090]
eof
[0091]
#启动器中添加
[0092]
cp$appdir/opt/apps/$app/entries/applications/${app}.desktop
[0093]
$appdir/usr/share/applications/${app}.desktop
[0094]
#控制器文件
[0095]
cat》$appdir/debian/control《《eof
[0096]
package:${app}
[0097]
version:5.4.3
[0098]
section:base
[0099]
priority:optional
[0100]
architecture:all
[0101]
maintainer:spzx
[0102]
description:jmeter
[0103]
eof
[0104]
#构建deb包
[0105]
dpkg-deb
‑‑
build$appdir
[0106]
#删除临时文件夹
[0107]
rm-rf$appdir
[0108]
打包结果如图2和图3所示,其中图2为打包软件在统信桌面操作系统v20的运行结果;图3为打包软件在在银河麒麟桌面操作系统v10的运行结果。由此可见所构建的软件包在统信桌面操作系统v20、银河麒麟桌面操作系统v10下均能正常安装,软件运行与使用体验与二进制包的原生版本一致。
[0109]
本实施例能够使同一个安装包可在不同的国产操作系统上完成安装,使用体验良好。通过提升开源软件编译安装部署的便利性,有助于推广信创生态和提升信创生态的用户粘度,更能加快国产软件行业的适配与发展。
技术特征:
1.一种基于国产操作系统的开源软件编译安装方法,其特征在于,包括下述步骤:s1.根据开源软件的开发语言,将所述开源软件的源码包编译为二进制包,自定义所述二进制包的包名及应用名称;s2.建立临时目录,以收纳构建软件包过程中产生的临时文件;s3.在所述临时目录下分别创建文件目录、图标目录、创建桌面入口目录及共有目录,且对所述二进制包的信息进行编辑及配置;s4.在启动终端命令行,对所述临时目录执行dpkg-deb
‑‑
build命令,以对所述二进制包构建为软件包。2.根据权利1所述的一种基于国产操作系统的开源软件编译安装方法,其特征在于:在步骤s1中,对于java语言的开源软件通过创建可运行jar文件包,编译为二进制包;对于python语言的开源软件通过pyinstaller工具编译为二进制包;对于c/c++语言的开源软件通过makefile编译为二进制包。3.根据权利1所述的一种基于国产操作系统的开源软件编译安装方法,其特征在于:在步骤s3中,在所述临时目录下,创建文件目录,将所述二进制包复制至所述文件目录;在所述临时目录下,创建图标目录,将所述开源软件的图标移动至所述图标目录,且重命名所述图标;在所述临时目录下,创建桌面入口目录及共有目录,在所述桌面入口目录创建桌面启动器文件,且编辑所述桌面启动器文件的信息,在将编辑信息后的所述桌面启动器文件复制存储至所述共有目录;在所述临时目录下,创建配置目录,在所述配置目录创建控制器文件,编辑所述控制器文件,以将二进制包的配置信息进行写入。4.根据权利3所述的一种基于国产操作系统的开源软件编译安装方法,其特征在于:在所述步骤s3中,所述图标目录根据所述图标的分辨率大小名称,命名所述图标目录;所述图标的命名与所述开源软件的名称相同。5.根据权利3所述的一种基于国产操作系统的开源软件编译安装方法,其特征在于:在步骤s3中,所述桌面启动器文件的编辑信息包括软件类型、软件版本、软件启动路径及软件图标。6.根据权利1所述的一种基于国产操作系统的开源软件编译安装方法,其特征在于:在步骤s3中,所述控制器文件的配置信息包括软件名称、软件版本、软件架构及软件主要维护者。7.根据权利1所述的一种基于国产操作系统的开源软件编译安装方法,其特征在于:在步骤4中,完成构建所述软件包后后,删除所述临时目录。
技术总结
本发明涉及计算机软件技术领域,尤其是一种基于国产操作系统的开源软件编译安装方法,包括下述步骤:根据开源软件的开发语言,将所述开源软件的源码包编译为二进制包,自定义所述二进制包的包名及应用名称;建立临时目录,以收纳构建软件包过程中产生的临时文件;在所述临时目录下分别创建文件目录、图标目录、创建桌面入口目录及共有目录,且对所述二进制包的信息进行编辑及配置;在启动终端命令行,对所述临时目录执行dpkg-deb
技术研发人员:周飞 谈超洪 李森 陈吉宁 刘先群 黄季洋 孙东奕 唐辉辉 梁少灵 钟宇曦
受保护的技术使用者:广西壮族自治区信息中心
技术研发日:2023.05.19
技术公布日:2023/7/21
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种装配化加固施工装置的制作方法 下一篇:一种轻量化车架的制备工艺的制作方法
