147
呼,,,考完了,,被當了幾科,, 自己不太清楚~~ 反正心情是有點給他,,,,,,@!#!#$%
寫完這篇就要開始我美好的價期了,,^^ 高興滴說 ^^"
來講一下rpm 的封裝,, 不過要講這個之前必須要對兩件事情有相當的了解
1是rpm本身的體制 他的架構等等等等
2就是在作業系統裡頭的相依性 windows其實也有這樣的問題 只是因為m$把這個部份寫的比較死,, ^^"
(要有做tarball 的能力看下面這篇可能才看的懂)
=1=
rpm 全名Redhat Package Management so 換言之
他就是一個紅帽所開發出來管理程式的套件 而每一個rpm 都必須在當出rpm -build 的作業係統慎至在同一個板本之下才能做正常的運作 (慎至安裝) )
基本上,rpm是一個資料庫 , 他的內容就建構了其中每一個軟體之間的相依性還有每一個軟體所須要的lib( 函式庫 ) 這樣一個構想 為我們帶來了安全的安裝 卻也為我們帶來了小小的麻煩 不過說實在的 以一個真正完全完整安裝到作業係統的軟體來說 這個表面上看起來"麻煩"機制是很方便的 因為他在你最初執行rpm -i xxxx.rpm的時候就會自動去檢查rpm資料庫的相依性 為了讓使用者方便起見,,
見義個位大大在rpm-build的時後就把這個軟件所須要的東西全部包進去, 才免得到時候使用者因為相依性的問題又搞的一個頭兩個大, 再補充一點,, 因為tarball時裝入的東西並不會寫入rpm的資料庫 so ,, install的時候這點事實上還是有點麻煩的(總是沒辦法完美的咩^^")
=2=
其實這個問題以經在[1]介紹的差不多了 , 說穿了他只是一個概念
簡單來說 您在執行這個程式每個所須要的物件 是否存在就是相依性
若存在 就是相依 若不存在則否,,,
講完這兩點以後,,我們可以開始作重頭戲 "rpm - build"了 老話一句,,還是感謝netman大哥所提供的文件還有在 rpm這個部份小弟令外參考了鳥哥這篇http://linux.vbird.org/linux_basic/0520rpmtarball.php 其實説穿了 小弟只是把這兩篇文章加在一起然後做了點文字上的修改簡化罷了,,還請各位大大不要見笑 ^^ 首先我們來看一下rpm -build這套軟件是否存在
$ which rpm-build
如果有才能進行下去唷^^"
檢查好了嗎!? 好了就可以在往下看哩^^
rpm-build:
/usr/src/redhat/
SOURCES (tarball) tarball (也就是我說為啥要先看tarball滴原因ㄌ)
SPECS (xxxx.spec) spec
RPMS (i386/xxxx.xxxx.i386.rpm) 這個大家因該都了
SRPMS (xxxx.xxxx.src.rpm ) 這個是有包含原始碼的rpm
tarball的部份前面以經說過了 所以我們從srecs開始說吧^^"
vi hw.spec
Summary: Hello World demo
Name: hw
Version: 1.0
Release: 2
Copyright: GPL
Group: Demo
Source: http://www.study-area.org/linux/src/hw-1.0-2.tgz
Url: http://www.study-area.org
Packager: Netman <netman@study-area.org>
Vendor: study-area
///以上是一些宣告 ,,^^ 我全部原封不動滴保持他本來的完整性嚕^^
%description
hw is a 'hello world' demon program.
have fun!
%changelog
* Wed May 08 2003 netman<netman@study-area.org>
- first build
%prep / 這個部份 install 會自動作 所以不寫
%setup
./configure / 嗯 ...有看過tarball 的就了
%build
make
%install
make install
%clean
%files
%doc README
/usr/local/bin/hw
這樣子我們hw.spec的部份就搞定了...
還剩幾個部奏就大工告成嚕唷^^ haha
build rpm:
$ su -
# cp hw-1.0-2.tgz /usr/src/redhat/SOURCES
# cp hw.spec /usr/src/redhat/SPECS
# rpmbuild -ba /usr/src/redhat/SPECS/hw.spec
^^ b = build a = all 就是作出biagry and source 的rpm
完成了,,^^
以下是一些rpm的指令
mode / option
install (-i)
-v, -h, --test, --nodeps, --force
upgrade (-U)
-v, -h, --test, --nodeps, --force
uninstall (-e)
--test, --nodeps
query (-q)
-i, -l, -d, -c, -R, -a
-p xxxx.xxxx.i386.rpm
-f /path/to/file
verify (-V)
這裡不再多補充我想各位因該都知道怎麼去用嚕^^
唯一要說的是 --nodeps 他是把相依性的問題略過,,建意個位大大不要用
除非以下兩個情況
1. 你百分之兩千確定那一個缺少的東西是你不須要的
2.在tarball裡就安裝過這個套件