源代碼 --> 目標二進制格式(二進制程序、庫文件、配置文件、幫助文件) --> 組織成爲一個或有限幾個「包」文件;php
目前各主流發行版的軟件包格式以及包管理器node
debian:dpt, dpkg, ".deb"mysql
redhat: rpm, ".rpm"sql
S.u.S.E:rpm, ".rpm",數據庫
軟件包命名格式介紹:centos
rpm包的安裝緩存
安裝:rpm {-i|--install} [install-options] PACKAGE_FILE ...bash
[install-options]:
服務器
-v:verbose,詳細信息ide
-vv:更詳細的輸出
-h:hash marks輸出進度條;每一個#表示2%的進度;
--test:測試安裝,檢查並報告依賴關係及衝突消息等;
--nodeps:忽略依賴關係;不建議;
--replacepkgs:從新安裝
經常使用法:rpm -ivh PACKAGE_FILE ...
rpm包的升級:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... 升級或安裝
rpm {-F|--freshen} [install-options] PACKAGE_FILE ... 升級
舉例:rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
rpm包的降級:
--oldpackage:降級;
--force:強制升級;
rpm包的卸載:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...
--allmatches:卸載全部匹配指定名稱的程序包的各版本;
--nodeps:忽略依賴關係
--test:測試卸載,dry run模式
rpm包的查詢:
rpm {-q|--query} [select-options] [query-options]
[select-options]
PACKAGE_NAME:查詢指定的程序包是否已經安裝,及其版本;
-a, --all:查詢全部已經安裝過的包;
--whatprovides CAPABILITY:查詢指定的CAPABILITY由哪一個程序包提供;
--whatrequires CAPABILITY:查詢指定的CAPABILITY被哪一個包所依賴;
[query-options]
--changelog:查詢rpm包的changlog;
--provides:列出指定的程序包提供的全部的CAPABILITY;
-R, --requires:查詢指定的程序包的依賴關係;
--scripts:查看程序包自帶的腳本片段;
經常使用組合用法: -qi PACKAGE, -i, --info:程序包相關的信息,版本號、大小、所屬的包組,等; -qf FILE, -f FILE:查詢指定的文件由哪一個程序包安裝生成; -qc PACKAGE, -c, --configfiles:查詢指定的程序包提供的配置文件; -ql PACKAGE, -l, --list:程序安裝生成的全部文件列表; -qd PACKAGE -d, --docfiles:查詢指定的程序包提供的文檔; -qpi PACKAGE_FILE, -p, --package PACKAGE_FILE:用於實現對未安裝的程序包執行查詢操做; -qpl PACKAGE_FILE, 查看未安裝的包可能安裝後的所生成的文件列表 -qpc PACKAGE_FILE, ...
rpm包的校驗
rpm {-V|--verify} [select-options] [verify-options]
包來源合法性驗正和完整性驗正:
來源合法性驗正:
完整性驗正:
獲取並導入信任的包製做者的密鑰:
對於CentOS發行版來講:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
驗正:(1) 安裝此組織簽名的程序時,會自動執行驗正;(2) 手動驗正:rpm -K PACKAGE_FILE
rpm包的數據庫重建:
rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]
--initdb:初始化數據庫,當前無任何數據庫可實始化建立一個新的;當前有時不執行任何操做;
--rebuilddb:從新構建,經過讀取當前系統上全部已經安裝過的程序包進行從新建立;
yum詳解
爲何會出現yum?
rpm軟件管理對解決軟件依賴關係有缺陷,yum能夠解決軟件依賴關係。
什麼是yum倉庫?
yum repository: yum repo
存儲了衆多rpm包,以及包的相關的元數據文件(放置於特定目錄下:repodata);所在目錄就是yum倉庫的位置
yum倉庫.repo中可指向文件服務器:
ftp://
http://
nfs://
file:///
yum客戶端:
配置文件:
/etc/yum.conf:爲全部倉庫提供公共配置
/etc/yum.repos.d/*.repo:爲倉庫的指向提供配置
yum倉庫指向的定義:
[repositoryID] 注:倉庫id,不能夠重名
name=Some name for this repository 注:描述倉庫的字符
baseurl=url://path/to/repository/ 注:指向倉庫的位置
enabled={1|0} 注:1表示啓用倉庫
gpgcheck={1|0} 注:1爲啓用包來源合法和完整性檢查
gpgkey=URL 注:密鑰文件訪問路徑
enablegroups={1|0} 注:支持組管理
failovermethod={roundrobin|priority} 注:故障轉移,roundrobin爲隨機輪詢 priority爲優先級
默認爲:roundrobin,意爲隨機挑選;
cost=默認爲1000
yum命令的用法:
格式:yum [options] [command] [package ...]
顯示倉庫列表:
repolist [all|enabled|disabled]
顯示程序包:
list
# yum list [all | glob_exp1] [glob_exp2] [...] 支持通配glob
例如: yum list all zsh*
# yum list {available|installed|updates} [glob_exp1] [...]
註釋: available:倉庫中有但還沒有安裝
installed:已經安裝
updates:能夠用的升級
安裝程序包:
install package1 [package2] [...]
update:升級
update_to:升級爲指定版本
remove|erase:卸載 例如:yum remove php53-pdo 注:卸載會把依賴的軟件包也一併卸載了
info至關於rpm -qi 查看軟件信息的。
provides |whatprovides:查看指定的文件或特性是由哪一個包安裝生成的
reinstall package1 [package2] [...] (從新安裝)
downgrade package1 [package2] [...] (降級)
檢查可用升級:
check-update
卸載程序包:
remove | erase package1 [package2] [...]
查看程序包information:
info [...]
查看指定的特性(能夠是某文件)是由哪一個程序包所提供:
provides | whatprovides feature1 [feature2] [...]
清理本地緩存:
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
構建緩存:
makecache
搜索:
search string1 [string2] [...]
以指定的關鍵字搜索程序包名及summary信息;
查看指定包所依賴的capabilities:
deplist package1 [package2] [...]
查看yum事務歷史:
history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
包組管理的相關命令:
* groupinstall group1 [group2] [...]
* groupupdate group1 [group2] [...]
* grouplist [hidden] [groupwildcard] [...]
* groupremove group1 [group2] [...]
* groupinfo group1 [...]
如何使用光盤看成本地yum倉庫:
(1) 掛載光盤至某目錄,例如/media/cdrom
# mount -r -t iso9660 /dev/cdrom /media/cdrom
(2) 建立配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=
yum的命令行選項:
--nogpgcheck:禁止進行gpg check;
-y: 自動回答爲「yes」;
-q:靜默模式;
--disablerepo=repoidglob:臨時禁用此處指定的repo;
--enablerepo=repoidglob:臨時啓用此處指定的repo;
--noplugins:禁用全部插件;
yum的repo配置文件中可用的變量:
$releasever: 當前OS的發行版的主版本號;
$arch: 平臺;
$basearch:基礎平臺;
$YUM0-$YUM9
舉例: http://mirrors.magedu.com/centos/$releasever/$basearch/os
建立yum倉庫的數據庫文件:
命令使用格式: createrepo [options] <directory>
詳解:
首先要安裝createrepo這個軟件,而後在rpm軟件包所在的目錄執行yum createrepo 就會建立出一個.repodata 的文件
而後在/etc/yum.ropos.d/ 下面建立一個.repo結尾的文件,baseurl指向.repodata所在的目錄就能夠了。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
知識擴展
yum localinstall php53-mysql-5.3.3-5.e15.i386.rpm 注:localinstall 後面須要指向文件,同時也解決了依賴關係
若是從互聯網上下載的rpm包,此時會進行來源和完整性檢查。會報錯的
yum --nogpgcheck install 文件 注:忽略檢查
建立倉庫的完整過程
1.yum install createrepo
2.mkdir -pv /yum/VT 建立一個目錄來存放軟件,而後往裏名弄點軟件 cp /media/cdrom/VT/*.rpm /yum/VT/
3.cd /etc/yum.repos.d建立一個.repo的文件,並編輯。
[VT]
name=VT
baseurl=file:///yum/VT
enable=1
gpgcheck=0
四、createrepo /yum/VT/ 建立 repomd.xml文件
五、yum clean all 清理緩存
六、yum repolist 檢查一下庫列表
七、cp /comps-rhel5-vt.xml /root
八、createrepo -g /root/comps-rhel5-vt.xml /yum/VT/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo