RPM打包java jar项目

21 篇文章 0 订阅

环境:contos 8 + java jar

目标,使用RPM把jar和config打成包,让客户用解压即用。

安装RPM

yum install rpm rpm-build rpmdevtools -y

切换普通用户

useradd test1
su - test1

 环境变量

 在用户根目录下创建.rpmmacros

[test1@shanghai ~]$ pwd
/home/test1
[test1@shanghai ~]$ ll -a
总用量 16
drwx------ 4 test1 test1 112  7月 30 16:47 .
drwxr-xr-x 4 root  root   31  7月 30 16:34 ..
-rwxr-xr-x 1 test1 test1  75  1月 10  2020 .bash_logout
-rwxr-xr-x 1 test1 test1  71  3月 19  2020 .bash_profile
-rwxr-xr-x 1 test1 test1 138  1月 10  2020 .bashrc
drwxr-xr-x 4 test1 test1  39  7月 29 22:37 .mozilla
[test1@shanghai ~]$ vim .rpmmacros 

%_topdir /home/test1/rpmbuild

创建RPM包目录结构 

rpmdev-setuptree会自动生成文件夹

[test1@shanghai ~]$ rpmdev-setuptree
[test1@shanghai ~]$ ll
总用量 0
drwxrwxr-x 7 test1 test1 72  7月 30 16:39 rpmbuild
[test1@shanghai ~]$ cd rpmbuild/
[test1@shanghai rpmbuild]$ ll
总用量 0
drwxrwxr-x 2 test1 test1 6  7月 30 16:39 BUILD
drwxrwxr-x 2 test1 test1 6  7月 30 16:39 RPMS
drwxrwxr-x 2 test1 test1 6  7月 30 16:39 SOURCES
drwxrwxr-x 2 test1 test1 6  7月 30 16:39 SPECS
drwxrwxr-x 2 test1 test1 6  7月 30 16:39 SRPMS

拷贝文件到SOURCES

-rwxr-xr-x 1 test1 test1     361  7月 30 16:42 config.json
-rwxr-xr-x 1 test1 test1 1612982  7月 30 16:42 db-timer-0.1.jar

创建spec

生成一个spec模板

[test1@shanghai SPECS]$ pwd
/home/test1/rpmbuild/SPECS
[test1@shanghai SPECS]$ rpmdev-newspec test.spec
test.spec created; type minimal, rpm version >= 4.15.
[test1@shanghai SPECS]$ cat test.spec 

属性介绍,大部分没用

Summary: hellorpm is a test program。

#软件包的名字

Name: hellorpm        

#软件包的主版本号           
Version: 2.2.6          

#软件包的次版本号             
Release: 1   

#源代码包,默认将在上面提到的SOURCES目录中寻找                        
Source0: %{name}-%{version}.tar.gz   

#授权协议
License: GPL     

#定义临时构建目录,这个地址将作为临时安装目录在后面引用
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root

#软件分类
Group: Development/Tools  

#软件包的内容介绍               
%description                         
The hellorpm program is a test.

#表示预操作字段,后面的命令将在源码代码BUILD前执行

%prep                     

#构建BUILD环境,将解压源码压缩包到BUILD目录 

%setup -q       

#BUILD字段,将通过直接调用源码目录中自动构建工具完成源码编译操作         
%build       

#调用源码目录中的configure命令            
./configure        

#在源码目录中执行自动构建命令make     
make            

#安装字段         
%install     

#调用源码中安装执行脚本             
make DESTDIR=$RPM_BUILD_ROOT install 

#文件说明字段,声明多余或者缺少都将可能出错

%files              

#设置文件权限属性       
%defattr(-,root,root)      

#声明/usr/local/bin/hellorpm将出现在软件包中      
/usr/local/bin/hellorpm      

#声明并设置文件属性   
%doc %attr(0444,root,root) /usr/local/man/man1/hellorpm.1  

#同上,声明文档文件 

%doc README  

重点关心我的配置文件

Name:           db-timer
Version:        0.1
Release:        1%{?dist}
Summary:        my first rpm

License:        GPL
#URL:           www.highgo.com
Source0:        %{name}-%{version}.jar
sOURCE1:        config.json

#BuildRoot:
#BuildRequires: systemd
#Requires:      shadow-utils,bash   

%description    

%define debug_package %{nil}
%define __jar_repack %{nil}

%prep

%build

%install
rm -rf %{buildroot}
mkdir -p %{buildroot}

rpm_app_dir=%{buildroot}/db-timer

#create folder
mkdir -p $rpm_app_dir

#copy files
cp -r %{_topdir}/SOURCES/* $rpm_app_dir

%files
/db-timer/%{name}-%{version}.jar
/db-timer/config.json

%changelog

 如果需要安装到指定位置,比如/opt下,修改以下几行

rpm_app_dir=%{buildroot}/opt/db-timer

%files
/db-timer/opt/%{name}-%{version}.jar
/db-timer/opt/config.json

打包

rpmbuild -ba SPECS/test.spec 

[test1@shanghai rpmbuild]$ rpmbuild -ba SPECS/test.spec 
正在执行(%prep):/bin/sh -e /var/tmp/rpm-tmp.NnC3Aq
...
已写至:/home/test1/rpmbuild/RPMS/x86_64/db-timer-0.1-1.ky10.ky10.x86_64.rpm
...
[test1@shanghai rpmbuild]$ 

rpm位置拷贝一份:后面测试使用

/home/test1/rpmbuild/RPMS/x86_64/db-timer-0.1-1.ky10.ky10.x86_64.rpm

测试

#RPM 安装命令
rpm -ivh /home/test1/rpmbuild/RPMS/x86_64/db-timer-0.1-1.ky10.ky10.x86_64.rpm

#RPM 查询命令
rpm -qa |grep db-timer

#RPM 卸载命令
rpm -e db-timer

[root@shanghai /]# rpm -ivh /home/test1/rpmbuild/RPMS/x86_64/db-timer-0.1-1.ky10.ky10.x86_64.rpm
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...
   1:db-timer-0.1-1.ky10.ky10         ################################# [100%]
[root@shanghai /]# ll
总用量 16
lrwxrwxrwx    1 root root    7  3月 14  2020 bin -> usr/bin
dr-xr-xr-x.   6 root root 4096  7月 29 22:45 boot
drwxrwxrwx    2 root root    6  7月 29 22:42 box
drwxr-xr-x    2 root root   66  7月 30 17:23 db-timer
...
[root@shanghai /]# cd db-timer/
[root@shanghai db-timer]# ll
总用量 1588
-rwxr-xr-x 1 root root     464  7月 30 17:16 config.json
-rwxr-xr-x 1 root root 1613883  7月 30 17:16 db-timer-0.1.jar
[root@shanghai db-timer]# java -jar db-timer-0.1.jar 
2021-07-30 17:23:59 [INFO] Main.main:15 - app start...

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值