Linux学习笔记 - 軟體安裝: RPM, SRPM

来源:互联网 发布:淘宝网店怎么找货源 编辑:程序博客网 时间:2024/06/05 17:56

学习资料来自鸟哥的Linux私房菜 http://linux.vbird.org/linux_basic/0520rpm_and_srpm.php


目前在 Linux 界軟體安裝方式最常見的有兩種,分別是:
dpkg:這個機制最早是由 Debian Linux 社群所開發出來的,只要是衍生於 Debian 的其他 Linux distributions 大多使用 dpkg 這個機制來管理軟體的, 包括 B2D, Ubuntu 等等。
RPM:這個機制最早是由 Red Hat 這家公司開發出來的,後來包括 Fedora, CentOS, SuSE 等等知名的開發商都是用這咚咚。

RPM 全名是『 RedHat Package Manager 』。
RPM 是以一種資料庫記錄的方式來將你所需要的軟體安裝到你的 Linux 系統的一套管理機制。
SRPM 顧名思義,他是 Source RPM 的意思,也就是這個 RPM 檔案裡面含有原始碼。特別注意的是,這個 SRPM 所提供的軟體內容『並沒有經過編譯』, 他提供的是原始碼喔!
通常 SRPM 的副檔名是以 ***.src.rpm 這種格式來命名的。

SRPM 雖然內容是原始碼, 但是他仍然含有該軟體所需要的相依性軟體說明、以及所有 RPM 檔案所提供的資料。同時,他與 RPM 不同的是,他也提供了參數設定檔 (就是 configure 與 makefile)。所以,如果我們下載的是 SRPM ,那麼要安裝該軟體時,你就必須要:

如何安装SRPM软体:
先將該軟體以 RPM 管理的方式編譯,此時 SRPM 會被編譯成為 RPM 檔案;
然後將編譯完成的 RPM 檔案安裝到 Linux 系統當中

rp-pppoe-3.1-5.i386.rpm 這的檔案的意義為:
rp-pppoe -        3.1    -       5      .i386         .rpm
軟體名稱            軟體的版本資訊   釋出的次數   適合的硬體平台  副檔名

版本资讯和释出次数的区别(注:这是我自己的理解,不是鸟哥文章中的意思,如何理解有误,请指正~):
    高的版本比低的版本有功能上的增加
    在没有功能增加的情况下,版本资讯不变,但是修改一些bug或安全上的顾虑后重新编译后释出就会增加释出的次数。

当“适合的硬体平台”字段值为“noarch”时,代表沒有任何硬體等級上的限制。一般來說,這種類型的 RPM 檔案,裡面應該沒有 binary program 存在, 較常出現的就是屬於 shell script 方面的軟體。

RPM安裝
RPM安裝完畢後,該軟體相關的資訊就會被寫入 /var/lib/rpm/ 目錄下的資料庫檔案中。
得要是 root 的身份才能夠操作 rpm 這指令的。
通常我們會這樣下達安裝指令:[root@www ~]# rpm -ivh package_name1 package_name2  package_name3

RPM 的升級
RPM 的升級,就以 -Uvh 或 -Fvh 來升級即可。
 -U 與 -F基本的差別是這樣的:
-Uvh:後面接的軟體即使沒有安裝過,則系統將予以直接安裝; 若後面接的軟體有安裝過舊版,則系統自動更新至新版;
-Fvh:如果後面接的軟體並未安裝到你的 Linux 系統上,則該軟體不會被安裝;亦即只有已安裝至你 Linux 系統內的軟體會被『升級』!

RPM查询
RPM 在查詢的時候,其實查詢的地方是在 /var/lib/rpm/ 這個目錄下的資料庫檔案啦!
在查詢的部分,所有的參數之前都需要加上 -q 才是所謂的查詢!查詢主要分為兩部分, 一個是查已安裝到系統上面的的軟體資訊,這部份的資訊都是由 /var/lib/rpm/ 所提供。另一個則是查某個 rpm 檔案內容, 等於是由 RPM 檔案內找出一些要寫入資料庫內的資訊就是了,這部份就得要使用 -qp (p 是 package 的意思)。
查询常用的命令选项:
rpm -qa    查询系统上面安装的所有RPM软体
rpm -q software_name    查询该软件是否已安装
rpm -ql software_name    查询该软件相关的所有目录与档案
rpm -qi software_name    查询该软件的信息(information)
rpm -qc  software_name    查询该软体的设定档(configration)
rpm -qd  software_name 查询该软体的说明档(description)
rpm -qR software_name    若要成功安裝 该软体,還需要什麼檔案的幫忙
 rpm -qf file    找出file这个档案是有哪个软体提供的
关于查询要特別說明的是,在查詢本機上面的 RPM 軟體相關資訊時, 不需要加上版本的名稱,只要加上軟體名稱即可!因為他會由 /var/lib/rpm 這個資料庫裡面去查詢, 所以我們可以不需要加上版本名稱。但是查詢某個 RPM 檔案就不同了,我們必須要列出整個檔案的完整檔名才行~ 

RPM 驗證
驗證 (Verify) 的功能主要在於提供系統管理員一個有用的管理機制!作用的方式是『使用 /var/lib/rpm 底下的資料庫內容來比對目前 Linux 系統的環境下的所有軟體檔案 』
验证常用的命令选项:
rpm -Va    列出目前系統上面所有可能被更動過的檔案
rpm -V 軟體名稱        验证系统上面某软体,若該軟體所含的檔案被更動過,才會列出來
rpm -Vf 档案名称    列出在系统上面的某個檔案是否被更動過(f代表file),例 rpm -Vf /etc/crontab


数字digital signature
廠商產生一個專屬於該軟體的簽章,並將該簽章的公鑰 (public key) 釋出。 當你要安裝一個 RPM 檔案時:
    首先你必須要先安裝原廠釋出的公鑰檔案;
    實際安裝原廠的 RPM 軟體時, rpm 指令會去讀取 RPM 檔案的簽章資訊,與本機系統內的簽章資訊比對,
    若簽章相同則予以安裝,若找不到相關的簽章資訊時,則給予警告並且停止安裝喔。
CentOS 的數位簽章位於:/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
安装数位签章档案: rpm --import  /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

RPM 反安裝(移除)
命令:  rpm -e 软体名称

重建RPM资料库
命令:  rpm --rebuilddb

SRPM 的使用

SRPM 檔案安装(使用预设参数)
利用 rpmbuild 配合選項即可。選項主要有底下兩個:
--rebuild:進行『編譯』與『打包』,但是不安装
--recompile:『編譯』『打包』並且『安裝』

SRPM档案安装(使用自定参数)

首先必須要將 SRPM 內的檔案安置到 /usr/src/redhat/ 內的相關目錄,然後再去修改設定檔。

命令: rpm -i SRPM档案名称

SRPM设定档(*.spec 檔案)

SRPM 的編譯

rpmbuild 指令结合相关选项

rpmbuild -ba xxx.spec 編譯並同時產生 RPM 與 SRPM 檔案

rpmbuild -bb xxx.spec 僅編譯成 RPM 檔案


0 0
原创粉丝点击