centos7、8搭建本地离线yum仓库
最近项目中需要在服务器搭建本地离线yum仓库,并且需要兼容centos7和centos8,踩了不少坑,总结一下经验。
第一步 下载rpm包
centos7、8下载rpm包方式一样。如下载ansible软件包至本地/opt/package/repo/目录。 示例:
方式一: yum install --downloadonly --downloaddir=/opt/package/repo/ ansible
方式二: yum -y install yum-utils
yumdownloader --destdir=/opt/package/repo/ ansbile
注意:第一种不会下载已经安装了的软件包,因此推荐使用第二种方式下载。
第二步 创建repodata
centos7
使用用createrepo来创建repository仓库,如果系统里没有该命令的话需要先进行createrepo的安装。
yum -y install createrepo
cd /opt/package/repo/
createrepo ./
上述命令执行成功后会在该目录下创建一个repodata目录
centos8
centos8除了需要创建repodata 还需要创建modular metadata,如果只有repodata就会报错:No available modular metadata for modular package
- 安装modular metadata生成工具
yum install createrepo
yum install python3-devel python3 gcc
yum install python3-createrepo_c libmodulemd
git clone https://github.com/rpm-software-management/modulemd-tools.git
cd modulemd-tools/repo2module/
python3 setup.py install --user
- 创建repodata 和 modular metadata
cd /opt/package/repo/
createrepo ./
/root/.local/bin/repo2module -s stable -d . modules.yaml
modifyrepo_c --mdtype=modules modules.yaml repodata/
上述命令执行成功后会在该目录下创建一个repodata目录和一个modules.yaml文件
-
安装文件服务 提供本机软件包目录访问
以使用nginx为例。
yum install nginx
安装完成后修改/etc/nginx/nginx.conf文件,修改端口号为9999、将根目录指向本地/opt/package/repo/目录
重启nginx服务
访问 curl http://本机ip:9999/ 成功
-
配置yum源
创建centos-local.repo文件写入以下内容
[centos-local]
name=centos-local
baseurl=http://本机ip:9999/
gpgcheck=0
enabled=1
mv /etc/yum.repos.d /etc/yum.repos.d_bak
mkdir /etc/yum.repos.d
cp centos-local.repo /etc/yum.repos.d/
使用yum repolist可查看yum源仓库是否创建成功
成功后可以使用yum install离线安装软件包了。