linux打rpm包

linux打rpm包

rpm 准备工作

创建一个.spec文件与.service文件

  • service文件
    本文服务名以test为例
[Unit]
Description=test
After=mariadb.service

[Service]
Type=simple
ExecStart=/usr/bin/java -jar /usr/local/service服务名/jar包名.jar -server
Restart=always
RestartSec=5
StartLimitInterval=0

[Install]
WantedBy=multi-user.target

如果是加密jar 需要更改 ExecStart=/usr/bin/java -javaagent:/usr/local/service服务名/xxxx.jar -jar /usr/local/service服务名/jar包.jar -server
路径根据自己java 安装路径确定.
普通jar包用这个就可

  • spec文件
Name:          	test
Version:        1.1
Release:        0
Summary:        test

Group:          System Environment/Daemons
License:        GPL
Vendor:         MySelf.com 

%description

%pre    

%preun 

systemctl disable test
%postun   
%clean 

%files
%defattr (-,root,root,0777)
/usr/local/test/xxx.jar
/lib/systemd/system/test.service
%post
systemctl enable test

照着spec文件先建好目录在BUILDROOT下,之后将jar包以及service分别放入 对应目录后。

BUILDROOT下首先要有一个 xxx.aarch64 目录,这个根据spec文件 来创建

按照以上模板,需要创建的目录为以下两个 分别用来存放jar文件与service文件

  • ~/rpmbuild/BUILDROOT/test.aarch64/usr/local/test/xxx.jar
  • ~/rpmbuild/BUILDROOT/test.aarch64/lib/systemd/system/test.service

打包

文件都放在指定目录后需要在 SPECS目录下运行.spec文件

命令:rpmbuild -bb xxx.spec

此时会在/rpmbuild/RPMS/aarch64 下生成指定的rpm文件

需要cd到当前目录 下运行rpm文件

命令:cd /rpmbuild/RPMS/aarch64

注意点:aarch64 文件夹可能与用的架构有关。也可能是其他名字

启动

命令:rpm -ivh xxx.rpm --nodeps

如果有依赖安装失败,可以强制安装。

命令:sudo rpm -ivh xxx.rpm --force --nodeps

​ 安装成功后,会在/usr/local/test 目录下生成打包之前的[jar包名.jar],在/lib/systemd/system目录生成名为[test.service]的服务文件,启动该服务:

​ 命令:systemctl start test.service

​ 启动之后可以查看服务状态,如下:

service test status

xxx 为服务名

查看

​ 如需查看已安装rpm包:

​ 命令:rpm -qa | grep xxx

卸载

​ 如需卸载或重装rpm包,需执行(后者为rpm包名):

​ 命令:rpm -e xxx

查看服务 xxx=服务名 不带 .service

命令:service xxxx status

开启服务

命令:service xxxx start

关闭服务

命令:service xxxx stop

posted @ 2022-12-07 17:36  xiaolifc  阅读(260)  评论(0)    收藏  举报