马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Yum 源到底是个什么东西
Windows 装软件去应用商店,手机装软件去应用商城,Linux 装 rpm 软件走的是 yum 仓库——它就是 Linux 世界的应用商店。yum install vim 这一条命令背后,yum 会去配置的仓库地址里找包、找依赖、下载、安装,全部自动完成。
那仓库地址从哪来?就写在 /etc/yum.repos.d/ 目录下那些 .repo 文件里。所以「配置 yum 源」本质上就是改这些 .repo 文件里的地址。
Yum 源的两种类型
- 本地 yum 源:仓库就在本机,一般是把系统镜像(ISO)挂载上来当仓库。不需要联网,适合内网机器、离线装机、无外网的测试环境。
- 网络 yum 源:仓库在远程服务器上,必须联网。用得多的主要是这一种,除非你是断网环境。
这篇讲本地源的做法,同时也给一份能直接抄的网络源配置。
一、准备镜像并挂载
先把 ISO 镜像传上去(可以用 Xshell/Xftp 拖,或 scp),然后建挂载点并挂载:
# 建挂载目录
mkdir /media/cdrom
# 挂载镜像(/dev/cdrom 在这里指向那个 iso)
mount /dev/cdrom /media/cdrom
# 确认能看内容
ls /media/cdrom
# 应该能看到 Packages/ repodata/ 之类目录
如果是把 iso 文件直接挂到 Loop 设备:
mount -o loop /root/CentOS-7-x86_64-DVD.iso /media/cdrom
生产上建议写进 /etc/fstab,重启自动挂:
/dev/cdrom /media/cdrom iso9660 defaults 0 0
二、清掉原来的网络源
进配置目录:
cd /etc/yum.repos.d/
ls
一般会看到 CentOS-Base.repo、CentOS-Media.repo 等一堆。两个思路:
- 不删只改名(更安全):
mv CentOS-Base.repo CentOS-Base.repo.bak,让它不生效但不丢文件。
- 删干净重来:
rm -f CentOS-Base.repo。
因为 CentOS-Base.repo 里指向的是网络源,留着它本地源就白配了。
三、启用本地源配置文件
打开 CentOS-Media.repo:
vi CentOS-Media.repo
把里面的:
enabled=0
改成:
enabled=1
同时确认 baseurl 指向挂载点,一般是:
baseurl=file:///media/cdrom
保存退出:按 Esc → 按住 Shift + : → 输入 wq → 回车。
如果 gpgcheck=1 且校验失败(内网常见),先改成 gpgcheck=0 跳过签名校验。
四、验证并试用
# 看仓库能不能列出来
yum repolist
能看到 c7-media 之类的本地仓库和包数量就成功了。试着装个包:
yum install -y vim
全程不走外网、秒装完,本地源就通了。
五、Yum 常用命令
# 安装:默认从仓库装,多个包空格隔开;-y 跳过交互确认
yum install 包名 -y
# 装本地指定路径的 rpm(不走仓库)
yum install ./xxx.rpm
# 或
yum localinstall ./xxx.rpm
# 卸载
yum remove 包名
yum erase 包名
# 更新:升级仓库里所有比本机已安装新 version 的软件
yum update
# 只升级指定软件
yum update 包名
# 搜索
yum search mysql
# 查看某个包提供了哪些文件 / 属于哪个包
yum provides /usr/bin/vim
装之前先 yum list | grep 包名 确认包在不在仓库里,能省掉一半「无匹配」的困惑。
六、进阶:手写一个自定义 .repo
不想动系统自带的,直接新建自己的配置文件,后缀必须是 .repo:
vi /etc/yum.repos.d/local.repo
内容模板:
[local]
name=local repo
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
四个字段含义:
| 字段 | 作用 |
[local] | 仓库 ID,不能和已有的重复,别带特殊符号 |
name | 仓库描述,可写可不写 |
baseurl | 仓库路径,本地用 file://,网络源用 http:///https:// |
enabled | 是否启用,1 启用,0 停用 |
gpgcheck | 是否校验包签名,0 不校验,1 校验 |
写网络源就把 baseurl 换成阿里云/华为云的地址,例如:
[ali]
name=aliyun
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
enabled=1
gpgcheck=0
七、排错清单
Could not resolve host:网络源但没网 / DNS 没配,本地源不受影响。
Cannot find package:yum clean all && yum makecache 重建缓存后再试——改完 repo 不清缓存是最常见的原因。
yum repolist 里看不到新仓库:配置文件后缀不对(必须是 .repo),或者 enabled=0 忘了改,或者 baseurl 路径写错导致 repodata 读不到。
Error: cannot retrieve repodata/repomd.xml:挂载没成功,先 ls /media/cdrom 确认目录里有内容。
- 改完所有配置记得
yum clean all && yum makecache 让新源真正生效。
小结
本地 yum 源三步走:挂载镜像 → 干掉 Base 源、把 Media 源 enabled=0 改成 1(或自己写 .repo)→ yum clean all && yum makecache,然后 yum repolist 验货。核心就一句话:yum 装包靠的是 .repo 文件里的 baseurl,改源就是改地址,改完必须清缓存。
qidao123.com企服评测-应用市场 编辑提示 |