同步远程仓库
-
dnf reposync --repo
全量同步远程仓库rpm软件包
-
createrepoc
创建仓库
- 打包仓库文件目录
#!/bin/bash
set -euo pipefail
# 刷新yum缓存
yum clean all
yum makecache
sudo yum dnf -y createrepo
storage_dir=/data00/kylinV10-repo/$(uname -m)
mkdir -p $storage_dir
chmod 755 $storage_dir
dnf repolist
repolist=(ks10-adv-os ks10-adv-updates)
for repo in ${repolist[@]}; do
dnf reposync --repo $repo -p $storage_dir
cd $storage_dir
createrepo --update -o $storage_dir/$repo $storage_dir/$repo
kylin_repo_pkg=offline-repo-packages-$(uname -m)-$repo-$(date +%Y%m%d).tar.gz
tar zcvf $kylin_repo_pkg $repo
done
搭建仓库服务器
- 解压离线文件包
- 创建repo文件
-
python3 -m http.server
搭建HTTP服务
# unarchive package
storage_dir=/data00/kylinV10-repo/$(uname -m)
mkdir -p $storage_dir
repolist=(ks10-adv-os ks10-adv-updates)
for repo in ${repolist[@]}; do
tar zxf offline-repo-packages-$(uname -m)-$repo.tar.gz -C $storage_dir/
done
# set up HttpServer
cd /data00/kylinV10-repo/$(uname -m)/
du -sh *
RepoServerHost=$(hostname -i)
RepoServerPort=2000
cat > kylinV10.repo <<EOF
[ks10-adv-os]
name = Kylin Linux Advanced Server 10 - Os
baseurl = http://${RepoServerHost}:${RepoServerPort}/ks10-adv-os/
gpgcheck = 0
enabled = 1
[ks10-adv-updates]
name = Kylin Linux Advanced Server 10 - Updates
baseurl = http://${RepoServerHost}:${RepoServerPort}/ks10-adv-updates/
gpgcheck = 0
enabled = 1
EOF
cat kylinV10.repo
nohup python3 -m http.server $RepoServerPort &
配置客户端
- 备份/禁用默认repo
- 下载仓库服务器repo配置至
/etc/yum.repos.d/
# Backup Origin repo config file
for file in $(ls /etc/yum.repos.d/*.repo); do sudo mv $file ${file}.bak; done
# Download available repo config file
RepoServerHost=192.168.0.1
RepoServerPort=2000
sudo wget -O /etc/yum.repos.d/kylinV10.repo http://$RepoServerHost:$RepoServerPort/kylinV10.repo
ls /etc/yum.repos.d/
yum repolist
# 刷新yum缓存
yum clean all
yum makecache
附录
参考文档
- reposync(1) - Linux man page
- 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区
- yum源中repodata目录下的各文件内容及作用-CSDN博客
- 详解Linux中yum包管理器-今日头条
开发环境
$ uname -a
Linux aarch64-kylinV10-3 4.19.90-24.4.v2101.ky10.aarch64 #1 SMP Mon May 24 14:45:37 CST 2021 aarch64 aarch64 aarch64 GNU/Linux
$ cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Sword)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Sword)"
ANSI_COLOR="0;31"
$ cat /etc/yum.repos.d/kylin_aarch64.repo
###Kylin Linux Advanced Server 10 - os repo###
[ks10-adv-os]
name = Kylin Linux Advanced Server 10 - Os
baseurl = http://update.cs2c.com.cn:8080/NS/V10/V10SP2/os/adv/lic/base/$basearch/
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
enabled = 1
[ks10-adv-updates]
name = Kylin Linux Advanced Server 10 - Updates
baseurl = http://update.cs2c.com.cn:8080/NS/V10/V10SP2/os/adv/lic/updates/$basearch/
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
enabled = 1
[ks10-adv-addons]
name = Kylin Linux Advanced Server 10 - Addons
baseurl = http://update.cs2c.com.cn:8080/NS/V10/V10SP2/os/adv/lic/addons/$basearch/
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
enabled = 0
$ cat /etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.14 (GNU/Linux)
mQENBE7rAcgBCADhCdS0QddbgVL/Oz8Y6749w2DSV6K+Mzo9Jqvc1wkRjS5/k177
J9gMLbr7vJVJIGMiAiGQV2MZBKx4iQgvYc68JxXYVQlU0O16L4gf8ycVLG9XFO3C
6AIBfe7P+Xt9x1EFnvAOI8t+gQhqzhGVWNJdZOAK2q84T7Yfsx1LBpErUXiuKBtX
Q9hEjQNKYC/7hXe9QsWNKAvM0ab8BrlP4MB93jS1UIgDXtAOPs+aaL3uL9OugtMY
4jAbU6qKL9rsUmNtGjuX+8D11b9ZOKCqmHzml13KEYLEeYqGkyLx9i/MrMrtEIU3
aGzfBDkdRii0cDVzTI+wMKpK3NhN98pJdTW5ABEBAAG0LE5lb0t5bGluIChyZWxl
YXNlIGtleSkgPHN1cHBvcnRAY3MyYy5jb20uY24+iQE4BBMBAgAiBQJO6wHIAhsD
BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBB+K6+ekhtn+fsCACyqmdD+zVF
vMzyODEYa88ijGtY4LBCym/Z7PyAoV7qeWgKSWpO0ENXpd2KUE9MnrBq3KDxYorl
J/SwzgGX0nhaTPal3uxpcRgtyHqC/qoFX6XWRRBolvjUcYngJWbhMh0xuP0+dyHF
Hlh8ttlAaxKLKCy+YujicmMJTwbFu/CO20O7YHEcrYgs9nHyUsm8neWMBZ5WWYEy
OHwcmATq4EDVB7IDYPYTCCL9/knUiIB+yILTwojfTsps1t8gHmTGF2gjrP1UtktC
YYEGmH+cc9ywTlkQPU0ZbZnnQ/ckcl6ixSa4xf/vu91I1sSLo0jcM6iCa/JfDjYc
/kXEVjupyPD5uQENBE7rAcgBCADOuCHy7GkW61pu4Gj80ZCtklLkT9OsXh+lOGT+
9wHQJ0OWCCDetw9ywD53YvIlwYGqMbG0wQz/2gYggVh3gmmf+cjSjZ+Pyhp8KYmi
DbQdiziM4XHH/r1Dra++22pgENTips0gV1k/UOu4z04TqRj+RXYgtXSK4/jSgsFo
IobreAFM8COm7P+K6Y0QWcb8d8v8lYrDiKLqAVuN8Iq/zVAtRiamSRXbzHp0vYtT
uUQiKO7qjwAtPpLJF7aylNDTyKkQy7OClD7tsdsdU/02nQLq58oQMH/JO+xduOsq
LybeYxqCT6nEU5wRkBGowb3BNJIOO6XdP0W2K6m+e/x/GvyvABEBAAGJAR8EGAEC
AAkFAk7rAcgCGwwACgkQQfiuvnpIbZ/l7wgAjazmQk5ahLKs41e0xbQiBNs3GHy8
ON4Aet50avT3CBDUO+7ZplbuF5XBqcP6Kfrur7b6lCNdGDEai2+Q+6kI9FNckWJ4
wouapbLxi9xrogEiWW0tc9njor5M3cVR8vJaWMaPh9NA/wqtfyBP2hU7CfaU/4pL
DajyB71bbq6MtFAeHGnlf6glLaTCoTFYQ6eO/wnY+tEMRbYVKoYoSlPPeUynzgF7
qp3TPG4QTj45wiASSb0a5vskwXFW8GeU/29eKY+iLhvPzYFmrR4W0fwXes5o/lAF
gQ+aN/nkiKti10W+Rtoxu4/8mCxKwGAkczVwB9UlPqSDdZUD1mXdBY0/Qw==
=Pzyf
-----END PGP PUBLIC KEY BLOCK-----