AlmaLinuxのローカルレポジトリを構築するよ

前回、AlmaLinuxをminimalパッケージをインストールしたので、必要なパッケージがほとんど入っていない状態です。サーバはルーターを通じてインターネットに接続できる状態なので、AlmaLinuxの外部レポジトリ(パブリックレポジトリ)に接続して、必要なパッケージを追加インストールすることはできます。ですが、ここはあえてローカルレポジトリを構築したいと思います。なぜなら。。。

お客様先での構築作業では、インターネットに簡単に接続できるとは限らないよ…

という理由なのです。あえて、技術確立のために、インターネット接続できない場合で対応できるようにローカルレポジトリ(プライベートレポジトリ)の構築にチャレンジします。

レポジトリって何?

そもそもレポジトリという言葉はLinuxのパッケージ管理意外でも使われます。バージョン管理システムにおいて、ソースコードやディレクトリ構造のメタデータを管理するデータ構造なのだそうです。プログラムのバージョン管理のGitやDockerコンテナのバージョン管理のDocker Hubでも、レポジトリという言葉は使われます。RHEL系Linuxのパッケージ管理では、RPMベースのパッケージ管理システムDNFが使用するレポジトリを指します。レポジトリがあれば、あるパッケージをインストールするときに、依存関係にあるパッケージを追加インストールしたり、新しいバージョンに更新したりすることができます。

createrepoパッケージが必要だからフルパッケージのISOイメージをマウントするよ

実は、minimalパッケージ群の中に、レポジトリを運用するためのパッケージcreaterepoは含まれていません。だって普通は、ローカルレポジトリなんて構築しないで、インターネット上の外部レポジトリに接続するよね、ってことなんですね。仕方がないので、一緒にDL(ダウンロード)した、フルパッケージのISOファイル AlmaLinux-9-latest-x86_64-dvd.iso の中から取り出すことにします。
以下の例は、/tmpに置いたISOイメージ AlmaLinux-9-latest-x86_64-dvd.iso を ディレクトリ /media/AlmaLinux-9-latest-x86_64-dvd にloopマウントして、ISOイメージの中を参照できるようにしています。

# mkdir /media/AlmaLinux-9-latest-x86_64-dvd
# mount -t iso9660 -o loop /tmp/AlmaLinux-9-latest-x86_64-dvd.iso /media/AlmaLinux-9-latest-x86_64-dvd
mount: /media/AlmaLinux-9-latest-x86_64-dvd: WARNING: source write-protected, mounted read-only.
# ls /media/AlmaLinux-9-latest-x86_64-dvd
AppStream BaseOS EFI LICENSE TRANS.TBL images isolinux media.repo

マウントすると、AppStream と BaseOS という2つのディレクトリが参照できます。BaseOSは最小限必要となるパッケージが格納されており、AppStreamはオプションパッケージです。BaseOSとAppStream(Application Streamの略らしい)の2つのメインレポジトリに分かれたのは、RHEL8かららしいです。BaseOSは基本的なOSのコアセットを提供、以前のリリースのRHELと同様のサポート条件が適用されるらしいけれど、AppStreamはそうじゃないってことなのかな。。

第1章 AppStream の使用 Red Hat Enterprise Linux 8 | Red Hat Customer Portal
Access Red Hat’s knowledge, guidance, and support through your subscription.

先でマウントしたISOイメージの中から、createrepoのrpmファイルを見つけます。createrepo*.rpm は /media/AlmaLinux-9-latest-x86_64-dvd/AppStream/Packages の下にありました。以下のようにrpmコマンドで個々にインストールすることにしたのですが….

# rpm -ivh createrepo_c-0.17.7-4.el9_0.x86_64.rpm
warning: createrepo_c-0.17.7-4.el9_0.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID b86b3716: NOKEY
error: Failed dependencies:
createrepo_c-libs = 0.17.7-4.el9_0 is needed by createrepo_c-0.17.7-4.el9_0.x86_64
libcreaterepo_c.so.0()(64bit) is needed by createrepo_c-0.17.7-4.el9_0.x86_64

上記のように先に、createrepo_c-libs-0.17.7-4.el9_0 のほうが必要だって言っていますね。じゃあ、先に以下のパッケージをインストールをすることにしましょう。その後で、再度、createrepo_c-0.17.7-4.el9_0.x86_64.rpmをインストールして下さい。

# rpm -ivh createrepo_c-libs-0.17.7-4.el9_0.x86_64.rpm
warning: createrepo_c-libs-0.17.7-4.el9_0.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID b86b3716: NOKEY
Verifying… ################################# [100%]
Preparing… ################################# [100%]
Updating / installing…
1:createrepo_c-libs-0.17.7-4.el9_0 ################################# [100%]
# rpm -ivh createrepo_c-0.17.7-4.el9_0.x86_64.rpm
warning: createrepo_c-0.17.7-4.el9_0.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID b86b3716: NOKEY
Verifying… ################################# [100%]
Preparing… ################################# [100%]
Updating / installing…
1:createrepo_c-0.17.7-4.el9_0 ################################# [100%]

ちょっと寄り道してhttpd-filesystemを先にインストールする

さて、これでcreaterepoのパッケージ一式がインストールできたのだけれど、ローカルレポジトリの運用としては、以下の方針で運用したいという思いがあります。
・プライベートなリモートレジストリとして運用したい。
・だからhttp経由でパッケージにアクセスできるようにしたい。
ということで、httpサーバ(Apache)がアクセスできるディレクトリに、Almalinuxのフルパッケージを配置したいと思います。
Apacheのデータ領域は/var/wwwなのですが、ファイルオーナやパーミッションをApacheのオリジナルの状態にしたいので、httpd-filesystem だけ先に、以下のようにしてインストールしちゃおうと思います。

# cd /media/AlmaLinux-9-latest-x86_64-dvd/AppStream/Packages
# rpm -ivh httpd-filesystem-2.4.53-7.el9.noarch.rpm
warning: httpd-filesystem-2.4.53-7.el9.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID b86b3716: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:httpd-filesystem-2.4.53-7.el9    ################################ [100%]

これで、/var/www/html ディレクトリが作成できました。

ローカルレポジトリにISOイメージの中からパッケージをコピーする

