歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> rpm與yum的綜合性介紹與示例演示

rpm與yum的綜合性介紹與示例演示

日期:2017/3/3 16:35:56   编辑:關於Linux

1 軟件包管理器

1.1主要功能把一個軟件的二進制程序,庫文件,配置文件,幫助文件打包成一個文件還可以把打包好的這個文件,按照我們指定的位置將二進制程序展開到相關的路徑上來

1.2 生成數據庫,追蹤記錄所安裝的每一個文件並且對實現軟件包的安裝,卸載,升級,查詢,校驗

2 rpm

2.1 rpm基本結構

rpm命令本身是個軟件包,這個軟件包提供了一些命令,然後rpm命令是來管理軟件包的

2.2 rpm本身在管理的時候還需要提供追蹤安裝文件的功能,以便在以後實行卸載更重要的是還要提供查詢的功能,查詢包括根據軟件包所安裝的文件,或者是根據某個文件來查找這個文件是由哪個軟件包安裝所生成的,所以rpm本身有一個龐大的數據庫/var/lib/rpm

2.3軟件包的介紹

一個rpm包為了避免一個主包過大,一般都會做成一個或多個子包

主包(例如是:bind-9.7.1-1.i586.rpm)

子包:在主包下又加了一個子名字,版本號一樣(例如:bind-libs-9.7.1-1.e15.i586.rpm、

bind-utiles-9.7.1-1.e15.i586.rpm)

2.3.1 rpm包名格式:

Name(名稱)-version(版本號)-release(發行號).arch(平台架構)

bind-major(主版本號).minor(次版本號).release(修正號,-release.arch.rpm

主版本號:rpm包的功能有重大改進;次版本號:某個子功能發生重大變化;release發行號;修正了部分bug,調整了一點功能

2.4 rpm命令

2.4.1安裝

rpm -h:以#顯示安裝進度,每個#表示2%

rpm -v:顯示詳細信息

rpm -vv:顯示安裝更詳細的過程

通常是使用命令:rpm –ivh 命令來安裝軟件包

--nodeps:忽略依賴關系; 會導致軟件安裝好後無法運行

--replacepkgs;重新安裝,替換原有安裝;

--replacefiles替換文件

--oldpackage降級

--force:強行安裝,可以實現重裝或降級;

--test:測試軟件包是否可以安裝

2.4.2 查詢

rpm -q 軟件包命令(不是跟路徑):只查詢指定的包(不帶後面的版本信息)

例如:一個軟件包是:zsh-4.2.6-6.el5.i386.rpm

rpm –q zsh

rpm -qa 查詢已安裝的所有包

rpm -qa | gerp "^z" 查詢z開頭的軟件包

rpm -qi 軟件包名:查詢指定軟件包的說明信息

例如:rpm –q zsh

rpm -ql 軟件包名:查詢指定包安裝後生成的文件列表

例如:rpm –ql zsh

rpm -qf /path/to/somefile:查詢指定的文件是由哪個rpm包安裝生成的

例如:rpm -qf /etc/passwd

rpm -qc 軟件包名:查詢指定包安裝的配置文件

例如:rpm -qc zsh

rpm -qd 軟件包名;查詢指定包的幫助文件

例如:rpm -qd zsh

rpm -q --scripts 軟件包名:查詢指定包中包含的腳本

例如:rpm -q --scripts zsh

(1)如果某rpm 包尚未安裝,我們需查詢其說明信息,安裝以後會生成的文件

rpm -qpi 尚未安裝的軟件包路徑

rpm –qpl 顯示安裝後會生成哪些文件

2.4.3升級rpm -Uvh /Path/to/new_package_file 如果裝有老版本的,則升級,否則,則安裝

rpm -Fvh /Path/to/new_package_file 如果裝有老版本就升級,否則,退出

降級:--oldpackage

rpm -ivh --oldpackage

rpm -Uvh --oldpackage 降級

2.4.4 卸載

rpm -e PACKAGE_NAME:卸載不允許其他包依賴

--nodeps 強制卸載

2.4.5校驗

rpm -V PACKAGE_NAME: 校驗軟件包是否被非法改變過

2.5 檢驗來源合法性,及軟件完整性

2.5.1密鑰文件

紅帽安裝好的linux系統中存放著一個文件,也就是紅帽系列rpm包的密鑰文件,這個文件是:/et/pki/rpm-gpg/RPM-GPG-KEY-redhat-release:(只能驗證紅帽系列的軟件)

使用時需要把這個文件導入到rpm包中去,rpm命令中去

驗證的命令

rpm –K --nosignature(不驗證簽名) /PATH/TO/PACKAGE_FILE

rpm –K –nodigest(只驗證簽名,不驗證完整性)/APTH/TO/PACKAGE_FILE

把密鑰文件導入到rpm包的命令是:

rpm –import /et/pki/rpm-gpg/RPM-GPG-KEY-redhat-release:導入密鑰文件

dsa,gpg:驗證來源合法性,也即驗證簽名,可以使用--nosignature.略過此項

sha1,md5:驗證軟件包完整性;可以使用--nodigest,略過此項

使用過程

(1)查看系統中密鑰存放的文件地址 如圖1所示

圖1 查看密鑰文件

(2)測試當沒有導入時,驗證效果 如圖2所示

圖2 驗證失敗(必須在驗證前導入密鑰文件)

(3)導入密鑰文件如圖3所示

圖3 導入密鑰文件命令

(4)再次檢驗rpm包如圖 4所示

圖4 校驗成功

2.6 重建數據庫

rpm --rebuildb:重建數據庫(無論有沒有一定會重新建立)

rpm --initdb:初始化數據庫(沒有才建立,有就不用建立))

3 yum介紹

