rpm 制作
制作rpm安装包
1.查看rpmbuild目录
[root@q11883v SPECS]# rpmbuild --showrc |grep %{_topdir}
-14: _builddir %{_topdir}/BUILD
-14: _buildrootdir %{_topdir}/BUILDROOT
-14: _rpmdir %{_topdir}/RPMS
-14: _sourcedir %{_topdir}/SOURCES
-14: _specdir %{_topdir}/SPECS
-14: _srcrpmdir %{_topdir}/SRPMS
2.创建工作目录
1. #定义工作目录(或车间)吧
vi ~/.rpmmacros
%_topdir /home/rpmuser/rpmbuild ##目录可以自定义
2. #在topdir下建立需要的目录
mkdir ~/rpmbuild
cd ~/rpmbuild
mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
3.整理源码
rpmbuild安装完成以后我门就需要将我们的源码放到 SOURCE 文件夹下
4.编写spec文件
在SPECS文件夹下新建 xxx.spec 打包脚本,其实也就是把我门的源码编译打包成rpm 的一个过程
vi node_exporter.spec
Name: node_exporter #名字为源码tar.gz 包的名字
Version: 0.17.0 #版本号,一定要与tar.gz包的一致哦
Release: 1%{?dist} #释出号,也就是第几次制作rpm
Summary: node_exporter #软件包简介,最好不要超过50字符
Group: prometheus
License: GPL #许可,GPL还是BSD等
URL: http://prometheus.io
Source0: node_exporter-0.17.0.tar.gz #定义用到的source,也就是你的源码
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) #这个是软件make install 的测试安装目录.
BuildRequires: daemonize #制作过程中用到的软件包
Requires: daemonize #软件运行依赖的软件包,也可以指定最低版本如 bash >= 1.1.1
%description #描述,随便写
prometheus agent package
%prep #打包开始
%setup -q #这个作用静默模式解压并cd
%build #编译制作阶段,主要目的就是编译,如果不用编译就为空
%install #安装阶段
rm -rf %{buildroot} #先删除原来的安装的,如果你不是第一次安装的话
install -d %{buildroot}/usr/local/%{name} #创建目录
install -p -D %{_builddir}/%{name}-%{version}/node_exporter #拷贝文件 %{buildroot}/usr/local/%{name}/node_exporter
#下面的几步pre、post、preun、postun 没必要可以不写
%pre #rpm安装前制行的脚本
%post #安装后执行的脚本
%preun #卸载前执行的脚本
%postun #卸载后执行的脚本
%clean #清理段,删除buildroot
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
/usr/local/%{name}
%changelog
语法
如果目标文件存在:
install : install会先删除原先的文件然后写入新文件;
cp: cp会清空文件后往里面写入新文件;
@install -d /usr/bin
@install -p -D -m 0755 targets /usr/bin
相当于
@mkdir -p /usr/bin
@cp targets /usr/bin
@chmod 755 /usr/bin/targets
@touch /usr/bin/tagets <---- 更新文件时间戳
打包
spec 文件编写好以后就可以进行打包了,在SPECS文件夹下执行命令:
rpmbuild -bb node_exporter.spec
## 查看rpmbuild生成rpm详细信息
rpm -qpi RPMS/x86_64/node_exporter-0.17.0-1.el6.x86_64.rpm
注意
在生成rpm包同时,还会生成debuginfo包,如果要避免生成debuginfo包:这个是默认会生成的rpm包。则可以使用下面的命令:
echo '%debug_package %{nil}' >> ~/.rpmmacros
把%debug_package %{nil} 追加到 ~/.rpmmacros 文件中便可
网友评论