預設的工作區為/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可以根據我們的需要,幫我們自動構建專案,比如建立資料夾,移動檔案,執行指定的程式等...