程序包管理器:
源代碼 –> 目標(biāo)二進(jìn)制格式(二進(jìn)制程序,庫(kù)文件,配置文件,幫助文件)–>組織成為一個(gè)或有限幾個(gè)“包”文件;
安裝,升級(jí),卸載,查詢,校驗(yàn)
安裝: -ivh, --nodeps, --replacepkgs 卸載: -e, --nodeps 升級(jí):-Uvh , -Fvh , --nodeps, --lodpackage 查詢:-q, -qa , -qf , -qi , -qd , -qc ,-q --scripts, -q --changlog, -q --provides, -q --requires 校驗(yàn):-V 程序包管理器: debian : dpt, dpkg, ".deb" redhat: rpm S.U.S.E: rpm Gentoo: ports Archlinux: 源代碼:name-VERSION.tar.gz VERSION:major.minor.release rpm包命名格式: name-VERSION-release.arch.rpm VERSION:major.minor.release release.arch:rpm包的發(fā)行號(hào) relae.os:2.ei7.i386.rpm archetecture:i386,x64(amd64),ppc,noarch redis-3.0.2.targz --> redis-3.0.2-1.centos7.x64.rpm 拆包: 主包和支包 主包:name-VERSION-release.arch.rpm 支包:name-function-VERSION-release.arch.rpm
前端工具:自動(dòng)解決依賴關(guān)系;
yum:rhel系列系統(tǒng)上rpm包管理器的前端工具;
apt-get(apt-cache):deb包管理器的前端工具;
zypper:suse的rpm管理器的前端工具;
dnf:Fedord 22+ 系統(tǒng)上rpm包管理器的前端工具;
程序包管理器: 功能:將編譯好的應(yīng)用程序的各組成文件打包成一個(gè)或幾個(gè)程序包文件,從而更方便地實(shí)現(xiàn)程序包的安裝,升級(jí),卸載和查詢等管理操作; 1.程序包的組成清單(每個(gè)程序包都單獨(dú)實(shí)現(xiàn)); 文件清單 安裝或卸載時(shí)運(yùn)行的腳本 2.數(shù)據(jù)庫(kù)(公共) 程序包的名稱和版本 依賴關(guān)系 功能說(shuō)明 安裝生成的各文件的文件路徑及校驗(yàn)碼信息
rpm包的數(shù)據(jù)庫(kù)
[root@Centos7ip11 ~]# ls /var/lib/rpm
Basenames db.002 Group Obsoletename Requirename Triggername
Conflictname db.003 Installtid Packages Sha1header
__db.001 Dirnames Name Providename Sigmd5
獲取程序包的途徑:
1.系統(tǒng)發(fā)行版的光盤或官方的文件服務(wù)器(或鏡像站點(diǎn));
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirors.163.com
2.項(xiàng)目的官方站點(diǎn) 3.第三方組織 a.EPEL b.搜索引擎 https://pkgs.org/ http://www.rpmfind.net http://rpm.pbone.net 4.自動(dòng)動(dòng)手, 建議:檢查其合法性 來(lái)源合法性 程序包的完整性
Centos系統(tǒng)上rpm命令管理程序包:
安裝,升級(jí),卸載,查詢和校驗(yàn),數(shù)據(jù)庫(kù)維護(hù)
http://www.runoob.com/linux/linux-comm-rpm.html
安裝: [root@Centos7ip11 ~]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm
rpm命令: 選項(xiàng): 安裝:-i, --install 升級(jí):-U,--update, -F,--freshen 卸載:-e,--erase 查詢:-q,--query 校驗(yàn):-V,--verify 數(shù)據(jù)庫(kù)維護(hù):--builddb,--initdb -h: bash marks輸出進(jìn)度條;每個(gè)#表示2%的進(jìn)度; --test:測(cè)試安裝,檢查并報(bào)告依賴關(guān)系及沖突消息等; --nodeps:忽略依賴關(guān)系;不建議; --replacepkgs:重新安裝 注意:rpm可以自帶腳本; 四類: 都不執(zhí)行 --noscripts preinstall:安裝過(guò)程開始之前運(yùn)行的腳本,%pre , --nopre postinstall:安裝過(guò)程完成之后運(yùn)行的腳本,%post , --nopost preuninstall:卸載過(guò)程真正開始執(zhí)行之前運(yùn)行的腳本,%preun , -- nopreun postuninstall:卸載過(guò)程完成之后運(yùn)行的腳本,%postun , --nopostun --nosignature:不檢查包簽名信息,不檢查來(lái)源合法性; --nodigest:不檢查包完整性信息;
升級(jí): [root@Centos7ip11 ~]# rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm [root@Centos7ip11 ~]# rpm -Fvh zsh-5.0.2-28.el7.x86_64.rpm 選項(xiàng): -U : 升級(jí)或安裝; -F:升級(jí) --oldpackage :降級(jí); --force:強(qiáng)制升級(jí); 注意: 1.不要對(duì)內(nèi)核做升級(jí)操作;linux支持多內(nèi)核版本并存,因此,直接安裝新版本內(nèi)核; 2.如果某原程序包的配置文件安裝后曾被修改過(guò),升級(jí)時(shí),新版本的程序提供的同一個(gè)牌子文件不會(huì)覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;
卸載: 選項(xiàng): -e, --erase:卸載 --allmatches:卸載所有匹配指定名稱的程序包的各版本; --nodeps:忽略依賴關(guān)系 --test:測(cè)試卸載,dry run模式
實(shí)例:
[root@Centos7ip11 ~]# rpm -q zsh
zsh-5.0.2-28.el7.x86_64
[root@Centos7ip11 ~]# rpm -e zsh
查詢:
rpm {-q|–query} [select-options] [query-options]
選項(xiàng): [select-options] -a, --all:查詢所有已經(jīng)安裝過(guò)的包; -f FILE:查詢指定的文件由哪個(gè)程序包安裝生成; -p,--package PACKAGE_FILE:用于實(shí)現(xiàn)對(duì)未安裝的程序包執(zhí)行查詢操作; --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個(gè)程序包提供; --whatrequires CAPABILITY:查詢指定的CAPABILITY 被哪個(gè)包依賴; [query-options] --changelog:查詢r(jià)pm包的changlog; -l,--list:程序安裝生成的所有文件列表; -i,--info:程序包相關(guān)的信息,版本號(hào),大小,所屬的包組,等; -c,--configfiles:查詢指定的程序提供的配置文件; -d,--docfiles:查詢指定的程序包提供的文檔; -provides:列出指定的程序包提供的所有的CAPABILITY; -R,--requires:查詢指定的程序包的依賴關(guān)系; --scripts:查看程序包自帶的腳本片段; 用法: -qi -qf -qc -ql -qd -qpi -qpl
實(shí)例:
[root@Centos7ip11 ~]# rpm -q --whatprovides bash bash-4.2.46-31.el7.x86_64 [root@Centos7ip11 ~]# rpm -q --provides bash /bin/bash /bin/sh bash = 4.2.46-31.el7 bash(x86-64) = 4.2.46-31.el7 config(bash) = 4.2.46-31.el7
校驗(yàn):
rpm -V|-y|–verify [verify-options]
5 MD5校驗(yàn)和 S 文件大小 L 符號(hào)連接 T 修改時(shí)間 D 設(shè)備 U 用戶 G 組 M 模式(包括許可和文件類型)
包來(lái)源合法性驗(yàn)證和完整性驗(yàn)證: 來(lái)源合法性驗(yàn)證: 完整性驗(yàn)證: 獲取并導(dǎo)入信任的包制作者的密鑰: 對(duì)于CentOS發(fā)行版來(lái)說(shuō):rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 驗(yàn)證: 1.安裝此組織簽名的程序時(shí),會(huì)自動(dòng)執(zhí)行驗(yàn)證; 2.手動(dòng)驗(yàn)證:rpm -k PACKAGE_FILE
數(shù)據(jù)庫(kù)重建:
rpm管理器數(shù)據(jù)庫(kù)路徑:/var/lib/rpm/
查詢操作:通過(guò)此處的數(shù)據(jù)庫(kù)進(jìn)行;
rpm {--initdb | --rebuilddb} {--dbpath DIRECTORY} [--root DIRECTORY] 對(duì)這些模式唯一的選項(xiàng)是--dbpath --initab: 初始化數(shù)據(jù)庫(kù),當(dāng)前無(wú)任何數(shù)據(jù)庫(kù)可實(shí)現(xiàn)初始化創(chuàng)建一個(gè)新的;當(dāng)前有時(shí)不執(zhí)行任何操作; --rebuilddb:重新構(gòu)建,通過(guò)讀取當(dāng)前系統(tǒng)上所有已經(jīng)安裝過(guò)的程序包進(jìn)行重新創(chuàng)建; ~]# rpm --initdb --dbpath=/tmprpm