内网环境私有Yum源搭建教程

82 阅读3分钟

需求说明

由于服务器所属环境均为内网,当使用 Yum 命令时无法从互联网上进行包的安装/更新操作,为解决此问题,选用一台内网服务器进行Yum数据源制作及Yum服务使用,以供其他内网服务器访问。

私有Yum源搭建

服务器环境

[root@ecsyum-001 /] # arch
aarch64
[root@ecsyum-001 /] # cat /etc/centos-release
CentOS Linux release 7.5.1804 (AltArch)

rpm 包下载

基于服务器的版本等信息,在官网(wiki.centos.org/Download)找到… rpm 包。

image.png

image.png

如上图Packages 中全量的 rpm 包,将整个 Packages 目录进行下载并上传到 Yum 源仓库服务器中:

  1. 批量下载使用命令:
wget -nd -r -l1 -A.rpm --no-parent http://mirror.centos.org/altarch/7/updates/aarch64/Packages/ -e robots=off
  1. 上传到Yum 源仓库服务器所在路径
[root@ecsyum-001 repodir] # pwd
/repodir
[root@ecsyum-001 repodir] # ls
Packages

reaterepo 命令安装

Packages包含所有的rpm包,利用createrepo命令生成新的repodata源数据,使yum服务可以使用该数据源。

  1. 在 Packages 目录中查找 cereaterepo 包:
[root@ecsyum-001 Packages] # ls /repodir/Packages/ | grep create
createrepo-0.9.9-28.el7.noarch.rpm
  1. 安装
[root@ecsyum-001 Packages] # rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm
error: Failed dependencies:
deltarpm is needed by createrepo-0.9.9-28.el7.noarch
libxml2-python is needed by createrepo-0.9.9-28.el7.noarch
python-deltarpm is needed by createrepo-0.9.9-28.el7.noarch

报错,发现需要额外的依赖包,根据报错提示缺少上述依赖,确定依赖包存在于Packages中,同样进行包的查找:

[root@ecsyum-001 Packages] # ls /repodir/Packages/ | grep python-deltarpm
python-deltarpm-3.6-3.el7.aarch64.rpm
[root@ecsyum-001 Packages] # ls /repodir/Packages/ | grep libxml2-python
libxml2-python-2.9.1-6.el7.5.aarch64.rpm
[root@ecsyum-001 Packages] # ls /repodir/Packages/ | grep deltarpm
deltarpm-3.6-3.el7.aarch64.rpm
  1. 统一安装

将所有依赖包都列上一并进行安装:

[root@ecsyum-001 Packages] # rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm deltarpm-3.6-3.el7.aarch64.rpm python-deltarpm-3.6-3.el7.aarch64.rpm libxml2-python-2.9.1-6.el7.5.aarch64.rpm

问题1:如果发现还是缺少依赖包,请通过上面的方式依次列上统一安装。

问题2:包冲突,如

Preparing...                          ################################# [100%]
	file /usr/bin/xmlcatalog from install of libxml2-2.9.1-6.el7_9.6.aarch64 conflicts with file from package libxml2-2.9.1-6.el7_2.3.aarch64
	file /usr/bin/xmllint from install of libxml2-2.9.1-6.el7_9.6.aarch64 conflicts with file from package libxml2-2.9.1-6.el7_2.3.aarch64
	file /usr/lib64/libxml2.so.2.9.1 from install of libxml2-2.9.1-6.el7_9.6.aarch64 conflicts with file from package libxml2-2.9.1-6.el7_2.3.aarch64

可以先升级冲突的包,然后再统一安装

rpm -Uvh libxml2-2.9.1-6.el7.5.aarch64.rpm

rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm deltarpm-3.6-3.el7.aarch64.rpm python-deltarpm-3.6-3.el7.aarch64.rpm libxml2-python-2.9.1-6.el7.5.aarch64.rpm

4. 安装完毕,验证createrepo命令

[root@ecsyum-001 Packages] # createrepo --help
Usage: genpkgmetadata.py [options]

Options:
--version             show program's version number and exit
-h, --help            show this help message and exit
-q, --quiet           output nothing except for serious errors
 -v, --verbose         output more debugging info.
--profile             output timing/profile info.
-x EXCLUDES, --excludes=EXCLUDES
  1. 创建仓库索引
[root@ecsyum-001 Packages] # createrepo -po /repodir/Packages/ /repodir/Packages/
Spawning worker 0 with 10017 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

nginx 服务配置

启用nginx 服务(这里略过nginx的安装,如果没有可自行安装),以便其他内网服务器可以通过 ip 地址访问到 yum 源服务器,nginx 配置如下:

server {
    listen       80;
    server_name  localhost;
        location / {
            autoindex on;
            root   /repodir;
        }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
         root   html;
    }
}

yum 服务测试使用

  1. 源地址修改

登录其他内网服务器,将 /etc/yum.repos.d 中的文件删除只保留一个 CentOS-Base.repo 文件,并修改内容如下:

[base]
name=CentOS-localhost
# baseurl=file:///root/Packages
baseurl=http://[yum源服务器ip]/Packages
enabled=1
gpgcheck=0

注意:需要给Packages目录加权限【755】

  1. 测试
[root@ecsyum-001 ~] # yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base
Cleaning up list of fastest mirrors
Other repos take up 5.2 M of disk space (use --verbose for details)

[root@ecsyum-001 ~] # yum makecache
 Loaded plugins: fastestmirror
Determining fastest mirrors
base                                                         | 2.9 kB  00:00:00     
(1/3): base/primary_db                                       | 4.9 MB  00:00:00     
(2/3): base/filelists_db                                     | 6.2 MB  00:00:00     
(3/3): base/other_db                                          | 2.1 MB  00:00:00     
Metadata Cache Created

[root@ecsyum-001 ~] # yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                                repo name                                                       status
base                                                   CentOS-localhost                                                7,689

repolist: 7,689

其他

注意: 如果需要更新rpm包,wiki.centos.org/Download 的 Updates 地址中是更新的包(如下图),每次上传新的包到yum源服务器后都需要进行 createrepo 操作。 同时客户端服务器进行:
yum clean all
yum makecache
yum repolist

image.png

rpm包下载站:

nginx 安装参考:www.360doc.com/content/22/…

yum搭建:blog.csdn.net/qq_24795117…