yum离线库制作

常用操作

列出rpm包的文件

bash 复制代码
rpm -qpl packetname.rpm

列出所有软件库

bash 复制代码
yum repolist all

更新元数据

yum使用xml来存储包的依赖信息,如果希望将元信息缓存到本地。

bash 复制代码
yum makecache

清除缓存包

bash 复制代码
yum clean all

Yum保存下载的rpm包不删除

yum下载的rpm文件包安装完全部自动清除安装文件。修改一下yum的设置,可以让他不删除下载的rpm。把/etc/yum.conf文件中的keepcache=0改为keepcache=1即可。rpm文件包保存目录为:/var/cache/yum

/etc/yum.conf包含yum更新软件需要用的URL.

bash 复制代码
[main]
cachedir=/var/cache/yum/$basearch/$releasever
# 是否缓存rpm包,默认情况下为0,即当安装成功时,会将下载的rpm包删除
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5

yum只下载不安装

--downloadonly选择

缺点是不会下载已经安装的包,如果说A机器上有个包装了,而离线机器B某个包没有装,那就不灵了。

bash 复制代码
yum -y install --downloadonly  --downloaddir=/root perl

离线安装

在线机器下载rpm.*文件,拷贝离线机器安装。安装方式还是使用yum,不过yum使用的是本地库。

  1. 下载本地库制作软件createrepo
bash 复制代码
yum install createrepo -y
  1. 添加两个文件夹用于下载,并下载rpm文件

创建下载文件夹

bash 复制代码
mkdir -p /var/rpm/repo
mkdir -p /var/rpm/repo-installroot

下载rpm(以docker为例)

bash 复制代码
yum install --downloadonly --installroot=/var/rpm/repo-installroot \
	--releasever=7 --downloaddir=/var/rpm/repo docker-ce
  1. 制作本地库

将下载的rpm包变成本地库

bash 复制代码
createrepo --database /var/rpm/repo
rm -rf /var/rpm/repo-installroot
  1. /var/rpm/repo拷贝到离线机

/etc/yum.repos.d中添加一个文件(e.g. offline.repo):

bash 复制代码
[offline-docker]
name=CentOS-$releasever - My Repository
baseurl=file:///var/rpm/repo
enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

安装docker-ce

bash 复制代码
yum --disablerepo=\* --enablerepo=offline-docker install docker-ce

本地库多次改变需要清除yum缓存的元数据(比如加了一些rpm包)

bash 复制代码
 yum --disablerepo=\* --enablerepo=offline-myrepo clean metadata

搭建本地yum私库

yum仓库只需要将带rpm包的本地目录(目录中含有repodata/repomd.xml)通过nginx暴露出来。

  1. 首先基于上面离线安装章节,在联网机器上下载所需rpm包并制作本地库。

  2. 在离线yum私库机器上安装nginx

  3. 配置nginx配置文件

    bash 复制代码
    server {
           listen 8080;
           server_name  _;
           # 根目录指向 Yum 仓库的本地存储路径
           root /data/yumrepos/repo;
    
           # 允许列出目录(方便查看仓库结构,可选)
           autoindex on;
           autoindex_exact_size off;
           autoindex_localtime on;
    
           # 日志配置(可选)
           access_log /var/log/nginx/yum-repo-access.log;
           error_log /var/log/nginx/yum-repo-error.log;
    
           # 处理请求的默认规则
           location / {
              try_files $uri $uri/ =404;
           }
        }

    /data/yumrepos/repo目录结构如下所示:

    bash 复制代码
    # ls  -al /data/yumrepos/repo/* |grep -v rpm			
    /data/yumrepos/repo/repodata:
    总用量 924
    -rw-r--r-- 1 root root   3096  8月 21 16:54 repomd.xml
  4. 其他离线机器配置从此离线yum私库拉取:

    • /etc/yum.repos.d/base.repo

      bash 复制代码
      [local-base]
      name=Intranet Base Repository
      baseurl=http://<IP>:8080/
      enabled=1
      gpgcheck=0

troubleshooting

  1. 检查rpm的安装脚本
bash 复制代码
rpm --scripts -qlp  xx.rpm
相关推荐
杨利杰YJlio1 小时前
KB5121003更新详解:安全启动证书、AI组件、资源管理器与安装验证
前端·javascript·后端
忙碌碌粒粒橙1 小时前
《用户付一次钱,你的系统为什么处理了两遍:Webhook 重复投递避坑指南》
后端
数字化探索者笔记1 小时前
从零搭建:VMware 银河麒麟V10部署 OceanBase 4.2.5 企业版集中式数据库
后端
西门老铁1 小时前
JWT 是什么?三段式结构、签名原理与 6 个安全坑一次讲透
后端·面试
Codelinghu1 小时前
DeepSeek Harness 出来了,干硬件的我琢磨了一下它到底能干啥
后端
eralong1 小时前
Java 面向对象:继承、多态、接口
java·后端
苏三说技术2 小时前
DeepSeek Harness必装的10个插件
后端
阿弱2 小时前
graph-core 策略合并机制的设计与用法
后端·agent
fatcoder2 小时前
玩转Docker 08 — 实战:容器化真实后端并编排
后端·docker·容器
神奇小汤圆2 小时前
从原始的CRUD 到高并发架构:关于秒杀系统的问题拆解与推演
后端