程序包組成部分:node
二進制程序:/bin,/sbin,/usr/bin,/usr/sbin數據庫
庫文件:/lib64,/usr/lib64小程序
配置文件:/etc/windows
幫助文檔:man,infocentos
一、經常使用的軟件安裝方式:緩存
dpkg:bash
這個機制最先是由 Debian Linux 社羣所開發出來的,透過 dpkg 的機制, Debian 提供的軟件就可以簡單的安裝起來,同時還能提供安裝後的軟件信息,實在很是不錯。 只要是衍生於 Debian 的其餘 Linux distributions 大多使用 dpkg 這個機制來管理軟件的, 包 B2D, Ubuntu 等等。服務器
rpm:ide
這個機制最先是由 Red Hat 這家公司開發出來的,所以不少 distributions 就使用這個機制來做爲軟件安裝的管理方式。包 Fedora, CentOS, SuSE 等。post
二、包管理器的基本功能
打包,安裝,查詢,升級,卸載,效驗
依賴關係:循環依賴,版本依賴
三、程序包分包機制:(哲學思想:每個包實現一種功能,組合小程序完成複雜任務)
核心包
支包
程序包命名機制:major.minor.release
rpm包命名:name-version-release.arch.rpm
release 是rpm的release,而不是源代碼的release
rpm公共數據庫/var/lib/rpm/
重建數據庫
rpm {--initdb|--rebuilddb}
初始化:--initdb
若是事先不存在數據,則會新之;不然,不執行任何操做
從新構建:--rebuilddb
不管當前是否已經存在數據庫,都會直接重建並覆蓋現有數據庫;
四、包命名格式:
源程序:
name-version.tar.gz
version:major.minor.release
rpm包:
name-version-release.ARCH.rpm
release:一般包含rpm的製做發行號,還包含使用的OS
例: bash-4.1.2-14.el6.x86_64.rpm
分包:把一個複製的程序打包製做成多個rpm格式
主包:bash-4.1.2-14.el6.x86_64.rpm
支包:bash-devel-4.1.2-14.el6.x86_64.rpm
五、如何獲取程序包:
一、發行商提供的程序包
二、Fedora-EPEL
三、項目的官方站點
四、搜索引擎
http://rpmfind.net
http://rpm.phome.net
http://pkgs.org
一、基於rpm命令實現程序包管理
安裝:
格式 # rpm {-i|--install} [install-options] PACKAGE_FILE ...
-i,--install:安裝
-v:顯示詳細信息,-vv
-h (或 --hash): 以#的個數顯示安裝進度
--test:僅測試,不真正安裝,能夠看到該包的依賴關係
--nodeps:忽略依賴關係
--replacepgs:重裝
--oldpackage:降級
重裝或升級時:原來的配置文件不會被覆蓋,新安裝的配置文件將會重命名爲以.rpmnew爲後綴的文件
升級:
格式 # rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
格式 # rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-Uvh:若是有舊版程序包,則升級,若是沒有,則安裝
-Fvh:若是有舊版程序包,則升級,若是沒有,則無操做
--force:強制升級
--nodeps: 忽略依賴關係
注意:不要對內核執行升級操做
多版本內核可並存,所以,建議執行安裝操做
卸載:
格式 # rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
若是卸載被其它程序所依賴的包:
一、把依賴者一同卸載
二、忽略依賴關係
三、再也不卸載
查詢:
格式 # rpm {-q|--query} [select-options] [query-options]
-qa: 查詢本機已經安裝的全部程序包;
-qf /PATH/TO/SOMEFILE: 查詢此處的文件由哪一個程序包安裝生成;
-qc: 查詢指定程序包安裝生成的配置文件
-qd: 查詢指定的程序包安裝生成的文檔
-qi: 查詢指定的程序包的相關信息;
-ql: 查詢程序包安裝生成的全部文件的列表;
-q --scripts 查詢rpm包相關的腳本
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)) 檔案的類型戒檔案的屬性 (rwx) 是否被改變
5 (digest (formerly MD5 sum) differs MD5) 這一種紋碼的內容已經不一樣
D (Device major/minor number mismatch)裝置的主/次代碼已經改變
L (readLink(2) path mismatch Link 路徑已被改變
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
1、yum配置
要使用yum管理應用程序,首先得配置其可用的yum倉庫,保存在配置文件中
yum的配置文件:
/etc/yum.conf :全局配置,通常默認便可不用更改
/etc/yum.repos.d/*.repo: 一個文件一般用於一個或一組功能相近或相關的倉庫
配置文件格式:由兩段組成,相似windows的ini配置文件
[main]:主配置段
[repo]:倉庫配置段
定義一個數據倉庫指向:
[repo_ID]
name=NAME
baseurl=倉庫的訪問路徑
enabled=[1|0] 1表示啓用,0表示不啓用,若是不存在該配置,則默認啓用
gpgcheck=[1|0] 是否檢查包來源合法性和完整性
gpgkey=公鑰文件 (能夠在本地,也能夠是服務器端路徑)
cost=定義此倉庫的開銷,默認爲1000 數值小的優先使用
定義倉庫指向可用變量:
有些內容是這樣的:
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
$releasever
當前 OS 發行版的主版本號,如對CentOS 6.6 系統,這個值爲 6
$arch
當前系統的平臺,如i386, x86_64 等
$basearch
基礎平臺,如 x86_64和 amd64 平臺的基礎平臺同爲 x86_64
2、yum的使用
yum repolist [all|enabled|disabled] 默認列出全部可用repo
yum clean [all|package|metadata|expire-cache|rpmdb|plugins] 清除全部緩存
yum 緩存路徑/var/cache/yum
yum makecache 生成緩存
yum list [all|installed|available] 列出目前 yum 所管理的全部的軟件名稱與版本
yum info (包名) 默認列出目前 yum 所管理的全部的軟件名稱與版本的詳細信息
yum grouplist 列出目前 yum 所管理的全部的包組
yum groupinfo 包組名稱 列出目前 yum 所管理的全部包組的詳細信息
安裝:yuminstall,yum groupinstal
重裝:yumreinstall
卸載:yum[remove|erase],yum greoupremove
檢查可升級的包:yumcheck-update
要升級到指定版本:yumupdate x-4.4.12-1el7.x86_64.rpm
升級:yumupdate
降級:yum downgrade 降級包的包名
如何使用光盤當作本地倉庫:
先將RHEL6的光盤掛載到某一目錄下,如掛載到/mnt
#mount /dev/cdrom /mnt
在/etc/yum.repos.d目錄下建立一個以.repo結尾的文件:
#vi /etc/yum.repos.d/server.repo
配置內容以下:
[Server] //倉庫名稱
name=Server //倉庫描述信息
baseurl=file:///mnt //URL訪問路徑
enabled=1 //啓用此軟件倉庫
gpgcheck=1 //驗證軟件包的簽名
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release //GPG公鑰文件的位置