浅谈yum命令以及yum仓库的几种做法
yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
Yum 也有自己的源头,俗称 Yum源,一般yum源有三种做法。
1.本地yum源
[AppStream] #yum标记,名字随便起
name=简单描述
baseurl=file:///var/www/html/centos/8/os/x86_64/AppStream
#注意这个源头一定找准确光盘或者iso文件不是yum源,必须找到“repodata”数据库所在的路径才是准确的yum源
enabled=1 #此包,0是禁用,1是被启用
gpgcheck=0 #这个是公钥,0是禁用,1是启用
这样一个yum本地仓库就建立起来了,建立后可以用
yum repolist 查看仓库里面的rpm包的一些情况。
2.网络yum源,现在互联网提供不少稳定的yum源,可以借用他们提供的仓库源
- 阿里云repo文件 http://mirrors.aliyun.com/repo/
- CentOS系统的yum源
阿里云: https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
清华大学: https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/x86_64/
3.EPEL的yum源
阿里云: https://mirrors.aliyun.com/epel/$releasever/x86_64
4.阿里巴巴开源软件
https://opsx.alibaba.com/
以上提供互联网都很稳定,中国境内基本常用的是阿里云的仓库源,配置一样,只需要把网址改下填进去即可,或者我们直接利用他们提供的自动配置工具即可。
注意要在epro目录下再安装
cd /etc/yum.repos.d
wget http://mirrors.aliyun.com/repo/epel-7.repo
3. 局域网ftp服务YUM仓库
如果环境碰到批量安装一批机器,同时配置一样的rpm包,如果用本机yum源这样操作量很大,而采用网络源呢,因为初始化配置后,所有机器的yum源都是一样,这样会加大以太网的负荷,所以就产生了第三种的仓库,本地局域网ftp服务YUM仓库。
实现原理就是用一台干净的linux机器,把我们所需的yum源包都下载到这个机器上,然后借助 httpd 服务来局域网访问,快速也不会给以太网造成负荷。
- 首先给机器安装httpd服务
yun -y install httpd
- 安装完成后启动 httpd 服务并加入自启动
systemctl start httpd.service
systemctl enable httpd.service
- 检查防火墙 firewall 是否关闭
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable --now firewalld.service
- 用 ifconfig 检查本机 IP 然后用局域网访问
如果出现这个,说明安装成功。 - 我们进入 httpd 访问文件的目录,然后创建所需要的仓库路径
cd /var/www/html
mkdir -p centos/{6,7,8}/os/x86_64
# 这里我装的是centos6 centos7 centos8的仓库
[root@Centos7 html]# tree -d -L 4
.
├── centos
│ ├── 6
│ │ └── os
│ │ └── x86_64
│ ├── 7
│ │ └── os
│ │ └── x86_64
│ └── 8
│ └── os
│ └── x86_64
- 检查三个光盘的 UUID 号,然后修改 /etc/fstab 里面的配置文件达到开机自动挂载光盘到指定的YUM仓库位置。
lsblk
blkid /dev/sr0
/dev/sr0: UUID="2019-08-15-21-52-52-00" LABEL="CentOS-8-BaseOS-x86_64" TYPE="iso9660" PTTYPE="dos"
blkid /dev/sr1
/dev/sr1: UUID="2018-06-29-11-20-20-00" LABEL="CentOS_6.10_Final" TYPE="iso9660" PTTYPE="dos"
blkid /dev/sr2
/dev/sr2: UUID="2019-09-09-19-08-41-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
这样就得到了光盘的 UUID .文件描述 文件类型 等,这些参数fstab文件都需要。
- 开始修改 /etc/fstab 里面的配置文件
UUID=ca02ca33-a08a-498a-83d8-337b8cc99508 / xfs defaults 0 0
UUID=3b5ca6bb-0d70-4b40-970b-ec57424622bf /boot xfs defaults 0 0
UUID=f5d9456c-83cd-4b48-81a6-2819b851d1d8 /data xfs defaults 0 0
UUID=4b4a8a3d-f232-42ac-908c-bec4ef59d7b0 swap swap defaults 0 0
UUID=2019-09-09-19-08-41-00 /var/www/html/centos/7/os/x86_64 iso9660 defaults 0 0
#挂载的是7的光盘sr0
UUID=2019-08-15-21-52-52-00 /var/www/html/centos/8/os/x86_64 iso9660 defaults 0 0
#挂载的是8的光盘sr1
UUID=2018-06-29-11-20-20-00 /var/www/html/centos/6/os/x86_64 iso9660 defaults 0 0
#挂载的是7的光盘sr2
这样然后重启机器,结果如下:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 50G 0 part /
├─sda3 8:3 0 2G 0 part [SWAP]
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 100G 0 part /data
sr0 11:0 1 6.7G 0 rom /var/www/html/centos/8/os/x86_64
sr1 11:1 1 3.7G 0 rom /var/www/html/centos/6/os/x86_64
sr2 11:2 1 10.3G 0 rom /var/www/html/centos/7/os/x86_64
这样就就算成功了
- YUM 仓库地址如下:
centos6的地址: http://192.168.39.9/centos/6/os/x86_64/
centos7的地址: http://192.168.39.9/centos/7/os/x86_64/
centos8的地址: http://192.168.39.9/centos/8/os/x86_64/
到此YUM仓库配置完成。
- 此处插一小段,createrepo [options] <directory> 这个合适可以把我们编译某一软件时候需要的依赖包收集全并打包后,可以做为一个特有的仓库,这样如果生产环境批量需要更新同一款软件时,就可以用yum 一键安装了。
yum语法参数如下:
- 选项
-h:显示帮助信息;
-y:对所有的提问都回答“yes”;
-c:指定配置文件;
-q:安静模式;
-v:详细模式;
-d:设置调试等级(0-10);
-e:设置错误等级(0-10);
-R:设置yum处理一个命令的最大等待时间;
-C:完全从缓存中运行,而不去下载或者更新任何头文件。
- 参数
install:安装rpm软件包;
update:更新rpm软件包;
check-update:检查是否有可用的更新rpm软件包;
remove:删除指定的rpm软件包;
list:显示软件包的信息;
search:检查软件包的信息;
info:显示指定的rpm软件包的描述信息和概要信息;
clean:清理yum过期的缓存;
shell:进入yum的shell提示符;
resolvedep:显示rpm软件包的依赖关系;
localinstall:安装本地的rpm软件包;
localupdate:显示本地rpm软件包进行更新;
deplist:显示rpm软件包的所有依赖关系。
createrepo [options] <directory>
示例如下:
- 安装
yum install #全部安装
yum install package1 #安装指定的安装包package1
yum groupinsall group1 #安装程序组group1
- 更新升级
yum update #全部更新
yum update package1 #更新指定程序包package1
yum check-update #检查可更新的程序
yum upgrade package1 #升级指定程序包package1
yum groupupdate group1 #升级程序组group1
- 查找显示
yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的程序包
yum list package1 显示指定程序包安装情况package1
yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包
- 删除程序
yum remove | erase package1 #删除程序包package1
yum groupremove group1 #删除程序组group1
yum deplist package1 #查看程序package1依赖情况
- 清除缓存
yum clean packages #清除缓存目录下的软件包
yum clean headers #清除缓存目录下的 headers
yum clean oldheaders #清除缓存目录下旧的 headers
; #查看程序package1依赖情况
- 清除缓存
yum clean packages #清除缓存目录下的软件包
yum clean headers #清除缓存目录下的 headers
yum clean oldheaders #清除缓存目录下旧的 headers