1. 程式人生 > 實用技巧 >rpm包例項講解

rpm包例項講解

RPM 是Red-Hat Package Manager(RPM軟體包管理器)的縮寫,這一檔案格式名稱雖然打上了RedHat的標誌,
但是其原始設計理念是開放式的,包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分發版本都有采用,可以算是公認的行業標準了。
yum是基於rpm的包管理工具,yum最終安裝的是rpm包,那rpm包是如何來的呢?

rpm包

1. 安裝RPM包

yum -y install rpm-build rpm-devel rpmdevtools

2. 例項講解

# 1. 生成開發目錄
rpmdev-setuptree 

# 2. 新建helloworld-1.0.0 專案檔案
mkdir helloworld-1.0.0

# 3. 新建原始碼檔案helloworld,輸入以下內容
#!/bin/sh
echo "Hello World!"

# 4. 打包專案helloworld-1.0.0.tar.gz,並拷貝到資源目錄SOURCES
tar -czvf helloworld-1.0.0.tar.gz helloworld-1.0.0
cp helloworld-1.0.0.tar.gz ~/rpmbuild/SOURCES/

# 5. 生成spec模板檔案
cd  ~/rpmbuild/SPECS
rpmdev-newspec helloworld.spec  # 生成spec模版檔案

# 6. 修改spec檔案如下
Name:           helloworld
Version:        1.0.0
Release:        1%{?dist}
Summary:        helloworld

Group:          Development/Tools
License:        GPL
#URL:            
Source0:        %{name}-%{version}.tar.gz

#BuildRequires:  
#Requires:       

%description

%prep
%setup -q

%build

%install
mkdir -p $RPM_BUILD_ROOT/usr/bin
cp $RPM_BUILD_DIR/%{name}-%{version}/helloworld $RPM_BUILD_ROOT/usr/bin/

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)
%doc
/usr/bin/helloworld

%changelog

# 7. 打包
rpmbuild -ba SPECS/helloworld.spec

注:當前目錄結構檔案簡介
> BUILD是編譯rpm包的臨時目錄
> BUILDROOT是最後生成rpm包的臨時安裝目錄
> RPMS存放最終生成的rpm二進位制包
> SOURCES是原始碼(.tar.gz)存放目錄
> SPECS用來存放spec檔案
> SRPMS存放最終生成的rpm原始碼包

rpmbuild/RPMS/x86_64/helloworld-1.0.0-1.el7.x86_64.rpm就是我們打出來的rpm包

# 8. 安裝
yum install ~/rpmbuild/RPMS/x86_64/helloworld-1.0.0-1.el7.x86_64.rpm 
或者
rpm -ivh helloworld-1.0.0-1.el7.x86_64.rpm 

# 9. 測試
$ /usr/bin/helloworld
Hello World!

參考:
製作rpm包: https://wangbin.io/blog/it/yum-rpm-make.html
linux rpm安裝mysql: https://www.jianshu.com/p/3e46b0c88200
rpm 和yum學習: https://www.cnblogs.com/gmlkl/p/9354254.html