10.Linux的软件包管理
孙富阳, 江湖人称没人称。多年互联网运维工作经验,曾负责过孙布斯大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型博客网站运维工作。
1.RPM基本概述
1.什么是rpm?
RPM全称 RPM Package Manager 缩写,由红帽开发用于软件包的安装升级卸载与查询
2.Linux中rpm安装软件方式?
分类 | 安装 | 版本 |
---|---|---|
rpm包 | 预先编译打包,安装简单 | 软件版本偏低 |
源码包 | 手动编译打包,安装繁琐 | 软件版本随意 |
二进制包 | 解压即可使用, 安装简单 | 不能修改源码 |
yum | 安装软件最常用方法 | 软件版本偏低 |
3.Linux中常见的软件包类型?
系统平台 | 包类型 | 工具 | 自动解决依赖 |
---|---|---|---|
RedHat/Centos | RPM | rpm | yum |
Ubuntu/Debian | deb | dpkg | apt |
2.RPM使用示例
1.rpm包如何安装
以下列出了rpm命令进行安装软件的常用参数
选项 | 描述 |
---|---|
-i | 安装rpm |
-v | 显示安装详细信息 |
-h | 显示安装rpm进度 |
--force | 强制重新安装 |
--nodeps | 忽略依赖关系 |
#安装软件包, 需要指定软件包绝对路径
[root@sfy ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
[root@sfy ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
#在软件包所在目录下可以不指定绝对路径
[root@sfy ~]# cd /mnt/Packages/
[root@sfy Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm
#如果软件包存在, 强制再次安装
[root@sfy ~]# rpm -ivh --force /mnt/Packages/tree-1.5.3-3.el6.x86_64.rpm
#安装samba服务需要依赖其他组件, 使用--nodeps可重新强制安装
[root@sfy ~]# rpm -ivh --nodeps /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
2.如何查询已安装好的rpm包
选项 | 描述 |
---|---|
rpm -q | 查看指定软件包是否安装 |
rpm -qa | 查看系统中已安装的所有RPM软件包列表 |
rpm -qi | 查看指定软件的详细信息 |
rpm -ql | 查询指定软件包所安装的目录、文件列表 |
rpm -qc | 查询指定软件包的配置文件 |
rpm -qf | 查询文件或目录属于哪个RPM软件 |
rpm -qip | 查询未安装的rpm包详细信息 |
rpm -qlp | 查询未安装的软件包会产生哪些文件 |
#查询vsftpd这个rpm包是否安装
[root@sfy ~]# rpm -q vsftpd
#模糊查找系统已安装的rpm包
[root@sfy ~]# rpm -qa |grep ftp
#查询vsftpd软件包的相关信息
[root@sfy ~]# rpm -qi vsftpd
#查询rpm包所安装的文件
[root@sfy ~]# rpm -ql vsftpd
#查询rpm包相关的配置文件
[root@sfy ~]# rpm -qc vsftpd
#查询配置文件或命令来自于哪个rpm包
[root@sfy ~]# rpm -qf /etc/vsftpd/vsftpd.conf
[root@sfy ~]# rpm -qf /usr/sbin/vsftpd
#查询未安装的软件包会产生哪些文件
[root@sfy ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm
#查询未安装的软件包会产生哪些文件
[root@sfy ~]# rpm -qip /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm
3.RPM包升级
选项 | 描述 |
---|---|
rpm -U | 如果老版本不存在则全新安装,如果存在有新版即升级 |
# wget https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm
# wget https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.0-1.el7.x86_64.rpm
#1.先安装低版本
[root@sfy ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
#2.尝试安装高版本(会出现错误)
[root@sfy ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm
#3.使用升级的方式,完美解决替换
[root@sfy ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm
3.RPM包卸载
卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。
#先查询, 然后卸载
[root@sfy ~]# rpm -qa |grep sh
[root@sfy ~]# rpm -e zsh
4.RPM包校验(扩展了解)
软件相关的数据库存放于/var/lib/rpm
目录
参数 | 描述 |
---|---|
S | 文件的容量大小是否被改变 |
M | 文件的类型或者文件的属性是否被修改 |
5 | MD5 这一种指纹加密的内容已经不同 |
L | 路径已经被改变 |
U | 文件的所属主已被修改 |
G | 文件的所属组已被修改 |
T | 文件的创建时间已被改变 |
[root@sfy ~]# rpm -V vsftpd
S.5....T. c /etc/pam.d/vsftpd
.......T. c /etc/vsftpd/ftpusers
S.5....T. c /etc/vsftpd/vsftpd.conf
.M....... /var/ftp/pub
3.YUM基本介绍
1.什么是YUM
Yum是RedHat以及CentOS中的软件包管理器。能够通过互联网下载 .rpm 包并且安装,并可以自动处理依赖性关系,无须繁琐地一次次下载、安装。(PS: YUM是生产最佳实践)
2.YUM源是什么
1要成功的使用 YUM 工具安装更新软件或系统,就需要有一个包含各种 rpm 软件包的repository(软件仓库),这个软件仓库我们习惯称为 yum 源。(可以是本地源、网络源)
3.YUM源配置实例
1.阿里yum源
#默认系统是国外源,需要替换为国内的源
[root@sfy ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo \
http://mirrors.aliyun.com/repo/Centos-7.repo
#扩展源,有很多软件在基本源中没有
[root@sfy ~]# wget -O /etc/yum.repos.d/epel.repo \
http://mirrors.aliyun.com/repo/epel-7.repo
4.YUM实践案例
1.使用yum查询软件包的方式
[root@sfy ~]# yum list
[root@sfy ~]# yum list|grep ftp
[root@sfy ~]# yum info ftp
2.使用yum安装软件包的方式
[root@sfy ~]# yum install tree
[root@sfy ~]# yum install tree -y #非交互
#安装本地的rpm包, 如果有依赖关系, 会自动从软件仓库中下载所需依赖
[root@sfy ~]# yum localinstall /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm
#直接安装网络上的rpm包
[root@sfy ~]# yum install http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
3.使用yum重新安装软件包的方式
#1.如果不小心删除vsftpd配置文件
[root@sfy ~]# rm -f /etc/vsftpd/vsftpd.conf
#2.可以对软件进行重新安装
[root@sfy ~]# yum reinstall vsftpd
#3.检查软件的配置文件
[root@sfy ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
4.使用yum更新软件包
#对比Linux已安装的软件和yum仓库中的软件, 有哪些需要升级
[root@sfy ~]# yum check-update
#更新acl软件
[root@sfy ~]# yum update acl -y
#如下的执行很危险,这代表更新整个系统所有的软件,包括内核
[root@sfy ~]# yum update -y
5.使用yum删除软件包
[root@sfy ~]# yum install samba -y
[root@sfy ~]# yum erase samba -y
[root@sfy ~]# yum remove samba -y
6.与yum仓库相关指令(扩展了解)
#列出yum源可用的软件仓库
[root@sfy ~]# yum repolist
#列出全部yum源可用和禁用的仓库
[root@sfy ~]# yum repolist all
#查找某个命令或文件属于那个软件包(生产常用)
[root@sfy ~]# yum provides /etc/my.cnf
[root@sfy ~]# yum provides cd
7.组包相关指令,(扩展了解)
[root@sfy ~]# yum groups list
#安装一整个组的软件
[root@sfy ~]# yum groups install Development tools \
Compatibility libraries \
Base Debugging Tools
#yum删除包组
[root@sfy ~]# yum groups remove -y Base
8.历史记录指令,(扩展了解)
#1.查看历史执行yum命令
[root@sfy ~]# yum history
#2.查询历史执行yum命令ID详细信息
[root@sfy ~]# yum history info N
#3.撤销历史执行过的yum命令
[root@sfy ~]# yum history undo N
未经允许不得转载:孙某某的运维之路 » 10.Linux的软件包管理
评论已关闭