软件包管理
一 软件包介绍
与windows类似,在linux系统上也可以安装各种应用程 序,或称软件包,linux下软件包分为三类
分类 | 安装 | 特点 |
---|---|---|
rpm包 | 预先编译打包, 安装简单 | 通常软件的稳定版会被官方做成rpm, 所以软件版本偏低 |
源码包 | 手动编译打包, 安装繁琐 | 软件版本丰富, 可选性强 |
二进制包 | 解压即可使用, 安装简单 | 不能修改源代码 |
二 rpm包管理
什么是rpm包
在主流的linux系统上,多数软件的安装、升级、移除以 及维护工作都是使用RPM软件包管理程序来完成的,那 什么是RPM软件包呢?
RPM 是Red-Hat Package Manager(RPM软件包管理 器)的缩写,这一文件格式名称虽然打上了RedHat的标 志,但是其原始设计理念是开放式的,通常软件的稳定版会 被官方做成rpm,所以软件版本偏低。
RPM包格式举例
mysql-connector-odbc-5.2.5-8.el7.x86_64.rpm
软件包名:mysql-connector-odbc
版本号Version:5.2.5
发布版本Release:8.el7
平台:el7.x86_64
后缀:.rpm
abrt-python-doc-2.1.11-57.el7.centos.noarch.rpm
abrt-python-doc #软件包的名称
2.1.11 #软件的版本
57 #软件编译之后的发布的次数
el7 #适合的操作系统的版本
noarch #适用于不同版本的CPU
.rpm #后缀名
RPM闭包使用的平台
redhat/centos/redora/suse
查看自己当前平台
[root@laser ~]# uname -m
x86_64 # 平台
[root@laser ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core) # 版本
管理rpm包有两种命令
1、rpm命令:
需要自己找到rpm包,并且手动解决包的依赖性关系
ps:实际情况下,很难分辨缺少什么依赖包
2、yum命令:
相关rpm包事先都被存放于一个仓库里,仓库包含了所有的依赖包,所以yum安装可以帮我们解决依赖性问题
RPM包获取
1.本地的ISO镜像光盘(软件包可能存在版本偏低情况)
获取镜像前需要先挂载硬盘
挂载镜像有以下三种方式
将光驱内的镜像文件挂在到/opt目录下
[root@laser ~]# mount /dev/sr0 /opt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@laser ~]# mount /dev/cdrom /opt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@laser ~]# mount -o loop /xxx.iso /opt
查看是否挂载成功 df -Th|grep opt
[root@laser ~]# df -Th|grep opt
/dev/sr0 iso9660 4.5G 4.5G 0 100% /opt
查询有证明挂载成功
查看光盘里的rpm包
[root@laser ~]# ls /opt/Packages/
很多系统提供的包, 可以进行安装也可以
2.自己去网上下载rpm包进行安装
3.联网从yum仓库里获取rpm包
三 rpm命令
选项
1、安装:rpm -ivh <RPM包名全称>
2、卸载:rpm -e <RPM包名>
3、升级:rpm -Uvh <RPM包名>
4、查询:
rpm -qa #查询系统中安装的所有RPM软件包
检索系统中已经安装的有关ssh的软件包
[root@laser ~]# rpm -qa|grep ssh
openssh-server-7.4p1-21.el7.x86_64
libssh2-1.8.0-4.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
openssh-7.4p1-21.el7.x86_64
rpm -q <RPM包名> #查询指定软件包是否已安装
可以是全名, 也可以是前面几个字符
[root@laser ~]# rpm -q tar
tar-1.26-35.el7.x86_64
rpm -qi <RPM包名> #查询系统中已安装包的描述信息, 不使用匹配方式
[root@laser ~]# rpm -qi openssh-7.4p1-21.el7.x86_64
rpm -ql <RPM包名> #查询系统中已安装包里所包含的文件, 显示路径
[root@laser ~]# rpm -ql openssh-7.4p1-21.el7.x86_64
/etc/ssh
/etc/ssh/moduli
/usr/bin/ssh-keygen
/usr/libexec/openssh
rpm -qc <RPM包名> #查询指定软件包的所有配置文件
[root@laser ~]# rpm -qc openssh-7.4p1-21.el7.x86_64
/etc/ssh/moduli
[root@laser ~]# rpm -qc httpd
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
rpm -qd <RPM包名> # 查询某个包安装的帮助文档
[root@laser ~]# rpm -qd httpd
/usr/share/doc/httpd-2.4.6/ABOUT_APACHE
/usr/share/doc/httpd-2.4.6/CHANGES
rpm -qf 文件路径 #查询系统中指定文件所属的软件包
[root@laser ~]# rpm -qf httpd 没有给定目录, 需要给绝对路径
错误:文件 /root/httpd:没有那个文件或目录
[root@laser ~]# rpm -qf /bin/yum
yum-3.4.3-168.el7.centos.noarch
在上述选项的基础上加选项-p,就可以查看尚未安装的rpm包信息
[root@laser ~]# rpm -qip /opt/Packages/iptables-1.4.21-34.el7.x86_64.rpm
Name : iptables
Version : 1.4.21
Release : 34.el7
Architecture: x86_64
...
显示路径
[root@laser ~]# rpm -qlp /opt/Packages/iptables-1.4.21-34.el7.x86_64.rpm
所有配置文件
[root@laser ~]# rpm -qcp /opt/Packages/iptables-1.4.21-34.el7.x86_64.rpm
帮助文档
[root@laser ~]# rpm -qdp /opt/Packages/iptables-1.4.21-34.el7.x86_64.rpm
额外选项
--nomd5 # 不检验软件包的签名,也就是下载完成后不检验md5值
--nodeps # 忽略依赖性安装软件,安装后软件有可能无法使用,最好是解决依赖性后再安装
[root@laser ~]# rpm -e dosfstools
错误:依赖检测失败:
dosfstools 被 (已安裝) udisks2-2.8.4-1.el7.x86_64 需要
dosfstools 被 (已安裝) python-blivet-1:0.61.15.76-1.el7_9.noarch 需要
[root@laser ~]# rpm -e dosfstools --nodeps
--force # 强制安装软件包,只有安装和升级可以强制执行
安装
1. 镜像挂载
2. 安装需要的rpm包
命令 执行方式 执行安装文件
[root@laser ~]# rpm -ivh /opt/Packages/iptables-1.4.21-34.el7.x86_64.rpm
rpm方式安装iptables-1.4.21-34.el7.x86_64.rpm 软件包
rpm来自于网络,如果安装过程中报错:curl: (60)Peer's Certificate has expired,请先将系统时间修改正确,然后再安装即可
rpm -ivh
[root@laser ~]# https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm
rpm方式安装网络zabbix-agent软件包
安装与依赖性
[root@laser ~]# rpm -ivh /opt/Packages/httpd-2.4.6-93.el7.centos.x86_64.rpm
错误:依赖检测失败:
httpd-tools = 2.4.6-93.el7.centos 被 httpd-2.4.6-93.el7.centos.x86_64 需要
根据提示一个个安装即可
[root@laser ~]# yum search mime.types
查看匹配, 查看mime.types有匹配对象
后再进行安装即可
升级rpm包
1、下载一个低版本、一个高版本
先安装低版本, 然后使用rpm迭代方式进行升级
版本1: 3.0.9
wget https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm
版本2: 4.2.0
wget https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.0-1.el7.x86_64.rpm
2、先安装低版本
[root@laser ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
3、再安装高版本,会报错
[root@laser ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm
4、如果采用--force选项,那就是强制安装,会同时存在两个版本,该方案不可取
[root@laser ~]# rpm -qa |grep zabbix # 同时两个版本共存
zabbix-agent-3.0.9-1.el7.x86_64
zabbix-agent-4.2.0-1.el7.x86_64
5、重来,采用升级方式安装
将之前安装的全部删除, 删除需要使用yum删除, 否则不会删除依赖包
查询卸载是否成功
[root@laser ~]# rpm -qa |grep zabbix
6. 进行安装低版本包
[root@laser ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
7 使用升级方式安装下载好的高版本软件包
[root@egon ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm
只留下一个新版本,。清理老版本,安装新版本。。再次查询安装的rpm软件包信息,留下最新版本