這個東西涉及的內容較多,根據下面這些文章慢慢學習
一個簡單的例子
http://blog.csdn.net/king_on/article/details/7169384
按照文章中的步驟來,打包之后,使用rpm進行安裝,在終端輸入hello,終端會輸出一些信息
此處先摘抄上述作者的文章,后期會結合使用過程進行修改,打包過程如下:
步驟一:准備工作
(1)rpm打包需要特定的目錄,創建該目錄的命令如下:
mkdir -pv ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
(2)接下來需要對rpm進行配置,命令如下:
echo ~/rpmbuild > ~/.rpmmacros
該命令將"~/rpmbuild"作為rpm打包目錄
步驟二:准備程序源代碼文件以及spec文件
(1)新建程序源代碼文件(文件名為:hello.c)
#include <stdio.h> int main() { printf("Hello, World!\n"); return 0; }
(2)新建.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
(3)通過下面的命令將程序源代碼文件以及.spec文件放入相應位置
# 將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
(4)打包
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
這個案例雖然是針對C/C++的,但是打包java程序的思路是一樣
【未完待續】
============此處貼一些當時看過的相關文章,后面有時間了我再整理當時自己的實現過程===========
一些命令
http://www.worldhello.net/2011/04/02/2405.html
上文提供了一些命令來查看系統默認的打包目錄,介紹了如何自定義打包目錄等 ,通過這篇文章,對rpm打包的理解會更深入一些
rpm簡單介紹
http://blog.chinaunix.net/uid-7530389-id-2050100.html
%install部分使用的是絕對路徑,而%file部分使用則是相對路徑,雖然其描述的是同一個地方
系統中的一些信息
/
usr
/
lib
/
rpm
/
marcros,通過cat命令查看
簡單介紹
http://blog.sina.com.cn/s/blog_5d867af101019b7i.html
明白可通過不同方式構建rpm包,目前只關注從spec文檔建包
rpmbuild命令的基本格式:rpmbuild [options] [spec文檔|tarball包|源碼包]
RPM的一些用法:
查詢功能:
1、對系統中已經安裝的軟件查詢:rpm -q softwarename
2、查詢系統中已安裝的包:rpm -qa [softwarename]
3、查詢已安裝軟件包都安裝到何處:rpm -ql softwarename
安裝,刪除 rpm -ivh softwarename.rpm rpm -e softwarename
其余更多的用法參照man rpm
更多rpm相關命令
http://blog.csdn.net/taiyang1987912/article/details/40145101