以GNU的hello為例演示製作rpm包的方法

2021-06-07 19:55:00 字數 2139 閱讀 8006

本文的演示示例中用到的系統平台是rhel5.4。

製作rpm包需要用到開發發工具,這裡可以通過基於yum安裝"development tools"和"development libraries"兩個開發組來進行安裝。同時,本文只是乙個製作示例,以gnu的hello來演示製作過程。

1、製作rpm包要以普通使用者的身份進行,因此,這裡先新乙個使用者marion,以之作為製作rpm包的使用者。

# useradd marion

# passwd marion

2、以marion使用者的身份登入系統

首先建立檔案.rpmmacros,定義製作rpm包時的工作目錄等需要的巨集,內容如下:

%packager       marion

%_topdir        /home/marion/rpmworkshop

%_tmppath       /var/tmp

%_rpmtopdir     %

%_builddir      %/build

%_rpmdir        %/rpms

%_sourcedir     %/sources

%_specdir       %/specs

%_srcrpmdir     %/srpms

接著建立/home/marion/rpmworkshop目錄,這是製作rpm包的工作目錄,裡面包含rpms,specs,build,sources和srpms幾個子目錄:

# mkdir -pv ~/rpmworkshop/

3、開始製作rpm包

而後,於specs目錄中建立hello.spec檔案,內容如下:

name:           hello

version:        2.7 

release:        1%

summary:        the gnu hello distribution. 

license:        gplv3+

url:            

# source0:        /%-%.tar.gz

buildrequires: gettext

# requires:       

requires(post): info

requires(preun): info

group: system environment/libraries

buildroot: /tmp/hellorpm

%description 

this is the gnu hello distribution.hello prints a friendly greeting.

it also serves as a sample gnu package, showing practices that may 

be useful for gnu projects.

%prep

%setup -q

%build

%configure

make %

%install

make install-strip destdir=%

%find_lang %

rm -f %/%/dir

%post

/sbin/install-info %/%.info %/dir || :

%preun

if [ $1 = 0 ] ; then

/sbin/install-info --delete %/%.info %/dir || :

fi%files -f %.lang

%/hello

%doc %/man1/hello.1.gz

%doc %/%.info.gz

%changelog

* fri feb 10 2012 marion 2.7-1

- initial version of the package

4、上述工作完成後,準備工作已經就緒,接下來就可以使用如下命令製作二進位制的rpm包和src格式的rpm包了:

# rpmbuild -ba hello.spec

製作完成的二進位制格式的rpm包位於rpms目錄中,src格式的rpm包位於srpms目錄中。

5、接下來可以以root使用者嘗試安裝剛剛製作成功的rpm包了。

以hello 為例,製作 a so 庫檔案

先編寫hello程式 建立工作目錄,mkdir hello test 新建 hello.c 檔案 touch hello.c 可以用 gedit hello.c 也可以用vi hello.c 開啟檔案後,輸入如下 int main int argc,char ar 在一些編譯器中,這行 自動生成 e...

以咖啡店為例演示Web應用程式擴充套件

通過負載均衡器進行橫向擴充套件 如果使用更小點可以安置3個咖啡機的櫃檯,同時我只做增加或減少櫃檯數量操作,那麼房東肯定不會太在意。那麼,只要預先通知,他就可以減少或者增加乙個設施。但是,如果同乙個時間,我只能照顧乙個櫃檯上的生意,那該怎麼弄?幸運的是,這裡有一種特殊的櫃檯恰恰就是這麼設定的,這個櫃檯...

迴圈的巢狀,以for迴圈為例

include int main putchar 10 內迴圈執行一次後換行 return0 列印結果 注 1 一重迴圈解決線性問題 二重迴圈解決平面問題 三重迴圈解決立體問題。2 建議for語句的迴圈控制變數的取值採用 左閉右開 的寫法,因為這樣的做法跟後面的陣列下標,是完全吻合的。3 多重迴圈中...