内部に抱える計算機が多くなるとyum-updateの参照先を内部に抱えたくなる.
ちょうどwindows-updateの配布パッケージを社内に持つように.
ここではそんなリポジトリのミラーを作ってみた(ローカルリポジトリ)
参照先 https://www.server-world.info/query?os=CentOS_7&p=localrepo
RHEL{7,8,9}系のローカルリポジトリを作ってみる.
ローカルリポジトリサイトは 「repository.sybyl.local」 とします.
httpが動いてればOSは何でもいいです.
ここにRHEL{7,8,9}系のパッケージデータを集めてみた. epelも
参照 https://wiki.rockylinux.org/rocky/repo/
(OSがRHEL7系なら)
yum install httpd rsync createrepo
(OSがRHEL8,9系なら)
dnf install httpd rsync createrepo_c
(RHEL7系CentOS7)
[root@repository ~]# mkdir -p /var/www/html/repos/centos/7/{os,updates,extras}/x86_64 /var/www/html/repos/fedora/epel/7/x86_64
[root@repository ~]# rsync -avz --delete ftp.riken.jp::centos/7/os/x86_64/Packages/ /var/www/html/repos/centos/7/os/x86_64/Packages/
[root@repository ~]# rsync -avz --delete ftp.riken.jp::centos/7/updates/x86_64/Packages/ /var/www/html/repos/centos/7/updates/x86_64/Packages/
[root@repository ~]# rsync -avz --delete ftp.riken.jp::centos/7/extras/x86_64/Packages/ /var/www/html/repos/centos/7/extras/x86_64/Packages/
[root@repository ~]# rsync -avz --delete ftp.riken.jp::fedora/epel/7/x86_64/Packages/ /var/www/html/repos/fedora/epel/7/x86_64/Packages/
[root@repository ~]# cd /var/www/html/repos/centos/7
[root@repository 7]# for i in "os/x86_64" "updates/x86_64" "extras/x86_64" ; do createrepo $i ; done
[root@repository 7]# createrepo /var/www/html/repos/fedora/epel/7/x86_64
(RHEL8系RockyLinux8)
[root@repository ~]# mkdir -p /var/www/html/repos/rocky/8/{AppStream,BaseOS,Devel,extras,PowerTools}/x86_64/os /var/www/html/repos/fedora/epel/8/{Everything,Modular}/x86_64
[root@repository ~]# rsync -avz --delete ftp.riken.jp::rocky/8/AppStream/x86_64/os/Packages/ /var/www/html/repos/rocky/8/AppStream/x86_64/os/Packages/
[root@repository ~]# rsync -avz --delete ftp.riken.jp::rocky/8/BaseOS/x86_64/os/Packages/ /var/www/html/repos/rocky/8/BaseOS/x86_64/os/Packages/
[root@repository ~]# rsync -avz --delete ftp.riken.jp::rocky/8/Devel/x86_64/os/Packages/ /var/www/html/repos/rocky/8/Devel/x86_64/os/Packages/
[root@repository ~]# rsync -avz --delete ftp.riken.jp::rocky/8/extras/x86_64/os/Packages/ /var/www/html/repos/rocky/8/extras/x86_64/os/Packages/
[root@repository ~]# rsync -avz --delete ftp.riken.jp::rocky/8/PowerTools/x86_64/os/Packages/ /var/www/html/repos/rocky/8/PowerTools/x86_64/os/Packages/
[root@repository ~]# rsync -avz --delete ftp.riken.jp::fedora/epel/8/Everything/x86_64/Packages/ /var/www/html/repos/fedora/epel/8/Everything/x86_64/Packages
[root@repository ~]# rsync -avz --delete ftp.riken.jp::fedora/epel/8/Modular/x86_64/Packages/ /var/www/html/repos/fedora/epel/8/Modular/x86_64/Packages
[root@repository ~]# cd /var/www/html/repos/rocky/8
[root@repository 8]# for i in "AppStream/x86_64/os" "BaseOS/x86_64/os" "Devel/x86_64/os" "extras/x86_64/os" "PowerTools/x86_64/os" ; do createrepo $i ; done
[root@repository 8]# createrepo /var/www/html/repos/fedora/epel/8/Everything/x86_64
[root@repository 8]# createrepo /var/www/html/repos/fedora/epel/8/Modular/x86_64
(RHEL9系RockyLinux9)
[root@repository ~]# mkdir -p /var/www/html/repos/rocky/9/{AppStream,BaseOS,CRB,devel,extras,plus}/x86_64/os /var/www/html/repos/fedora/epel/9/Everything/x86_64
[root@repository ~]# rsync -avz --delete ftp.riken.jp::rocky/9/AppStream/x86_64/os/Packages/ /var/www/html/repos/rocky/9/AppStream/x86_64/os/Packages/
[root@repository ~]# rsync -avz --delete ftp.riken.jp::rocky/9/BaseOS/x86_64/os/Packages/ /var/www/html/repos/rocky/9/BaseOS/x86_64/os/Packages/
[root@repository ~]# rsync -avz --delete ftp.riken.jp::rocky/9/CRB/x86_64/os/Packages/ /var/www/html/repos/rocky/9/CRB/x86_64/os/Packages/
[root@repository ~]# rsync -avz --delete ftp.riken.jp::rocky/9/devel/x86_64/os/Packages/ /var/www/html/repos/rocky/9/devel/x86_64/os/Packages/
[root@repository ~]# rsync -avz --delete ftp.riken.jp::rocky/9/extras/x86_64/os/Packages/ /var/www/html/repos/rocky/9/extras/x86_64/os/Packages/
[root@repository ~]# rsync -avz --delete ftp.riken.jp::rocky/9/plus/x86_64/os/Packages/ /var/www/html/repos/rocky/9/plus/x86_64/os/Packages/
[root@repository ~]# rsync -avz --delete ftp.riken.jp::fedora/epel/9/Everything/x86_64/Packages/ /var/www/html/repos/fedora/epel/9/Everything/x86_64/Packages/
[root@repository ~]# cd /var/www/html/repos/rocky/9
[root@repository 9]# for i in "AppStream/x86_64/os" "BaseOS/x86_64/os" "CRB/x86_64/os" "devel/x86_64/os" "extras/x86_64/os" "plus/x86_64/os" ; do createrepo $i ; done
[root@repository 9]# createrepo /var/www/html/repos/fedora/epel/9/Everything/x86_64
「reposync」コマンドでより簡単にできそうだけど、rsyncを使ってます
以上で準備は完了です. 次にこの作ったリポジトリを使ってみます. 「/etc/yum.repos.d/*.repo」のリポジトリ参照先を変更します
(RockyLinux9の場合)
|
|
|
|
これで「yum update/install」らはローカルリポジトリ「repository.sybyl.local」を参照するようになります.
repoファイルの変数ですが、「$contentdir」->「pub/rocky」、「$releasever」->「9」、「$basearch」->「x86_64」と対応するみたい
使っているノードがubuntuなら「apt-mirror」が便利らしいが、ここではRHEL系の上で行いたい
「debmirror」が簡単に作れるそうな https://github.com/bviktor/debmirror-runner
っがRocky9向けには用意されていない様子..
yum install --enablerepo=epel debmirror
まずkeyが必要. 簡単にubuntu22.04の/usr/share/keyrings/ubuntu-archive-keyring.gpgを持ってくる. っで
mkdir /opt/UbuntuMirror/mirrorkeyring
gpg --no-default-keyring --keyring /opt/UbuntuMirror/mirrorkeyring/trustedkeys.gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg
として「/opt/UbuntuMirror/mirrorkeyring/trustedkeys.gpg」を作る.
あとは/etc/debmirror.confのパラメータを弄る
|
その後にミラーリポジトリを作らせる
export GNUPGHOME=/opt/UbuntuMirror/mirrorkeyring
debmirror
参照先 https://help.ubuntu.com/community/Debmirror
出来上がったリポジトリのサイズは「203GB」でした.
次に構築したubuntuリポジトリを参照させる.
root@ubuntu22:~# vi /etc/apt/sources.list
deb [arch=amd64] http://repository.sybyl.local/repos/ubuntu/ jammy main restricted
deb [arch=amd64] http://repository.sybyl.local/repos/ubuntu/ jammy-updates main restricted
deb [arch=amd64] http://repository.sybyl.local/repos/ubuntu/ jammy universe
deb [arch=amd64] http://repository.sybyl.local/repos/ubuntu/ jammy-updates universe
deb [arch=amd64] http://repository.sybyl.local/repos/ubuntu/ jammy multiverse
deb [arch=amd64] http://repository.sybyl.local/repos/ubuntu/ jammy-updates multiverse
deb [arch=amd64] http://repository.sybyl.local/repos/ubuntu/ jammy-backports main restricted universe multiverse
deb [arch=amd64] http://repository.sybyl.local/repos/ubuntu/ jammy-security main restricted
deb [arch=amd64] http://repository.sybyl.local/repos/ubuntu/ jammy-security universe
deb [arch=amd64] http://repository.sybyl.local/repos/ubuntu/ jammy-security multiverse
root@ubuntu22:~#
root@ubuntu22:~# apt update
リポジトリを更新したら「apt update」を実施します. これで作ったローカルリポジトリが参照され、閉鎖環境でアプリの更新が可能となる
クライアントの「/etc/hosts」には「repository.sybyl.local」のエントリーを載せる