RPM基本概述
什么是rpm
rpm
全称redhat package manager
说写,是由红帽开发用于软件包的安装、升级、卸载与查询工具
rpm包名组成部分
rpm
包命名以-
将软件分成了若干部分bash-4.2.46-34.el7.x86_64.rpm
如何获取rpm包
在我们刚开始学习rpm
包,建议先从本地镜像中获取rpm
,但实际生产环境中大多数是通过联网方式获取rpm
包,或者搭建企业私有包管理仓库平台
其他类型的安装包
在linux
中除了rpm
格式类型的包,还存在一些其他类型的软件包
分类 | 安装 | 版本 |
---|---|---|
rpm包 | 预先编译打包,安装简单 | 软件版本偏低 |
源码包 | 手动编译打包,安装繁琐 | 软件版本随意 |
二进制包 | 解压即可使用,安装简单 | 不能修改源码 |
RPM包管理命令
rpm安装软件包
- -i:安装软件包
- -v:显示安装过程
- -h:显示安装进度条
1.使用rpm
命令安装本地路径下软件包
rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
2.使用rpm
命令安装互联网上的软件包
rpm -ivh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent2-5.0.40-1.el7.x86_64.rpm
rpm依赖包安装
包依赖是指A-->依赖-->B
,B-->依赖-->C
,而C-->依赖-->A
。当我们需要安装的rpm
类型包出现了依赖关系应该如何处理,比如安装samba
软件包
PS:由于rpm
工具安装rpm
包依赖关系太强,所以通常我们都是使用yum
来解决
rpm升级软件包
下载zabbix-agent
软件包,分别下载3.2.0低版本,然后下载4.0.2高版本进行测试与实验
wget https://mirrors.aliyun.com/centos/7.9.2009/infra/x86_64/infra-common/Packages/z/zabbix-agent-3.2.0-1.el7.x86_64.rpm?spm=a2c6h.13651111.0.0.489d2f70a8et9A&file=zabbix-agent-3.2.0-1.el7.x86_64.rpm
wget https://mirrors.aliyun.com/centos/7.9.2009/infra/x86_64/infra-common/Packages/z/zabbix-agent-4.0.2-1.el7.x86_64.rpm?spm=a2c6h.13651111.0.0.489d2f70a8et9A&file=zabbix-agent-4.0.2-1.el7.x86_64.rpm
1.先安装zabbix-agent-3.2.0
低版本
rpm -ivh zabbix-agent-3.2.0-1.el7.x86_64.rpm
2.尝试使用rpm -ivh
安装zabbix-agent-4.0.2
高版本(会出现报错)
rpm -ivh zabbix-agent-4.0.2-1.el7.x86_64.rpm
3.使用rpm -Uvh
升级zabbix-agent
至4.0.3版本(完美解决)
rpm -Uvh zabbix-agent-4.0.2-1.el7.x86_64.rpm
rpm卸载软件包
如果需要卸载rpm
包,可以先查看该包是否存在系统中,然后进行卸载操作
1.使用rpm -q
查询软件包是否存在系统
rpm -q zsh
2.使用rpm -e
卸载软件包
rpm -e zsh
rpm查询软件包
选项 | 描述 |
---|---|
rpm -q | 查看指定软件包是否安装 |
rpm -qa | 查看系统中已安装的所有rpm软件包列表 |
rpm -qi | 查看指定软件的详细信息 |
rpm -ql | 查看指定软件包所安装的目录、文件列表 |
rpm -qc | 查看指定软件包的配置文件 |
rpm -qf | 查询文件或目录属于哪个rpm软件 |
1.查询vsftpd
这个rpm
包是否安装
rpm -q vsftpd
2.模糊查找系统已安装的rpm
包
rpm -qa php74*
rpm -qa | grep php74
3.查询zabbix-agent2
软件包相关信息
rpm -qi zabbix-agent2
4.查询zabbix-agent2
软件包所安装后在系统中生成的文件路径
rpm -ql zabbix-agent2
5.查询zabbix-agent2
软件包的主配置文件
rpm -qc zabbix-agent2
6.查询配置文件或系统命令是由哪个rpm
包提供
rpm -qf /etc/zabbix/zabbix_agent2.conf
zabbix-agent2-5.0.40-1.el7.x86_64
rpm -qf /usr/sbin/ifconfig
net-tools-2.0-0.25.20131004git.el7.x86_64
yum provides ifconfig
7.查询未安装的rpm
包会产生哪些文件
rpm -rlp https://mirrors.aliyun.com/centos/7.9.2009/infra/x86_64/infra-common/Packages/z/zabbix-agent-4.0.2-1.el7.x86_64.rpm?spm=a2c6h.13651111.0.0.489d2f70a8et9A&file=zabbix-agent-4.0.2-1.el7.x86_64.rpm
rpm包管理小结
-
如何查询
util-linux
软件包安装了哪些文件?
rpm -ql util-linux
-
如何查询
mkdir
命令是由哪个rpm
软件包安装的?rpm -qf /usr/bin/mkdir coreutils-8.22-24.el7.x86_64 yum provides mkdir rpm -qf $(which mkdir) which mkdir | xargs rpm -qf
-
安装
rpm
软件包时,-i、-U
选项有何区别?- -i,--install:安装
- -U,--Upgrade:升级
YUM基本介绍
什么YUM
yum/dnf
是RedHat
及CentOS
系统中的软件包管理器。它能够通过互联网下载.rpm
格式包进行安装,并能自动处理其依赖包关系,无效繁琐地一次次下载安装
什么YUM源
要使用yum
命令工具安装更新软件,需要一个包含各种rpm
软件包的仓库,这个软件仓库我们 一般称为yum
源。当然这个源可以是本地仓库、也可以是网络仓库。
client-->ftp/http/file-->yum地址-->yum仓库
(rpm
包集合)
YUM配置文件
CentOS7
的配置文件
more /etc/yum.conf
cachedir=/var/cache/yum/$basearch/$releasever # 缓存目录
keepcache=0 # 缓存软件包,1启动 0关闭
debuglevel=2 # 调试级别
logfile=/var/log/yum.log # 日志记录位置
exactarch=1 # 检查平台是否兼容
obsoletes=1 # 检查包是否废弃
gpgcheck=1 # 检查来源是否合法,需要有制作者的公钥信息
plugins=1
installonly_limit=5 # 同时可以安装5个软件包,最小为2,设置为0或1则不限制
# metadata_expire=90m # 每小时手动检查元数据
# in /etc/yum.repos.d # 包含repos.d目录中的.repo文件
配置YUM源示例
系统默认的源是国外提供,需要替换为国内的源
1.配置阿里yum
源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
2.配置第三方yum
源(EPEL)
EPEL(Extra Packages for Enterprise Linux)
, 是由Fedora Special Interest Group
维护的Enterprise Linux(RHEL、CentOS)
中经常用到的包。
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
3.nginx
官方源,后期在学习nginx
时需要使用官方的yum
源来安装软件
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
yum
源的查找方式大体一致Apache、Docker、Nginx、Openstack、ELKStack
YUM日常操作
yum查询软件包
1.使用yum/dnf list
查询所有仓库中的所有软件包
yum list
yum list | grep ftp
2.使用yum/dnf list installed
查询所有已安装至系统中的软件包
yum list installed
或者 rpm -qa
3.使用yum/dnf provides
查询系统命令来自于哪个软件包
rpm -qf $(which cd)
bash-4.2.46-34.el7.x86_64
# PS:rpm需要知道命令的绝对路径,如果不存在该命令时无法查找到该命令所属的软件包
yum provides cd
yum provides sl
yum安装软件包
1.使用yum/dnf install
通过仓库获取软件包进行安装
# 交互,麻烦
yum install vsftpd
# 非交互
yum install vsftpd -y
2.使用yum/dnf localinstall
安装本地的rpm
包,如果rpm
包存在依赖,会通过当前已有的仓库获取解决依赖关系
# 安装本地的rpm包,会自动查找当前系统上已有的仓库解决依赖关系
yum localinstall samba-4.8.3-4.el7.x86_64.rpm -y
yum重装软件包
当我们按照好服务后,如果不小心删除了服务的配置文件,此时可以通过重装的方式修复
1.首先删除vsftpd
配置主文件
rpm -qc vsftpd
rm -f /etc/vsftpd/vsftpd.conf
2.使用yum reinstall
对软件进行重新安装
yum reinstall vsftpd
3.检查vsftpd
服务配置文件是否恢复,以及软件是否能正常使用
rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
yum更新软件包
# 对比linux已安装的软件和yum仓库中的软件,有哪些需要升级
yum check-update
# 更新gzip软件
yum update gzip
# 更新整个系统所有的软件,包括内核(通常刚装完系统会进行执行)
yum update
yum删除软件包
yum install samba
yum remove samba
yum管理组包
1.使用yum groups install
安装一整个组的软件
yum groups list
yum groups install Development\ Tools
2.使用yum groups remove
删除组包
yum groups remove Development\ Tools
yum管理仓库
1.列出yum repolist
源可用的软件仓库
yum repolist
yum repolist all # 查看所有的仓库
2.通过yum-config-manager
启用和禁用仓库(本质是修改repo
文件中的enable
参数)
yum provides yum-config-manager
yum install yum-utils
yum-config-manager --enable epel-source # 启用仓库
yum-config-manager --disable epel-source # 关闭仓库
yum管理历史记录
当我们删除了某个软件时,希望撤销删除的操作,可以使用yum history undo
1.删除httpd
软件,然后查看操作记录
yum remov httpd
yum history
2.使用yum history undo Number
撤销
yum history info N
yum history undo N
yum缓存软件包
1.方式一:通过修改yum
全局配置文件
vim /etc/yum.conf
keepcache=1 # 启动缓存
yum install lrzsz
find /var/cache/yum/ -type f -name "*.rpm"
2.方式二:通过yum
下载该软件包至本地,不进行安装
yum install vsftpd --downloadonly --downloaddir=/opt
3.清理缓存,可以使用yum clean
# 清理所有yum缓存信息,包括缓存的软件包
yum clean all
# 仅清理所有缓存的软件包
yum clean package
源码包管理实践
什么是源码包
源码包指的是开发编写好的程序源代码,但并没有将其编译为一个能正常使用的二进制工具
为何需要源码包
- 部分软件官网仅提供源码包,需要自行编译并安装
- 部分软件在新版本有一些特性还没来得及制作成
rpm
包时,可以自行编译软件使用其新特性
源码包的优缺点
- 优点:
- 可以自行修改源代码,需要会
C
- 可以定制需要的相关功能
- 新版软件优先更新源码
- 可以自行修改源代码,需要会
- 缺点:
- 相对
rpm
安装软件的方式会复杂很多 - 标准化实施困难,自动化就无法落地
- 相对
源码包如何获取
- 常见的软件包都可以在官网获取源码包,比如:
nginx、httpd、zabbix
nginx
源码包地址:http://nginx.org/en/download.html
httpd
源码包地址:https://httpd.apache.org/download.cgi
zabbix
源码包地址:https://www.zabbix.com/cn/download_sources
源码包如何安装
将源码包编译为二进制可执行文件步骤如下,简称编译三部曲:
PS:此方法不是百分比通用于所有源码包,建议拿到源码包解压后,进入到目录找相关的README
帮助文档
nginx源码包编译
下面通过编译nginx
软件来深入了解下源码包编译的过程
1.基础环境准备
yum install gcc make wget
2.下载nginx
源码包
wget http://nginx.org/download/nginx-1.24.0.tar.gz
3.解压nginx
源码包,并进入相应目录
tar xf nginx-1.24.0.tar.gz
cd nginx-1.24.0
4.配置相关的选项,并生成Makefile
./configure --prefix=/opt/nginx-1.24.0
5.根据Makefile
文件,将软件编译为可执行的二进制程序
make
6.将编译好的二进制文件拷贝至对应的目录
make install
- 源码编译报错信息处理
checking for C compiler ... not found ./configure:error: C compiler cc is not found
# yum install gcc gcc-c++ make
# yum install prre-devel
# yum install zlib-devel
# yum install openssl-devel
留言