- RPM Package Manager
由红帽公司提出,RedHat、SUSE等系列采用
建立集中数据库,记录软件包安装/卸载等变化信息,分析软件包依赖关系
http://rpmfind.net/
http://www.centos.org/
- RPM包文件名特征
- 软件名-版本信息.操作系统.硬件架构.rpm
firefox-52.7.0-1.el7.centos.x86_64.rpm
软件名:firefox
软件包名:firefox-52.7.0-1.el7.centos.x86_64.rpm
- RPM包的一般安装位置(分散)
文件类别 | 默认安装位置 |
普通执行程序 | /usr/bin/ 、/bin/ |
服务器程序、管理工具 | /usr/sbin/ 、/sbin/ |
配置文件 | /etc/ 、/etc/软件名/ |
日志文件 | /var/log/、/var/log/软件名/ |
程序文档、man帮助手册页 | /usr/share/doc/ 、/usr/share/man/ |
- 查询软件信息
-
查询是否安装此软件(参数是软件名)
]# rpm -qa #当前系统中所有已安装的软件包
]# rpm -q firefox #查看firefox是否安装
firefox-52.7.0-1.el7.centos.x86_64
]# rpm -q httpd
未安装软件包 httpd
]# rpm -q bash
bash-4.2.46-30.el7.x86_64
]# rpm -qa | grep firefox
]# rpm -qi firefox #查询软件信息
]# rpm -ql firefox #查询软件安装了哪些内容(安装清单)
]# rpm -ql firefox | less
]# rpm -ql firefox | wc -l #统计行数
- 查询某个目录/文件是哪个RPM包带来的
- 格式:rpm -qf [文件路径]…
- 即使目标文件被删除,也可以查询
[root@localhost ~]# which vim #查询命令对应的程序文件
/usr/bin/vim
[root@localhost ~]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.160-4.el7.x86_64
[root@localhost ~]# rpm -q vim-enhanced
vim-enhanced-7.4.160-4.el7.x86_64
[root@localhost ~]# rpm -qf /usr/sbin/poweroff
[root@localhost ~]# rpm -qf /usr/sbin/ifconfig
-
查询软件包(参数软件包名)
]# rpm -q vsftpd #查询vsftpd软件是否安装
未安装软件包 vsftpd
]# ls /mnt/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm
查询软件包的安装清单:
]# rpm -qpl /mnt/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm
查询软件包信息
]# rpm -qpi /mnt/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm
-
导入红帽签名信息(了解)
]# rpm --import /mnt/RPM-GPG-KEY-CentOS-7
查询软件包信息
]# rpm -qpi /mnt/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm
rpm命令方式:不能解决依赖关系
yum命令方式:能自动解决依赖关系
- 安装RPM软件(了解)
- 格式:rpm -i RPM包文件...
- 辅助选项
- -v:显示细节信息
- -h:以#号显示安装进度
]# rpm -q vsftpd #查询当前的系统是否安装了该软件
未安装软件包 vsftpd
]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
]# rpm -q vsftpd #查询当前的系统是否安装了该软件
vsftpd-3.0.2-22.el7.x86_64
]# rpm -evh vsftpd #卸载软件
]# rpm -q vsftpd #查询当前的系统是否安装了该软件
未安装软件包 vsftpd
解决依赖关系(了解)
-
- 先安装/卸载要求的包
- 如果RPM包齐全但比较多,可以用通配符 *
- 忽略依赖关系(不推荐)
- 可能会导致软件运行异常
- 辅助选项 --nodeps
常见依赖关系的报错:
[root@localhost ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-61.el7.x86_64.rpm
错误:依赖检测失败:
bind = 32:9.9.4-61.el7 被 bind-chroot-32:9.9.4-61.el7.x86_64 需要
-
构建Yum软件包仓库
作用:自动解决依赖关系安装软件
服务:自动解决依赖关系安装软件
服务端(本机): 1.众多的软件 2.仓库数据文件(repodata)
本地Yum仓库:服务端需要有光盘内容即可
客户端(本机):指定服务端位置
-
- 仓库配置文件:/etc/yum.repos.d/*.repo
- 错误的文件会影响正确的文件
yum命令执行流程:
yum命令---》读取/etc/yum.repos.d/*.repo配置文件内容---》从而找到仓库的具体位置
客户端文件配置内容:
-
- [源名称] :自定义名称,具有唯一性
- name:本软件源的描述字串
- baseurl:指定YUM服务端的URL地址
- enabled:是否启用此频道
- gpgcheck:是否验证待安装的RPM包
- gpgkey:用于RPM软件包验证的密钥文件
完整示例:
]# vim /etc/yum.repos.d/mydvd.repo
[nsd20]
name=hahaxixi
baseurl=file:///mnt
enabled=1
gpgcheck=1
gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7
]# ls /etc/yum.repos.d/
]# mkdir /etc/yum.repos.d/bak
]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
]# ls /etc/yum.repos.d/
]# ls /etc/yum.repos.d/bak
]# vim /etc/yum.repos.d/mydvd.repo
[nsd20] #仓库的名称
name=hahaxixi #仓库描述信息
baseurl=file:///mnt #指定服务端位置file://表示本地为服务端
enabled=1 #本文件启用
gpgcheck=0 #不检测红帽签名信息
]# yum repolist #列出仓库信息
]# yum -y install httpd #安装软件包测试
]# rpm -q httpd #查询是否安装成功
-
总结:本地Yum仓库构建方法
1.显示光盘的内容,挂载光驱设备 mount /dev/cdrom /mnt
2.书写仓库配置文件,指定仓库位置
3.执行流程: yum命令--->/etc/yum.repos.d/*.repo--->baseurl=file:///mnt
-
总结:本地Yum仓库排除错误
1.没有挂载光驱设备
2./etc/yum.repos.d目录下的配置文件内容
3./etc/yum.repos.d目录下,错误的配置文件影响
-
安装软件
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# rpm -q httpd #检测是否安装成功
[root@localhost ~]# yum -y install bind-chroot
[root@localhost ~]# rpm -q bind-chroot
[root@localhost ~]# yum -y install sssd
[root@localhost ~]# rpm -q sssd
[root@localhost ~]# yum -y install gcc
[root@localhost ~]# rpm -q gcc
[root@localhost ~]# yum -y install xorg-x11-apps
[root@localhost ~]# rpm -q xorg-x11-apps
[root@localhost ~]# rpm -ql xorg-x11-apps | grep bin
[root@localhost ~]# xeyes
-
卸载软件
[root@localhost ~]# yum remove gcc
[root@localhost ~]# yum remove httpd
[root@localhost ~]# rpm -q gcc
[root@localhost ~]# rpm -q httpd
-
查询
[root@localhost ~]# yum list ftp #查询仓库是否有ftp软件
可安装的软件包 #表示当前系统没有安装该软件
ftp.x86_64 0.17-67.el7 nsd20
[root@localhost ~]# yum list httpd
[root@localhost ~]# yum search ftp #包含ftp就匹配
]# yum provides /usr/bin/hostname
]# yum provides /etc/passwd #仓库中那个软件包产生该文件
-
删除/usr/bin/zip程序,然后通过yum工具进行恢复
[root@svr1 ~]# rm -rf /usr/bin/zip
[root@svr1 ~]# ls /usr/bin/zip
ls: 无法访问/usr/bin/zip: 没有那个文件或目录
[root@svr1 ~]# yum provides /usr/bin/zip #查询仓库中那个软件产生了此程序
[root@svr1 ~]# yum -y reinstall zip #覆盖安装
[root@svr1 ~]# ls /usr/bin/zip
/usr/bin/zip
-
清空缓存(了解)
执行流程: yum命令--->/etc/yum.repos.d/*.repo--->baseurl=file:///mnt
[root@localhost ~]# yum clean all
[root@localhost ~]# yum repolist
[root@localhost ~]# yum repolist