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
相关推荐
实名上网宋凯宣7 小时前
Django
后端·python·django
利威尔xu8 小时前
Go IM 源码实战(14):本地缓存快 3000 倍,失效却难 10 倍
后端·缓存·微服务·面试·golang
逃逸线LOF9 小时前
Ribbon负载均衡原理(Irule组件、源码分析)
后端·spring cloud·ribbon
慢云智慧空间9 小时前
从设备智能到空间理解,空间智能终端解决方案商如何重新定义行业标准
后端
利威尔xu9 小时前
Go IM 源码实战(13):30 个会话只有 2 个红点,未读数错在三条路径
redis·后端·微服务·面试·golang
薛定谔的猫-菜鸟程序员10 小时前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
IT_陈寒12 小时前
SpringBoot多环境配置把我坑惨了,这个踩坑经验你最好看看
前端·人工智能·后端
码事漫谈12 小时前
DeepSeek 搞了个 "Super-agent",但不是超级智能
后端
吴凡wudianmei12 小时前
从 0 搭一个 AI Agent(四):SSE 跑通之后,三处“契约错配”与它们的修复边界
前端·后端·aigc
小兔子12 小时前
defer 的参数在写下那一刻就求值了,循环里这样写会踩坑
后端