由于最近经常遇到无外网机器安装软件依赖问题,特此总结一下如何配置离线yum源
- 下载rpm离线包,下载之前,需要确保
服务器是minimal的系统
,防止已经有预先下载好的依赖。
# docker-ce repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 下载docker-ce以及它的依赖
yum install docker-ce-19.03.9 --downloadonly --downloaddir=/tmp/docker-ce-repo
- 安装createrepo模块,此模块支持创建本地yum源
# 删除createrepo依赖的rpm包,以防版本冲突
rpm -qa | grep libxml2 | xargs rpm -e --nodeps
rpm -qa | grep deltarpm| xargs rpm -e --nodeps
# 手动安装createrepo rpm
rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh libxml2-2.9.1-6.el7.4.x86_64.rpm
rpm -ivh libxml2-python-2.9.1-6.el7.4.x86_64.rpm
rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm
# rpm文件比如存放/tmp/localrepo, 在此目录下执行
createrepo -v /tmp/localrepo
# 更新当前yum源命令: createrepo --update /tmp/localrepo
# 添加repo文件,适当修改baseurl路径,指向rpm存放路径
- 在
/etc/yum.repos.d/
目录下面创建repo文件,baseurl
指向本地存放rpm的目录
# /etc/yum.repos.d/localrepo.repo,例如
[localrepo]
name=Local Repository
baseurl=file:///tmp/localrepo
gpgcheck=0
enabled=1
- 如果为了支持多台服务器同时使用这台服务器搭建的yum源,那
baseurl
不能是本地路径,首先需要用Python2创建httpserver,支持其他服务器可以访问到这台服务器的静态资源rpm文件
# 首先需要保证服务器包含python,一般服务器自带python 2.7
# 以下命令会启动一个httpserver,并把当前目录共享出去,比如在/tmp//localrepo下执行如下命令
nohup python -m SimpleHTTPServer 8080 &
- 修改
repo
文件中baseurl
值,指向这个httpserver
[localrepo]
name=Local Repository
baseurl=http://192.168.20.151:8080/
gpgcheck=0
enabled=1
- yum清理一下,并makecache,确保可以看到刚刚创建的localrepo
yum clean all
yum makecache
yum repolist