今回は、/var/www/html/localrepo/ というディレクトリを作成して、そこをローカルレポジトリにしたいと思います。ISOイメージの中に含まれているBaseOSとAppStreamのパッケージを以下のようにして、 /var/www/html/localrepo/ 配下にコピーします。

# mkdir /var/www/html/localrepo
# mkdir /var/www/html/localrepo/BaseOS
# mkdir /var/www/html/localrepo/AppStream
# cp –rp /media/AlmaLinux-9-latest-x86_64-dvd/BaseOS/Packages /var/www/html/localrepo/BaseOS
# cp –rp /media/AlmaLinux-9-latest-x86_64-dvd/AppStream/Packages /var/www/html/localrepo/AppStream

repoファイルを作成するよ

次に、レポジトリの設定ファイルであるところの repoファイルを作成します。repoファイルは /etc/yum.repos.d/ 直下に <任意の名前>.repo というファイル名で定義ファイルを作成します。今回は、AlmaLinux-9-latest-x86_64-dvd.repo という名前で、以下の内容で作成することにします。

[AlmaLinux-9-local-BaseOS]
name=AlmaLinux-9-latest-x86_64-dvd-BaseOS
baseurl=file:///var/www/html/localrepo/BaseOS
enabled=1
gpgcheck=0
[AlmaLinux-9-local-AppStream]
name=AlmaLinux-9-latest-x86_64-dvd-AppStrea
baseurl=file:///var/www/html/localrepo/AppStream
enabled=1
gpgcheck=0

[repo_id]     レポジトリのIDを定義します。
name           レポジトリ名を定義します。レポジトリIDはレボジトリ一覧の表示においてrepo idとして、レポジトリ名は repo name として表示されます。
baseurl        レポジトリのパスをURL形式で指定します。file:// で始まる場合はローカルレポジトリ(ファイルアクセス)を意味します。パスはPackagesディレクトリの上位のディレクトリのパスを指定して下さい。
enabled      レポジトリの無効(0)/有効(1)を指定します。
gpgcheck    GPG著名確認の無効(0)/有効(1)を指定します。GPG著名は、GnuPGというツールを使ってパッケージが破損していないか、改ざんされていないことを確認することができます。今回はISOイメージからpkgファイルを持ってきているので、0で良いと思います。
0: インストールされるローカルパッケージなど、全リポジトリー内のパッケージでの GPG 署名確認を無効にします。
1:  インストールされるローカルパッケージなど、全リポジトリー内の全パッケージで GPG 署名確認を有効にします。gpgcheck=1 がデフォルトであるため、すべてのパッケージ署名が確認されます。

ローカルレポジトリを作成する

これで、レポジトリ作成の準備が整ったので、createrepoコマンドを以下のように実行してレポジトリのDB(repodata)を作成します。

# createrepo /var/www/html/localrepo/BaseOS
Directory walk started
Directory walk done - 1136 packages
Temporary output repo path: /var/www/html/localrepo/BaseOS/.repodata/
Preparing sqlite DBs
Pool started (with 5 workers)
Pool finished

# createrepo /var/www/html/localrepo/AppStream
Directory walk started
Directory walk done - 5491 packages
Temporary output repo path: /var/www/html/localrepo/AppStream/.repodata/
Preparing sqlite DBs
Pool started (with 5 workers)
Pool finished

すると以下の ようにrepodataディレクトリ(レポジトリDB)が出来上っていることが確認できます。

# ls /var/www/html/localrepo/BaseOS
Packages  repodata
# ls /var/www/html/localrepo/AppStream/
Packages  repodata

dnf repolist コマンドで有効なレポジトリ一覧が確認できます。 AlmaLinux-9-latest-x86_64-dvd.repo に定義したrepo idとrepo nameが上位2つに表示されることを確認してください。その下に表示された appstream, baseos, extras は/etc/yum.repos.d/ 直下の almalinux-baseos.repo , almalinux-appstream.repo, almalinux-extras.repo で定義されたデフォルトのレポジトリです。

# dnf repolist
repo id                                         repo name
AlmaLinux-9-local-AppStream                     AlmaLinux-9-latest-x86_64-dvd-AppStream
AlmaLinux-9-local-BaseOS                        AlmaLinux-9-latest-x86_64-dvd-BaseOS
appstream                                       AlmaLinux 9 - AppStream
baseos                                          AlmaLinux 9 - BaseOS
extras                                          AlmaLinux 9 - Extras

dnf repolist –v コマンドを実行すると詳細なレポジトリの情報が確認できます。appstream,baseos, extrasを定義したrepoファイルのパス、レポジトリのURLも確認できます。

