需求说明
由于服务器所属环境均为内网,当使用 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 包。
如上图Packages 中全量的 rpm 包,将整个 Packages 目录进行下载并上传到 Yum 源仓库服务器中:
- 批量下载使用命令:
wget -nd -r -l1 -A.rpm --no-parent http://mirror.centos.org/altarch/7/updates/aarch64/Packages/ -e robots=off
- 上传到Yum 源仓库服务器所在路径
[root@ecsyum-001 repodir] # pwd
/repodir
[root@ecsyum-001 repodir] # ls
Packages
reaterepo 命令安装
Packages包含所有的rpm包,利用createrepo命令生成新的repodata源数据,使yum服务可以使用该数据源。
- 在 Packages 目录中查找 cereaterepo 包:
[root@ecsyum-001 Packages] # ls /repodir/Packages/ | grep create
createrepo-0.9.9-28.el7.noarch.rpm
- 安装
[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
- 统一安装
将所有依赖包都列上一并进行安装:
[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
- 创建仓库索引
[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 服务测试使用
- 源地址修改
登录其他内网服务器,将 /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】
- 测试
[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
rpm包下载站:
nginx 安装参考:www.360doc.com/content/22/…