构建自己基于 WEB 的 yum 仓库,但不是用于内网
▶ 构建自己的 yum 仓库,但不是用于内网
主要的操作是从 官方仓库 或者是 镜像站点 上下载 最新的 rpm包,根据对rpm包头部文件的分析来生成自己的软件仓库数据。
可以通过 脚本 对本地仓库进行检查,这样能与网络上的源保持一致。
通常这是 不需要 自己去创建 yum仓库 的,这是因为软件仓库要的 磁盘空间比较大,同时还要关注服务器的 CPU 和 内存。
▷ 下载 Web 软件 apache/httpd
[root@server ~]# dnf -y install httpd
[root@server ~]# systemctl start httpd
▷ 创建仓库的目录结构
[root@server ~]# tree /var/www/html/
/var/www/html/
0 directories, 0 files
此时是没有子目录的,准备在这里创建子目录在下面保存rpm文件。
要创建子目录的文件名自然是和官方的是一样的,可以通过 repo文件 中的 [] 中的内容来看。
[root@server ~]# cd /etc/yum.repos.d/
[root@server yum.repos.d]# cat rocky.repo
--snip--
[baseos]
--snip--
[baseos-debuginfo]
--snip--
这里的 baseos、baseos-debuginfo ... 是 repoid 也就是我们需要在 /var/www/html/ 的子目录中创建的文件名,
方便演示,这里我只是使用了 baseos、baseos-debuginfo 这两个,并不是全部。
[root@server ~]# mkdir -p /var/www/html/repos/{baseos,baseos-debuginfo}
[root@server ~]# tree /var/www/html/repos/
/var/www/html/repos/
├── baseos
└── baseos-debuginfo
2 directories, 0 files
▷ 通过reposync 同步 rpm文件 到本地
▷▷ reposync 和 yum-utils
[root@server ~]# dnf -y install dnf-utils
[root@server ~]# reposync -g -m --repoid=baseos --newest-only --download-metadata -p /var/www/html/repos
[root@server ~]# tree -L 2 -d /var/www/html/repos
/var/www/html/repos
├── baseos
│ ├── Packages
│ └── repodata
└── baseos-debuginfo
├── Packages
└── repodata
可以看到通过 reposync 的操作,在 /var/www/html/repos 目录下有 baseos 和 baseos-debuginfo,在各文件目录下面都有 Packages、repodata。
在早期的红帽版本中使用 reposync 进行类似的操作之后,是没有 repodata 这个目录的,这需要通过使用 createrepo 这个命令来生成 repodata 这个目录后它下面的文件。
createrepo 是一个对 rpm 文件进行索引建立的工具。大体功能就是对指定目录下的rpm文件进行检索,把每个rpm文件的信息存储到指定的索引文件中,这样方便远程命令在安装更新时进行检索。
[root@server repodata]# ll
total 8188
-rw-r--r--. 1 root root 637813 Aug 26 20:17 0d7a4af4bce725d6eaf0528a02120d919b2fdb9b84a99a8a7dadceb6f04ea2b1-other.sqlite.gz
-rw-r--r--. 1 root root 3737932 Aug 26 20:17 1beec8a47497f2c473b28c77b9aa311b60b1ded4d14939d3a19a063c4a72524c-primary.sqlite.gz
-rw-r--r--. 1 root root 1497502 Aug 26 20:17 5a842178-c434-43d8-9356-2e7ec781e303-PRIMARY.xml.gz
--snip--

浙公网安备 33010602011771号