RPM包建立入門

2021-06-28 17:46:49 字數 2897 閱讀 9559

預設的工作區為/usr/src/redhat;通過配置檔案rpmmacros指定:

cat>>~/.rpmmacros<> %_topdir   /root/helloworld

> end

這個配置也可以用命令列來指定:

rpmbuild --define "_topdir /root/helloworld"
mkdir -p /root/helloworld/

工作目錄解釋:

helloworld/build: 命令rpmbuild將在這個目錄下解壓原始檔,並在這個目錄下編譯程式

helloworld/specs: 存放spec檔案spec files

helloworld/sources: 存放原始碼包source files

helloworld/srpms: 存放包含原始碼的rpm檔案

helloworld/rpms: 存放包含二進位制的rpm包檔案

helloworld/specs/hello.spec:

summary: hello world rpm package

name: hello

version: 0.1

release: 1

source: %-%.tar.gz

license: gpl

packager: amoblin

buildroot: %/root/

%description

this is a software for ****** your life more beautiful!

%prep

rm -rf $rpm_build_dir/%-%

zcat $rpm_source_dir/%-%.tar.gz | tar -xv

%build

cd %-%

gcc -o hello hello.c

%install

rm -rf %

mkdir -p %/usr/local/bin/

cd %-%

cp hello %/usr/local/bin/hello

%files

/usr/local/bin/hello

hello.c:

#include 

int main()

把原始檔打包放到sources目錄下

mkdir -p hello-0.1

mv hello.c hello-0.1

tar czvf hello-0.1

.tar

.gz hello-0.1

mv hello-0.1

.tar

.gz /root/helloworld/sources/

#編譯rpm

rpmbuild -vv -ba helloworld/specs/hello.spec

#或者通過命令列指定topdir編譯

rpmbuild --define "_topdir /root/helloworld" -vv -ba helloworld/specs/hello.spec

#驗證spec

rpmbuild --define "_topdir /root/helloworld" -vv -bl helloworld/specs/hello.spec

[root@localhost ~]# rpm -qpil  helloworld/rpms/i386/hello-0.1-1.i386.rpm
[root@localhost ~]# rpm -iv  helloworld/rpms/i386/hello-0.1-1.i386.rpm

preparing packages for installation...

hello-0.1-1

[root@localhost ~]# hello

hello, world!

[root@localhost ~]# rpm -ev hello-0.1-1

[root@localhost ~]# rpm -ql hello

/usr/local/bin/hello

group: 需要需先定義[less /usr/share/doc/rpm-*/groups]

buildroot: 安裝階段install的根目錄(在%build階段之後). 預設的根目錄是%/buildroot/%prep:prepare準備階段呼叫的shell指令碼

%build:build編譯階段呼叫的shell指令碼

%install:install安裝階段候呼叫的shell指令碼

注意: 執行%prep, %build, %install 的shell指令碼的pwd目錄為/root/helloworld/build

%files: 指定生成的二進位制rpm包中包含哪些檔案,這些檔案必須在buildroot目錄下存在

how to create an rpm package

how to create a gnu hello rpm package

rpm打包 step by step

maximum rpm

Lucene之索引建立入門級例項

是否對域的內容進行分詞處理,前提是我們要對域的內容進行查詢 將field分析後的詞或整個field值進行索引,只有索引方可搜尋到 比如 商品名稱 商品簡介分析後進行索引,訂單號 身份證號不用分析但也要索引,這些將來都要作為查詢條件。將field值儲存在文件中,儲存在文件中的field才可以從docu...

Linux下建立rpm包介紹

本文只是簡單的介紹乙個linux下為乙個新的專案,建立自己的rpm 安裝包,裡面包含rpm 一些基本術語和基本概念的介紹.作為入門級的參考使用 rpmbuild的預設建立目錄為 home rpmbuild 目錄,可以通過如下命令建立 rpmdev setuptree這個預設工作路徑通常在 usr l...

使用NAnt構建入門

前言 nant是一項開源的專案,利用nant,你可以方便快捷地對自己.net專案或解決方案進行自動構建。與vs中視覺化化極強的專案和解決方案管理相比,nant只能命令列的方式操作,但是這並不影響nant的流行。nant可以根據我們的需要,幫我們自動構建專案,比如建立資料夾,移動檔案,執行指定的程式等...