linux-rpm 打包之helloworld
阿新 • • 發佈:2019-01-31
關於linux下rpm打包的一個小例子,稱為helloworld吧。
另外,本文會不斷修改。
一、rpm打包準備工作
- rpm打包需要一個獨立的打包目錄
目錄結構:
BUILD, BUILDROOT, RPMS, SOURCES, SPECS, SRPMS
建立該目錄命令: mkdir -pv ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS},其中,這些目錄放在rpmbuild目錄下。
- 接下來需要對rpm進行配置
echo ~/rpmbuild > ~/.rpmmacros,該命令將"~/rpmbuild"作為rpm打包目錄
二、打包過程
打包helloworld需要程式sources檔案,spec檔案
- 編寫helloworld原始檔(hello.c)
#include <stdio.h>
int main()
{
printf("Hello, World!\n");
return 0;
}
- 編寫helloworld的spec檔案(hello.spec)
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root # 不明白這樣定義啥意思 Summary: hello world rpm package Name: hello Version: 0.1 Release: 1 Source: hello-0.1.tar.gz License: GPL Packager: wangdonglei Group: Application %description This is a simple example for rpm package! %prep %setup -q %build gcc -o hello hello.c %install mkdir -p %{buildroot}/usr/local/bin install -m 755 hello %{buildroot}/usr/local/bin/hello %files # 這裡的路徑是在buildroot虛擬根基礎上的,即%{buildroot}/%{name}-%{version}-%{release}-root/usr/local/bin/hello /usr/local/bin/hello
- 將檔案放入相應位置並執行打包命令
# 將hello.c放入目錄hello-0.1並打包該目錄
tar zcvf hello-0.1.tar.gz hello-0.1
# 將hello-0.1.tar.gz 放入SOURCES下
mv hello-0.1.tar.gz /root/rpmbuild/SOURCES
打包
rpm -ba rpmbuild/SPECS/hello.spec
- 打包後文件
執行打包命令後,這時會逐個執行hello.spec檔案的內容,最終生成兩個檔案,一個包含原始碼的rpm包和一個二進位制rpm包。
rpmbuild/SRPMS/hello-0.1-1.src.rpm
rpmbuild/RPMS/i386/hello-0.1-1.i386.rpm