什么是rpm
RPM全稱RPM Package Manager縮寫,由紅帽開發用于軟件包的安裝,升級卸載與查詢
為什么要學rpm
就像在windows系統中一樣,如果你想要安裝一個QQ,安裝一個微信,安裝一款游戲,首先要去該軟件的官網上去下載相關的軟件包,通常都是.exe的安裝包。還有那種綠色軟件包,一下載下來,解壓開就能使用無需安裝。
那么linux中也有很多種類的安裝包,我們在Linux上也需要安裝軟件,軟件包的種類也有很多,但是最方便,最簡單,最簡易,速度最快的,也就是rpm包了。
RPM包長啥樣呢?
下面請看大屏幕...
rpm包的命名規則
當我們拿到一個軟件包的時候,我們需要對rpm包有基本的認識。bash-4.2.46-28.el7.x86_64.rpm
?
name: 軟件包名稱
version: 版本號, 主版本, 重大更新. 次版本, 子功能更新. 修訂號, 修復bug
release: 發布版本 el6, el7 (hostnamectl)
arch: 系統平臺, i386、x86_64(hostnamectl)
rpm包的組成:
安裝釋放的文件
軟件包的元數據(版本,發布號,架構,描述,要求,更改日志等)
腳本:安裝前執行的腳本和安裝后的腳本
Linux中的軟件包類型分類安裝版本rpm包預先編譯打包,安裝簡單軟件版本偏低源碼包手動編譯打包,安裝繁瑣軟件版本隨意二進制包解壓即可使用, 安裝簡單不能修改源碼
注意: 不管是源碼包,還是二進制包,安裝時都可能會有依賴關系!
系統平臺包類型工具自動解決依賴RedHat/centosRPMrpmyumUbuntu/DebianDPKGdpkgapt
RPM軟件包的獲取途徑
1.RedHat光盤或官方網站 (通過掛載的方式訪問)
2.RPM查詢官網網站
3.Nginx軟件官方網站
4.MySQL軟件官方網站
在我們剛開始學習rpm包時,建議先使用本地CentOS7的鏡像,但實際生產環境中,都是通過聯網的方式獲取rpm包。
我們先通過虛擬機加載鏡像,然后再linux中執行mount /dev/cdrom /mnt此時會在/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命令安裝軟件包, 需要了解如下參數:
-i: #安裝 -v: #詳細信息 -h: #安裝進度 --test: #測試是否能夠安裝成功 --force: #強制重新安裝 --nodeps: #忽略依賴關系 #安裝軟件包, 需要指定軟件包絕對路徑 [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 #在軟件包所在目錄下可以不指定絕對路徑 [root@zls ~]# cd /mnt/Packages/ [root@zls Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm #測試一個軟件包是否能在該系統上安裝 [root@zls ~]# rpm -ivh --test /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm #如果軟件包存在, 強制再次安裝 [root@zls ~]# rpm -ivh --force /mnt/Packages/tree-1.5.3-3.el6.x86_64.rpm #安裝samba服務需要依賴其他組件, 使用--nodeps可重新強制安裝 [root@zls ~]# rpm -ivh --nodeps /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
RPM包查詢命令
使用rpm命令查詢已安裝好的rpm包, 需要了解如下參數:
rpm -q #查看指定軟件包是否安裝 rpm -qa #查看系統中已安裝的所有RPM軟件包列表 rpm -qi #查看指定軟件的詳細信息 rpm -ql #查詢指定軟件包所安裝的目錄、文件列表 rpm -qc #查詢指定軟件包的配置文件 rpm -qd #查詢指定軟件包的幫助文檔 rpm -qf #查詢文件或目錄屬于哪個RPM軟件 rpm -q --scripts #查詢rpm包安裝前和安裝后執行的腳本 #查詢未安裝的軟件包信息 rpm -qip //查詢未安裝的rpm包詳細信息 rpm -qlp //查詢未安裝的軟件包會產生哪些文件 #查詢vsftpd這個rpm包是否安裝 [root@zls ~]# rpm -q vsftpd #模糊查找系統已安裝的rpm包 [root@zls ~]# rpm -qa |grep ftp #查詢vsftpd軟件包的相關信息 [root@zls ~]# rpm -qi vsftpd #查詢rpm包所安裝的文件 [root@zls ~]# rpm -ql vsftpd #查詢rpm包相關的配置文件 [root@zls ~]# rpm -qc vsftpd #查詢配置文件或命令來自于哪個rpm包 [root@zls ~]# rpm -qf /etc/vsftpd/vsftpd.conf [root@zls ~]# rpm -qf /usr/sbin/vsftpd //查詢未安裝的軟件包會產生哪些文件 [root@zls ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm //查詢未安裝的軟件包會產生哪些文件 [root@zls ~]# rpm -qip /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm #以上查詢只能查詢已存在 已安裝的包,如果沒有安裝,需要聯網查詢 [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包升級命令
-U 如果老版本不存在,就全新安裝,如果存在有新版即升級
-f 老版本必須存在
如果有新版則升級, 軟件升級不要跨操作系統主版本號
[root@zls ~]# rpm -Uvh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
RPM包卸載命令
卸載包時需要先把依賴的包卸載掉,如果依賴的包是系統所必須的,那就不能卸載這個包,否則會造成系統崩潰。
//先查詢, 然后卸載 [root@zls ~]# rpm -qa |grep sh [root@zls ~]# rpm -e zsh






