1.程序包管理器
源代碼-->目標二進制格式-->組織稱為一個或有限幾個“包”文件; 安裝、升級、卸載、查詢、校驗
程序包管理器:
debian(Ubuntu):dpt,工具:dpkg,程序包以“.deb”結尾 redhat:redhat package manager ,rpm,".rpm";rpm is package manager; S.u.S.E:rpm ,'.rpm'Gentoo:portsArchLinux:
2.程序包的組成格式
源代碼:name-VERSION.tar.gz VERSION:major.minor.releaserpm包命名格式: name-VERSION-release.arch.rpm VERSION:major.minor.release release.arch:rpm包的發行號 release.os:2.el7.i386.rpm archetecture(架構):i386,x64(amd64),ppc,noarch(沒平臺要求,可以使用在任意平臺架構上)rpm拆包:主包和支包 主包:name-VERSION-release.arc.rpm 支包:name-function-VERSION-release.arc.rpm function:devel(開發包),utils(工具程序),libs(庫文件)依賴關系 X,Y,Z X-->Y,Z Y-->A,B,C C-->Y 前端工具:自動解決依賴關系; yum :rhel系列系統上rpm包管理器的前端工具; apt-get(apt-cache):deb包管理器的前端工具 zypper:suse的rpm管理器前端工具 dnf:Fedora 22+系統上rpm包管理器的前端工具
3.程序包管理器功能和組成部分
功能:將編譯好的應用程序的各組成文件打包成一個或幾個程序包文件,從而更方便地實現程序包的安裝、升級、卸載和查看 1.程序包的組成清單(每個程序包都單獨實現); 文件清單 安裝和卸載時運行的腳本 2.數據庫(公共) 程序包的名稱和版本 依賴關系 功能說明 安裝生成的各文件路徑及校驗碼信息; 等等等 CentOS上的程序包數據庫位置/var/lib/rpm/
4.獲取程序包的途徑
(1)系統發行版的光盤或官方的文件服務器(或鏡像站點); http://mirrors.aliyun.com http://mirrors.sohu.com, http://mirrors.163.com(2)項目的官方站點 (3)第三方組織制作的rpm包: (a)EPEL: (b)搜索引擎查找 http://pkgs.org http://rpm.pvone.net http://rpmfind.netstat 建議:檢查其合法性(完整性) 來源合法性: 程序包的完整性;
5.CentOS系統上rpm命令管理程序包
命令介紹
安裝、升級、卸載、查詢和校驗、數據庫維護rpm命令:rpm [OPTION] [PACKAGE_FILE] 安裝:-i,--install 升級:-U,--update,-F,-freshen 卸載:-e,--erase 查詢:-q,--query 校驗:-V ,--verify 數據庫維護:--builddb,--initdb
rpm包安裝
rpm {-i|--install} [install-options] PACKAGE_FILE ... rpm -ivh PACKAGE_FILE... GENERAL OPTIONS: -v:verbose,詳細信息 -vv:更詳細的輸出 [install-options] -h:hash marks輸出進度條;每個#表示2%的進度 --test:測試安裝,檢查并報告依賴關系及沖突消息等; --nodeps:忽略依賴關系,不建議使用,安裝后會不能使用; --replacepkgs:重新安裝:rpm -ivh --replacepkgs zsh-5.0.2-7.el7.x86_64.rpm --nodigest:不檢查包的完整性信息 --nosignature:不檢查包的來源信息及包的完整性注意:rpm可以自帶腳本; 四類: --noscripts preinstall:安裝過程開始之前運行的腳本,%pre: --nopre postinstall:安裝過程完成以后運行的腳本:%post --nopost preuninstall:卸載過程真正開始執行之前運行的腳本,%preun --nopreun postuninstall卸載過程完成以后運行的腳本,%postun --nopostun
rpm包升級
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... -U:升級或安裝 -F:升級,如果老版本不存在,則不進行安裝 rpm -Uvh PACKAGE_FILE ... rpm -Fvh PACKAGE_FILE ... --oldpackage:降級安裝; --force:強制升級; 注意:(1)不要對內核做升級操作。linux 支持多內核版本并存,因此,直接安裝新版本內核; (2)如果某源程序包的配置文件安裝后曾修改過,升級時。新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件。而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;
卸載:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ... --allmatches:卸載所有匹配指定名稱的程序包的各版本 --nodos:忽略依賴關系 --test:測試卸載, dry run 模式 rpm -e zsh
查詢
rpm {-q|--query} [select-options] [query-options] 1) [select-options] rpm -q PACKAGE_NAME:查詢指定的程序包是否已安裝,及其版本; -a,--all:查詢所有已經安裝過的包 -f FILE:查詢指定的文件由哪個程序安裝生成 -p,--package PACKAGE_FILE:用于實現對未安裝的程序包做查詢操作。 --whatprovides CAPABILITY:查詢指定的CAPABILITY(能力)由哪個程序包提供 bin]# rpm -q --whatprovides config\(bash\) bash-4.1.2-40.el6.x86_64 rpm -q --whatprovides zprof.so'()(64bit)' --whatrequires CAPABILITY:查詢指定的CAPABILITY(能力)被哪個包所依賴; 2)[query-options] --changlog:查詢 -l,--list :安裝生成的所有文件列表 -i,--info :查詢程序包相關的information,版本號,大小,所屬的組,等 -c,--configfiles:查詢指定的程序包的配置文件 -d,--docfiles:查詢指定的程序包提供的幫助文檔 --provides:列出指定的程序包的所有CAPABILITY(能力) bin]# rpm -q --provides bash config(bash) = 4.1.2-40.el6 bash = 4.1.2-40.el6 bash(x86-64) = 4.1.2-40.el6 -R,--requires:查詢指定的程序包的依賴關系; --scripts:查看程序包自帶的腳本片段;用法: -qi PACKAGE:信息, -qf FILE 文件由哪個包安裝來, -qc PACKAGE配置文件, -ql PACKAGE:安裝生成的文件列表, -qd,提供的幫助文檔qpi,qpl,qpc...查詢未安裝的程序包的信息。
校驗:
rpm -V zsh #校驗rpm安裝后有沒有被修改過 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 [root@CentOS6 bin]# rpm -V zsh S.5....T. c /etc/zshrc rpm {-V|--verify} [select-options] [verify-options]
包來源合法性驗證和完整性驗證:
來源合法性驗證: 數字簽名: 完整性驗證 rpm --import /media/cdrom/RPM-GPG-KEY-GentOS-7導入密鑰信息 rpm -K zsh-5.0.2-14.el7.x86_64.rpm 獲取并導入信任的包制作者的密鑰: 對于CentOS發行版本來說:rpm --import /etc/pki/rpm-gpg/RPM-KEY-CentOS-7驗證: (1)安裝此組織簽名的程序時,會自動執行驗證 (2)手動過驗證:rpm -K PACKAGE_NAME
數據庫重建:
rpm管理器數據庫路徑:/var/lib/rpm 查詢操作:通過此處的數據庫進行; 獲取幫助: CentOS6:man rpm CentOS 7:man rpmdb rpm {--initdb|--rebuilddb}[-v] [--dbpath DIRECTORY] [--root DIRECTORY] --initdb:初始化數據庫,當前無任何數據庫可初始化創建一個新的;當前有時不執行任何操作 --rebuilddb :重新構建,通過讀取當前系統上所有已安裝過的程序包進行重新創建;
6.yum概述
yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器。 基於RPM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。 yum提供了查找、安裝、刪除某一個、一組甚至全部軟件包的命令,而且命令簡潔而又好記。
7.yum客戶端的配置
1)yum respository(yum 倉庫): yum repo,存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄repodata下)2)yum中常用的文件服務器類型 ftp:// http:// file:///(本地yum源)3)yum客戶端的配置文件: /etc/yum.conf:為所有倉庫提供公共配置 /etc/yum.repos.d/*.repo:為倉庫的指向提供配置 倉庫指向的定義: [repositoryID] name=Some name for this repository baseurl=url://path/to/repository/ enabled={1|0} gpgcheck={1|0} gpgkey=URL enablegroups={1|0} failovermethod={roundrobin|priority} 默認為:roundrobin,意為隨機挑選; cost= 默認為1000注意:3)中參數不是全部都需要進行配置,但最基本的必須包括以下三點 (1):[repositoryID] (2):baseurl=url://path/to/repository/ (3) enabled={1|0}4)在CentOS6環境上安裝yum倉庫示例: (1)虛擬機CentOS-6.8 yum源:http://10.1.0.1/cobbler/ks_mirror/6/ (2)進入yum repo 配置目錄,在yum.repos.d下原有很多.repo結尾的文件,均已移至其下的old文件夾中 [root@CentOS6 ~]# cd /etc/yum yum/ yum.conf yum.repos.d/ [root@CentOS6 ~]# cd /etc/yum.repos.d/ [root@CentOS6 yum.repos.d]# ls base.repo old [root@CentOS6 yum.repos.d]# (3)創建并編輯bash.repo文件,在其中加入一下內容 [base] name=CentOS 6 baseurl=http://10.1.0.1/cobbler/ks_mirror/6/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=1 (4)執行yum clean all清除原有yum緩存,然后執行yum makecache重新創建yum緩存文件。 5)yum-config-manager命令的使用 (1) 生成repo-http_10.1.0.1_cobbler_ks_mirror_CentOS-6-x86_64_.repo
(2) yum-config-manager --disbale "倉庫名" 禁用倉庫 (3)yum-config-manager --enable "倉庫名" 啟用倉庫 yum-config-manager --enable fedora(倉庫名是在配置時中括號中的名字)
8.使用yum安裝和卸載程序包
顯示倉庫列表:repolist [all|enabled|disabled
[root@CentOS6 yum.repos.d]# yum repolist allLoaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile base | 4.0 kB 00:00 cdrom | 4.0 kB 00:00 ... fedora | 4.3 kB 00:00 repo id repo name status base CentOS 6 enabled: 6,696cdrom CentOS 2 enabled: 6,696fedora CentOS enabled: 11,768repolist: 25,160[root@CentOS6 yum.repos.d]#
顯示程序包list
yum list [all | glob_exp1] [glob_exp2] [...]yum list {available|installed|updates} [glob_exp1]
安裝程序包:
install package1 [package2] [...] reinstall package1 [package2][...] (重新安裝)
升級程序包
update [package1] [package2][...] downgrade [package1] [package2][...] (降級) 檢查可用升級: check-update
卸載程序包:
remove |erase package1 [package2][...]
查看程序包information:
info[...]
查看指定的特性(可以是某文件)是由哪個程序包提供的:
provides |whatprovides feature1 [feature2] [...]
本地緩存的清理和構建
清理: clean [package |metadata |expire-cache|rpmdb|plugins|all] 構建: makecache
9.yum的選項及其它:
使用光盤當本地yum倉庫
(1)掛載光盤至某目錄,例如/media/cdrom #mount /dev/cdrom /media/cdrom(2)創建配置文件 [CentOS7] name= baseurl= gpgcheck= enabled
yum的命令行選項
--nogogcheck:禁止進行gpg check-y:自動回答“yes“-q:靜默模式--disablerepo=repoidglob:臨時禁用此處指定的repo--enablerepo=repoidglob:臨時啟用此處指定的repo--noplugins:禁用所有插件
yum的repo配置文件中可用的變量
$releasever:當前OS的發行版本的主版本號$arch:平臺,i386,i486,i586,x86_64...$basearch:基礎平臺;i386$YUM0-$YUM9:自定義變量 示例: http://server/centos/$releasever/$basearch/ http://server/centos/7/x86_64 http://server/centos/6/i384
創建yum倉庫:
createrepo[options] <directory>
原創文章,作者:提著醬油瓶打醋,如若轉載,請注明出處:http://www.www58058.com/38262
文章架構清晰,層次明了,同時熟練使用包管理器各命令是基本技能需要熟練使用和掌握。