軟體包管理器
軟體包管理器其本身也是一個軟體,其核心功能是:制作、安裝、解除安裝、更新、查詢、校驗軟體包等;
在紅帽中使用RMP軟體包管理器,以及更加高端的YUM軟體包管理器,本文就詳細介紹一下這兩個軟體包管理器的用法。
一、RPM (PRM is Package Manager)
1、rpm指令的使用:
Rpm本身也是一個軟體包,其背後有一個龐大的資料庫:/var/lib/rpm
Rpm的主要功能有安裝、查詢、解除安裝、更新、校驗、資料庫的重建、驗證資料包等;
安裝軟體包的原則:
1)、軟體包本身是合法的;
2)、軟體包是完整的
2、rpm命名
1)、包的組成成分:
主包:
bind-9.7.1-1.e15.i586.epm
子包:
bind-libs-9.7.1-1.e15.i586.epm
其中bind-libs叫做包名
2)、包名格式:
name-version- release.arch.rpm
bind-major.minor.release-release.arch.rpm
包名 主版本号 次版本号 發行号
主版本号:重大改變
次版本号:某個子功能發生重大變化
發行号:修正了部分bug,調整了一點功能
bind-9.7.1.tar.gz 原版本号
3、rpm的安裝
rpm -i /PATH/TO/PACKAGE_FILE
-h:以#顯示進度,每個#表示2%;
-v:顯示詳細過程
-vv:顯示更詳細過程
rpm -ivh /PATH/TO/PACKAGE_FILE
--nodeps:忽略依賴關系
--replacepkgs:重新安裝,替換原有安裝:
--replacefiles:替換檔案
--force:強行安裝,可以實作重裝或降級;
4、rpm的查詢
rpm -q PACKAGE_NAME :查詢指定的包是否已經安裝
rpm -qa :查詢已經安裝的所有包
rpm -qi PACKAGE_NAME: 查詢指定包的說明資訊
rpm -ql PACKAGE_NAME: 查詢指定包安裝後生成的檔案清單
rpm -qc PACKAGE_NAME: 查詢指定包安裝的配置檔案;
rpm -qd PACKAGE_NAME: 查詢指定包安裝的幫助檔案;
rpm -q --scripts PACKAGE _NAME: 查詢指定包中包含的腳本
rpm -qf /path/to/somefile :查詢指定的檔案是由哪個rpm包安裝生成的;
如果某rpm包尚未安裝,我們需要查詢其說明資訊、安裝以後會生成的檔案
rpm -qpi /PATH/TO/PACKAGE_FILE
rpm -qpl 查詢包安裝後生成檔案清單
5、rpm更新
rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE:
如果裝有老版本的,則更新,否則,就安裝
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:
如果裝有老版本的,則更新,否則,退出
--oldpackage:降級
6、rpm解除安裝
rpm -e PACKAGE_NAME
如果某軟體包被其他包所依賴是不允許解除安裝的。
-nodeps 解除安裝後沒有資訊
7、rpm校驗
rpm -V PACKAGE_NAME
8、重建資料庫
rpm
--rebuilddb:重建資料庫,一定會重建立立;
--initdb:初始化資料庫,沒有才建立,有就不用建立
9、檢驗來源合法性,及軟體包完整性;
加密類型:
對稱:加密解密使用同一個密鑰
公鑰:一堆密鑰,公鑰,私鑰;公鑰隐含于私鑰中,可以提取出來,并公開出去
單向:
#ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-redhat-release
rpm -K /PAPT/TO/PACKAGE_FILE
dsa,gpg:驗證來源合法性,也即驗證簽名;可以使用--nosignature,略過此項
shal,md5: 驗證軟體包完整性;可以使用--nodigest,略過此項
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release:導入密鑰檔案
**********補充
RPM安裝:
二進制格式:
源程式-->編譯-->二進制格式
有些特性是編譯標明的,如果編譯未標明此特性,将無法使用;
rpm包的版本會落後于源碼包,甚至落後很多;
二、YUM (Yellowdog Update Modifier )
1、依賴關系:
C/S: Client,Server
yum整個工作是依賴yum倉庫的。叫做-----yum repository
檔案服務:FTP /Web /FILE
2、Client
1)、 配置檔案
核心是yum倉庫
中繼資料檔案:建立指令是 createrepo
* yum所依賴的不是一個特定的包,而是一種能力;
2)、 yum倉庫中的中繼資料檔案:
primary.xml.gz
目前倉庫所有RPM包的清單
flielists.xml.gz
目前倉庫中所有RPM包的所有檔案清單;
other.xml.gz
額外資訊,rpm 包的修改日志;
ropomd.xml
記錄的是上面三個檔案的時間戳和校驗和;
3、如何為yum定義repo檔案
[Repo_ID]
name-description
baseurl=
ftp://
http://
file:/// 注意:三個斜杠不是文法錯誤,而是在本地路徑下的根
enabled={1|0}
gpgcheck={1|0} 這兩個都預設是1
gpgkey=
yum [options] [command] [package...]
-y :自動回答為yes
--nogpgcheck: 不做gpg檢查
4、list: 清單
支援glob
all: 所有的
available:所有可用的,倉庫中有,但還沒安裝的
nstalled:已經安裝的
updates:可用的更新
yum clean : 清理緩存
[ packages | headers metadata | dbcache | all ]
5、repolist:顯示repo清單及其簡要資訊
all
enanled 預設
disabled
1)、 install: 安裝
yum install package_name
2)、 update:更新
update_to:更新指定版本
3)、 remove | erase :解除安裝
6、如何建立yum倉庫:
yum install createrepo:先安裝yum指令
mkdir -pv /yum/VT
cp /media/cdrom/VT/*rph /yum/VT
createrepo /yum/VT:建立yum源
再在/etc/yum.repos.d 建立yum配置檔案組