tomcat的tar包转换成rpm包的保姆级教程

发布于:2025-07-11 ⋅ 阅读:(16) ⋅ 点赞:(0)

环境说明 :centos 7

1. 安装打包工具:

yum install -y rpm-build rpmdevtools

2. 创建 RPM 打包环境:

rpmdev-setuptree

输入之后是下面的结果

~/rpmbuild/
├── BUILD
├── RPMS
├── SOURCES
├── SPECS
└── SRPMS

准备 Tomcat 源码包

 

重命名为规范格式:

mv apache-tomcat-8.0.33.tar.gz tomcat-8.0.33.tar.gz

放到 SOURCES 目录:

cp tomcat-8.0.33.tar.gz ~/rpmbuild/SOURCES/

编写 SPEC 文件

新建并编辑

vi ~/rpmbuild/SPECS/tomcat.spec

文件内容(下面是适用于tomcat8.0.33)

Name:           tomcat
Version:        8.0.33
Release:        1%{?dist}
Summary:        Apache Tomcat 8 - Java Web Server
​
License:        Apache
URL:            https://tomcat.apache.org/
Source0:        tomcat-%{version}.tar.gz
​
BuildArch:      noarch
Requires:       java-1.8.0-openjdk
​
%description
Apache Tomcat 8 is an open-source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies.
​
%prep
%setup -q -n apache-tomcat-%{version}
​
%build
# No build steps required
​
%install
# 安装 Tomcat 到 /opt/tomcat
mkdir -p %{buildroot}/opt/tomcat
cp -a * %{buildroot}/opt/tomcat/
​
# 添加 systemd 服务文件
mkdir -p %{buildroot}/usr/lib/systemd/system
cat > %{buildroot}/usr/lib/systemd/system/tomcat.service <<'EOF'
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
​
[Service]
Type=forking
​
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
​
User=root
Group=root
Restart=on-failure
​
[Install]
WantedBy=multi-user.target
EOF
​
%files
/opt/tomcat
/usr/lib/systemd/system/tomcat.service
​
%post
# 让 systemd 识别服务
/bin/systemctl daemon-reload
/bin/systemctl enable tomcat.service || :
​
%preun
if [ $1 = 0 ]; then
    /bin/systemctl stop tomcat.service || :
    /bin/systemctl disable tomcat.service || :
fi
​
%changelog
* Sun Jul 06 2025 李先生 <li@example.com> - 8.0.33-1
- Initial packaging of Apache Tomcat 8.0.33

 

开始打包

rpmbuild -ba ~/rpmbuild/SPECS/tomcat.spec
 

查看

ls /root/rpmbuild/RPMS/noarch/

安装

yum -y install tomcat-8.0.33-1.el7.noarch.rpm  

 

 

启动并查看状态

systemctl start tomcat
systemctl status tomcat

 

 

浏览器界面查看

 

ip地址:8080

例如:   192.168.72.148:8080

 

 

 

SPEC文件解释

 

顶部元信息(软件基本信息)  
Name:           tomcat              # 软件包名称
Version:        8.0.33              # 主版本号
Release:        1%{?dist}           # 发布号,“1”为首次发布,“%{?dist}”代表系统发行版宏(如.el7)
Summary:        Apache Tomcat 8 - Java Web Server  # 简要描述
​
许可证、主页和源码
License:        Apache              # 使用的许可证类型
URL:            https://tomcat.apache.org/   # 项目官网
Source0:        tomcat-%{version}.tar.gz     # 指定源代码 tar 包名称,对应 SOURCES 目录中的文件
Source0 指定了您打包用的原始源码包,比如 tomcat-8.0.33.tar.gz。
​
架构与依赖
BuildArch:      noarch                      # 表示平台无关(纯脚本或 Java)
Requires:       java-1.8.0-openjdk          # 指定依赖的运行环境,安装时会自动安装 JDK
​
软件说明(长描述)
%description
Apache Tomcat 8 is an open-source implementation...
#这是 RPM 安装包中的详细介绍内容,会出现在 rpm -qi tomcat 命令输出中。
​
源码解包阶段
%prep
%setup -q -n apache-tomcat-%{version}
#%prep 段用于准备源码。%setup 自动解压 Source0,并进入解压后的目录:
#-q 安静模式(不输出太多信息)
#-n apache-tomcat-%{version} 指定解压后目录名,比如 apache-tomcat-8.0.33
​
构建阶段(Java 无需编译)
%build
\# No build steps required
#Tomcat 是二进制发布版,无需编译,因此这一段空着。
​
安装阶段(关键部分)
%install
mkdir -p %{buildroot}/opt/tomcat
cp -a * %{buildroot}/opt/tomcat/
#将 Tomcat 所有文件复制到 RPM 的打包根目录 %{buildroot} 下的 /opt/tomcat。
​
添加 systemd 服务文件
mkdir -p %{buildroot}/usr/lib/systemd/system
cat > %{buildroot}/usr/lib/systemd/system/tomcat.service <<'EOF'
...
EOF
#创建并写入 systemd 服务文件,安装 RPM 后系统可使用 systemctl start tomcat 管理服务。
​
文件列表(RPM 安装时包含哪些内容)
%files
/opt/tomcat
/usr/lib/systemd/system/tomcat.service
#指定哪些文件会被包含进 .rpm 安装包中。这两项就是 Tomcat 目录和 systemd 服务。
​
安装后动作(%post)
%post
/bin/systemctl daemon-reload
/bin/systemctl enable tomcat.service || :
#安装 RPM 后自动执行的命令:
#重新加载 systemd 配置
#设置 tomcat 服务开机启动(忽略错误)
​
卸载前动作(%preun)
%preun
if [ $1 = 0 ]; then
•    /bin/systemctl stop tomcat.service || :
•    /bin/systemctl disable tomcat.service || :
fi
#如果是卸载(而不是升级),就停止并禁用 tomcat 服务。
#$1 = 0 表示当前是卸载操作
#$1 = 1 表示是升级操作,不会执行清理动作
​
​
更新日志(%changelog)
%changelog
* Sun Jul 06 2025 李先生 <li@example.com> - 8.0.33-1
- Initial packaging of Apache Tomcat 8.0.33
#写明每次构建 RPM 的变更历史,便于管理版本。

 

总结SPEC文件说明

tomcat.spec
├── Name / Version / Release / Summary 等元信息
├── Source0: 下载用源代码 tar 包
├── %description: 包的描述
├── %prep: 解压源码包
├── %build: (空)
├── %install: 把文件放进构建目录 + 写 systemd 文件
├── %files: 声明包含哪些文件
├── %post: 安装后自动执行的命令
├── %preun: 卸载前执行的命令
└── %changelog: 历史记录

 

 


网站公告

今日签到

点亮在社区的每一天
去签到