RPM包概述
什么是rpm包
由红帽开发的软件 升级、安装、卸载、查询工具
为什么要使用rpm
就像在windows系统中一样,如果你想要安装一个QQ,安装一个微信,安装一款游戏,首先
要去该软件的官网上去 下载相关的软件包,通常都是.exe的安装包。还有那种绿色软件包,一
下载下来,解压开就能使用无需安装。 那么Linux中也有很多种类的安装包,我们在Linux上也
需要安装软件,软件包的种类也有很多,但是最方便,最简 单,最简易,速度最快的,也就是
rpm包了。
rpm包命名规则
## tree-1.6.0-10.el7.x86_64.rpm
tree:软件名称
1.6.0:版本号
10:该版本的发布次数
el7:适用系统版本(RedHat7,CentOS7)向下兼容
x86_64.rpm:系统平台 64位 #x86:32位 i386:32位
rpm:包后缀名
Linux中软件的安装方式
rpm安装:已经编译好的源码包,下载下来后,直接使用rpm命令安装即可 版本会低于官方版本
源码安装:先编译,将源代码翻译成系统认识的软件,再安装 步骤复杂繁琐
二进制安装:绿色软件(免安装) 不是所有程序都有二进制包
RPM包获取途径
系统光盘镜像/CentoOS官网:http://mirror.centos.org/centos/7/
1.检查光盘是否放入光驱
# 挂载语法
mount 源设备文件 目标路径
0 ? 21:31:21 root@jinnan,10.0.0.101:~ # mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
# 查看磁盘信息
0 ✓ 21:31:51 root@jinnan,10.0.0.101:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.4G 18G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 497M 120M 378M 25% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /mnt
# 卸载语法
umount 目标路径
0 ✓ 21:31:06 root@jinnan,10.0.0.101:~ # umount /mnt
## 挂载报错
0 ✓ 21:31:06 root@jinnan,10.0.0.101:~ # mount /dev/cdrom /mnt
mount: no medium found on /dev/sr0
原因:设备文件是空的,里面没有任何内容,光驱没有连接
## 卸载报错
0 ✓ 21:31:06 root@jinnan,10.0.0.101:~# umount /mnt
umount: /mnt: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
[root@localhost mnt]# cd
[root@localhost ~]# umount /mnt
原因:设备繁忙(mnt)
## 查看挂载结果
21:35:31 root@jinnan,10.0.0.101:~ # ll /mnt
total 686
-rw-rw-r--. 1 root root 14 Nov 26 2018 CentOS_BuildTag
drwxr-xr-x. 3 root root 2048 Nov 26 2018 EFI
-rw-rw-r--. 1 root root 227 Aug 30 2017 EULA
-rw-rw-r--. 1 root root 18009 Dec 10 2015 GPL
drwxr-xr-x. 3 root root 2048 Nov 26 2018 images
drwxr-xr-x. 2 root root 2048 Nov 26 2018 isolinux
drwxr-xr-x. 2 root root 2048 Nov 26 2018 LiveOS
drwxrwxr-x. 2 root root 663552 Nov 26 2018 Packages
drwxrwxr-x. 2 root root 4096 Nov 26 2018 repodata
-rw-rw-r--. 1 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--. 1 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOSTesting-7
-r--r--r--. 1 root root 2883 Nov 26 2018 TRANS.TBL
0 ✓ 21:35:36 root@jinnan,10.0.0.101:~ # ll /mnt/Packages/tree-1.6.0-
10.el7.x86_64.rpm
-rw-rw-r--. 1 root root 47508 Jul 4 2014 /mnt/Packages/tree-1.6.0-
10.el7.x86_64.rpm
RPM包查询官方网址:http://rpmfind.net/
其他软件官方网站
rpm命令使用-安装
# 语法:
rpm [选项] rpm包名
rpm包名:
- 本地包名:在系统中某个目录下的rpm包
0 ✓ 21:54:41 root@jinnan,10.0.0.101:~ # rpm -ihv /mnt/Packages/tree1.6.0-10.el7.x86_64.rpm
- 远程包名:不用下载,直接使用网站上的rpm包
0 ✓ 22:16:53 root@jinnan,10.0.0.101:~ # rpm -ivh
https://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/tree1.6.0-10.el7.x86_64.rpm
# 选项
-i:安装
-v:显示安装过程
-h:显示安装的进度条
--test:仅测试,不安装
--force:强制安装
--nodrps:忽略依赖关系
# 举例 -i
21:52:41 root@jinnan,10.0.0.101:~ # rpm -i /mnt/Packages/tree-1.6.0-
10.el7.x86_64.rpm
# 举例 -v
0 ✓ 21:53:52 root@jinnan,10.0.0.101:~ # rpm -iv /mnt/Packages/tree1.6.0-10.el7.x86_64.rpm
Preparing packages...
tree-1.6.0-10.el7.x86_64
# 举例 -h
0 ✓ 21:54:41 root@jinnan,10.0.0.101:~ # rpm -ihv /mnt/Packages/tree1.6.0-10.el7.x86_64.rpm
Preparing...
################################# [100%]
Updating / installing...
1:tree-1.6.0-10.el7
################################# [100%]
# 举例 --test (仅测试不安装)
0 ✓ 21:56:13 root@jinnan,10.0.0.101:~ # rpm -ivh --test
/mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
Preparing...
################################# [100%]
# 举例 --force --nodeps
0 ✓ 21:56:38 root@jinnan,10.0.0.101:~ # rpm -ivh --force --nodeps
/mnt/Packages/samba-4.8.3-4.el7.x86_64.rpm
Preparing...
################################# [100%]
Updating / installing...
1:samba-0:4.8.3-4.el7
################################# [100%]
warning: group printadmin does not exist - using root
## 注意:rpm命令管理rpm包的缺点,无法解决依赖关系
rpm命令使用-查询
# 语法
rpm [选项] rpm包名
# 选项
-q:查看指定的安装包是否安装
--- 以下选项皆要配合-q使用 ---
-a:全部安装过的包
-i:详细信息
-l:列出rpm包相关的配置文件和目录
-c:只查看该软件包相关的配置文件
-d:只查看该软件的帮助文档文件
-f:反向查找,根据配置文件,目录,帮助文档,查找该文件属于哪个包
--scripts:查看安装包,安装之前之后,和卸载之前之后要执行的脚本
--- 和上面选项配合使用 ---
-p:查询未安装的包相关信息
-qip:查看没有安装包的详细信息(指定一个已存在的完整包名或者远程包名)
-qlp:查看没有安装包会生成那些文件(指定一个已存在的完整包名或者远程包名)
-qcp:查看没有安装包会生成哪些配置文件(指定一个已存在的完整包名或者远程包名)
-qdp:查看没有安装包会生成哪些帮助文件(指定一个已存在的完整包名或者远程包名)
# 举例 -q
0 ✓ 22:05:54 root@jinnan,10.0.0.101:~ # rpm -q tree
tree-1.6.0-10.el7.x86_64
# 举例 -qa
0 ✓ 22:06:01 root@jinnan,10.0.0.101:~ # rpm -qa
# 举例 -qi
0 ✓ 22:06:39 root@jinnan,10.0.0.101:~ # rpm -qi tree
Name : tree
Version : 1.6.0
Release : 10.el7
Architecture: x86_64
Install Date: Wed 20 Apr 2022 10:04:11 PM CST
Group : Applications/File
Size : 89505
License : GPLv2+
Signature : RSA/SHA256, Fri 04 Jul 2014 01:36:46 PM CST, Key ID
24c6a8a7f4a80eb5
Source RPM : tree-1.6.0-10.el7.src.rpm
Build Date : Tue 10 Jun 2014 03:28:53 AM CST
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://mama.indstate.edu/users/ice/tree/
Summary : File system tree viewer
Description :
The tree utility recursively displays the contents of directories in a
tree-like format. Tree is basically a UNIX port of the DOS tree
utility.
# 举例 -qc
0 ✓ 22:09:37 root@jinnan,10.0.0.101:~ # rpm -qc grep
/etc/GREP_COLORS
/etc/profile.d/colorgrep.csh
/etc/profile.d/colorgrep.sh
# 举例 -qd
0 ✓ 22:09:45 root@jinnan,10.0.0.101:~ # rpm -qd grep
/usr/share/doc/grep-2.20/ABOUT-NLS
/usr/share/doc/grep-2.20/AUTHORS
/usr/share/man/man1/fgrep.1.gz
/usr/share/man/man1/grep.1.gz
# 举例 -qf
0 ✓ 22:10:27 root@jinnan,10.0.0.101:~ # rpm -qf /etc/passwd
setup-2.8.71-10.el7.noarch
rpm命令-升级
# 选项
-U:update升级,如果老版本不存在,则安装,如果老版本存在则升级
-f:必须有老版本存在
## 查询当前系统中安装nginx的包(1.10版本)
0 ✓ 14:38:02 root@jinnan,10.0.0.101:~ # rpm -q nginx
nginx-1.10.0-1.el7.ngx.x86_64
## 使用ivh安装nginx 1.12版本的包
14:39:18 root@jinnan,10.0.0.101:~ # rpm -ivh nginx-1.12.0-
1.el7.ngx.x86_64.rpm
#报错如下:因为系统中已存在1.10版本的nginx所以无法使用ivh安装
warning: nginx-1.12.0-1.el7.ngx.x86_64.rpm: Header V4 RSA/SHA1
Signature, key ID 7bd9bf62: NOKEY
Preparing...
################################# [100%]
file /etc/logrotate.d/nginx from install of nginx-1:1.12.0-
1.el7.ngx.x86_64 conflicts with file from package nginx-1:1.10.0-
1.el7.ngx.x86_64
file /usr/sbin/nginx from install of nginx-1:1.12.0-
1.el7.ngx.x86_64 conflicts with file from package nginx-1:1.10.0-
1.el7.ngx.x86_64
file /usr/sbin/nginx-debug from install of nginx-1:1.12.0-
1.el7.ngx.x86_64 conflicts with file from package nginx-1:1.10.0-
1.el7.ngx.x86_64
file /usr/lib/systemd/system/nginx.service from install of nginx1:1.12.0-1.el7.ngx.x86_64 conflicts with file from package nginx1:1.10.0-1.el7.ngx.x86_64
file /usr/libexec/initscripts/legacy-actions/nginx/upgrade from
install of nginx-1:1.12.0-1.el7.ngx.x86_64 conflicts with file from
package nginx-1:1.10.0-1.el7.ngx.x86_64
## 使用Uvh安装,会将已存在的老版本卸载,升级成新1.12版本
14:39:32 root@jinnan,10.0.0.101:~ # rpm -Uvh nginx-1.12.0-
1.el7.ngx.x86_64.rpm
warning: nginx-1.12.0-1.el7.ngx.x86_64.rpm: Header V4 RSA/SHA1
Signature, key ID 7bd9bf62: NOKEY
Preparing...
################################# [100%]
Updating / installing...
1:nginx-1:1.12.0-1.el7.ngx
################################# [ 50%]
Cleaning up / removing...
2:nginx-1:1.10.0-1.el7.ngx
################################# [100%]
## 查看当前系统中的nginx版本为升级后的1.12版本
0 ✓ 14:40:45 root@jinnan,10.0.0.101:~ # rpm -q nginx
nginx-1.12.0-1.el7.ngx.x86_64
rpm命令-卸载
# 选项
-e:后面接卸载的包名即可
#举例
0 ✓ 14:40:45 root@jinnan,10.0.0.101:~ # rpm -q nginx
nginx-1.12.0-1.el7.ngx.x86_64
0 ✓ 14:41:46 root@jinnan,10.0.0.101:~ # rpm -e nginx
0 ✓ 14:42:49 root@jinnan,10.0.0.101:~ # rpm -q nginx
package nginx is not installed
镜像站地址
1.阿里云镜像站:https://developer.aliyun.com/mirror/
2.网易镜像站:http://mirrors.163.com/
3.清华源:https://mirrors.tuna.tsinghua.edu.cn/
4.中科大源:https://mirrors.ustc.edu.cn/