AmazonLinux2023へのlsyncdのインストール方法

amazonlinux2023-lsyncd

背景

Dockerイメージに使用しているAmazonLinux2のイメージからAmazonLinux2023への移行プロジェクトにおいてlsyncdがAmazonLinux2023にはdnf installでは普通にインストールできないため、力業でAmazonLinux2023への導入手順を備忘としてまとめておきます。

注意
本手順はAWSのサポート範囲ではないため、実施する際は自己の責任でお願いします。

AmazonLinux2とAmazonLinux2023の違い

AmazonLinux2とAmazonLinux2023のリポジトリの違いを表にまとめると以下

項目AmazonLinux2AmazonLinux2023
リポジトリamzn2-conre, epel, amazon-linux-extrasなどamazonlinux
EPEL(Extra Packages for Enterprise Linux)利用可能 (amazon-linux-extras経由でepel-releaseを導入)デフォルトでは利用不可
パッケージのバージョンRHEL7ベースRedoraベース

AmazonLinux2の特徴

amazon-linux-extras を使用することでデフォルトでは提供されていない追加パッケージ(lsyncd)をインストールすることができた。

amazon-linux-extras とはリポジトリ管理ツールであり、Amazonが提供する追加リポジトリです。

特定のパッケージ(今回でいえばlsyncdなど)を提供しており、AmazonLinux2ではyum installで問題なくインストールすることができた。

※AmazonLinux2のデフォルトのリポジトリはamzn2-coreというリポジトリが設定されており、基本的なパッケージはそこからインストールすることが可能です。

AmazonLinux2023の特徴

AmazonLinux2でamazon-linux-extrasが提供されており、特定のパッケージをインストールすることが可能でしたが、AmazonLinux2023ではamazon-linux-extrasが完全に廃止されたため、lsyncdを普通にインストールすることができなくなってしまったということです。

amazon-linux-extrasは完全に廃止されたため、AmazonLinux2023のリポジトリはAmazonが提供する単一のリポジトリになってしまった。

つまり、AmazonLinux2はEPELベースAmazonLinux2023はRedoraベースでリポジトリがそもそも違うため、拾ってこれるパッケージも当然違いますよ、ということです。

ちなみにAWS公式のドキュメントのインストールされているパッケージの比較にはlsyncdに関することは記載されていないため、少しハマりました。

まぁ、インストールされているパッケージの比較なのでデフォルトでインストールされていなければここにも書かれることはないので当たり前なのですが…

ただ、このドキュメントから読み取れるのはamazon-linux-extrasがインストールされているか、されていないかの比較が見て取れますので、ここを見てすぐにピンとくる人なら問題ないかと思います。

Amazon Linux 2 と Amazon Linux 2023 ベースコンテナイメージにインストールされているパッケージの比較

Amazon Linux 2 (AL2) ベースコンテナイメージと Amazon Linux 2023 (AL2023) ベースコンテナイメージのパッケージの比較。

AmazonLinux2023へのlsyncdの導入方法

では、ここからが本題ですが、どうやってAmazonLinux2023(今回の場合コンテナ)に導入するのでしょうか?

結論

AmazonLinux2が利用可能だったEPELと同等のパッケージを提供しているRPM FusionのリポジトリをAmazonLinux2023に導入することです。

前提

RPM Fusionリポジトリを導入するためには、Fedora36リポジトリの導入が前提となります。

方法

以下のようなDockerfileを準備し、実際に動作確認してみましょう。

# Amazon Linux ベースイメージ
FROM amazonlinux:2023.5.20241001.1

# 作業ディレクトリの設定
WORKDIR /tmp

# Fedora36リポジトリの導入
RUN echo -e "[fedora]\nname=Fedora 36 - \$basearch\nmetalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-36&arch=\$basearch\nenabled=1\ncountme=1\nmetadata_expire=7d\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\ngpgkey=https://getfedora.org/static/fedora.gpg\n      https://src.fedoraproject.org/rpms/fedora-repos/raw/f36/f/RPM-GPG-KEY-fedora-36-primary\nskip_if_unavailable=False" > /etc/yum.repos.d/fedora.repo
# RPM Fusionリポジトリの導入
RUN echo -e "[rpmfusion-free]\nname=RPM Fusion for Fedora 36 - Free\nmetalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-36&arch=\$basearch\nenabled=1\nmetadata_expire=14d\ntype=rpm-md\ngpgcheck=1\nrepo_gpgcheck=0\ngpgkey=https://rpmfusion.org/keys?action=AttachFile&do=view&target=RPM-GPG-KEY-rpmfusion-free-fedora-2020" > /etc/yum.repos.d/rpmfusion-free.repo
# lsyncdのインストール
RUN dnf --enablerepo=fedora install -y lsyncd

私の環境はWindowsのため、適当にユーザー配下にworkというフォルダを切ってその中にDockerfileを作成します。

以下コマンドでDockerイメージのビルドを実行します。

$ docker image build -t lsyncd-test .

buildのログは以下です。

[+] Building 236.0s (9/9) FINISHED                                                                                                  docker:default 
 => [internal] load build definition from Dockerfile                                                                                          0.6s 
 => => transferring dockerfile: 1.06kB                                                                                                        0.1s 
 => [internal] load metadata for docker.io/library/amazonlinux:2023.5.20241001.1                                                              5.5s 
 => [internal] load .dockerignore                                                                                                             0.2s 
 => => transferring context: 2B                                                                                                               0.0s 
 => CACHED [1/5] FROM docker.io/library/amazonlinux:2023.5.20241001.1@sha256:019cf20c5b98efcd548952d31df1768377916bf8d57d70d979c6c92bfd5e744  0.0s 
 => [2/5] WORKDIR /tmp                                                                                                                        0.3s 
 => [3/5] RUN echo -e "[fedora]\nname=Fedora 36 - $basearch\nmetalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-36&arch=$basear  5.2s 
 => [4/5] RUN echo -e "[rpmfusion-free]\nname=RPM Fusion for Fedora 36 - Free\nmetalink=https://mirrors.rpmfusion.org/metalink?repo=free-fed  1.4s 
 => [5/5] RUN dnf --enablerepo=fedora install -y lsyncd                                                                                     212.8s 
 => exporting to image                                                                                                                        7.3s
 => => exporting layers                                                                                                                       7.2s
 => => writing image sha256:b241f06d3c0d500c40a814346b5a3d2e54c3b7f3e701c7307adf45f66b82ede9                                                  0.0s
 => => naming to docker.io/library/lsyncd-test                                                                                                0.1s

View build details: docker-desktop://dashboard/build/default/default/vwmzqdemxuh6j7knarym1fsr0

少し時間はかかりますが、問題なくDockerイメージが出来上がりました。

参考情報

CakePHP2環境をAmazon Linux2023につくる | Blog | 株式会社マイロプス | mylops inc. | デザインで照らす、テクノロジーで結ぶ。

CakePHP2環境をAmazon Linux2023につくる | 株式会社マイロプスのメンバーが、デザインやエンジニアリングに関する情報をお届けするメディアです。日々の業務の中で得られた学びやノウハウから、実験的な内容まで、幅広く発信します。

Amazon Linux 2023へEPEL・RPM Fusionレポジトリを追加する

アプリ, クラウド, AI, IOT, RoboticsでDX化を加速

Amazon Linux 2023へEPEL・Fedora 36レポジトリを追加する

アプリ, クラウド, AI, IOT, RoboticsでDX化を加速

Fedora との関係

AL2023 のメジャーリリースは、一部はアップストリーム Fedora Linux ディストリビューションの最新バージョンに基づいています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です