Linux对包管理阐述
? Centos/Redhat/Fedora的軟件包,都是rpm后綴的文件。包管理器rpm(Redhat packages manager)
?linux的哲學(xué)思想是簡單命令解決復(fù)雜任務(wù),因此每個(gè)軟件的功能較單一,所以各種包之間有著復(fù)雜的依賴關(guān)系,為了解決這種可以使用前端工具:
前端管理工具,自動(dòng)解決依賴關(guān)系。
01、rpm包命名格式
二進(jìn)制格式 name-VERSION.tar.gz
VERSION的格式: major.minor.release.os.arch ?
arch:i386,x64(amd64),ppc(power pc),noarch(java編寫的,可以跨平臺(tái))
os:e17(紅帽七) os:el6(紅帽6)
eg:
主版本號(hào)為3,次版本號(hào)為0,發(fā)行號(hào)為2,編譯次數(shù)為1,系統(tǒng)為centos7,平臺(tái)為x64的rpm包?
redis-3.0.2-1.centos7.x64.rpm
02、版本類型
fc ? ? ? final candidate ?最終版
alpha 內(nèi)測版
beta 公測版
rc ? ? 發(fā)布候選版
release 正式版
程序包管理器:
源代碼---> 目標(biāo)二進(jìn)制格式----> 組織成為一個(gè)或有限幾個(gè)“包”文件,實(shí)現(xiàn)軟件的安裝,升級,卸載,查詢,校驗(yàn)
后端管理工具:?
debian:dpt,dpkg,".deb"
redhat: rpm,".rpm" ? yum
S.u.S.E:rpm ,".rpm" 源于rpm但是組織結(jié)構(gòu)不同,并不能和redhat兼容
Ubantu:是debian的分支,包管理機(jī)制一樣
Gentoo;parts
Archlinux:linux界的新貴(極簡哲學(xué)思想)
yum:rhel系列系統(tǒng)上的rpm包管理器的前端工具
apt-get:.deb包管理器的前端工具
zypper:suse的rpm包管理工具
dnf:Fedora20+系統(tǒng)上的rpm包管理器的前端工具,功能更強(qiáng)大,未來centos中也可能使用
?03、常見的Mirrors
程序包組成包管理器的功能,將編譯好的應(yīng)用程序的各組成文件打包成一個(gè)或幾個(gè)程序包文件
?
1.系統(tǒng)發(fā)行版的光盤或官方的文件服務(wù)器(或鏡像站點(diǎn))
http://mirrors.aliyun.com
http://mirrors.sohu.com
EPEL(較為可靠的組織):阿里云等中的epel目錄
2.對rpm單個(gè)包下載
http://pkgs.org
http://rpm.pbone.net
http://rpmfind.net
04、RPM參數(shù)含義
CentOS系統(tǒng)上的rpm命令管理程序包,安裝,升級,卸載,查詢和校驗(yàn),數(shù)據(jù)庫維護(hù)
rpm命令: rpm [OPTIONS] ?[PACKAGE_FILE]
安裝: -i,--install
升級:-U,--updata,-F,freshen
卸載:-e,--erase
查詢:-q,--query
校驗(yàn): -V,--verify
數(shù)據(jù)庫維護(hù):--builddb,--initdb
1.安裝
rpm -ivh PACKAGE_FILE
通用選項(xiàng):
?-v:verbose 顯示詳細(xì)信息,
?-vv:更詳細(xì)的輸出
rpm {-i|--install} [install-options] PACKAGE_FILE...
?[install-options]:
-h:hash marks 輸出進(jìn)度條,每個(gè)#表示2%的進(jìn)度
--test:僅是測試,并不真的安裝
--nodeps:忽略依賴關(guān)系,可以讓你安裝,但是不一定可以用。你建議使用
--force ? ? ? ?強(qiáng)制安裝 ? ??
--replacepkgs;重新安裝
如果自己不小心錯(cuò)誤修改了某些配置文件,想要安裝的初始文件,可以通過這個(gè)命令但是要把改變過的文件刪除,否則重新安裝不會(huì)替換它
--nodigest:不檢查程序包的完整性
--nosignature:不檢查包簽名信息,不檢查來源合法性
?
注意: rpm可以自帶腳本;
四類:--noscripts,不執(zhí)行任何腳本
preinstall:安裝過程開始之前運(yùn)行的腳本,%pre
postinstall:安裝過程完成之后運(yùn)行的腳本,%post?
peruninstall:卸載過程真正開始執(zhí)行之前運(yùn)行的腳本,
postuninstall:卸載過程完成之后運(yùn)行的腳本
?
2.升級:
rpm ?{-U|--upgrade} [install-options] ?PACKAGE_FILE
rpm ?{-F|--freshen} [install-options] ?PACKAGE_FILE
?
-U:升級或安裝,有則升級,無則安裝
-F : ?升級,如果事先沒有也不會(huì)安裝
--oldpackage:降級;
--force:強(qiáng)制升級
常見用法:
rpm ?-Uvh PACKAGE_FILE....
rpm ?-Fvh ?PACKAGE_FILE
?注意:
? 1.不要對內(nèi)核做升級操作;linux支持多內(nèi)核版本共存,因此,直接安裝新版本內(nèi)核
? 2.如果某源程序的配置文件安裝后被修改過,升級時(shí),新版本的程序提供的同一個(gè)配置文件不會(huì)覆蓋原有版本的配置文件,而是把新版本的配置文件重命名
(FILENAME.rpmnew)后提供(刪除舊的,新的自動(dòng)生成)
?
3.卸載:
rpm {-e|--erase} [--allmatchs][--nodeps][--noscripts][--test]PACKAGE_NAME
?
--allmatchs:卸載所有匹配指定名稱的程序包的各版本
--nodeps: 忽略依賴關(guān)系,即使該文件被依賴,也會(huì)卸載
--test: 僅是測試,并不真的卸載
?
4.查詢:
rpm {-q|--query}[select-options][query-options]
?
[select-options]:
-a,-all:查詢所有已經(jīng)安裝的包
-f FILE:查詢指定的文件由那個(gè)程序安裝生成
-p,--package PACKAGE_FILE:用于實(shí)現(xiàn)對未安裝的程序包執(zhí)行查詢操作
? ? ? eg: ?rpm -qpi ? PACKAGE.NAME: 不安裝包查看包的具體信息
rpm ?-qlp ? PACKAGE.NAME:不安裝包直接查看生成的文件
?rpm ?-qcp ?PACKAGE.NAME:不安裝包查看包會(huì)生成的配置文件
--whatprovides CAPABILITY:查看指定的CAPABLITY由哪個(gè)程序包提供
--whatrequires CAPABLITY:查詢指定的CAPABLITY被哪個(gè)包所依賴
[query-options]
--changlog;查詢r(jià)pm包的changlog;
-l,--list:列出該安裝包生成的文件列表
-i,--info:程序包相關(guān)的信息,版本號(hào),大小,所屬的包組等
-c,--configure:查詢指定的程序包提供的配置文件
-d,--docfiles:查詢指定的程序包提供的文檔
--provides:列出指定的程序包提供的所有的CAPABLITY,提供了某個(gè)文件也是能力
-R,--requires:查詢指定包的依賴關(guān)系
--scripts:查看程序包自帶的腳本程序
?eg:
[root@localhost ~]# rpm -q --provides bash ? ? ? bash提供的能力
config(bash) = 4.1.2-40.el6
bash = 4.1.2-40.el6
bash(x86-64) = 4.1.2-40.el6
[root@localhost ~]# rpm -q --whatprovides ‘config(bash)‘ ? ? ?;‘config(bash)‘ 這個(gè)能力是誰提供的
bash-4.1.2-40.el6.x86_64
[root@localhost ~]# rpm -q --whatrequires ‘config(bash)‘ ? ? ? ;‘config(bash)‘ ? 這個(gè)能力被誰依賴
bash-4.1.2-40.el6.x86_64
05、RPM常見用法
rpm -qi ? PACKAGE.NAME: 查詢安裝包的具體信息
rpm ?-ql ? PACKAGE.NAME:列出安裝包生成的文件
rpm -qf ? FILE:查詢某個(gè)文件是由那個(gè)安裝包提供的
? eg:[root@localhost ~]# rpm -qf /usr/share/man/man1/wait.1.gz?
bash-4.1.2-40.el6.x86_64
rpm ?-qc ?PACKAGE.NAME:查看安裝包生成的配置文件
rpm ?-qa ?:已經(jīng)安裝的所有包
?
不安裝包直接查看:
eg: ?rpm -qpi ? PACKAGE.NAME: 不安裝包查看包的具體信息
rpm ?-qlp ? PACKAGE.NAME:不安裝包直接查看生成的文件
rpm ?-qcp ?PACKAGE.NAME:不安裝包查看包會(huì)生成的配置文件
06、RPM效驗(yàn)
校驗(yàn)務(wù)必保證公鑰是安全的,合法的 ?
rpm {-V|--verify} [select-options] [verify-options]
?eg: rpm -Va
? 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
?eg:
?[root@localhost ~]# rpm -V zsh
S.5....T. ? ?/usr/share/zsh/4.3.11/scripts/newuser ? 這里對應(yīng)的就是上面的信息,.表示沒有變化
包來源合法性驗(yàn)證和完整性驗(yàn)證:
合法性:一個(gè)包制作者利用單向加密數(shù)據(jù),然后利用私鑰對數(shù)據(jù)的MD5加密,這樣大家獲得公鑰后就可以驗(yàn)證這個(gè)包的來源了
完整性:自己利用單向加密方法計(jì)算數(shù)據(jù)的MD5,然后比對md5碼比對,如果一致,說明數(shù)據(jù)內(nèi)容沒有被修改。
? [root@localhost ~]# rpm -K /media/cdrom/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm
/media/cdrom/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
[root@localhost ~]# rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-6
查看導(dǎo)入的秘鑰文件
[root@localhost ~]# rpm -qa gpg-pubkey*
?gpg-pubkey-c105b9de-4e0fd3a3
刪除導(dǎo)入的文件:
[root@localhost ~]# rpm -e gpg-pubkey-c105b9de-4e0fd3a3
數(shù)據(jù)庫的重建:?
rpm {--initdb|--rebuilddb}[--depath DIRECTORY][--root DIRECTORY]
?--initdb:初始化數(shù)據(jù)庫,當(dāng)前無任何數(shù)據(jù)庫可實(shí)驗(yàn)化創(chuàng)建一個(gè)新的;當(dāng)前有時(shí)不執(zhí)行任何操作,不要輕易操作
--rebuilddb:重新構(gòu)建,讀取當(dāng)前系統(tǒng)上所有已經(jīng)安裝過的程序包進(jìn)行重新創(chuàng)建
--depath:指定數(shù)據(jù)庫的路徑
?--root:指定根的路徑
?
轉(zhuǎn)載于:https://www.cnblogs.com/xiaochina/p/5915192.html
總結(jié)
以上是生活随笔為你收集整理的Linux对包管理阐述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 申请交行优逸银联白金卡要什么条件?是否值
- 下一篇: linux下搭建git服务器