分类: LINUX
2009-08-04 16:47:54
xxxxxxxxx.rpm <==RPM 的格式,已經經過編譯且包裝完成的 rpm 檔案; xxxxx.src.rpm <==SRPM的格式,包含未編譯的原始碼資訊。 |
那麼我們怎麼知道這個軟體的版本、適用的平台、編譯釋出的次數呢?只要透過檔名就可以知道了!例如 rp-pppoe-3.1-5.i386.rpm 這的檔案的意義為:
rp-pppoe - 3.1 - 5 .i386 .rpm
軟體名稱 軟體的版本資訊 釋出的次數 適合的硬體平台 副檔名 |
--test | 使用時機: 想要測試一下該軟體是否可以被安裝到使用者的 Linux 環境當中,可找出是否有屬性相依的問題。範例為: rpm -ivh pkgname.i386.rpm --test |
-Uvh | 後面接的軟體即使沒有安裝過,則系統將予以直接安裝; 若後面接的軟體有安裝過舊版,則系統自動更新至新版; |
-Fvh | 如果後面接的軟體並未安裝到你的 Linux 系統上,則該軟體不會被安裝;亦即只有已安裝至你 Linux 系統內的軟體會被『升級』! |
由於 RPM 檔案常常會安裝/移除/升級等,某些動作或許可能會導致 RPM 資料庫 /var/lib/rpm/ 內的檔案破損。果真如此的話,那你該如何是好?別擔心,我們可以使用 --rebuilddb 這個選項來重建一下資料庫喔! 作法如下:
[root@www ~]# rpm --rebuilddb <==重建資料庫
|
假設我下載了一個 SRPM 的檔案,又不想要修訂這個檔案內的原始碼與相關的設定值, 那麼我可以直接編譯並安裝嗎?當然可以!利用 rpmbuild 配合選項即可。選項主要有底下兩個:
rebuild | 這個選項會將後面的 SRPM 進行『編譯』與『打包』的動作,最後會產生 RPM 的檔案,但是產生的 RPM 檔案並沒有安裝到系統上。當你使用 --rebuild 的時候,最後通常會發現一行字體: Wrote: /usr/src/redhat/RPMS/i386/pkgname.i386.rpm 這個就是編譯完成的 RPM 檔案囉!這個檔案就可以用來安裝啦!安裝的時候請加絕對路徑來安裝即可! |
--recompile | 這個動作會直接的『編譯』『打包』並且『安裝』囉!請注意, rebuild 僅『編譯並打包』而已,而 recompile 不但進行編譯跟打包,還同時進行『安裝』了! |
/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 檔案就會放置在這個目錄中了。 |
要將在 /usr/src/redhat 底下的資料編譯或者是單純的打包成為 RPM 或 SRPM 時,就需要 rpmbuile 指令與相關選項的幫忙了!我們只介紹兩個常用的選項給您瞭解一下:
[root@www ~]# rpmbuild -ba rp-pppoe.spec <==編譯並同時產生 RPM 與 SRPM 檔案 [root@www ~]# rpmbuild -bb rp-pppoe.spec <==僅編譯成 RPM 檔案 全系統自動升級
root@www ~]# vim /etc/crontab
|