Linux_软件包管理
1. 软件包介绍
# 简介
与windows类似,在linux系统上也可以安装各种应用程序,或称软件包,linux下软件包分为三类
# 分类
1. rpm包
# 安装
预先编译打包,安装简单
# 特点
通常软件的稳定版会被官方做成rpm,所以软件版本偏低
2. 源码包
# 安装
手动编译打包,安装繁琐
# 特点
软件版本丰富,可选择性强
3. 二进制包
# 安装
解压即可使用,安装简单
# 特点
不能修改源代码
2. rpm包管理
1. rpm简介
# rpm简介
Red-Hat Package Manager (RPM软件包管理器)
这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的
在主流的linux系统上,多数软件的安装、升级、移除以及维护工作都是使用RPM软件包管理程序来完成的
2. rpm包格式
3. rpm包格式示例
# 示例1
mysql-connector-odbc-5.2.5-8.el7.x86_64.rpm
# 软件包的名称
mysql-connector-odbc
# 软件的版本号
Version:5.2.5
# 发布版本次数
Release:8
# 平台
el7.x86_64
# 后缀名
.rpm
# 示例2
abrt-python-doc-2.1.11-57.el7.centos.noarch.rpm
# 软件包的名称
abrt-python-doc
# 软件的版本
2.1.11
# 软件编译之后的发布的次数
57
# 适合的操作系统的版本
el7: enterprise linux Centos7
# 适用于不同版本的CPU
noarch
# 后缀名
.rpm
4. RPM闭包使用的平台
redhat/centos/redora/suse
# 查看自己当前平台
[root@localhost ~]# uname -m
x86_64
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
5. 管理rpm包有两种命令
1. rpm命令
需要自己找到rpm包,并且手动解决包的依赖性关系
ps:实际情况下,很难分辨缺少什么依赖包
2. yum命令
相关rpm包事先都被存放于一个仓库里,仓库包含了所有的依赖包,yum安装可以帮我们解决依赖性问题
6. RPM包获取
1. 本地的ISO镜像光盘(软件包可能存在版本偏低情况)
# 挂载镜像有以下三种方式
方式1
[root@localhost ~]# mount /dev/cdrom /opt/
方式2
[root@localhost ~]# mount /dev/sr0 /opt/
方式3
[root@localhost ~]# mount -o loop /xxx.iso /opt
查看光盘里的rpm包
[root@localhost ~]# ls /opt/Packages/
2. 自己去网上下载rpm包进行安装
3. 联网从yum仓库里获取rpm包
3. rpm命令
1. 选项
1. 安装
rpm -ivh <RPM包名全称>
2. 卸载
rpm -e <RPM包名>
3. 升级
rpm -Uvh <RPM包名>
4. 查询
# 查询系统中安装的所有RPM软件包
rpm -qa
# 检索系统中已经安装有关php的软件包
rpm -qa | grep php
# 查询指定软件包是否已安装
rpm -q <RPM包名>
# 示例
[root@lee ~]# rpm -q zip
zip-3.0-11.el7.x86_64
# 查询系统中已安装包的描述信息
rpm -qi <RPM包名>
# 查询系统中已安装包里所包含的文件
rpm -ql <RPM包名>
# 查询指定软件包的所有配置文件
rpm -qc <RPM包名>
# 示例
[root@lee ~]# rpm -qc mariadb
/etc/my.cnf.d/client.cnf
# 查询某个包安装的帮助文档
rpm -qd <RPM包名>
# 示例
[root@localhost ~]# rpm -qd zlib
# 查询系统中指定文件所属的软件包
rpm -qf 文件路径
# 示例
[root@lee ~]# rpm -qf /usr/sbin/ifconfig
net-tools-2.0-0.25.20131004git.el7.x86_64
# 在上述选项的基础上加选项-p,就可以查看尚未安装的rpm包信息
-p
# 示例
# 先卸载一下,证明本地rpm数据库中没有该包信息
[root@localhost ~]# rpm -e dos2unix
[root@localhost ~]# rpm -qip /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
[root@localhost ~]# rpm -qlp /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
[root@localhost ~]# rpm -qcp /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
[root@localhost ~]# rpm -qdp /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
5. 额外选项
# 不检验软件包的签名
--nomd5
# 忽略依赖性安装软件,安装后软件有可能无法使用,最好是解决依赖性后再安装
--nodeps
# 示例 忽略依赖关系
[root@localhost ~]# rpm -e dos2unix --nodeps
# 强制安装软件包,只有安装和升级可以强制执行
--force
2. 安装
1. rpm包在本地
[root@lee ~]# mount /dev/sr0 /opt
[root@lee ~]# rpm -ivh /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
2. rpm来自于网络
如果安装过程中报错:curl: (60) Peer's Certificate has expired
请先将系统时间修改正确,然后再安装即可
[root@lee ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0- 2.el7.x86_64.rpm
3. 安装与依赖
[root@lee ~]