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