2021-05-12 14:32:11
CentOS 7基礎教學之 RPM打包
2020-06-16 17:26:36
CentOS 7基礎教學之 RPM打包
一、RPM打包的目的
1、當目標機中不存在編譯環境時,可以先在本地環境中編譯打包,然後直接在目標機中用rpm -ivh *.rpm安裝即可。
2、當需要在目標機中安裝多個軟體或者增加多個檔案時,可以將整體打成RPM包,方便使用。
二、RPM打包命令
$cd ~ #進入home目錄
$ sudo yum -y install rpmdevtools #安裝rpm打包所需的工具
$rpmdev-setuptree #生成rpm打包目錄
$cd rpmbuild/SPECS #進入SPECS目錄
$rpmdev-newspec test.spec #生成spec檔案模板
$mv your_path/source.tar.gz ../SOURCES #將要打包的原始碼以tar.gz的格式移動到SOURCES目錄
此時會在home目錄下生成一個rpmbuild目錄,此目錄下有五個子目錄
BUILD 編譯時所用的暫存目錄
RPMS 放打包好的二進位制rpm包
SOURCES 放置原始碼和修補程式檔案
SPECS 放置spec檔案
SRPMS 放置RPM原始碼包
三、spec檔案簡要說明
RPM打包的關鍵之處就在於spec檔案的編寫
1、spec基本資訊
Name: 軟體名稱
Version: 軟體版本
Release: 發布次數 如: 1%{?dist}
Summary: 軟體說明
Group: 軟體分組
License: 授權模式,例如 GPL,即自由軟體
URL: 原始碼包的URL地址,可隨意填寫
Source0: 原始碼包,可指定多個,下面可用%{SOURCE0}變數參照
BuildRoot: 編譯過程中的中間存檔目錄,考慮到多使用者的環境,一般定義為:
%{_tmppath}/%{name}-%{version}-%{release}-root ,
後面可使用$RPM_BUILD_ROOT 方式參照
BuildArch: 平台 %{_arch}
BuildRequires: 編譯過程依賴的工具
Requires: 打包生成的rpm包安裝時所依賴的軟體包
%description 說明文件
%prep 準備部分,比如建立目錄,解壓原始碼包等,可使用%setup內部函數
%build 在BUILD目錄編譯,可使用%configure內部函數,或者其他編譯工具,如cmake, perl等
%install 安裝到BUILDROOT虛擬目錄
%clean 清理檔案
%files 將指定的檔案新增到rpm包中,文件型別可用%doc,組態檔可 用%config
%changelog 更新記錄.格式: 第一行 "* 日期 作者 " 第二行 "- 更新內容"
最終的生成的rpm名稱: {Name}-{Version}-{Relesae}-{BuildArch}.rpm
2、spec內部變數
在spec檔案執行時,定義的宏會主動讀取/usr/lib/rpm/macros中的變數
RPM_BUILD_DIR ~/rpmbuild/BUILD
RPM_BUILD_ROOT ~/rpmbuild/BUILDROOT
3、spec檔案範例(以git為例)
Name: git
Version: 2.10
Release: 1%{?dist}
Summary: this is the test code
License: GPL
URL: http://www.hao123.com
Source0: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-root
BuildRequires: automake
Requires: rpm
%description
%prep
%setup -q
%build
autoconf
./configure --prefix=/opt/git/
make %{?_smp_mflags}
%install
make DESTDIR=$RPM_BUILD_ROOT install
%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
make clean
%files
%defattr (-,root,root)
/opt/git/
%changelog
4、生成RPM包
$rpmbuild -ba test.spec #生成RPM包
生成的RPM包在rpmbuild/RPMS目錄下。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-12/138080.htm
相關文章