3.1 yum(Yellowdog Update Modifier)是是由紅帽軟件包的前端工具;手動管理rpm之間的依賴關系,它不是脫離rpm,而是在rpm上提供了一個更高的工具

3.2 yum工作分析

yum整個工作過程依賴於yum倉庫;yum倉庫就是我們期望用到的所有rpm包的一個場所;yum有自己的客戶端,這個客戶端工作時依賴於配置文件,這個文件可以是ftp,web

或者是一個指定的文件路徑,也就是yum倉庫的位置(rpm包的存放位置,以及元數據文件);安裝一個包時yum會根據這個包的自身屬性,和我們系統上已經安裝的所有rpm包來分析,分析這個包是否具有依賴關系,或者是所依賴的包有多少是已經安裝過的以及還有多少尚未安裝,yum會自己到yum倉庫去找未安裝過的包,來進行同時安裝。yum會自行分析所依賴關系

3.3 yum元數據文件

(1)yum倉庫中的元數據文件:

primar.xml.gz:

1 所有RPM包的列表(當前yum倉庫)

2 包含了依賴關系

3 每一個rpm包安裝生成的文件列表

filelists.xml.gz:當前倉庫中所有RPM包的所有文件列表

other.xml.gz額外信息,RPM包的修改日志

repomd.xml包含了primar.xml.gz、filelists.xml.gz、filelists.xml.gz大小時間戳和校驗和(元數據)

comps-rhel5-server-core.xml:將當前這個yum倉庫中的各軟件包的分組關系定義在這個文件中

(2)/etc/yum.conf文件是yum 的配置文件其配置內容介紹如下

cachedir=/var/cache/yum緩存路徑

keepcache=0是否保存緩存中的文件

debuglevel=2 yum安裝時輸出信息的級別

logfile=yum安裝軟件包過程即日志存放路徑

distroverkg:發行版版本號的名稱

tolernat=1 容錯

exactarch=1 安裝rpm包時從yum倉庫中獲得的版本和我們當前使用的必須要嚴格匹配

obsoletes=1 是否對過期的文件進行廢棄

gpgcheck=1是否檢查文件來源的完整性,和來源合法性

plugins=1 yum插件使用

(3)為yum定義repo文件

[Repo_id]repo 的標示名稱

name=描述信息

baseurl=(倉庫所在的具體的所在位置,有三種格式)

ftp:// http:// file:///

enabled=(1|0)當前這個倉庫是否允許使用“1”表示使用“0”表示禁用

gpgcheck={1|0}是否使用gpg這個機制來驗證軟件包的合法性與完整性默認是1

gpgkey=指定gpg文件的具體路徑

第一步:在/etc/yum.repos.d的目錄下創建一個以.repo文件結尾的文件如圖5所示

圖5 創建yum倉庫

第二步:編輯內容 如圖6所示

圖6 指定倉庫所在的位置

3.4 yum命令使用格式

(1)list:列表列出當前yum倉庫當中的rpm包

列表顯示的信息的介紹如圖7所示

第一個是軟件包的名稱 名稱後面是軟件運行平台 然後是版本號加release號 最後顯示的rpm包在哪個倉庫當中,如果安裝了顯示install

圖7 yum列表顯示的相關內容信息

repolist all | enabled | disabled

all:顯示所有的倉庫信息(可用與禁用信息也顯示出來) enabled顯示可用的 disabled顯示禁用的 repolist 默認是功能是enabled選項

list命令支持globbing(同配符)

例如:yum list all zsh* (顯示所有是zsh開頭的包)

available:可用的(倉庫中有但尚未安裝的)

installed:已經安裝的

updates:可用的升級

clean:清理緩存[ packages | headers | metadata | dbcache | all ]

clean packages :只清理rpm包

clean headers :頭部信息

clean metadata:只清理元數據文件

clean dbcache :庫緩存

clean all :清理以上所有

(2)install:安裝

yum install PACKAGE_NAME –y

-y:自動回答為yes即自動選擇安裝具有依賴關系的rpm包 如圖8、圖9所示

圖8安裝php53-mysql

圖9 yum會自動分析所依賴的庫然後從指定的倉庫中下載至本地進行安裝

(3)update:升級

update -to:升級為指定的版本

(4)卸載:remove|erase:

卸載時這個包時依賴這個包的包也會被卸載

(5)查看信息

rpm -qi(info)zsh 查看信息

info查看的信息比-qi簡要

provides|whatprovides:查看指定文件或特性是由哪個包安裝生成的

例如:yum provides /etc/inittab(查看/etc/inittab文件是由哪個安裝包安裝的)

4 如何創建yum倉庫分

(1)命令是:ceraterepo (提供createrepo命令的rpm包的名字也是createrepo,要使用ceraterpo命令就必須先安裝這個包)如圖10所示

圖10 手動安裝createrepo包

(2)在/etc/yum.repos.d目錄下在創建一個以.repo結尾的文件如圖11所示

如圖11 創建cd.repo文件

(3)編輯cd.repo文件如圖12所示

圖12 編輯cd.repo文件指定倉庫名與源位置

(3)這裡先直接查看一下是否有VT 如圖13所示

圖13 VT雖存在但是有缺失文件需要手動安裝一下

(4)創建yum源,缺失的文件會自動安裝如圖14所示

圖14 手動創建yum源

(5)查看/yum/VT源的內容如圖15所示

圖15 查看/yum/VT內容

(6)再次查看repo列表 如圖16所示

圖16 VT生成成功

(7)給VT 創建組的定義 如圖17所示

圖17 為VT添加組的定義

到這裡手動創建yum庫就完成了

本文出自 “Fly*On*Sky” 博客,請務必保留此出處http://djy0000.blog.51cto.com/5816828/1156368

Copyright © Linux教程網 All Rights Reserved