RPM包管理器通过建立统一的文件数据库,对在Linux系统中安装、卸载、升级的各种.rpm软件包进行详细的记录,并能够自动分析软件包之间的依赖关系,保持各应用程序在一个协调、有序的整体环境中运行。
使用RPM机制封装的软件包文件拥有约定俗成的命名格式,一般使用“软件名-软件版本-发布次数.操作系统类型.硬件架构类型 .rpm”的文件名形式,如“bash-4.1.2-15.e16_4.x86_64.rpm”。其中硬件平台通常为“i386”“i686”等,表示适用于Intel公司的处理器,“x86_64”表示适用于64位的系统,如果是“noarch”表示不区分硬件架构(支持不同硬件体系的处理器)。
RPM命令具有相当复杂 的命令格式,结合不同的选项及子选项主要可以实现以下三类功能
init 初始化的意思
rebuild 重新建立 db(datebase)数据库
rebuilddb重新建立数据库
[root@localhost ~]#rpm --rebuilddb
或
[root@localhost ~]#rpm --initdb
import 导入的意思
[root@localhost ~]#rmp --import
/media/cdrom/RPM-GPG-KEY-redhat-release
查询已安装的RPM软件包信息
rpm [选项] 软件包
查询功能主要通过 “ -q ” 来实现,主要针对当前系统中已经安装的软件包
rpm [选项] 软件包
通过 “ -qp ” 可以针对尚未安装的RPM包文件进行查询
rpm -i 指安装指定的软件包
rpm -U 升级指定的软件包
rpm -v显示详细信息
rpm -h友好的显示文件大小
rpm -e + 软件包名
rpm -v显示详细信息
rpm -h友好的显示文件大小
通常安装指定软包包时使用:rpm -ivh + 软件包名,卸载指定软件包时使用:rpm -evh +软件包名
首先找一个目录作为挂载点,这里我们就使用/mnt,将/dev/sr0挂载到/mnt/目录下
mount /dev/sr0 /mnt
/mnt/packages (packages 包 里面有各种安装包)
yum list
mout 设备名称 挂载点*(本地目录)*
rpm安装:
rpm安装过程中遇到依赖性问题,无法解决
可以使用yum仓库来解决:(如果使用官方,则使用的都是最新包)
[root@localhost ~]# yum install httpd -y
已加载插件:fastestmirror, langpacks
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
updates/7/x86_64/primary_db | 2.8 MB 00:00:00
Loading mirror speeds from cached hostfile
* base: centos.ustc.edu.cn
* extras: centos.ustc.edu.cn
* updates: centos.ustc.edu.cn
正在解决依赖关系
…………省略部分内容…………
已安装:
httpd.x86_64 0:2.4.6-90.el7.centos
作为依赖被安装:
apr.x86_64 0:1.4.8-5.el7 apr-util.x86_64 0:1.5.2-6.el7
httpd-tools.x86_64 0:2.4.6-90.el7.centos mailcap.noarch 0:2.1.41-2.el7
rpm卸载:
[root@localhost ~]# rpm -evh bind
准备中... ################################# [100%]
正在清理/删除...
1:bind-32:9.9.4-50.el7 ################################# [100%]
yum卸载:
[root@localhost ~]# yum -y remove httpd
已加载插件:fastestmirror, langpacks
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-90.el7.centos 将被 删除
--> 解决依赖关系完成
……………省略部分内容………………
删除:
httpd.x86_64 0:2.4.6-90.el7.centos
完毕!
yum私网仓库
yum公网仓库
1)自建仓库
2)官方仓库
安装过成功需要手动确认, 安装时或卸载时 -y 可以免交互
yum文件,都以.repo为结尾的配置文件
进入yum本地配置文件
[root@localhost ~]# ping www.baidu.com //确定目前无网络状态
ping: www.baidu.com: 未知的名称或服务
[root@localhost ~]# cd /etc/yum.repos.d/ //进入yum配置文件目录
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
repo结尾的全是配置文件(需要使用网络,因为我们是在无网络情况下,所以暂时用不到,可以创建一个目录移动进去)
[root@localhost yum.repos.d]# mkdir yum
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo yum
[root@localhost yum.repos.d]# mv CentOS* yum
[root@localhost yum.repos.d]# ls
yum
现在,我们在yum.repos.d里面建立手工配置,建立一个文件,名字随意,如:abc
格式 vim abc.repo
[文件名字]
描述信息,yum仓库的名称
指定软件所放的路径 ,file:// 是固定格式 /mnt是路径
1为开启yum仓库
0为关闭校验,不需要检查了
:wq 保存退出
这时使用yum list 就可以加载出来软件包了
[root@localhost yum.repos.d]# vim abc.repo
[root@localhost yum.repos.d]# yum list
已加载插件:fastestmirror, langpacks
abc | 3.6 kB 00:00
(1/2): abc/group_gz | 156 kB 00:00
(2/2): abc/primary_db | 3.1 MB 00:00
Loading mirror speeds from cached hostfile
已安装的软件包
GConf2.x86_64 3.2.6-8.el7 @anaconda
GeoIP.x86_64 1.5.0-11.el7 @anaconda
ModemManager.x86_64 1.6.0-2.el7 @anaconda
ModemManager-glib.x86_64 1.6.0-2.el7 @anaconda
NetworkManager.x86_64 1:1.8.0-9.el7 @anaconda
NetworkManager-adsl.x86_64 1:1.8.0-9.el7 @anaconda
………………省略部分内容…………
然后就可以进行安装了
[root@localhost yum.repos.d]# yum -y install httpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-67.el7.centos 将被 安装
--> 正在处理依赖关系 httpd-tools = 2.4.6-67.el7.centos,它被软件包 httpd-2.4.6-67.el7.centos.x86_64 需要
--> 正在检查事务
---> 软件包 httpd-tools.x86_64.0.2.4.6-67.el7.centos 将被 安装
--> 解决依赖关系完成
…………省略部分内容…………
已安装:
httpd.x86_64 0:2.4.6-67.el7.centos
作为依赖被安装:
httpd-tools.x86_64 0:2.4.6-67.el7.centos
完毕!
安装成功。通过实验可以看本地yum源会存在列表中没有此源文件而造成无法安装RPM包的问题,但是本地
yum源是可以在无网络情况下正常安装RPM包。
并且yum可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。