赞
踩
打包rpm包笔记二
tomcat源码包打包rpm包实验
参考地址
https://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/index.html
准备环境
#安装包
解压tomcat,增加PID,修改字符集UTF-8
增加pid文件配置
vim tomcat-9.0.68/bin/catalina.sh
在文件上部分增加
CATALINA_PID=/run/tomcat.pid
修改编码
vim tomcat-8.5.59/conf/server.xml
修改后添加成为压缩包 tar -zcvf tomcat.9.0.68.tar.gz tomcat.9.0.68/
安装编译软软件
yum install rpmbuild -y
yum install rpmdevtools -y
#生成目录
rpmdev-setuptree
#把tomcat源码包放rpmbuild/SOURCES
cp tomcat-9.0.68.tar.gz rpmbuild/SOURCES
我的默认路径为 /root/rpmbuild
#创建spec文件
创建 spec 文件
最简单的方式是从别处copy一份功能类似的spec文件直接修改,但是这种case经常是可遇不可求的.所有我们从创建一个新的 spec 模板文件说起.
通过上面的命令我们就可以创建一个新的 spec 模板文件, 这个文件可以分为 前言 和 主体 两个部分, 分别解释如下:
rpmdev-newspec -o tomcat.spec
配置简要
#前言部分
Name: myapp-1.0.0 #软件包的名字,建议和spec文件名字中的name一致
Version: #软件包的版本,建议和spec文件
Release: 1%{?dist} #软件的发布序号
Summary: #软件包的摘要描述
License: #软件的授权方式
URL: #源码的对应的路径或者软件所有公司的网址之类
Source0: #源代码包的名称(默认时rpmbuid回到SOURCES目录中去找), 如果有其他配置或脚本则依次用Source1、Source2等等往后增加
BuildRequires: #编译rpm包时需要的依赖软件包,每个依赖之间以逗号分隔。假如,要求编译myapp时,gcc的版本至少为4.4.2,则可以写成 gcc >= 4.2.2
Requires: #编译好的rpm在运行时的依赖软件包,各个依赖也以逗号分隔
#主体部分
%description #软件包的详细说明,最多为80个英文字符
%prep #将%_sourcedir目录下的源代码解压到%_builddir目录下。如果有补丁的需要在这个阶段进行打补丁的操作
%setup -q #解压操作
%build #在%_builddir目录下执行源码包的编译,一般是执行./configure和make指令
%configure #宏常量,会自动将 %{_prefix}设置成/usr
make %{?_smp_mflags} #自动将软件安装时的路径设置成如下约定:
# 1. 可执行程序放在/usr/bin
# 2. 依赖的动态库放在/usr/lib或者/usr/lib64
# 3. 二次开发的头文件放在 /usr/include
# 3. 文档及手册放在/usr/share/man
%install # 将需要打包到rpm软件包里的文件从%_builddir下拷贝%_buildrootdir目录下, 当用户最终用rpm -ivh name-version.rpm安装软件包时,这些文件会安装到用户系统中相应的目录里
rm -rf $RPM_BUILD_ROOT # $RPM_BUILD_ROOT 内置变量,就是 %_buildrootdir的值
%make_install
%clean #编译后的清理工作,这里可以执行make clean以及清空 %_buildroot 目录等
#下来就是制作 rpm 包阶段, 这个阶段是自动完成的,所以在SPEC文件里面是看不到的,这个阶段会将%_buildroot目录的相关文件制作成rpm软件包最终放到%_rpmdir目录里
#rpm制作阶段会引用下面的 %files 阶段, %file 阶段主要用来说明会将 %_buildrootdir 目录下的哪些文件和目录最终打包到rpm包里
%files #所有需要打包到rpm包的文件和目录都在这个地方列出, 需要注意,文件列表必须以 “/” 开头, 否则会报错(自己也可以尝试一下)
@defatrr(-,root,root,-) #%defattr(文件权限,用户名,组名,目录权限),如果不牵扯到文件、目录权限的改变则一般用%defattr(-,root,root,-)这条指令来为其设置缺省权限
%doc #可以指定那些在编译过程中没有从 %_builddir 放入到 %_buildrootdir 的文件,如一些README,LICENSE之类的文件
%changelog #记录的每次打包时的修改变更日志,为打包 rpm 的最后一个阶段, 格式不对,或报错失败,格式一般如下:
# * date +“%a %b %d %Y” 修改人 邮箱 本次版本x.y.z-p
# - 本次变更修改了那些内容
实验配置
tomcat.spec
%define path_name usr/local
%define name_ tomcat-9.0.68
Name: tomcat
Version: 9.0.68
Release: 1%{?dist}
Summary: this is zhb testing
License: GPL
URL: https://tomcat.apache.org/
Packager: tomcat
Vendor: tomcat
Source0: tomcat-9.0.68.tar.gz
Source1: tomcat.service
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
%description
tomcat
%prep
mkdir -pv %{buildroot}/%{path_name}
%setup -q
%install
#rm -rf $RPM_BUILD_ROOT
mkdir -pv $RPM_BUILD_ROOT/%{path_name}/%{name_}/var
cp -rf * $RPM_BUILD_ROOT/%{path_name}/%{name_}/
%{__install} -p -D %{SOURCE1} %{buildroot}/usr/lib/systemd/system/tomcat.service
%post
ln -s $RPM_BUILD_ROOT/%{path_name}/%{name_}/ $RPM_BUILD_ROOT/%{path_name}/tomcat
%postun
rm -fr /%{path_name}/%{name_}
rm -fr /%{path_name}/tomcat
%files
%defattr(-,root,root,-)
%attr(0755,root,root) /usr/local/
%attr(0755,root,root) /usr/lib/systemd/system/tomcat.service
%attr(0755,root,root) /usr/local/tomcat-9.0.68/var
%changelog
增加tomcat.service文件
vim rpmbuild/SOURCES/tomcat.service
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/tomcat.pid
ExecStart=/usr/local/tomcat/bin/startup.sh &>/dev/null
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
##spec说明
%install内容确定rpm包安装后文件路径
把处理好的文件复制到打包根目录
%files内容确定哪些文件打包到rpm包
根目录就是上面定义的%{buildroot}/usr/local/tomcat路径
#打包
rpmbuild -bb tomcat.spec
编译成功输出
[root@two SOURCES]# rpmbuild -bb tomcat.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.vzyBmc
#成功后rpm包路径
rpmbuild/RPMS/x86_64/tomcat-9.0.68.x86_64.rpm
BUILDROOT
├── RPMS
│ └── x86_64
│ └── tomcat-9.0.68-1.el7.centos.x86_64.rpm
├── SOURCES
│ ├── tomcat-9.0.68.tar.gz
│ ├── tomcat.service
│ └── tomcat.spec
#安装包
rpm -ivh tomcat-9.0.68.x86_64.rpm
安装
cd rpmbuild/RPMS/x86_64
rpm -ivh tomcat-9.0.68-1.el7.x86_64.rpm
#查看结果
ls /usr/local/tomcat
#查看安装包信息
rpm -qi tomcat
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。