yum包管理
1.YUM基本介绍
1.什么yum?
Yum是RedHat以及CentOS中的软件包管理器。能够通过互联网下载 .rpm 包并且安装,并可以自动处理依赖性关系,无须繁琐地一次次下载、安装。(PS: YUM是生产最佳实践)
2.什么是yum源?
1要成功的使用 YUM 工具安装更新软件或系统,就需要有一个包含各种 rpm 软件包的repository(软件仓库),这个软件仓库我们习惯称为 yum 源。(可以是本地源、网络源)
一个源,就是一个网址。这个网址对应的就是一个仓库,这个仓库中有很多的rpm包。
加一个源网址,就相当于是在添加一个仓库。
3.yum源配置实列
3.1.配置基础源
配置阿里的yum源, 默认系统是国外源,需要替换为国内的源 :
base源: 基础软件包
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
epel源: 第三方软件 扩展源,有很多软件在基本源中没有
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3.2.配置服务源
配置一个源有两种方式:
1.手动添加一个 repo 文件 手动(如下面nginx源配置)
学习nginx服务源配置:
默认系统提供的软件包版本较低,需要配置官方提供的repo仓库
nginx官方提供的repo文件https://nginx.org/en/linux_packages.html
vi /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
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
ps:其他源寻找方式基本一致,zabbix,Docker、Nginx、saltstack、openstack
2.安装一个 “ release ” 的包,包中提供一个repo的文件 自动
# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# rpm -ql zabbix-release
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
/etc/yum.repos.d/zabbix.repo #会自动配置repo文件
/usr/share/doc/zabbix-release-5.0
/usr/share/doc/zabbix-release-5.0/GPL
2.YUM基本使用
yum的基本使用、安装、卸载、升级、查询等操作
1.使用yum安装软件包的方式
1.yum通过公网仓库搜索进行安装
[root@ ~]# yum install vsftpd #交互,麻烦
[root@ ~]# yum install vsftpd -y #非交互
2.yum直接安装公网的rpm包, 会自动查找当前系统上已有的仓库解决依赖关系
[root@ ~]# yum install https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/samba-4.8.3-4.el7.x86_64.rpm
3.yum直接安装本的rpm包,会自动查找当前系统上已有的仓库解决依赖关系
[root@ ~]# yum localinstall samba-4.8.3-4.el7.x86_64.rpm
4.下载一个rpm包到本地?(rpm和yum的安装区别)
rpm -ivh 进行安装 (安装过程碰到了依赖怎么处理呢?) 缺什么找什么,然后安装
yum localinstall (安装过程碰到了依赖怎么处理?) 他会自动处理依赖
1.分析软件的依赖
2.通过所有已经配置的repo源,上对应的仓库去寻找所需要的依赖包
3.安装所有的依赖包,最后安装本地的rpm
配置一个MongoDB的源
[root@container ~]# cat /etc/yum.repos.d/mongodb.repo
[mongodb-org]
name = MongoDB Repository
baseurl = https://mirrors.aliyun.com/mongodb/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck = 0
enabled = 1
gpgkey = https://www.mongodb.org/static/pgp/server-3.6.asc
1.下载rpm包到本地,使用rpm安装需手动安装依赖
[root@container ~]# wget https://mirrors.aliyun.com/mongodb/yum/redhat/7/mongodb-org/3.6/x86_64/RPMS/mongodb-org-3.6.0-1.el7.x86_64.rpm
[root@container ~]# rpm -ivh mongodb-org-3.6.0-1.el7.x86_64.rpm
warning: mongodb-org-3.6.0-1.el7.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID 91fa4ad5: NOKEY
error: Failed dependencies:
mongodb-org-server = 3.6.0 is needed by mongodb-org-3.6.0-1.el7.x86_64
mongodb-org-shell = 3.6.0 is needed by mongodb-org-3.6.0-1.el7.x86_64
mongodb-org-mongos = 3.6.0 is needed by mongodb-org-3.6.0-1.el7.x86_64
mongodb-org-tools = 3.6.0 is needed by mongodb-org-3.6.0-1.el7.x86_64
2.通过yum安装本地rpm包
#通过yum localinstall本地方式安装软件,,如果安装的包没有配置对应源需先配置源解决依赖
[root@container ~]# yum localinstall mongodb-org-3.6.0-1.el7.x86_64.rpm
--> Finished Dependency Resolution
Error: Package: mongodb-org-3.6.0-1.el7.x86_64 (/mongodb-org-3.6.0-1.el7.x86_64)
Requires: mongodb-org-mongos = 3.6.0
Error: Package: mongodb-org-3.6.0-1.el7.x86_64 (/mongodb-org-3.6.0-1.el7.x86_64)
Requires: mongodb-org-server = 3.6.0
Error: Package: mongodb-org-3.6.0-1.el7.x86_64 (/mongodb-org-3.6.0-1.el7.x86_64)
Requires: mongodb-org-tools = 3.6.0
Error: Package: mongodb-org-3.6.0-1.el7.x86_64 (/mongodb-org-3.6.0-1.el7.x86_64)
Requires: mongodb-org-shell = 3.6.0
You could try using --skip-broken to work around the problem
** Found 2 pre-existing rpmdb problem(s), 'yum check' output follows:
containerd.io-1.2.6-3.3.el7.x86_64 has installed conflicts containerd: containerd.io-1.2.6-3.3.el7.x86_64
containerd.io-1.2.6-3.3.el7.x86_64 has installed conflicts runc: containerd.io-1.2.6-3.3.el7.x86_64
#以上是分析依赖,在本地没有找到相关依赖仓库,需要配置对应仓库源,配置上面MongoDB的源即可自动解决依赖
[root@container ~]# yum localinstall mongodb-org-3.6.0-1.el7.x86_64.rpm
------------------------------------------------------------------------
2.使用yum重新安装软件包的方式
[root@ ~]# rm -f /etc/vsftpd/vsftpd.conf
[root@ ~]# yum reinstall vsftpd
[root@ ~]# rpm -qc vsftpd
------------------------------------------------------------------------
3.使用yum更新软件包
1.对比Linux已安装的软件和yum仓库中的软件, 有哪些需要升级
[root@ ~]# yum check-update
2.更新acl软件
[root@ ~]# yum update acl -y
3.更新整个系统所有的软件,包括内核 (通常刚装完系统会进行执行) 非常危险
[root@ ~]# yum update -y
4.使用yum删除软件包
[root@container ~]# yum install vsftpd -y
[root@container ~]# yum remove vsftpd -y
5.与yum仓库相关指令(扩展了解)
#1.查看当前可用的仓库
[root@ ~]# yum repolist
#2.查看所有的仓库(不管是否可用)
[root@ ~]# yum repolist all
如何启用或禁止仓库[两种方式]
1.找到该仓库的repo文件,将里面的enable 修改为 0不启用 1启动
2.gzip /etc/yum.repos.d/xx.repo 压缩该文件,让该文件失效
#3.查找一个命令或文件所属的软件包是什么?
方式一: rpm查询
[root@ ~]# rpm -qf $(which cd)
bash-4.2.46-31.el7.x86_64
PS: rpm需要知道命令的绝对路径, 如果不存在该命令是无法查找到该命令所属的软件包
方式二: yum查询
[root@ ~]# yum provides cd
[root@ ~]# yum provides ifconfig
PS: yum不需要知道命令的绝对路径,只需要知道命令即可
yum会通过所有已启用的仓库进行查找那些软件包中涵盖了需要查询的命令
#总结
PS: 查询命令来自于哪个软件,使用yum的方式进行查询
1.如果查询不到,检查命令是否写错,如果写错,修改即可.
2.如果修改命令还是查询不到,请检查是否仓库真的没有软件包涵盖此命令, 建议添加更多yum源(仓库)
6.与yum缓存相关指令(扩展了解)
1.缓存rpm包方式一、修改yum全局配置文件
[root@ ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1 #启动缓存
2.缓存rpm包方式二、只下载不安装【了解即可】
[root@ ~]# yum install -y yum-plugin-downloadonly #插件
[root@ ~]# yum install httpd -y --downloadonly --downloaddir=/tmp #将下载包缓存到tmp目录下
3.清除yum缓存
[root@ ~]# yum clean all #清除所有的缓存信息
[root@ ~]# yum clean packages #清除缓存的软件包
7.组包相关指令,(了解即可)
[root@ ~]# yum groups list
#安装一整个组的软件
[root@xuliangwei ~]# yum groups install Development tools \
Compatibility libraries \
Base Debugging Tools
#yum删除包组
[root@ ~]# yum groups remove -y Base
8.历史记录指令,(了解即可)
1.查看历史执行yum命令
[root@ ~]# yum history
2.查询历史执行yum命令ID详细信息
[root@ ~]# yum history info N
3.撤销历史执行过的yum命令
[root@ ~]# yum history undo N
3.如何搭建一个本地的yum仓库
1.准备一个iso镜像文件 (它里面有很多的rpm包,可以使用 wget tree )
连接上虚拟机
2.挂载我们的光盘至本地的某个目录下
[root@container ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
3.注释掉所有的repo文件,然后自己 新添加一个repo文件 ( 添加一个本地源 )
[root@container ~]# gzip /etc/yum.repos.d/*
[root@container ~]# cat /etc/yum.repos.d/test.repo
[local-test]
name = Local Packages
baseurl = file:///mnt
enabled = 1
gpgcheck = 0
#注释:
[root@container ~]# cat /etc/yum.repos.d/test.repo
[local-oldboy] #仓库名称,可随意表示
name = Local Packages #仓库的描述 可通过 yum repolist查看
baseurl = file:///mnt #我们的仓库在那里,使用什么协议访问有http:// ftp:// file://
enabled = 1 #是否启用该仓库 1 表示启动 0表示不启用
gpgcheck = 0 #是否要校验软件包的合法性 ( 0 不校验 )
4.使用yum命令安装软件测试
[root@container ~]# yum remove wget -y
[root@container ~]# yum install wget
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
============================================================================
Installing:
wget x86_64 1.14-15.el7_4.1 local-test 547 k
Transaction Summary
=================================================================
Install 1 Package
总结
1.yum 源(地址) ---> ( 公网| 本地 ) (仓库平台) 仓库里面就是一推的rpm
2.yum相关的指令
yum install 安装
yum reinstall 重装
yum update 更新
yum remove 删除
yum repolist 查看仓库总和的rpm包
yum repolist all 查看所有的仓库 ( 包括启用和禁用 )
yum provides 查询命令是 哪个仓库下的哪个软件包提供
yum groups install 安装组包
yum groups remove 移除组包
yum history
yum history info
yum history undo
yum clean all 清理所有的缓存
yum clean packages 清理所有已缓存的rpm包
浙公网安备 33010602011771号