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
相关推荐
beata1 小时前
Spring Boot基础-3:Spring Boot 4.x 配置文件全攻略与多环境切换
spring boot·后端
用户7344028193421 小时前
Spring Boot 配置线程池详解,并使用@Async,执行异步方法
后端
Oneslide1 小时前
disql 会提示「输入 xxx 的值:」
后端
Oneslide2 小时前
达梦数据库开启自动提交
后端
锦木烁光2 小时前
从零构建工业级流水号引擎:Spring Boot 2.7 + Redis 原子递增 + AntD Pro 全栈实战
后端
jolimark2 小时前
Spring Boot 集成 Kettle
java·spring boot·后端
用户7344028193422 小时前
Spring Boot使用@Async实现异步调用:ThreadPoolTaskScheduler线程池的优雅关闭
后端
sthnyph2 小时前
Spring Framework 中文官方文档
java·后端·spring
zb200641202 小时前
Spring Boot 实战篇(四):实现用户登录与注册功能
java·spring boot·后端