標籤:style http color io os 使用 ar 檔案 sp
SRPM 的使用 : rpmbuild
包含Source code 的 SRPM
新版的 rpm 已經將 RPM 與 SRPM 的命令分開了,SRPM 使用的是 rpmbuild 這個命令,而不是 rpm !如果你是 Red Hat 7.3 以前的使用者,那麼請使用 rpm 來替代 rpmbuild !
利用預設值安裝 SRPM 檔案(--rebuid/--recompile)
--rebuild |
這個選項會將後面的 SRPM 進行『編譯』與『打包』的動作,最後會產生RPM 的檔案,但是產生的 RPM 檔案並沒有安裝到系統上。當你使用 --rebuild 的時候,最後通常會發現一行字型: Wrote: /usr/src/redhat/RPMS/i386/pkgname.i386.rpm 這個就是編譯完成的 RPM 檔案羅!這個檔案就可以用來安裝啦!安裝的時候請加絕對路徑來安裝即可! |
--recompile |
這個動作會直接的『編譯』『打包』並且『安裝』羅!請注意,rebuild 僅『編譯並打包』而已,而 recompile 不但進行編譯跟打包,還同時進行『安裝』了! |
不過,要注意的是,這兩個選項都沒有修改過 SRPM 內的配置值,僅是透過再次編譯來產生 RPM 可安裝軟體檔案而已。一般來說,如果編譯的動作順利的話,那麼編譯過程所產生的中間緩衝檔都會被自動刪除,如果發生任何錯誤,則該中間檔案會被保留在系統上,等待使用者的除錯動作!那麼,該如何除錯呢?如果想要自行除錯,或者是想要修改 SRPM 內的配置值時,就得要知道利用 SRPM 的時候,系統會動用到哪些重要的目錄了!底下我們就來談一談當處理 SRPM 時,系統會使用到的目錄。
SRPM 使用的路徑與需要的軟體
SRPM 既然含有 source code ,那麼其中必定有配置檔羅,所以首先我們必需要知道,這個SRPM 在進行編譯的時候會使用到哪些目錄呢?這樣一來才能夠來修改嘛!你可以到你的/usr/src 這個目錄裡面去查看一下,通常每個 distribution 提供的目錄都不太相同,以CentOS 5.x 為例,他是以 /usr/src/redhat/ 為工作目錄, Openlinux 則是以 /usr/src/openlinux 為工作目錄!無論如何,反正就是在 /usr/src 這個目錄下就對了!好了,既然我們是 CentOS ,請到 /usr/src/redhat 裡頭去看一看呦:
/usr/src/redhat/SPECS |
這個目錄當中放置的是該軟體的配置檔,例如這個軟體的資訊參數、設定項目等等都放置在這裡; |
/usr/src/redhat/SOURCES |
這個目錄當中放置的是該軟體的原始檔 (*.tar.gz 的檔案) 以及 config 這個配置檔; |
/usr/src/redhat/BUILD |
在編譯的過程中,有些緩衝的資料都會放置在這個目錄當中; |
/usr/src/redhat/RPMS |
經過編譯之後,並且順利的編譯成功之後,將打包完成的檔案放置在這個目錄當中。裡頭有包含了i386, i586, i686, noarch.... 等等的次目錄。 |
/usr/src/redhat/SRPMS |
與 RPMS 內相似的,這裡放置的就是 SRPM 封裝的檔案羅!有時候你想要將你的軟體用 SRPM 的方式釋出時,你的 SRPM 檔案就會放置在這個目錄中了。 |
此外,在編譯的過程當中,可能會發生不明的錯誤,或者是配置的錯誤,這個時候就會在/tmp 底下產生一個相對應的錯誤檔,你可以根據該錯誤檔進行除錯的工作呢!等到所有的問題都解決之後,也編譯成功了,那麼剛剛解壓縮之後的檔案,就是在/usr/src/redhat/SPECS, SOURCES, BUILD 等等的檔案都會被殺掉,而只剩下放置在/usr/src/redhat/RPMS 底下的檔案了!
由於 SRPM 需要重新編譯,而編譯的過程當中,我們至少需要有 make 與其相關的程式,及gcc, c, c++ 等其他的編譯用的程式語言來進行編譯,更多說明請參考第二十二章原始碼所需基礎軟體吧。所以,如果你在安裝的過程當中沒有選取軟體開發工具之類的軟體,呵呵!得重新拿出你的光碟片,然後再安裝喔!哈哈!只是得要克服一大堆的屬性相依的問題就是了~這問題待會兒可以使用 yum 來處理,你當然也可以先使用『 yum groupinstall "Development Tools" 』來安裝開發軟體。鳥哥這裡假設你已經安裝了該軟體群組羅。
例題:
嘗試使用 --rebuild 選項製作出一個 RPM 軟體檔案,可以到國家高速網路中心下載 rp-pppoe 這個 SRPM 軟體檔案,你可以到 http://ftp.twaren.net/Linux/CentOS/5/os/SRPMS/ 找到這個軟體來下載。鳥哥這裡使用 CentOS 5.3 的 rp-pppoe-3.5-32.1.src.rpm 為例喔。
答:假設你已經將 rp-pppoe 軟體下載到 /root 底下,那接下來可以簡單的使用底下的方式來重新編譯:
第二十三章、軟體安裝: RPM, SRPM 與 YUM 功能