8: 软件包管理 - 搭建私有yum仓库
2021-03-09 本文已影响0人
随便写写咯
案例1: 配置CentOS-7使用系统安装光盘作为本地的yum仓库
- 临时挂载光盘到指定目录, 如/mnt/cdrom
[02:13:05 root@centos-7-1 ~]#mount /dev/cdrom /mnt/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
- 创建repo文件
[02:14:29 root@centos-7-1 ~]#vim /etc/yum.repos.d/CentOS-7.repo
[CentOS-7]
name=CentOS-7
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
- 测试软件安装
[02:18:38 root@centos-7-1 ~]#yum list httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
httpd.x86_64 2.4.6-93.el7.centos @CentOS-7
- 如果需要永久使用光盘为yum源, 需要把光盘进行永久挂载, 编写/etc/fstab文件
案例2: 配置CentOS-8使用系统安装光盘作为本地的yum仓库
- 临时挂载光盘到指定目录, 如/misc/cd
[02:55:22 root@CentOS-8-1 ~]#mkdir /misc/cd -pv
mkdir: created directory '/misc'
mkdir: created directory '/misc/cd'
[02:55:25 root@CentOS-8-1 ~]#mount /dev/cdrom /misc/cd
mount: /misc/cd: WARNING: device write-protected, mounted read-only.
- 创建repo文件, CentOS-8有两个yum源: BaseOS和AppStream, 需要设置两个仓库
[03:01:21 root@CentOS-8-1 ~]#vim /etc/yum.repos.d/CentOS-8.repo
[BaseOS]
name=BaseOS
baseurl=file:///misc/cd/BaseOS
gpgcheck=1
gpgkey=/etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[AppStream]
name=AppStream
baseurl=file:///misc/cd/AppStream
gpgcheck=0
[epel]
name=EPEL
baseurl=http://mirrors.aliyun.com/epel/$releasever/Everything/$basearch
gpgcheck=0
enabled=1
[extras]
name=extras
baseurl=https://mirrors.aliyun.com/centos/$releasever/extras/$basearch/os
gpgcheck=0
- 测试软件安装
[03:02:16 root@CentOS-8-1 ~]#yum -y install nginx
...
perl-constant-1.33-396.el8.noarch perl-interpreter-4:5.26.3-416.el8.x86_64
perl-libs-4:5.26.3-416.el8.x86_64 perl-macros-4:5.26.3-416.el8.x86_64
perl-parent-1:0.237-1.el8.noarch perl-threads-1:2.21-2.el8.x86_64
perl-threads-shared-1.58-2.el8.x86_64
CentOS-6的yum源案例:
[BaseOS]
name=BaseOS
baseurl=https://mirrors.aliyun.com/centos/6/os/x86_64/
https://mirrors.huaweicloud.com/centos/6/os/x86_64/
https://mirrors.163.com/centos/6/os/x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-6
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/6/x86_64/
https://mirrors.huaweicloud.com/epel/6/x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-6
[extras]
name=extras
baseurl=https://mirrors.aliyun.com/centos/6/extras/x86_64/
https://mirrors.huaweicloud.com/centos/6/extras/x86_64/
https://mirrors.163.com/centos/6/extras/x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-6
CentOS-7的yum源案例:
[BaseOS]
name=BaseOS
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
https://mirrors.huaweicloud.com/centos/7/os/x86_64/
https://mirrors.163.com/centos/7/os/x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7
[extras]
name=extras
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
CentOS-8的yum源案例:
[BaseOS]
name=BaseOS
baseurl=https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/
https://mirrors.huaweicloud.com/centos/8/BaseOS/x86_64/os/
https://mirrors.163.com/centos/8/BaseOS/x86_64/os/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
[AppStream]
name=AppStream
baseurl=https://mirrors.aliyun.com/centos/8/AppStream/x86_64/os/
https://mirrors.huaweicloud.com/centos/8/AppStream/x86_64/os/
https://mirrors.163.com/centos/8/AppStream/x86_64/os/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/8/Everything/x86_64/
https://mirrors.huaweicloud.com/epel/8/Everything/x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8
[extras]
name=extras
baseurl=https://mirrors.aliyun.com/centos/8/extras/x86_64/os/
https://mirrors.huaweicloud.com/centos/8/extras/x86_64/os/
https://mirrors.163.com/centos/8/extras/x86_64/os/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
Ubuntu-1804的apt源案例:
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
案例3: 搭建内网私有yum仓库, 为CentOS 7&8 提供软件下载服务
环境准备:
yum仓库: CentOS-8 - 10.0.0.82
客户端: CentOS-7-1 - 10.0.0.237
客户端:CentOS-8-1 - 10.0.0.81
yum仓库服务器需要关闭防火墙和SElinux
下载所有yum仓库的相关包和meta数据
# CentOS-8 dnf 工具集成
dnf reposync --help # 查看帮助
# 默认只下载rpm包, 不下载meta数据, 需要指定--download-metadata 才能下载meta
dnf reposync --repoid=REPOID --download-metadata -p /path
# CentOS 7 以前版本, reposync工具来自于yum-utils包
reposync --repoid=REPOID --download-metadata -p /path
1. 在yum仓库服务器挂载安装光盘, 因为, 需要将光盘中的包和元数据, 拷贝到yum服务器本地的文件夹
[12:22:00 root@yum-server ~]#mount /dev/sr0 /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
[12:23:43 root@yum-server ~]#ls /mnt
AppStream BaseOS EFI images isolinux media.repo TRANS.TBL
2. 基于光盘, 搭建临时yum仓库, 下载必要的安装包, 比如搭建仓库用的http服务器
服务器无法连网的情况下, 在配置yum仓库时, 就必须使用光盘把安装包和元数据先导入到本地, 再对内部的服务器提供软件下载
[12:23:47 root@yum-server ~]#cd /etc/yum.repos.d/
[12:34:47 root@yum-server /etc/yum.repos.d]#mv * /opt
[12:36:54 root@yum-server /etc/yum.repos.d]#ll /mnt/BaseOS/ # BaseOS的repo所在目录, yum源中写这个目录即可
total 298
dr-xr-xr-x 2 root root 301056 Jun 9 2020 Packages
dr-xr-xr-x 2 root root 4096 Jun 9 2020 repodata
[12:36:59 root@yum-server /etc/yum.repos.d]#ll /mnt/AppStream/ # 同理BaseOS源
total 978
dr-xr-xr-x 2 root root 997376 Jun 9 2020 Packages
dr-xr-xr-x 2 root root 4096 Jun 9 2020 repodata
[12:34:50 root@yum-server /etc/yum.repos.d]#vim tmp.repo
[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream
gpgcheck=0
yum -y install httpd; systemctl enable --now httpd
3. 创建yum仓库目录结构
CentOS-8的目录: mkdir -pv /var/www/html/centos/8/{BaseOS,AppStream}/x86_64/os
CentOS-7的目录: mkdir -pv /var/www/html/centos/7/os/x86_64
[12:44:45 root@yum-server /var/www/html]#tree
.
└── centos
├── 7
│ └── os
│ └── x86_64
└── 8
├── AppStream
│ └── x86_64
│ └── os
└── BaseOS
└── x86_64
└── os
11 directories, 0 files
4. 将光盘中的包和元数据拷贝到本地
CentOS8版本的软件包在光盘上存放在AppStream/Packages 和 BaseOS/Packages 目录, 7的包存放在Packages目录, 元数据存在 repodata 目录
拷贝时要注意包和元数据存放的路径
将CentOS8光盘中的包和元数据拷贝到yum仓库本地
cp -r /mnt/AppStream/* /var/www/html/centos/8/AppStream/x86_64/os
cp -r /mnt/BaseOS/* /var/www/html/centos/8/BaseOS/x86_64/os
[12:50:23 root@yum-server ~]#du -sh /var/www/html/centos/
7.1G /var/www/html/centos/

5. CentOS-8 客户端配置yum源
CentOS-8: 10.0.0.81
[13:04:28 root@CentOS-8-1 /etc/yum.repos.d]#vim CentOS.repo
[BaseOS]
name=BaseOS
baseurl=http://10.0.0.8/centos/8/BaseOS/x86_64/os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[AppStream]
name=AppStream
baseurl=http://10.0.0.8/centos/8/AppStream/x86_64/os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[13:05:49 root@CentOS-8-1 /etc/yum.repos.d]#yum list httpd
BaseOS 36 MB/s | 2.2 MB 00:00
AppStream 63 MB/s | 5.7 MB 00:00
Available Packages
httpd.x86_64 2.4.37-21.module_el8.2.0+382+15b0afa8 AppStream
6. 对于CentOS7的安装包和元数据, 只需要切换挂载7的安装光盘到yum服务器, 然后把Packages和repodata整个目录拷贝到yum仓库的os/x86-64目录目录即可
[13:17:42 root@yum-server ~]#mkdir /temp
[13:20:55 root@yum-server ~]#mount /dev/sr0 /temp
[13:37:48 root@yum-server /temp]#cp -r Packages /var/www/html/centos/7/os/x86_64
[13:38:16 root@yum-server /temp]#cp -r repodata /var/www/html/centos/7/os/x86_64
CentOS-7客户端yum源配置
[13:43:03 root@centos-7-1 /etc/yum.repos.d]#vim temp.repo
[BaseOS]
name=BaseOS
baseurl=http://10.0.0.82/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
测试安装
[13:45:36 root@centos-7-1 /etc/yum.repos.d]#yum list httpd
Loaded plugins: fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Loading mirror speeds from cached hostfile
Available Packages
httpd.x86_64 2.4.6-93.el7.centos BaseOS
7. 搭建EPEL源
找一台能上网的服务器, 配置好epel源
[epel]
name=EPEL
baseurl=https://mirrors.aliyun.com/epel/8/Everything/x86_64
gpgcheck=0
下载epel源所有的仓库包和元数据到/var/www/html, 会在/var/www/html目录生成epel/Packages 和 epel/repodata 目录, 保存包和元数据, 用作仓库路径
--download-metadata 加此选项可以下载元数据
dnf reposync --reposync=epel --repoid=epel --download-metadata -p /var/www/html
下载相关的key文件
wget -P /var/www/html/epel https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8
wget -P 把文件下载到目录下, 目录会自动创建, -P 跟目录, 不能跟文件名, 会自动创建为目录
wget -O 把文件下载到已有目录下, -O 必须跟目录+文件名.
客户端配置epel源
[epel]
name=EPEL
baseurl=http://10.0.0.82/epel
gpgcheck=1
gpgkey=http://10.0.0.82/epel/RPM-GPG-KEY-EPEL-8
客户端测试安装软件即可