prometheus监控节点node_exporter rpm包制作

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 文件中便可

参考

下载node_exporter安装包

你可能感兴趣的:(prometheus监控节点node_exporter rpm包制作)