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
相关推荐
超梦dasgg6 小时前
Spring AI 智能航空助手项目实战
java·人工智能·后端·spring·ai编程
lifewange6 小时前
如何设计一个 RESTful API
后端·http·restful
安德鲁20226 小时前
Spring Boot + Undertow 全栈架构深度剖析时序图
后端
码事漫谈6 小时前
AI 正在重塑职场:有人乘风破浪,有人悄然掉队
后端
用户97436970725286 小时前
5分钟搭建企业级实时消息推送系统
后端·websocket
counting money6 小时前
Spring框架基础(配置篇)
java·后端·spring
生活真难6 小时前
SpringCloud - 任务调度 - xxl-job
后端·spring·spring cloud
Nyarlathotep01138 小时前
JUC工具(3):StampedLock的基础和原理
java·后端
直奔標竿8 小时前
Java开发者AI转型第二十二课!Spring AI 个人知识库实战(一)——架构搭建与核心契约落地
java·人工智能·后端·spring·架构
清汤饺子8 小时前
【译】我的 AI 进阶之路:从怀疑到深度整合
前端·javascript·后端