什么是rpm
RPM全稱RPM Package Manager縮寫,由紅帽開發(fā)用于軟件包的安裝,升級(jí)卸載與查詢
為什么要學(xué)rpm
就像在windows系統(tǒng)中一樣,如果你想要安裝一個(gè)QQ,安裝一個(gè)微信,安裝一款游戲,首先要去該軟件的官網(wǎng)上去下載相關(guān)的軟件包,通常都是.exe的安裝包。還有那種綠色軟件包,一下載下來,解壓開就能使用無需安裝。
那么linux中也有很多種類的安裝包,我們?cè)贚inux上也需要安裝軟件,軟件包的種類也有很多,但是最方便,最簡單,最簡易,速度最快的,也就是rpm包了。
RPM包長啥樣呢?
下面請(qǐng)看大屏幕...
rpm包的命名規(guī)則
當(dāng)我們拿到一個(gè)軟件包的時(shí)候,我們需要對(duì)rpm包有基本的認(rèn)識(shí)。bash-4.2.46-28.el7.x86_64.rpm
?
name: 軟件包名稱
version: 版本號(hào), 主版本, 重大更新. 次版本, 子功能更新. 修訂號(hào), 修復(fù)bug
release: 發(fā)布版本 el6, el7 (hostnamectl)
arch: 系統(tǒng)平臺(tái), i386、x86_64(hostnamectl)
rpm包的組成:
安裝釋放的文件
軟件包的元數(shù)據(jù)(版本,發(fā)布號(hào),架構(gòu),描述,要求,更改日志等)
腳本:安裝前執(zhí)行的腳本和安裝后的腳本
Linux中的軟件包類型分類安裝版本rpm包預(yù)先編譯打包,安裝簡單軟件版本偏低源碼包手動(dòng)編譯打包,安裝繁瑣軟件版本隨意二進(jìn)制包解壓即可使用, 安裝簡單不能修改源碼
注意: 不管是源碼包,還是二進(jìn)制包,安裝時(shí)都可能會(huì)有依賴關(guān)系!
系統(tǒng)平臺(tái)包類型工具自動(dòng)解決依賴RedHat/centosRPMrpmyumUbuntu/DebianDPKGdpkgapt
RPM軟件包的獲取途徑
1.RedHat光盤或官方網(wǎng)站 (通過掛載的方式訪問)
2.RPM查詢官網(wǎng)網(wǎng)站
3.Nginx軟件官方網(wǎng)站
4.MySQL軟件官方網(wǎng)站
在我們剛開始學(xué)習(xí)rpm包時(shí),建議先使用本地CentOS7的鏡像,但實(shí)際生產(chǎn)環(huán)境中,都是通過聯(lián)網(wǎng)的方式獲取rpm包。
我們先通過虛擬機(jī)加載鏡像,然后再linux中執(zhí)行mount /dev/cdrom /mnt此時(shí)會(huì)在/mnt/packages目錄下看到很多rpm的包文件,那么久可以開始rpm包管理之旅了。
[root@localhost ~]# mount /dev/cdrom /mnt/ mount: block device /dev/sr0 is write-protected, mounting read-only [root@localhost ~]# ls /mnt/ CentOS_BuildTag Packages RPM-GPG-KEY-CentOS-Security-6 EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6 GPL repodata TRANS.TBL images RPM-GPG-KEY-CentOS-6 isolinux RPM-GPG-KEY-CentOS-Debug-6 [root@localhost ~]# ls /mnt/Packages/|head
RPM包安裝管理
RPM包安裝命令
使用rpm命令安裝軟件包, 需要了解如下參數(shù):
-i: #安裝 -v: #詳細(xì)信息 -h: #安裝進(jìn)度 --test: #測試是否能夠安裝成功 --force: #強(qiáng)制重新安裝 --nodeps: #忽略依賴關(guān)系 #安裝軟件包, 需要指定軟件包絕對(duì)路徑 [root@zls ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm [root@zls ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm #在軟件包所在目錄下可以不指定絕對(duì)路徑 [root@zls ~]# cd /mnt/Packages/ [root@zls Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm #測試一個(gè)軟件包是否能在該系統(tǒng)上安裝 [root@zls ~]# rpm -ivh --test /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm #如果軟件包存在, 強(qiáng)制再次安裝 [root@zls ~]# rpm -ivh --force /mnt/Packages/tree-1.5.3-3.el6.x86_64.rpm #安裝samba服務(wù)需要依賴其他組件, 使用--nodeps可重新強(qiáng)制安裝 [root@zls ~]# rpm -ivh --nodeps /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
RPM包查詢命令
使用rpm命令查詢已安裝好的rpm包, 需要了解如下參數(shù):
rpm -q #查看指定軟件包是否安裝 rpm -qa #查看系統(tǒng)中已安裝的所有RPM軟件包列表 rpm -qi #查看指定軟件的詳細(xì)信息 rpm -ql #查詢指定軟件包所安裝的目錄、文件列表 rpm -qc #查詢指定軟件包的配置文件 rpm -qd #查詢指定軟件包的幫助文檔 rpm -qf #查詢文件或目錄屬于哪個(gè)RPM軟件 rpm -q --scripts #查詢r(jià)pm包安裝前和安裝后執(zhí)行的腳本 #查詢未安裝的軟件包信息 rpm -qip //查詢未安裝的rpm包詳細(xì)信息 rpm -qlp //查詢未安裝的軟件包會(huì)產(chǎn)生哪些文件 #查詢vsftpd這個(gè)rpm包是否安裝 [root@zls ~]# rpm -q vsftpd #模糊查找系統(tǒng)已安裝的rpm包 [root@zls ~]# rpm -qa |grep ftp #查詢vsftpd軟件包的相關(guān)信息 [root@zls ~]# rpm -qi vsftpd #查詢r(jià)pm包所安裝的文件 [root@zls ~]# rpm -ql vsftpd #查詢r(jià)pm包相關(guān)的配置文件 [root@zls ~]# rpm -qc vsftpd #查詢配置文件或命令來自于哪個(gè)rpm包 [root@zls ~]# rpm -qf /etc/vsftpd/vsftpd.conf [root@zls ~]# rpm -qf /usr/sbin/vsftpd //查詢未安裝的軟件包會(huì)產(chǎn)生哪些文件 [root@zls ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm //查詢未安裝的軟件包會(huì)產(chǎn)生哪些文件 [root@zls ~]# rpm -qip /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm #以上查詢只能查詢已存在 已安裝的包,如果沒有安裝,需要聯(lián)網(wǎng)查詢 [root@db04 ~]# yum provides zip [root@db04 ~]# yum provides */ifconfig Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com base/filelists_db | 6.4 MB 00:00 epel/filelists_db | 7.9 MB 00:00 extras/filelists_db | 24 kB 00:00 updates/filelists_db | 3.6 MB 00:00 net-tools-1.60-114.el6.x86_64 : Basic networking tools Repo : base Matched from: Filename : /sbin/ifconfig
RPM包升級(jí)命令
-U 如果老版本不存在,就全新安裝,如果存在有新版即升級(jí)
-f 老版本必須存在
如果有新版則升級(jí), 軟件升級(jí)不要跨操作系統(tǒng)主版本號(hào)
[root@zls ~]# rpm -Uvh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
RPM包卸載命令
卸載包時(shí)需要先把依賴的包卸載掉,如果依賴的包是系統(tǒng)所必須的,那就不能卸載這個(gè)包,否則會(huì)造成系統(tǒng)崩潰。
//先查詢, 然后卸載 [root@zls ~]# rpm -qa |grep sh [root@zls ~]# rpm -e zsh