天天看點

将 shell 腳本打包到 rpm 包中

下以操作最好在虛拟機上操作:如 Docker 最友善了

1. 安裝 rpmbuild

yum -y install rpmbuild  rpmdevtools -y

2. 生成打包路徑

使用 rpmdev-setuptree ,會自動在使用者家目錄生成一個 rpmbuild 的檔案夾,作為工作路徑

cd rpmbuild/SPECS 路徑,建立 filename.spec 檔案(打包 shell 腳本示例),詳細含義查閱相關文檔 

Name: name
Version: 0.1.0
Release: 1%{?dist}
Summary: 描述
License: 軟體版權許可證
Group: Enterprise/xxx 

Vendor:XXXX
Requires: 依賴的軟體包

%description
描述

%install
mkdir -p \
  %{buildroot}%{_sysconfdir}

%prep

%files # 想打包的檔案,也是你安裝時要安裝的目錄
%defattr(-,root,root,-) # 預設權限
/etc/abc.sh               # 想打包的檔案

%doc

%pre

%post

%preun   # 程式解除安裝時執行的操作,上面想打包的檔案不用寫,解除安裝時會删除.可以在此處删除一些其它檔案或其它操作
rm -rf /etc/a.conf
rm -rf /etc/b.conf

%changelog      

%files 下也可以打包目錄

3. 執行打包指令 rpmbuild -bb filename.spec 

這類報錯: error: File not found: /root/rpmbuild/BUILDROOT/name-0.1.0-1.el6.x86_64/etc/abc.sh

在上面 %install 中可能是你的目錄沒有建立,具體變量對應的目錄檢視下面 官方文檔 連結都能找到

rpm包會放在 rpmbuild/RPMS/x86_64 這個路徑下.完成

也可以使用 rpmbuild --buildroot=/dir -bb filename.spec 指令,其中 dir 目錄最好為空,在其下建立 filename.spec 中想打包的目錄,并将檔案移動過去.

僅供參考

詳細文檔:

https://fedoraproject.org/wiki/How_to_create_an_RPM_package/zh-cn#.E5.85.B3.E4.BA.8E.E6.9C.AC.E6.8C.87.E5.8D.97

需要編譯的源碼包打包:

http://jaminzhang.github.io/linux/use-rpmbuild-to-build-custom-RPM-package  (文中參考連結值得一看)

http://4270819.blog.51cto.com/4260819/862880

http://murongqingqqq.blog.51cto.com/2902694/1396751

繼續閱讀