rpm包製作的乙個例子

2021-06-18 16:15:43 字數 3557 閱讀 9107

菜菜最近做了乙個hello,world的rpm包,由於什麼都不懂,所以做了一整天,有點感想,在這裡把我的製作方案和經驗和大家分享一下。

rpm是redhat package manage的縮寫,將source code簡單地包裝成檔案,在最終生成的rpm包中有兩個檔案檔案,乙個是ix86.rpm,另外乙個是src.rpm,ix86檔案包含軟體發布者選擇發布的應用必須的檔案,而src檔案則包含source code,spec檔案等和軟體開發有關的單元,軟體開發者可以通過選擇發布ix86.rpm或src.rpm來達到普通軟體共享或是開放交流的目的。

我的rpm包是用來學習交流的,目的在於rpm的製作,所以本身原始碼就只有hello,world。不過基本rpm包的結構都已具備,完成補丁和動態庫的支援,有乙個patch,乙個lib庫檔案供測試之用。

接下來聊一下我的rpm包的誕生。首先我草了一段hellow.c

#include

int main()

然後寫了個configure將以下內容》makefile:

all: hellow

hellow.o: hellow.c

gcc –c hellow.c

hellow:hellow.o

gcc –o hellow.o

fresh:

rm –f makefile

clean:

rm –f hellow hellow.o

install:

cp hellow /usr/bin

uninstall:

rm –f /usr/bin/hellow

然後vi 了乙個readme,填了一些無聊的東西,

在/usr/src/redhat/sources下新建乙個hellow目錄,mv以上三個檔案到裡面

然後tar –czvf 

hellow-0.1-1.tar.gz  hellow

搞定後就可以進入rpm包製作的關鍵步驟了――寫乙個spec,如果你對spec沒有任何了解也不要緊,簡單來說,它就是乙個rpm包的資訊列表和生成指南。

在/usr/src/redhat/specs下vi 乙個hellow-0.1-1.spec,以下是我的spec的內容:

summary: the first rpm of howard
name: hellow
version: 0.1
release: 1
vendor:ace soft (

[email protected]

)

license: share
source0:hellow-0.1-1.tar.gz
#patch0:hellow-0.1-1.patch
%description
my test hellow
%prep
tar –xzvf $rpm_sources_dir/hellow-0.1-1.tar.gz
#%patch –p0
%build
cd $rpm_build_dir/hellow
./configure
make
%install
cd $rpm_build_dir/hellow
make install
%clean
rm –fr $rpm_build_dir/hellow
%files
%defattr(-,root,root)
/usr/bin/hellow
%doc $rpm_build_dir/hellow/readme
%changelog
*wed may 4 2005 howard 

[email protected]

完成spec檔案後如果不出意外,就可以生成rpm包了,在specs目錄下
rpmbuild –ba hellow-0.1-1.spec
順利的話可以分別在rpms和srpms目錄下找到ix86.rpm和src.rpm

接下來談談patch的問題,在軟體發布時,可能存在這樣或那樣的問題,如在上述hellow-0.1-1.rpm中,程式執行時竟然輸出hellow(有這個詞嗎!!),筆者開始竟然沒有發現,敲了10幾次都沒反應。所以就有做了乙個patch來糾正這個錯誤,在sources目錄下新建乙個hellow1目錄,執行以下操作:
cd hellow/
cp configure hellow.c readme ../hellow1
然後修改hellow.c的printf語句:printf(「hello,world\n」)
如果無聊的話,可以順便改一下readme,

cd ..
diff –unr hellow hellow1 > hellow-0.1-1.patch
ok,搞定!現在大家回頭去看看我的spec檔案把patch0和%patch前面的注釋去掉吧
然後再次用rpmbuild生成rpm包
分別用rpm -qpi 和rpm -qpl 看一下吧
現在再install一下 看看輸出是不是變成hello,world啦!!
如果大家需要的話可以在我的blog資料夾裡面或者去programsalon上down我的src.rpm
url是
2005-5-8
加了乙個測試用的hellowlib.so,乙個庫查詢檔案libtest,完成了動態庫的擴充套件功能
同樣發了乙個src.rpm

LineDDA的乙個例子

unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,extctrls,stdctrls,buttons type tfmmain class tform ...

SQL GROUP CONCAT的乙個例子

我有乙個這樣的資料庫 user info 現在有乙個需求是把這樣 9 條記錄按照 username 來 group 成3條記錄 目標 shu female 201 lee male 202 yuki female 181 如果用select from user info group by usern...

explode的乙個例子

select level as level,explode split 1,2,3 as value 可以生成結果 level value level 1 level 2 level 3 lateral view 1.lateral view 用於和udtf函式 explode,split 結合來使...