程序包管理:
包管理器:作用是打包以及包管理(安裝、升級、卸載、查詢及校驗)
對於不同linux發行版本有不同的包管理器,主要有
deb:debian
rpm:redhat package Manager,rpm成爲事實上包管理器的標準
程序包的組成部分:
二進制程序:通常存放在以下文件,/bin, /sbin,/ /usr/bin, /usr/sbin,
庫文件:通常存放在以下文件,/lib64, /usr/lib64(64位系統)
配置文件:/etc
幫助文件:manual, info,
包管理器:提供在操作系統中安裝,升級,卸載需要的軟件的方法,並提供對系統中所有
軟件狀態信息的查詢
rpm包:
打包工具:rpmbuild:specs文件
分包機制:根據功能分包:
如:test-Version.tar.gz
核心包:test-Version
支包:testapp-devel-Version
Version:主版本號.此版本號.發行號
rpm包的命名機制:
name-VERSION-RELEASE.ARCH.rpm
RELEASE.ARCH: rpm release和適用的平臺和架構,如
bash-4.2.4-1.el7.x86_64.rpm表示適用於redhat enterprise linux 7 64位系統
rpm數據庫:對於redhat和CentOS一般在:/var/lib/rpm,如圖(CentOS 64bit):
獲取rpm包的途徑:1、發行版提供的程序包(光盤)
掛載光盤文件,包文件在Packages下面
2、Fedora-EPEL
3、項目的官方站點
4、搜索引擎
http://rpmfind.net
http://rpm.pbone.net
http://pkgs.org
rpm命令實現程序包管理:
安裝:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
-i: -v:顯示詳細過程, -h:”#“號顯示安裝進度
-q 查看某程序包是否安裝
每個rpm包都提供一個或多個capabilities
--nodeps:忽略依賴關係安裝
--replacepkgs:重裝程序包
升級:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-Uvh: 如果有舊版程序包,則升級之;如果沒有,則安裝之;
-Fvh: 如果有舊版程序包,則升級之;如果沒有,則不安裝;
--nodeps
--oldpackage:降級;
--force:強制升級,不管依賴於老程序包的程序
卸載:
rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
如果有程序依賴於被卸載程序,則卸載會有警告,--nodeps也可忽略依賴
查詢:
rpm {-q|--query} [select-options] [query-options]
查詢選項:
-qa: 查詢本機已經安裝的所有程序包;
-qf: /PATH/TO/SOMEFILE: 查詢此處的文件由哪個程序包安裝生成;
-qc: 查詢指定程序包安裝生成的配置文件
-qd: 查詢指定的程序包安裝生成的文檔
-qi: 查詢指定的程序包的相關信息;
-ql: 查詢程序包安裝生成的所有文件的列表;
-q:--scripts:查詢程序包相關的腳本:
preinstall: 安裝前腳本
postinstall:安裝後腳本
preuninstall: 卸載前腳本
postuninstall: 卸載後腳本
-p: 查詢針對是未安裝的程序包文件;查詢本地存在而沒有安
裝的rpm包信息
校驗:
rpm {-V|--verify} [select-options] [verify-options]
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P caPabilities differ
包校驗:
來源合法性驗正:非對稱加密
完整性驗正:單向加密
導入密鑰:rpm --import /PATH/TO/KEY_FILE
校驗:rpm -K /PATH/TO/RPM_FILE,文件校驗後就不會存在來源警告信息
YUM:Yellowdog Updater Modified(RPM包的前端管理工具)
yum外在倉庫的元數據(包括倉庫程序包的數量、程序包名以及依賴關係等)下載到本地緩存
然後,在安裝某個程序包是,在本地緩存即可查詢包所在的位置和依賴關係,下載最新版本和依
賴包到本地緩存進行安裝。本地會定期將本地緩存的倉庫元數據與外在倉庫的元數據進行校驗碼
比對,如果發現外在倉庫校驗碼更新,則更新本地倉庫元數據
yum repositories:
文件服務器(常見用法):
ftp://hostname/PATH/TO/REPO
http://hostname/PATH/TO/REPO
file:///PATH/TO/REPO
yum程序的配置文件:
/etc/yum.conf: 定義全局配置:對所有倉庫都適用的配置
/etc/yum.repos.d/*.repo:通常用於一個或一組功能相近或相關的倉庫,如base倉庫
定義一個倉庫指向:
[REPO_ID]
name=
baseurl= //如有多個URL則隨機選擇一個,但是必須保證每個倉庫的元數據一致,建議只用一個URL
# mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE
enabled={1|0} //1表示啓用
gpgcheck={1|0} //1表示需要進行gpgcheck
gpgkey=
cost= //當有多個倉庫時需要選擇最優的倉庫,倉庫的開銷,數值越低優先級越高
定義倉庫指向可用變量:
$releasever: 引用當前系統的主版本號;
$basearch: 當前系統的基本架構;
i386, i486, i586, i686: i386
yum命令:
yum [options] [command] [package ...]
安裝:install
本地安裝:localinstall,也可自動解決依賴問題
卸載:remove
升級:update
查詢: info
search KEYWORD
list all|installed|availiable,列出所有的|已經安裝的|可以獲得的包,支持通配符
provides /PATH/TO/SOMEFILE: 查詢指定文件由哪個包安裝生成
重新安裝:reinstall
降級:downgrade
清理緩存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
如倉庫元數據,rpm
生動生成緩存:makecache
包組:
grouplist
groupinfo "GRP_NAME"
groupinstall "GRP_NAME"
groupremove "GRP_NAME"
倉庫:
repolist [all|enabled|disabled]
repoinfo [all|enabled|disabled]
如何使用光盤當做本地倉庫:
掛載光盤至某目錄
定義倉庫,使用file:///指明其訪問路徑;
如:將本地光盤當做默認yum源,更改cost值爲100,base-repo cost 默認爲1000
創建本地倉庫:自己根據需求創建倉庫,但是需要自己解決依賴關係
yum install createrepo
createrepo /PATH/TO/RPMFILES/