【Electron-vue】构建桌面应用(27)- 制作rpm文件

2023-05-16

1.前言

由于我们的客户端需要支持国产化Linux,而且主产品是在中标麒麟以及银河麒麟上使用,所以上面的两个系统都需要支持。而上面的两个系统是需要rpm安装包的,所以需要调研rpm包的支持。闲话少说,书归正传,开始我们的客户端打包rpm文件。

文章的主旨:主要是在开发过程中遇到的问题及打包方式,并不会详细到具体的细节,比如说打包的配置及属性详解等。因为现在网上这方面的资料很多,但凡懂点网络的都能在网上搜索到一些。因为现在的文章抄袭的很严重,也很相似。我会推荐一些真正有借鉴意义的文章,至少是参考这些文章,我能搞出来。那么我觉得他有用,在开发的过程中应该学会甄别文章。那些拿来即用的文章对你来说未必是好事,参考标准的文档才会让你对某样东西有着更透彻的理解。

2.打包.rpm文件

如果你在网上查找关于rpm文件的打包,一定会查到很多相关资料,大多是从源码文件开始打包的,还是需要xxxx.tar.gz的包,然后放到SOURCE文件中,然后开始去构建,构建的项目会存到BUILD中。

由于我是用的是Electron-vue,所以我的build文件都是用框架自带的build方式构建的文件,所以这里跳过关于linux下rpm文件的源码编译过程

如下图,linux-unpacked目录下的文件就是我们通过npm run build命令生成的,主要用于我们此次的打包编译后的文件,可以直接copy到我们下面制作包的BUILD/opt/driclient
在这里插入图片描述

这里有比较详细的文档介绍,感兴趣的可以去看看点这里

2.1 创建npmbuild目录

上面的文章中介绍了需要通过Root去创建一个新的普通账户去创建rpmbuild文件以及相关文件,这里我就不去创建账户了,因为我只是为了测试在Centeros系统上能不能正常的安装打包rpm文件,不把它当做主要的使用环境,所以为了简单,就不去创建新账户了。参考上面的文档连接,上面有很详细的步骤介绍。

切记!不要使用 root 用户来执行打包操作。因为这十分危险,所有二进制文件都会在打包前安装至系统中,因此您应该以普通用户身份打包,以防止系统被破坏。

创建一个新的普通账户,使用该账户去创建rpmbuild目录

 # sudo /usr/sbin/useradd makerpm
 # usermod -a -G mock makerpm
 # passwd makerpm

在上面的操作中,你会发现在执行第二步的时候,发现并没有mock
在这里插入图片描述
但是这一步可以省略不要,直接给你新创建的用户设置密码即passwd makerdemo

用户创建完事,你可以切换到新的账户登陆,在/home/username下创建rpmbuild工作目录

# rpmdev-setuptree

由于我这里已经创建了,我就不在终端执行了,命令执行后会发现创建了如下的工作目录
在这里插入图片描述

文件说明用途
SPECSSpec文件目录保存RPM包配置(.spec文件)
SOURCE源代码目录保存源码包(比如.tar.gz包)
BUILD构建目录源码包压缩之后存放到这里,并在该目录的子目录完成编译
BUILDROOT最终安装目录保存%install阶段安装的文件
RPMS标准RPM包目录生成/保存二进制RPM包
SRPMS源代码RPM包目录生成/保存源码RPM包(SRPM)

由于我是基于编译后的文件进行的打包,所以我不是很关心BUILID之前的操作,比如SOURCE,BUILDROOT以及SRPM文件。我所关心的只有SPECSBUILD文件目录。

2.2 将编译后的代码放到BUILD目录

在这里插入图片描述
文件还是按照之前deb打包的目录直接copy过来的。

名称说明用途
DEBAIN安装程序的说明在安装文件的的一些说明,比如软件名称,版本号等
opt程序运行的目录这里存放在electron-vue下的build之后的文件,由于其他的依赖文件放到opt下,所以这里也放到opt下,当然你也可以放到预先沟通好的目录
usr用户目录在usr下主要放置.desktop文件和左面图标文件

1. DEBIAN系统下才需要这个文件,在Centeros中可能没有用,我还没测试,也没有删除。
2. opt下的文件如下:

在这里插入图片描述

3. dirclient是我代码的目录,该目录对应着.desktop文件中的EXEC配置项。其中存放的就是通过npm run build生成的linux-unpacked目录下的文件,可以直接copy至此。

4. usr目录下如下
存放桌面快捷方式的.desktop文件
在这里插入图片描述
存放桌面快捷方式引用的icon
在这里插入图片描述

2.3 制作spec文件

前面的都准备好了,那么我们还需要制作一个spec文件

# cd SPECS
# rpmdev-newspec dynarose.spec

创建之后可以打开之后进行一些配置

Name:dynarose
Version:1.0	
Release:	1%{?dist}
Summary:Hello

#Group:		
License:GPLv3+	
#URL:		
#Source0:

#BuildRequires:	
#Requires:	

%description -l zh_CN
"Hello world"

#%prep
#%setup -q


%build

%install
cp -R $RPM_BUILD_DIR/opt $RPM_BUILD_ROOT/
cp -R $RPM_BUILD_DIR/usr $RPM_BUILD_ROOT/

%files
/opt/dridclient
/usr/share/

%changelog

%pre
echo -e "pre\n" >> /home/test

%post
echo -e "post\n" >> /home/test

%preun
echo -e "preun\n" >> /home/test

%postun
echo -e "postun\n" >> /home/test

配置的详细属性我就不一一列举出来了,因为源文档的属性比较多,并不是所有的属性都能需要,所以如果你不知道有些属性怎么写,可以直接注释掉,要不然你留着它,在编译的时候就会出问题。

详细属性介绍可以参考我开始的连接点这里

需要注意的是,你需要在安装的时候将usr下的文件copy到实际usr目录下,才能在项目启动的时候读取到正确的.desktop文件和icon图标。

%install
cp -R $RPM_BUILD_DIR/opt $RPM_BUILD_ROOT/
cp -R $RPM_BUILD_DIR/usr $RPM_BUILD_ROOT/

然后需要依赖的文件也需要在files中列举出来

%files
/opt/dridclient
/usr/share/

配置之后,使用下面的命令开始打包rpm文件

# rpmbuild -ba dynarose.spec

然后巴拉巴拉的输出…

如果成功的话在RPMS包中就会出现你的rpm
在这里插入图片描述
然后双击执行
在这里插入图片描述
输入密码,然后就可以选择安装了。

安装后在window->所有应用->其他,就可以看到新安装的应用程序
在这里插入图片描述
点击之后就可以启动应用
在这里插入图片描述
至此,rpm文件的打包就完成了,支持在centeros下的安装使用。关于desktop的的文件,可以参考我前面的文章。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Electron-vue】构建桌面应用(27)- 制作rpm文件 的相关文章

随机推荐