软件包管理-yum
yum基础介绍
什么是yum
yum/dnf是RedHat及CentOS系统中的软件包管理器。他能通过互联网下载.rpm格式包进行安装,并能自行处理其依赖关系,不需要繁琐的一次次下载安装
什么是yum源
yum源就是一个网址。这个网址对应的就是一个仓库,这个仓库中有很多的rpm包。加一个源网址,就相当于是在添加一个仓库
client——ftp/http/file——yum地址——yum仓库(rpm包集合)
yum配置文件
CentOS的配置文件
[root@localhost ~]# vim /etc/yum.conf
[main]
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则不限制
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
配置yum源
1.配置阿里源
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
2.配置第三方yum源
[root@localhost ~]# [root@localhost ~]# wget -O /etc/yum.repos.d/epel.repo\ http://mirrors.aliyun.com/repo/epel-7.repo
3.nginx,zabbix,docker官方源
[root@localhost ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
yum日常操作
yum查询软件包
1.使用dnf/yum list查询所有仓库中的所有软件包
[root@localhost ~]# yum list
[root@localhost ~]# yum list | grep ftp
2.使用dnf/yum list installed查询所有已安装的软件包
[root@localhost ~]# yum list installed
3.使用dnf/yum provides查询系统命令来自于哪个软件包
[root@localhost ~]# rpm -qf $(which cd) #rpm需要知道绝对路径,如果不存在该命令是无法查找到该命令所属包
[root@localhost ~]# yum provides cd
yum安装软件包
1.使用dnf/yum install通过仓库获取软件包进行安装
[root@localhost ~]# yum install vsftpd #交互式,麻烦
[root@localhost ~]# yum install vsftpd -y #非交互式
2.使用yum localinstall 直接安装公网的rpm包, 会自动查找当前系统上已有的仓库,会自动解决依赖关系
[root@localhost ~]# yum install https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/samba-4.8.3-4.el7.x86_64.rpm
yum直接安装本的rpm包,会自动查找当前系统上已有的仓库解决依赖关系
[root@localhost ~]# yum localinstall samba-4.8.3-4.el7.x86_64.rpm
rpm与yun安装的区别
rpm -ivh 安装 :安装过程碰到了依赖怎么处理呢?
//缺什么找什么,然后安装什么
[root@localhost ~]# 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@localhost ~]# rpm -ivh mongodb-org-3.6.0-1.el7.x86_64.rpm
配置它的源
[root@localhost ~]# vim /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
===========================================================
yum localinstall :安装过程碰到了依赖怎么处理?
//他会自动处理依赖
1.分析软件的依赖
2.通过所有已经配置的repo源,上对应的仓库去寻找所需要的依赖包
3.安装所有的依赖包,最后安装本地的rpm
[root@localhost ~]# yum localinstall mongodb-org-3.6.0-1.el7.x86_64.rpm
yum重装软件包
当我们安装好了服务后,不小心删除了相关配置文件,此时就可以通过重装的方式修复
1.首先删除vsftpd配置主文件
[root@localhost ~]# rpm -qc vsftpd #列出主配置文件
[root@localhost ~]# rm -f /etc/vsftpd/vsftpd.conf #删除主配置文件
2.使用yum reinstall对软件进行重新安装
[root@localhost ~]# yum reinstall vsftpd #重新安装
3.检查vsftpd服务配置文件是否恢复,以及软件是否正常使用
[root@localhost ~]# rpm -qc vsftpd (全部恢复)
yum更新软件包
1.对比linux已安装的软件和yum仓库中的软件,有哪些需要升级
[root@localhost ~]# yum check-update
2.更新acl软件
[root@localhost ~]# yum update acl -y
3.更新整个系统所有的软件,包括内核(谨慎使用,通常装完系统会进行执行)
[root@localhost ~]# yum update -y
yum删除软件包——yum remove
[root@localhost ~]# yum install samba -y
[root@localhost ~]# yum remove samba -y
yum管理组包
1.使用yum groups install 安装一整组的软件
[root@localhost ~]# yum groups list
[root@localhost ~] yum groups install Development tools
Compatibility libraries
Base Debugging Tools
2.使用yum groups renove删除组包
[root@localhost ~]# yum groups remove -y Base
yum管理仓库
1.列出yum repolist源可用的软件仓库
[root@localhost ~]# yum repolist
[root@localhost ~]# yum repolist all(查看所有的仓库,包括禁用的)
2.通过yum-config-manager启用和禁用仓库
两种方式:
1)找到该仓库的repo文件,将里面的enable 修改为 0不启用 1启动
关闭仓库:[root@localhost ~]# yum-config-manager --disable mysql80-community
启用仓库:[root@localhost ~]# yum-config-manager --enable mysql80-community
2)gzip /etc/yum.repos.d/xx.repo 压缩该文件,让该文件失效
yum管理历史记录
了解即可:当我们删除某个软件时,希望撤销删除的操作,可以使用yum history undo
1.删除vsftp软件,然后查看操作记录
[root@localhost ~]# yum install httpd -y #安装hpptd
[root@localhost ~]# yum remove httpd -y #删除hpptd
[root@localhost ~]# yum history #查看事件ID
2.使用yum history undo Number撤销
[root@localhost ~]# yum history info 14 #事务完成属主等
[root@localhost ~]# yum history undo 14 #撤销事件,恢复软件
yum缓存软件包
1.缓存rpm包方法一:通过yum全局配置文件
[root@localhost ~]# vim /etc/yum.conf
keepcache=0 #启动缓存
[root@localhost ~]# yum install lrzsz -y #安装
[root@localhost ~]# find /var/cache/yum/ -type f -name "*.rpm" #查看相关缓存
2.缓存rpm包方法二:通过yum下载该软件包至本地,不进行安装
[root@localhost ~]# yum install httpd -y \
> --downloadonly \
> --downloaddir=/opt
3.清楚缓存
[root@localhost ~]# yum clean all #清理所有yum缓存信息,包括yum清理缓存
[root@localhost ~]# yum clean packages #仅清理所有缓存的软件包
构建yum仓库
在无网络环境下,但我们需要安装相应环境的安装包,这个时候我们就可以利用光盘搭建一个本地yum仓库
1.挂载镜像
[root@localhost ~]# mount /dev/cdrom /mnt/
2.备份原有仓库
[root@localhost ~]# gzip /etc/yum.repod/*
3.使用yum-config-manager命令可以快速添加一个本地仓库
[root@localhost ~]#yum install yum-utils -y
[root@localhost ~]#yum-config-manager --add-repo=“file:///mnt”
======================================================================
4.自行编辑一个.repo文件,将仓库信息储存在该文件
[root@localhost ~]# vim /etc/yum.repos.d/local.repo
[repo-local] #仓库名称
name = This Local Repo Database #仓库描述信息
baseurl = file:///data/base #仓库的url地址,格式:file://,ftp://,http;//等协议
enable = 1 #是否使用该yum源(0代表禁用,1代表启用)
gpgcheck = 0 #是否验证软件签名(0代表禁用,1代表启激活)
5.生成缓存信息
[root@localhost ~]# yum makecache
6.安装测试(成功)
[root@localhost ~]# yum install lrzsz -y
搭建企业级yum仓库
- 本地光盘提供基础软件包:Base
- yum缓存提供常用软件包:nginx,zabbix,docker
服务端操作配置
1.准备两台服务器
* 一台充当Server服务端; 一台充当Client客户端;
2.服务端操作如下:
1)提供几个仓库:
base仓库(光盘的数据):
zabbix仓库(互联网下载| 同步过来);
nginx仓库 (互联网下载)
=========================================================================================
2)将这几个目录做成仓库:
[root@magedu-node1 ~]# createrepo /var/ftp/zabbix/
[root@magedu-node1 ~]# createrepo /var/ftp/base/
[root@magedu-node1 ~]# createrepo /var/ftp/nginx/
=========================================================================================
基础源base软件包
[root@localhost ~]# mkdir -p /var/ftp/centos7
[root@localhost ~]# cp -rp /mnt/Packages/*.rpm /var/ftp/base/
第三方源的rpm软件包
[root@localhost ~]# mkdir -p /var/ftp/zabbix
[root@localhost ~]# vim wget_ngin_rpm
#!/usr/bin/bash
# 获取软件包名称
web_site="http://nginx.org/packages/centos/7/x86_64/RPMS/"
pkg_name=$(curl -s ${web_site} | grep "<a" | awk -F '"' '{print $2}')
# 遍历包名称,依次赋予给i变量;
for i in ${pkg_name}
do
wget -O /var/ftp/nginx/${i} ${web_site}/${i}
done
=========================================================================================
3)2.2) 准备一个ftp服务;将几个目录对外提供;
[root@localhost ~]# yum install vsftpd -y
[root@localhost ~]# systemctl restart vsftp
[root@localhost ~]# systemctl enable vsftpd
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
客户端操作配置
1) 客户端必须与服务端处于同一个局域网络中
2) 配置好yum源指向到服务端;
[root@localhost ~]# gzip /etc/yum.repos.d/*
[root@localhost ~]# vim /etc/yum.repos.d/all_in.repo
[base]
name = base
baseurl = ftp://10.0.0.200/base
enable = 1
gpgcheck = 0
[nginx]
name = Nginx Repo
baseurl = ftp://10.0.0.200/nginx
enable = 1
gpgcheck = 0
[zabbix]
name = Zabbix Repo
baseurl = ftp://10.0.0.200/zabbix
enable = 1
gpgcheck = 0