# dnf repolist -v
Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, kpatch, needs-restarting, playground, repoclosure, repodiff, repograph, repomanage, reposync
DNF version: 4.12.0
cachedir: /var/cache/dnf
AlmaLinux-9-latest-x86_64-dvd-BaseOS                                         83 MB/s | 2.0 MB     00:00
AlmaLinux-9-latest-x86_64-dvd-AppStream                                      97 MB/s | 6.0 MB     00:00
AlmaLinux 9 - AppStream                                                     4.2 MB/s | 8.0 MB     00:01
AlmaLinux 9 - BaseOS                                                        2.4 MB/s | 2.9 MB     00:01
AlmaLinux 9 - Extras                                                         17 kB/s |  17 kB     00:00
Repo-id            : AlmaLinux-9-local-AppStream
Repo-name          : AlmaLinux-9-latest-x86_64-dvd-AppStream
Repo-revision      : 1676985488
Repo-updated       : Tue Feb 21 22:18:08 2023
Repo-pkgs          : 5491
Repo-available-pkgs: 5386
Repo-size          : 6.2 G
Repo-baseurl       : file:///var/www/html/localrepo/AppStream
Repo-expire        : 172800 second(s) (last: Fri Feb 24 19:32:51 2023)
Repo-filename      : /etc/yum.repos.d/AlmaLinux-9-latest-x86_64-dvd.repo
Repo-id            : AlmaLinux-9-local-BaseOS
Repo-name          : AlmaLinux-9-latest-x86_64-dvd-BaseOS
Repo-revision      : 1677234697
Repo-updated       : Fri Feb 24 19:31:36 2023
Repo-pkgs          : 1155
Repo-available-pkgs: 1155
Repo-size          : 1.0 G
Repo-baseurl       : file:///var/www/html/localrepo/BaseOS
Repo-expire        : 172800 second(s) (last: Fri Feb 24 19:32:51 2023)
Repo-filename      : /etc/yum.repos.d/AlmaLinux-9-latest-x86_64-dvd.repo
Repo-id            : appstream
Repo-name          : AlmaLinux 9 - AppStream
Repo-revision      : 1677178260
Repo-updated       : Fri Feb 24 03:51:00 2023
Repo-pkgs          : 6139
Repo-available-pkgs: 6028
Repo-size          : 11 G
Repo-mirrors       : https://mirrors.almalinux.org/mirrorlist/9/appstream
Repo-baseurl       : http://ftp.jaist.ac.jp/pub/Linux/almalinux/9.1/AppStream/x86_64/os/ (9 more)
Repo-expire        : 86400 second(s) (last: Fri Feb 24 19:32:55 2023)
Repo-filename      : /etc/yum.repos.d/almalinux-appstream.repo
Repo-id            : baseos
Repo-name          : AlmaLinux 9 - BaseOS
Repo-revision      : 1677178361
Repo-updated       : Fri Feb 24 03:52:41 2023
Repo-pkgs          : 1546
Repo-available-pkgs: 1546
Repo-size          : 1.4 G
Repo-mirrors       : https://mirrors.almalinux.org/mirrorlist/9/baseos
Repo-baseurl       : http://ftp.jaist.ac.jp/pub/Linux/almalinux/9.1/BaseOS/x86_64/os/ (9 more)
Repo-expire        : 86400 second(s) (last: Fri Feb 24 19:32:59 2023)
Repo-filename      : /etc/yum.repos.d/almalinux-baseos.repo
Repo-id            : extras
Repo-name          : AlmaLinux 9 - Extras
Repo-revision      : 1677178382
Repo-updated       : Fri Feb 24 03:53:02 2023
Repo-pkgs          : 26
Repo-available-pkgs: 26
Repo-size          : 297 k
Repo-mirrors       : https://mirrors.almalinux.org/mirrorlist/9/extras
Repo-baseurl       : http://ftp.jaist.ac.jp/pub/Linux/almalinux/9.1/extras/x86_64/os/ (9 more)
Repo-expire        : 86400 second(s) (last: Fri Feb 24 19:33:01 2023)
Repo-filename      : /etc/yum.repos.d/almalinux-extras.repo
Total packages: 14357

最新パッケージはインターネットから取得する

DVDのISOイメージは最新のパッケージとは限らないので、最新バージョンはデフォルトのレポジトリ(リモート)から随時DL(ダウンロード)されることになります。
せっかくダウンロードされた最新のパッケージも、後からローカルレポジトリにコピーして保存しておきたいので、/etc/yum.conf の[main]セクションに keepcache=1 の指定を追加することにします。

