Linux軟件管理--RPM工具


Linux軟件管理--RPM工具

Rpm基礎概述:

RPM全稱RPM Package Manager縮寫,由紅帽開發用於軟件包的安裝,升級卸載與查詢 mysql-5.6.40.tar.gz 源碼包

RPM包的命名規則

當我們拿到一個軟件包的時候,需要對RPM包有基本的認識。

RPM包:bash-4.2.46-28.el7.x86_64.rpm
如:tree-1.6.0-10.el7.x86_64.rpm

tree-	1.6.0-	 10.		el7			.x86_64				.rpm
包名		版本	發布次數	centos7		包的架構(64位)		后綴 (如果是noarch 則32位 64位都兼容)
						
name: 軟件包名稱
version: 版本號, 主版本, 重大更新. 次版本, 子功能更新. 修訂號, 修復bug
release: 發布版本 el6, el7 (hostnamectl)
arch: 系統平台, i386、x86_64(hostnamectl)

rpm 包的組成:

安裝釋放的文件
軟件包的元數據(版本,發布號,架構,描述,要求,更改日志等)
腳本:安裝前執行的腳本和安裝后的腳本

Linux中軟件包類型

分類 安裝 版本
rpm包 預先編譯打包,安裝簡單 軟件版本偏低
源碼包 手動編譯打包,安裝繁瑣 軟件版本隨意
二進制包 解壓即可使用, 安裝簡單 不能修改源碼

注意: 不管是源碼包,還是二進制包,安裝時都可能會有依賴關系!

系統平台 包類型 工具 自動解決依賴
RedHat/Centos RPM rpm yum
Ubuntu/Debian DPKG dpkg apt

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命令安裝軟件包,需要了解如下參數:

-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@oldboyedu Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm  --test
Preparing...                          ################################# [100%]
#測試一個軟件包是否能在該系統上安裝
[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

#以上查詢只能查詢已存在 已安裝的包,如果沒有安裝,需要聯網查詢,但yum 安裝包如未安裝直接可查需安裝包的詳細信息
[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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM