在Centos下java程序或者Jar包制作成RPM

一、 安装必要工具

 yum install make
yum install gcc

简单一点就是

yum install rpmbuild

如果出现执行后提示说找不到这个包,搜索rpm

yum search rpm

出现很多包,找到以下包,就是rpm
在这里插入图片描述

yum install -y rpm-build.x86_64

二、创建制作rpm的工作目录

mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

各个目录的一般用途如下简介:

BUILD 	    编译rpm包的临时目录 	
BUILDROOT   编译后生成的软件临时安装目录
RPMS 	    最终生成的可安装rpm包的所在目录
SOURCES     所有源代码和补丁文件的存放目录
SPECS 	    存放SPEC文件的目录(重要)
SRPMS 	    软件最终的rpm源码格式存放路径

三、打包源文件

进入要打包文件的目录:

cd /home/state

打包:

tar -zcv -f Documents-0.1.tar.gz Documents 

⚠️注意:这里我打包的tar.gz一定要带上版本号,x-0.1,还有Documents-0.1.tar.gz和后面的Documents 最好名字一致,都带上版本,后续的spec文件可能会不同。

cp Documents-0.1.tar.gz ~/rpmbuild/SOURCES

四、新建*.spec的设置文件

cd ~/rpmbuild/SPECS
vim Documents.spec

spec文件在这里插入图片描述
1.name是名字
2.version 是版本
3.release、summary、license、url都照着写
4.为避免自动扫描依赖包,增加下面的配置
AutoReqProv: no
5.因为之前Documents-0.1.tar.gz和后面的Documents 名字不一致,报如下错误:
在这里插入图片描述
解决方法:
%setup -n Documents
6.为避免去除符号链接和jar文件重新打包,设置参数如下:
%define debug_package %{nil}
%define __jar_repack 0
7.%build目录下的东西删除,因为不需要make和configure,不然会报如下错误:
在这里插入图片描述
8.直接install资源文件到对应目录:
%install
rm -rf %{buildroot}
mkdir -p %{buildroot}
cp -rf * %{buildroot}

定义安装包中的所有文件:
%files
根据自己的目录设定
最开始我设定了/home/state/Documents
报如下错误:
在这里插入图片描述
解决方法:

cd /root/rpmbuild/BUILDROOT/Documents-0.1-1.el7.x86_64

在这里插入图片描述
spec文件主要有以下关键字,其含义如下:

Name: 软件包的名称,在后面的变量中即可使用%{name}的方式引用
Summary: 软件包的内容
Version: 软件的实际版本号,例如:1.12.1等,后面可使用%{version}引用
Release: 发布序列号,例如:1%{?dist},标明第几次打包,后面可使用%{release}引用
Group: 软件分组,建议使用:Applications/System
License: 软件授权方式GPLv2
Source: 源码包,可以带多个用Source1、Source2等源,后面也可以用%{source1}、%{source2}引用
BuildRoot: 这个是安装或编译时使用的临时目录,即模拟安装完以后生成的文件目录:%_topdir/BUILDROOT 后面可使用$RPM_BUILD_ROOT 方式引用。
URL: 软件的URI
Vendor: 打包组织或者人员
Patch: 补丁源码,可使用Patch1、Patch2等标识多个补丁,使用%patch0或%{patch0}引用
Prefix: %{_prefix} 这个主要是为了解决今后安装rpm包时,并不一定把软件安装到rpm中打包的目录的情况。这样,必须在这里定义该标识,并在编写%install脚本的时候引用,才能实现rpm安装时重新指定位置的功能
Prefix: %{_sysconfdir} 这个原因和上面的一样,但由于%{_prefix}指/usr,而对于其他的文件,例如/etc下的配置文件,则需要用%{_sysconfdir}标识
Requires: 该rpm包所依赖的软件包名称,可以用>=或<=表示大于或小于某一特定版本,例如:
libxxx-devel >= 1.1.1 openssl-devel 。 注意:“>=”号两边需用空格隔开,而不同软件名称也用空格分开

%description: 软件的详细说明
%define: 预定义的变量,例如定义日志路径: _logpath /var/log/weblog
%prep: 预备参数,通常为 %setup -q
%build: 编译参数 ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx/……
%install: 安装步骤,此时需要指定安装路径,创建编译时自动生成目录,复制配置文件至所对应的目录中(这一步比较重要!)
%pre: 安装前需要做的任务,如:创建用户
%post: 安装后需要做的任务 如:自动启动的任务
%preun: 卸载前需要做的任务 如:停止任务
%postun: 卸载后需要做的任务 如:删除用户,删除/备份业务数据
%clean: 清除上次编译生成的临时文件,就是上文提到的虚拟目录
%files: 设置文件属性,包含编译文件需要生成的目录、文件以及分配所对应的权限
%changelog: 修改历史

五、编译成为RPM和SRPM

rpmbuild -ba Documents.spec

出现exit 0就成功了!!!
在这里插入图片描述

六、安装和测试

rpm -ivh ~/rpmbuild/RPMS/x86_64/Documents-0.1-1.el7.x86_64.rpm

在这里插入图片描述
查看具体信息:

rpm -ql Documents
rpm -qi Documents

在这里插入图片描述
具体参考:https://blog.csdn.net/u010384744/article/details/80929319/

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、付费专栏及课程。

余额充值