[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
# add
keepcache=1

このようにすると、デフォルトのレポジトリから新しいパッケージがDLされたときに、キャッシュディレクトリに *.rpmファイルが保存されます。キャッシュディレクトリは /var/cache/dnf/ です。
 最初に、dnf clean all でインストールしたパッケージのキャッシュをクリアしておきましょう(以下は 0 files removedなのでキャッシュはなかった様子)。

# dnf clean all
0 files removed

ローカルレポジトリからパッケージのインストール開始

最初に、試しにApacheをインストールしてみます。dnf コマンドでパッケージ名 httpd を指定してインストールします。-y オプションは yes/no の確認を省略するオプションです。repo id 「AlmaLinux-9-local-AppStream」から各パッケージがインストールされる様子が確認できます。

# dnf -y install httpd
Last metadata expiration check: 0:06:12 ago on Tue Feb 21 22:23:11 2023.
Dependencies resolved.
======================================================================================================================================
 Package                            Architecture        Version                        Repository                                Size
======================================================================================================================================
Installing:
 httpd                              x86_64              2.4.53-7.el9                   AlmaLinux-9-local-AppStream               48 k
Installing dependencies:
 almalinux-logos-httpd              noarch              90.5.1-1.1.el9                 AlmaLinux-9-local-AppStream               18 k
 apr                                x86_64              1.7.0-11.el9                   AlmaLinux-9-local-AppStream              123 k
 apr-util                           x86_64              1.6.1-20.el9                   AlmaLinux-9-local-AppStream               95 k
 apr-util-bdb                       x86_64              1.6.1-20.el9                   AlmaLinux-9-local-AppStream               13 k
 httpd-core                         x86_64              2.4.53-7.el9                   AlmaLinux-9-local-AppStream              1.4 M
 httpd-tools                        x86_64              2.4.53-7.el9                   AlmaLinux-9-local-AppStream               82 k
Installing weak dependencies:
 apr-util-openssl                   x86_64              1.6.1-20.el9                   AlmaLinux-9-local-AppStream               15 k
 mod_http2                          x86_64              1.15.19-2.el9                  AlmaLinux-9-local-AppStream              149 k
 mod_lua                            x86_64              2.4.53-7.el9                   AlmaLinux-9-local-AppStream               62 k
Transaction Summary
======================================================================================================================================
Install  10 Packages

Complete!

DVDインストールでは、DVDの容量の問題でminimumパッケージ群しかインストールできなかったので、いよいよ必要なパッケージ群をインストールしてみます。最初に、インストール済のグループリストを以下のように表示してみます。Installed Environment GroupsとInstealled Groupsでインストール済のパッケージグループを確認することができます。

# dnf grouplist
Last metadata expiration check: 0:08:37 ago on Tue Feb 21 22:23:11 2023.
Available Environment Groups:
   Server with GUI
   Server
   Workstation
   Virtualization Host
   Custom Operating System
Installed Environment Groups:  ★インストール済
   Minimal Install
Installed Groups:  ★インストール済
   Development Tools
   Legacy UNIX Compatibility
   Network Servers
   Headless Management
   System Tools
   Security Tools
   Scientific Support
Available Groups:
   RPM Development Tools
   .NET Development
   Container Management
   Console Internet Tools
   Graphical Administration Tools
   Smart Card Support

次に、yum groupinstall コマンドでパッケージグループ Server をインストールすることにします。

# yum -y groupinstall “Server”
Last metadata expiration check: 0:12:15 ago on Tue Feb 21 22:23:11 2023.
Dependencies resolved.
======================================================================================================================================
 Package                               Architecture  Version                                 Repository                          Size
======================================================================================================================================
Upgrading:
 authselect                            x86_64        1.2.5-2.el9_1                           baseos                             140 k
 authselect-libs                       x86_64        1.2.5-2.el9_1                           baseos                             223 k
 bash                                  x86_64        5.1.8-6.el9_1                           baseos                             1.7 M
 bpftool                               x86_64        5.14.0-162.12.1.el9_1                   baseos                             2.6 M
 cryptsetup                            x86_64        2.4.3-5.el9_1.1                         baseos                             199 k
 cryptsetup-libs                       x86_64        2.4.3-5.el9_1.1                         baseos                             434 k
 curl                                  x86_64        7.76.1-19.el9_1.1                       baseos                             295 k
 dbus                                  x86_64        1:1.12.20-7.el9_1                       baseos                             7.0 k
 glibc                                 x86_64        2.34-40.el9_1.1                         baseos                             1.9 M
 glibc-common                          x86_64        2.34-40.el9_1.1                         baseos                             300 k
 glibc-gconv-extra                     x86_64        2.34-40.el9_1.1                         baseos                             1.5 M
 glibc-minimal-langpack                x86_64        2.34-40.el9_1.1                         baseos                              28 k
 iputils                               x86_64        20210202-8.el9_1.1                      baseos                             167 k
 kernel-tools                          x86_64        5.14.0-162.12.1.el9_1                   baseos                             2.1 M
 kernel-tools-libs                     x86_64        5.14.0-162.12.1.el9_1                   baseos                             1.9 M
 libcurl                               x86_64        7.76.1-19.el9_1.1                       baseos                             285 k
 libipa_hbac                           x86_64        2.7.3-4.el9_1.3                         baseos                              36 k
 libsss_certmap                        x86_64        2.7.3-4.el9_1.3                         baseos                              78 k
 libsss_idmap                          x86_64        2.7.3-4.el9_1.3                         baseos                              41 k
 libsss_nss_idmap                      x86_64        2.7.3-4.el9_1.3                         baseos                              45 k
 libsss_sudo                           x86_64        2.7.3-4.el9_1.3                         baseos                              35 k
 libteam                               x86_64        1.31-16.el9_1                           baseos                              47 k
 selinux-policy                        noarch        34.1.43-1.el9_1.1                       baseos                              57 k
 selinux-policy-targeted               noarch        34.1.43-1.el9_1.1                       baseos                             6.4 M
 sssd                                  x86_64        2.7.3-4.el9_1.3                         baseos                              27 k
 sssd-ad                               x86_64        2.7.3-4.el9_1.3                         baseos                             211 k
 sssd-client                           x86_64        2.7.3-4.el9_1.3                         baseos                             150 k
 sssd-common                           x86_64        2.7.3-4.el9_1.3                         baseos                             1.6 M
 sssd-common-pac                       x86_64        2.7.3-4.el9_1.3                         baseos                              95 k
 sssd-ipa                              x86_64        2.7.3-4.el9_1.3                         baseos                             274 k
 sssd-kcm                              x86_64        2.7.3-4.el9_1.3                         baseos                             108 k
 sssd-krb5                             x86_64        2.7.3-4.el9_1.3                         baseos                              73 k
 sssd-krb5-common                      x86_64        2.7.3-4.el9_1.3                         baseos                              89 k
 sssd-ldap                             x86_64        2.7.3-4.el9_1.3                         baseos                             156 k
 sssd-proxy                            x86_64        2.7.3-4.el9_1.3                         baseos                              70 k
 sudo                                  x86_64        1.9.5p2-7.el9_1.1                       baseos                             1.0 M
 systemd                               x86_64        250-12.el9_1.1                          baseos                             4.0 M
 systemd-libs                          x86_64        250-12.el9_1.1                          baseos                             631 k
 systemd-pam                           x86_64        250-12.el9_1.1                          baseos                             256 k
 systemd-rpm-macros                    noarch        250-12.el9_1.1                          baseos                              41 k
 systemd-udev                          x86_64        250-12.el9_1.1                          baseos                             1.5 M
 teamd                                 x86_64        1.31-16.el9_1                           baseos                             112 k
Installing group/module packages:
 NetworkManager-config-server          noarch        1:1.40.0-1.el9                          AlmaLinux-9-local-BaseOS            17 k
 PackageKit                            x86_64        1.2.4-2.el9                             AlmaLinux-9-local-AppStream        602 k
 blktrace                              x86_64        1.2.0-19.el9                            AlmaLinux-9-local-AppStream        143 k
 bolt                                  x86_64        0.9.2-1.el9                             AlmaLinux-9-local-BaseOS           191 k
 buildah                               x86_64        1:1.27.3-1.el9_1                        appstream                          7.9 M
 cockpit-packagekit                    noarch        276.1-1.el9                             AlmaLinux-9-local-AppStream        606 k
 cockpit-podman                        noarch        53-1.el9                                AlmaLinux-9-local-AppStream        541 k
 cockpit-storaged                      noarch        276.1-1.el9                             AlmaLinux-9-local-AppStream        610 k
 containernetworking-plugins           x86_64        1:1.1.1-3.el9                           AlmaLinux-9-local-AppStream        8.3 M
 fprintd-pam                           x86_64        1.94.0-3.el9                            AlmaLinux-9-local-AppStream         24 k
 iwl6000g2b-firmware                   noarch        18.168.6.1-127.el9                      AlmaLinux-9-local-BaseOS           351 k
 libertas-sd8787-firmware              noarch        20220708-127.el9                        AlmaLinux-9-local-BaseOS           322 k
 libstoragemgmt                        x86_64        1.9.3-1.el9                             AlmaLinux-9-local-AppStream        236 k
 netronome-firmware                    noarch        20220708-127.el9                        AlmaLinux-9-local-BaseOS           4.4 M
 nmap-ncat                             x86_64        3:7.91-10.el9                           AlmaLinux-9-local-AppStream        223 k
 pinfo                                 x86_64        0.6.10-29.el9                           AlmaLinux-9-local-AppStream        116 k
 plymouth                              x86_64        0.9.5-5.20210331git1ea1020.el9          AlmaLinux-9-local-AppStream        109 k
 podman                                x86_64        2:4.2.0-9.el9_1                         appstream                           12 M
 rsyslog-gnutls                        x86_64        8.2102.0-105.el9                        AlmaLinux-9-local-AppStream         29 k
 rsyslog-gssapi                        x86_64        8.2102.0-105.el9                        AlmaLinux-9-local-AppStream         30 k
 rsyslog-relp                          x86_64        8.2102.0-105.el9                        AlmaLinux-9-local-AppStream         30 k
 sscg                                  x86_64        3.0.0-5.el9_0                           AlmaLinux-9-local-AppStream         45 k
 tcpdump                               x86_64        14:4.99.0-6.el9                         AlmaLinux-9-local-AppStream        543 k
 usb_modeswitch                        x86_64        2.6.1-4.el9                             AlmaLinux-9-local-BaseOS            73 k
 vim-enhanced                          x86_64        2:8.2.2637-16.el9_0.3                   AlmaLinux-9-local-AppStream        1.8 M
 wget                                  x86_64        1.21.1-7.el9                            AlmaLinux-9-local-AppStream        772 k
Installing dependencies:
 PackageKit-glib                       x86_64        1.2.4-2.el9                             AlmaLinux-9-local-AppStream        157 k
 cairo                                 x86_64        1.17.4-7.el9                            AlmaLinux-9-local-AppStream        659 k
 cairo-gobject                         x86_64        1.17.4-7.el9                            AlmaLinux-9-local-AppStream         18 k
 checkpolicy                           x86_64        3.4-1.el9                               AlmaLinux-9-local-AppStream        345 k
 clevis                                x86_64        18-106.el9                              AlmaLinux-9-local-AppStream         55 k
 conmon                                x86_64        2:2.1.4-1.el9                           AlmaLinux-9-local-AppStream         52 k
 container-selinux                     noarch        3:2.189.0-1.el9                         AlmaLinux-9-local-AppStream         47 k
 containers-common                     x86_64        2:1-45.el9_1                            appstream                          112 k
 criu                                  x86_64        3.17-4.el9                              AlmaLinux-9-local-AppStream        543 k
 criu-libs                             x86_64        3.17-4.el9                              AlmaLinux-9-local-AppStream         32 k
 crun                                  x86_64        1.5-1.el9                               AlmaLinux-9-local-AppStream        188 k
 dejavu-sans-fonts                     noarch        2.37-18.el9                             AlmaLinux-9-local-BaseOS           1.3 M
 desktop-file-utils                    x86_64        0.26-6.el9                              AlmaLinux-9-local-AppStream         72 k
 device-mapper-multipath-libs          x86_64        0.8.7-12.el9_1.1                        baseos                             266 k
 emacs-filesystem                      noarch        1:27.2-6.el9                            AlmaLinux-9-local-AppStream        8.4 k
 fontconfig                            x86_64        2.14.0-2.el9_1                          appstream                          274 k
 fonts-filesystem                      noarch        1:2.0.5-7.el9.1                         AlmaLinux-9-local-BaseOS           9.0 k
 fprintd                               x86_64        1.94.0-3.el9                            AlmaLinux-9-local-AppStream        164 k
 freetype                              x86_64        2.10.4-9.el9                            AlmaLinux-9-local-BaseOS           387 k
 fribidi                               x86_64        1.0.10-6.el9.2                          AlmaLinux-9-local-AppStream         84 k
 fuse-common                           x86_64        3.10.2-5.el9                            AlmaLinux-9-local-BaseOS           8.0 k
 fuse-overlayfs                        x86_64        1.9-1.el9_0                             AlmaLinux-9-local-AppStream         71 k
 fuse3                                 x86_64        3.10.2-5.el9                            AlmaLinux-9-local-AppStream         53 k
 fuse3-libs                            x86_64        3.10.2-5.el9                            AlmaLinux-9-local-AppStream         91 k
 gdisk                                 x86_64        1.0.7-5.el9                             AlmaLinux-9-local-AppStream        242 k
 gdk-pixbuf2                           x86_64        2.42.6-2.el9                            AlmaLinux-9-local-AppStream        467 k
 gpm-libs                              x86_64        1.20.7-29.el9                           AlmaLinux-9-local-AppStream         20 k
 graphite2                             x86_64        1.3.14-9.el9                            AlmaLinux-9-local-BaseOS            94 k
 harfbuzz                              x86_64        2.7.4-8.el9                             AlmaLinux-9-local-BaseOS           624 k
 iscsi-initiator-utils                 x86_64        6.2.1.4-3.git2a8f9d8.el9                AlmaLinux-9-local-BaseOS           378 k
 iscsi-initiator-utils-iscsiuio        x86_64        6.2.1.4-3.git2a8f9d8.el9                AlmaLinux-9-local-BaseOS            94 k
 isns-utils-libs                       x86_64        0.101-4.el9                             AlmaLinux-9-local-BaseOS            99 k
 jose                                  x86_64        11-3.el9                                AlmaLinux-9-local-AppStream         67 k
 jq                                    x86_64        1.6-12.el9                              AlmaLinux-9-local-AppStream        186 k
 langpacks-core-font-en                noarch        3.0-16.el9                              AlmaLinux-9-local-AppStream        9.4 k
 libX11                                x86_64        1.7.0-7.el9                             AlmaLinux-9-local-AppStream        646 k
 libX11-common                         noarch        1.7.0-7.el9                             AlmaLinux-9-local-AppStream        152 k
 libXau                                x86_64        1.0.9-8.el9                             AlmaLinux-9-local-AppStream         30 k
 libXext                               x86_64        1.3.4-8.el9                             AlmaLinux-9-local-AppStream         39 k
 libXft                                x86_64        2.3.3-8.el9                             AlmaLinux-9-local-AppStream         61 k
 libXrender                            x86_64        0.9.10-16.el9                           AlmaLinux-9-local-AppStream         27 k
 libappstream-glib                     x86_64        0.7.18-4.el9                            AlmaLinux-9-local-AppStream        388 k
 libatasmart                           x86_64        0.19-22.el9                             AlmaLinux-9-local-AppStream         47 k
 libblockdev                           x86_64        2.25-14.el9                             AlmaLinux-9-local-AppStream         84 k
 libblockdev-crypto                    x86_64        2.25-14.el9                             AlmaLinux-9-local-AppStream         31 k
 libblockdev-fs                        x86_64        2.25-14.el9                             AlmaLinux-9-local-AppStream         33 k
 libblockdev-loop                      x86_64        2.25-14.el9                             AlmaLinux-9-local-AppStream         17 k
 libblockdev-lvm                       x86_64        2.25-14.el9                             AlmaLinux-9-local-AppStream         35 k
 libblockdev-mdraid                    x86_64        2.25-14.el9                             AlmaLinux-9-local-AppStream         23 k
 libblockdev-part                      x86_64        2.25-14.el9                             AlmaLinux-9-local-AppStream         26 k
 libblockdev-swap                      x86_64        2.25-14.el9                             AlmaLinux-9-local-AppStream         18 k
 libblockdev-utils                     x86_64        2.25-14.el9                             AlmaLinux-9-local-AppStream         27 k
 libbytesize                           x86_64        2.5-3.el9                               AlmaLinux-9-local-AppStream         39 k
 libconfig                             x86_64        1.7.2-9.el9                             AlmaLinux-9-local-BaseOS            71 k
 libdatrie                             x86_64        0.2.13-4.el9                            AlmaLinux-9-local-AppStream         32 k
 libfprint                             x86_64        1.94.0-3.el9                            AlmaLinux-9-local-AppStream        309 k
 libjose                               x86_64        11-3.el9                                AlmaLinux-9-local-AppStream         64 k
 libjpeg-turbo                         x86_64        2.0.90-5.el9                            AlmaLinux-9-local-AppStream        175 k
 libluksmeta                           x86_64        9-12.el9                                AlmaLinux-9-local-AppStream         25 k
 libnet                                x86_64        1.2-6.el9                               AlmaLinux-9-local-AppStream         58 k
 libpng                                x86_64        2:1.6.37-12.el9                         AlmaLinux-9-local-BaseOS           116 k
 librelp                               x86_64        1.10.0-4.el9                            AlmaLinux-9-local-AppStream         69 k
 librsvg2                              x86_64        2.50.7-1.el9                            AlmaLinux-9-local-AppStream        3.3 M
 librsvg2-tools                        x86_64        2.50.7-1.el9                            AlmaLinux-9-local-AppStream         20 k
 libslirp                              x86_64        4.4.0-7.el9                             AlmaLinux-9-local-AppStream         68 k
 libsoup                               x86_64        2.72.0-8.el9                            AlmaLinux-9-local-AppStream        389 k
 libstemmer                            x86_64        0-18.585svn.el9                         AlmaLinux-9-local-AppStream         82 k
 libthai                               x86_64        0.1.28-8.el9                            AlmaLinux-9-local-AppStream        208 k
 libudisks2                            x86_64        2.9.4-3.el9                             AlmaLinux-9-local-AppStream        192 k
 libxcb                                x86_64        1.13.1-9.el9                            AlmaLinux-9-local-AppStream        225 k
 libxslt                               x86_64        1.1.34-9.el9                            AlmaLinux-9-local-AppStream        240 k
 luksmeta                              x86_64        9-12.el9                                AlmaLinux-9-local-AppStream         21 k
 netavark                              x86_64        2:1.1.0-7.el9_1                         appstream                          2.1 M
 nspr                                  x86_64        4.34.0-14.el9_0                         AlmaLinux-9-local-AppStream        136 k
 nss                                   x86_64        3.79.0-14.el9_0                         AlmaLinux-9-local-AppStream        704 k
 nss-softokn                           x86_64        3.79.0-14.el9_0                         AlmaLinux-9-local-AppStream        379 k
 nss-softokn-freebl                    x86_64        3.79.0-14.el9_0                         AlmaLinux-9-local-AppStream        331 k
 nss-sysinit                           x86_64        3.79.0-14.el9_0                         AlmaLinux-9-local-AppStream         21 k
 nss-util                              x86_64        3.79.0-14.el9_0                         AlmaLinux-9-local-AppStream         90 k
 oniguruma                             x86_64        6.9.6-1.el9.5                           AlmaLinux-9-local-AppStream        217 k
 pango                                 x86_64        1.48.7-2.el9                            AlmaLinux-9-local-AppStream        298 k
 pixman                                x86_64        0.40.0-5.el9                            AlmaLinux-9-local-AppStream        269 k
 plymouth-core-libs                    x86_64        0.9.5-5.20210331git1ea1020.el9          AlmaLinux-9-local-AppStream         96 k
 plymouth-scripts                      x86_64        0.9.5-5.20210331git1ea1020.el9          AlmaLinux-9-local-AppStream         16 k
 podman-catatonit                      x86_64        2:4.2.0-9.el9_1                         appstream                          350 k
 policycoreutils-python-utils          noarch        3.4-4.el9                               AlmaLinux-9-local-AppStream         69 k
 protobuf-c                            x86_64        1.3.3-12.el9                            AlmaLinux-9-local-BaseOS            35 k
 python3-audit                         x86_64        3.0.7-103.el9                           AlmaLinux-9-local-AppStream         83 k
 python3-libsemanage                   x86_64        3.4-2.el9                               AlmaLinux-9-local-AppStream         80 k
 python3-libstoragemgmt                x86_64        1.9.3-1.el9                             AlmaLinux-9-local-AppStream        161 k
 python3-lxml                          x86_64        4.6.5-3.el9                             AlmaLinux-9-local-AppStream        1.2 M
 python3-policycoreutils               noarch        3.4-4.el9                               AlmaLinux-9-local-AppStream        2.0 M
 python3-psutil                        x86_64        5.8.0-12.el9                            AlmaLinux-9-local-AppStream        205 k
 python3-setools                       x86_64        4.4.0-5.el9                             AlmaLinux-9-local-BaseOS           546 k
 python3-setuptools                    noarch        53.0.0-10.el9                           AlmaLinux-9-local-BaseOS           841 k
 shadow-utils-subid                    x86_64        2:4.9-5.el9                             AlmaLinux-9-local-BaseOS            87 k
 slirp4netns                           x86_64        1.2.0-2.el9_0                           AlmaLinux-9-local-AppStream         46 k
 tcl                                   x86_64        1:8.6.10-7.el9                          AlmaLinux-9-local-BaseOS           1.1 M
 tpm2-tools                            x86_64        5.2-2.el9_1                             baseos                             729 k
 tracer-common                         noarch        0.7.5-4.el9                             AlmaLinux-9-local-AppStream         21 k
 udisks2                               x86_64        2.9.4-3.el9                             AlmaLinux-9-local-AppStream        472 k
 usb_modeswitch-data                   noarch        20191128-6.el9                          AlmaLinux-9-local-BaseOS           104 k
 vim-common                            x86_64        2:8.2.2637-16.el9_0.3                   AlmaLinux-9-local-AppStream        6.6 M
 vim-filesystem                        noarch        2:8.2.2637-16.el9_0.3                   AlmaLinux-9-local-BaseOS            20 k
 volume_key-libs                       x86_64        0.3.12-15.el9                           AlmaLinux-9-local-AppStream        143 k
 xdg-utils                             noarch        1.1.3-11.el9                            AlmaLinux-9-local-AppStream         72 k
 xml-common                            noarch        0.6.3-58.el9                            AlmaLinux-9-local-AppStream         31 k
 yajl                                  x86_64        2.1.0-21.el9_0                          AlmaLinux-9-local-AppStream         37 k
Installing weak dependencies:
 aardvark-dns                          x86_64        2:1.1.0-5.el9_1                         appstream                          996 k
 clevis-luks                           x86_64        18-106.el9                              AlmaLinux-9-local-AppStream         35 k
 device-mapper-multipath               x86_64        0.8.7-12.el9_1.1                        baseos                             141 k
 python3-tracer                        noarch        0.7.5-4.el9                             AlmaLinux-9-local-AppStream        108 k
 udisks2-iscsi                         x86_64        2.9.4-3.el9                             AlmaLinux-9-local-AppStream         27 k
 udisks2-lvm2                          x86_64        2.9.4-3.el9                             AlmaLinux-9-local-AppStream         43 k
Installing Environment Groups:
 Server
Installing Groups:
 Container Management
 Core
 Hardware Support
 Headless Management
 Server product core
 Standard
Transaction Summary
======================================================================================================================================
Install  140 Packages
Upgrade   42 Packages

Complete!

メッセージを確認すると、ローカルレポジトリ AlmaLinux-9-local-BaseOS, AlmaLinux-9-local-AppStream からインストールされるパッケージの他に、デフォルトの baseos, appstream  からのインストールされていることが確認できます。また、

  Install  140 Packages
  Upgrade   42 Packages

というメッセージからも分かるとおり、42個のパッケージがデフォルトのレポジトリからネットワーク経由でUpdateされたことになります。

続けて仮想環境のパッケージグループも以下の通りインストールすることにします。

# dnf -y groupinstall “Virtualization Host”

リモートレジストリからDLされたパッケージをローカルレポジトリにコピーしておこう

DVDのISOイメージに格納されていない最新バージョンは、キャッシュディレクトリからローカルレポジトリにコピーしておくことにします。
最初に、サーバ(ホストbase0)にインストールしたパッケージを最新化してしまいましょう。更新可能なパッケージのリストは dnf check-update できます。

# dnf check-update
Last metadata expiration check: 0:16:59 ago on Fri Feb 24 18:18:10 2023.
dbus-common.noarch                                 1:1.12.20-7.el9_1                               baseos
dbus-libs.x86_64                                   1:1.12.20-7.el9_1                               baseos
expat.x86_64                                       2.4.9-1.el9_1.1                                 baseos
grub2-common.noarch                                1:2.06-46.el9_1.3.alma                          baseos
grub2-efi-x64.x86_64                               1:2.06-46.el9_1.3.alma                          baseos
grub2-tools.x86_64                                 1:2.06-46.el9_1.3.alma                          baseos
grub2-tools-minimal.x86_64                         1:2.06-46.el9_1.3.alma                          baseos
kernel.x86_64                                      5.14.0-162.12.1.el9_1                           baseos
kernel-core.x86_64                                 5.14.0-162.12.1.el9_1                           baseos
kernel-modules.x86_64                              5.14.0-162.12.1.el9_1                           baseos

インストール済パッケージを更新するには、dnf updateコマンドを使います。

# dnf –y upgrade
Last metadata expiration check: 0:18:24 ago on Fri Feb 24 18:18:10 2023.
Dependencies resolved.
============================================================================================================
 Package                        Architecture      Version                           Repository         Size
============================================================================================================
Installing:
 kernel                         x86_64            5.14.0-162.12.1.el9_1             baseos            1.9 M
Upgrading:
 dbus-common                    noarch            1:1.12.20-7.el9_1                 baseos             14 k
 dbus-libs                      x86_64            1:1.12.20-7.el9_1                 baseos            152 k
 expat                          x86_64            2.4.9-1.el9_1.1                   baseos            116 k
 grub2-common                   noarch            1:2.06-46.el9_1.3.alma            baseos            904 k
 grub2-efi-x64                  x86_64            1:2.06-46.el9_1.3.alma            baseos            1.3 M
 grub2-tools                    x86_64            1:2.06-46.el9_1.3.alma            baseos            1.8 M
 grub2-tools-minimal            x86_64            1:2.06-46.el9_1.3.alma            baseos            601 k
 libksba                        x86_64            1.5.1-6.el9_1                     baseos            153 k
 libtasn1                       x86_64            4.16.0-8.el9_1                    baseos             73 k
 libxml2                        x86_64            2.9.13-3.el9_1                    baseos            747 k
 python3-libxml2                x86_64            2.9.13-3.el9_1                    baseos            225 k
 python3-perf                   x86_64            5.14.0-162.12.1.el9_1             baseos            2.0 M
 sqlite-libs                    x86_64            3.34.1-6.el9_1                    baseos            619 k
 zlib                           x86_64            1.2.11-35.el9_1                   baseos             90 k
Installing dependencies:
 grub2-tools-efi                x86_64            1:2.06-46.el9_1.3.alma            baseos            539 k
 grub2-tools-extra              x86_64            1:2.06-46.el9_1.3.alma            baseos            836 k
 kernel-core                    x86_64            5.14.0-162.12.1.el9_1             baseos             45 M
 kernel-modules                 x86_64            5.14.0-162.12.1.el9_1             baseos             33 M
Transaction Summary
============================================================================================================
Install   5 Packages
Upgrade  14 Packages

Complete!

更新の後で、改めてキャッシュディレクトリ直下を確認すると、様々なディレクトリが作成されているのが確認できます。

# ls -l /var/cache/dnf/
total 21284
drwxr-xr-x. 2 root root       6 Feb 21 21:06 AlmaLinux-9-latest-x86_64-dvd-6a4836b203272b1
drwxr-xr-x. 3 root root      22 Feb 21 22:23 AlmaLinux-9-local-AppStream-9f5b7b04d21f8c48
-rw-r--r--. 1 root root 4861551 Feb 21 22:23 AlmaLinux-9-local-AppStream-filenames.solvx
-rw-r--r--. 1 root root 2288912 Feb 21 22:23 AlmaLinux-9-local-AppStream.solv
drwxr-xr-x. 3 root root      22 Feb 21 22:23 AlmaLinux-9-local-BaseOS-63247eb56966cec0
drwxr-xr-x. 2 root root       6 Feb 21 21:59 AlmaLinux-9-local-BaseOS-c544416a0f7704f4
-rw-r--r--. 1 root root  631911 Feb 21 22:23 AlmaLinux-9-local-BaseOS-filenames.solvx
-rw-r--r--. 1 root root 1601036 Feb 21 22:23 AlmaLinux-9-local-BaseOS.solv
drwxr-xr-x. 4 root root      56 Feb 24 07:17 appstream-0a8174e0a3d29b90
-rw-r--r--. 1 root root 6189565 Feb 24 07:17 appstream-filenames.solvx
-rw-r--r--. 1 root root  304804 Feb 24 07:17 appstream-updateinfo.solvx
-rw-r--r--. 1 root root 2440099 Feb 24 16:42 appstream.solv
drwxr-xr-x. 4 root root      56 Feb 24 07:17 baseos-09b2e93483836b7c
-rw-r--r--. 1 root root  790109 Feb 24 07:17 baseos-filenames.solvx
-rw-r--r--. 1 root root   85750 Feb 24 07:17 baseos-updateinfo.solvx
-rw-r--r--. 1 root root 1772646 Feb 24 16:42 baseos.solv
-rw-r--r--. 1 root root       2 Feb 24 18:38 expired_repos.json
drwxr-xr-x. 3 root root      40 Feb 24 07:17 extras-55926faaa9829325
-rw-r--r--. 1 root root    1632 Feb 24 07:17 extras-filenames.solvx
-rw-r--r--. 1 root root     102 Feb 24 07:17 extras-updateinfo.solvx
-rw-r--r--. 1 root root   12259 Feb 24 16:42 extras.solv
-rw-r--r--. 1 root root       0 Feb 24 18:18 last_makecache
-rw-r--r--. 1 root root  786432 Feb 24 18:38 packages.db
-rw-r--r--. 1 root root       2 Feb 21 22:42 tempfiles.json

これらのディレクトリ(<repo-id>-xxxxxxxxxxxxxxxx/packages)配下に *.rpm ファイルが作成されていたら、それらをローカルレポジトリにコピーしましょう。
findコマンドを使うと *.rpm ファイルを有無を確認することができます。

# find  /var/cache/dnf –name ‘*.rpm’

もし、/var/cache/dnf/baseos-09b2e93483836b7c/packages/ 直下に *.rpm ファイルが存在していたら、以下のようにローカルレポジトリにコピーします。appstream-0a8174e0a3d29b90/packages 直下に *.rpm ファイルが存在していたら、 /var/www/html/localrepo/AppStream/Packages に同様にコピーします)

