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.創(chuàng)建工作目錄
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 打包腳本蕴忆,其實(shí)也就是把我門的源碼編譯打包成rpm 的一個(gè)過程
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) #這個(gè)是軟件make install 的測試安裝目錄.
BuildRequires: daemonize #制作過程中用到的軟件包
Requires: daemonize #軟件運(yùn)行依賴的軟件包,也可以指定最低版本如 bash >= 1.1.1
%description #描述纪岁,隨便寫
prometheus agent package
%prep #打包開始
%setup -q #這個(gè)作用靜默模式解壓并cd
%build #編譯制作階段,主要目的就是編譯则果,如果不用編譯就為空
%install #安裝階段
rm -rf %{buildroot} #先刪除原來的安裝的幔翰,如果你不是第一次安裝的話
install -d %{buildroot}/usr/local/%{name} #創(chuàng)建目錄
install -p -D %{_builddir}/%{name}-%{version}/node_exporter #拷貝文件 %{buildroot}/usr/local/%{name}/node_exporter
#下面的幾步pre、post西壮、preun遗增、postun 沒必要可以不寫
%pre #rpm安裝前制行的腳本
%post #安裝后執(zhí)行的腳本
%preun #卸載前執(zhí)行的腳本
%postun #卸載后執(zhí)行的腳本
%clean #清理段,刪除buildroot
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
/usr/local/%{name}
%changelog
語法
如果目標(biāo)文件存在:
install : install會先刪除原先的文件然后寫入新文件;
cp: cp會清空文件后往里面寫入新文件款青;
@install -d /usr/bin
@install -p -D -m 0755 targets /usr/bin
相當(dāng)于
@mkdir -p /usr/bin
@cp targets /usr/bin
@chmod 755 /usr/bin/targets
@touch /usr/bin/tagets <---- 更新文件時(shí)間戳
打包
spec 文件編寫好以后就可以進(jìn)行打包了做修,在SPECS文件夾下執(zhí)行命令:
rpmbuild -bb node_exporter.spec
## 查看rpmbuild生成rpm詳細(xì)信息
rpm -qpi RPMS/x86_64/node_exporter-0.17.0-1.el6.x86_64.rpm
注意
在生成rpm包同時(shí),還會生成debuginfo包,如果要避免生成debuginfo包:這個(gè)是默認(rèn)會生成的rpm包饰及。則可以使用下面的命令:
echo '%debug_package %{nil}' >> ~/.rpmmacros
把%debug_package %{nil} 追加到 ~/.rpmmacros 文件中便可