前回、AlmaLinuxをminimalパッケージをインストールしたので、必要なパッケージがほとんど入っていない状態です。サーバはルーターを通じてインターネットに接続できる状態なので、AlmaLinuxの外部レポジトリ(パブリックレポジトリ)に接続して、必要なパッケージを追加インストールすることはできます。ですが、ここはあえてローカルレポジトリを構築したいと思います。なぜなら。。。
![](http://runningdog.mond.jp/blog/wp-content/uploads/2023/03/uroko-1-150x150.png)
お客様先での構築作業では、インターネットに簡単に接続できるとは限らないよ…
という理由なのです。あえて、技術確立のために、インターネット接続できない場合で対応できるようにローカルレポジトリ(プライベートレポジトリ)の構築にチャレンジします。
レポジトリって何?
そもそもレポジトリという言葉は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はそうじゃないってことなのかな。。
![](https://runningdog.mond.jp/blog/wp-content/uploads/cocoon-resources/blog-card-cache/49bc48a1be9400b678cd09f8e518c8e3.png)
先でマウントした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
![](https://runningdog.mond.jp/blog/wp-content/uploads/2023/03/localrepo1-1024x467.png)
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ファイルを持っておきたいので、ローカルレポジトリにもコピーします(③)。
ここまでが今までの作業で完了した操作です。
![](https://runningdog.mond.jp/blog/wp-content/uploads/2023/03/localrepo2-1-1024x433.png)
今後、インターネットに接続されていないサーバにOS及びパッケージをインストールしたい場合は、ホストbase0をインターネットに接続できない環境に持っていく、もしくは、ローカルレポジトリのディレクトリ配下をまるごと、インターネットに接続していないホストに持っていき、LAN経由で、他のサーバにインストールを行うようにします。
そのための設定は、また今度の機会に。。。
![](http://runningdog.mond.jp/blog/wp-content/uploads/2023/03/uroko-1-150x150.png)
ちなみに、Rocky Linuxの場合も設定方法は同じだよ。
コメント