# cp –p  /var/cache/dnf/baseos-09b2e93483836b7c/packages/*.rpm  /var/www/html/localrepo/BaseOS/Packages  

その後で、ローカルレポジトリのレポジトリDBを以下のように更新しましょう。(/var/www/html/localrepo/AppStream/Packags にコピーした場合は /var/www/html/localrepo/AppStream に対しても同様に更新します)
WordPressの表示で「-update」のようにハイフンは1つに見えますが、正しくはハイフン二つです(編集画面では2つ記述しているのに表示画面だと2つに見えない…)。

# createrepo --update /var/www/html/localrepo/BaseOS

*.rpmファイルのコピーが終わったら、以下のようにキャッシュをクリアしておきましょう。

# dnf clean all
57 files removed

今までの作業のまとめ

 今までの作業を整理すると以下のようになります。
 ローカルレポジトリを/var/www/html/localrepo/ に作成することを決めたら、最初にDVDのISOイメージの中から、全ての*.rpmファイルをコピーします(①)。
 そこを起点として、ホストbase0に必要なパッケージをインストールしていきます。このときにbase0がインターネットに接続されていれば、新しいバージョンのパッケージ(*.rpmファイル)がデフォルトのリモートレポジトリからインストールされると同時にキャッシュディレクトリに保存されます(②)。ローカルレポジトリにも、その新しい版の*.rpmファイルを持っておきたいので、ローカルレポジトリにもコピーします(③)。
ここまでが今までの作業で完了した操作です。

今後、インターネットに接続されていないサーバにOS及びパッケージをインストールしたい場合は、ホストbase0をインターネットに接続できない環境に持っていく、もしくは、ローカルレポジトリのディレクトリ配下をまるごと、インターネットに接続していないホストに持っていき、LAN経由で、他のサーバにインストールを行うようにします。
そのための設定は、また今度の機会に。。。

ちなみに、Rocky Linuxの場合も設定方法は同じだよ。

このブログの関連リンク

AlmaLinux 9.1をインストールする

コメント

タイトルとURLをコピーしました