jar包制作成rpm包,配置service文件管理

准备打RPM包的环境

#安装打包软件

yum -y install rpm-build rpmdevtools

#生成rpm包的目录结构

rpmdev-setuptree   #会在用户家目录下生成一个rpmbuild目录

 目录解析

  1. BUILD 目录:用于临时存放构建过程中生成的文件。
  2. RPMS 目录:用于存放生成的 RPM 软件包。
  3. SOURCES 目录:用于存放软件包的源代码。
  4. SPECS 目录:用于存放软件包的规范文件(.spec 文件),其中包含了软件包的详细信息,如名称、版本、依赖关系等。
  5. SRPMS 目录:用于存放生成的源代码 RPM 软件包。

编写SPEC文件

  • SPEC文件是描述如何构建和打包 RPM 的文本文件,它包含软件的元数据、构建指令和依赖关系等信息。
  • SPECS目录下创建一个以.spec结尾的文件

spec文件详解

================================================================

Name: docs           #软件名称
Version: 4.2           #版本号
Release: 1                #rpm的发行号
Summary: This is a script for building docs services          #摘要
 
License: GPL                        #声明版权信息
%description                         #描述
This is a script for building docs services
 
 
# 指定构建rpm包所需的依赖
BuildRequires: java-devel >= 1.8
 
# 指定运行rpm包所需的依赖
Requires: java-1.8.0-openjdk
BuildArch:  aarch64


# 设置为nil构建过程对 JAR 包不进行特殊处理,如解压、修改、重新打包 JAR 文件等操作
%define debug_package %{nil}
%define __jar_repack %{nil}
 
 #build阶段此时会进入到/rpmbuild/BUILD/目录中
%build

#安装前要做的操作

%pre


#安装rpm包时执行的操作
%install
rm -rf %{buildroot}
mkdir -p %{buildroot}/data/yozo/apps/
mkdir -p %{buildroot}/etc/systemd/system
cp -r %{_sourcedir}/docs/  %{buildroot}/data/yozo/apps/
#cp -r %{_sourcedir}/epauth-4.2.1.jar  %{buildroot}/data/yozo/apps/docs/epauth/
#cp -r %{_sourcedir}/logback-spring.xml  %{buildroot}/data/yozo/apps/docs/logback/
#cp -r %{_sourcedir}/openjdk-8u352-b08.tar.gz  %{buildroot}/data/yozo/apps/docs/jdk/
cp -r %{_sourcedir}/system/*  %{buildroot}/etc/systemd/system/
 
#安装完成后操作
%post
#chmod 777 /opt/yozo/docs/epauth/epauth.sh
#systemctl enable epauth.service
tar xvzf /data/yozo/apps/docs/jdk/openjdk-8u352-b08.tar.gz -C /data/yozo/apps/docs/jdk/
 
%preun
# 在卸载RPM包之前执行的操作,例如停用服务
systemctl stop comment
systemctl stop converter
systemctl stop docinit

sleep 3
systemctl disable epauth.service
systemctl disable comment.service
systemctl disable converter.service
systemctl disable docinit.service
systemctl daemon-reload
 
 
#构建完成后删除/rpmbuild/BUILDROOT/中的打包过程文件
%clean
rm -rf $RPM_BUILD_ROOT
 
%files
# 检查RPM包中的文件列表,也就是安装后存放相关资源的的文件路径
%defattr(-,yozo,docker,-)
%attr(755,yozo,docker) 
/data/yozo/apps/docs/
/etc/systemd/system/epauth.service
/etc/systemd/system/comment.service
/etc/systemd/system/converter.service
/etc/systemd/system/docinit.service
 
#打包日志
%changelog

 编写service文件便于system管理 

[Unit]
Description=epauth          #服务名称
After=network.target        #依赖关系

[Service]
Type=simple                #服务类型

#Type=oneshot           #只启动一次

#可以引用外部变量文件

#EnvironmentFile=/data/yozo/flyway/env.sh

#启动命令
ExecStart=/data/jdk8u352-b08/bin/java -server -jar /data/yozo/apps/docs/epauth/yozo-epauth-4.0.0-SNAPSHOT.jar > /dev/null 2>&1

#停止命令,标准写法
ExecStop=/usr/bin/kill -15  $MAINPID

#创建一个私有的临时目录,例如用于存储临时文件

PrivateTmp=true

#服务启动失败,自动重启
Restart=always                #设为Type=oneshot时需要改为no

#成功退出状态码
SuccessExitStatus=143

#服务工作目录
WorkingDirectory=/data/yozo/apps/docs/epauth/

[Install]

#多用户运行级别,服务可用。
WantedBy=multi-user.target

#服务别名
Alias=epauth.service

rpm打包阶段 

-bp #只执行spec的%pre段(解开源码包并打补丁,即只做准备)
-bc #执行spec的%pre和%build段(准备并编译)
-bi #执行spec中%pre,%build与%install(准备,编译并安装)
-bl #检查spec中的%file段(查看文件是否齐全)
-ba #建立源码与二进制包
-bb #只建立二进制包
-bs #只建立源码包

-vv #详细展示打包过程

例如:rpmbuild -bb -vv docs.spec

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jar包rpm的步骤如下: 1. 安装rpmbuild工具 在Linux系统上,可以使用以下命令安装rpmbuild工具: ``` sudo yum install rpm-build ``` 2. 创建rpm的目录结构 在rpmbuild的根目录下,创建一个名为SPECS的目录,用于存放.spec文件,以及一个名为SOURCES的目录,用于存放源文件。 ``` mkdir -p ~/rpmbuild/{SPECS,SOURCES} ``` 3. 编写.spec文件 .spec文件是用于打和安装rpm文件,需要根据实际情况编写。以下是一个简单的.spec文件示例: ``` Name: myapp Version: 1.0 Release: 1%{?dist} Summary: My Java Application License: GPL URL: http://www.example.com/myapp Source0: myapp.jar BuildRequires: java-devel Requires: java %description My Java Application %prep %setup -q %build %install rm -rf %{buildroot} mkdir -p %{buildroot}/usr/share/myapp cp -a * %{buildroot}/usr/share/myapp/ %files %defattr(-,root,root,-) /usr/share/myapp ``` 在.spec文件中,需要指定应用程序的名称、版本、许可证、依赖关系等信息,并指定应用程序的源文件(在本例中为myapp.jar)。同时,还需要指定应用程序的安装路径和文件列表。 4. 将源文件复制到SOURCES目录下 将应用程序的源文件(在本例中为myapp.jar)复制到SOURCES目录下。 ``` cp myapp.jar ~/rpmbuild/SOURCES/ ``` 5. 使用rpmbuild打 使用rpmbuild命令打.rpm: ``` rpmbuild -bb ~/rpmbuild/SPECS/myapp.spec ``` 此命令将在rpmbuild的根目录下生一个.rpm,可以使用以下命令进行安装: ``` sudo yum localinstall ~/rpmbuild/RPMS/x86_64/myapp-1.0-1.el7.x86_64.rpm ``` 其中,x86_64是指64位系统,el7是指CentOS 7操作系统版本。具体的操作系统版本可能会有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值