元々 Amazon Linux 2022 の記事でしたが、Amazon Linux 2022 の代わりに Amazon Linux 2023 が GA されましたので、文章を Amazon Linux 2023 向けに調整しました。
以前投稿した Amazon Linux 2023 に Fedora 36 レポジトリを導入する記事の続きです。
https://www.gclue.jp/2022/06/amazon-linux-2022-epel-fedora.html
さて、またタイトル詐欺を暴露しますが、EPEL レポジトリは導入しません。
今回は、EPEL の代わりに、有志コミュニティにより EPEL と同等かそれ以上のパッケージ提供を実現している RPM Fusion のレポジトリを Amazon Linux 2023 に導入する手順を説明します。
Amazon Linux 1・2 で確立された EPEL ユースケースを考えると Amazon Linux 2023(AL2023)へのパッケージ導入にあたり EPEL で検索する人が多いんじゃないかと予想しますが、AL2023 では EPEL が使えないのでその代わりの記事ということになります。
レポジトリ導入手順
AL2023 の Docker イメージからコンテナを起動、RPM Fusion フリー版レポジトリを導入し、パッケージ検索するまでを試してみましょう。
今回は Fedora 36 向け RPM Fusion フリー版レポジトリを導入しますが、依存関係として Fedora 36 レポジトリの導入も必要となります。Fedora 36 レポジトリ導入手順は以前の記事で扱っていますが、簡単のためこちらの導入手順に組み込んで紹介します。
全手順
以下、全手順シェルスクリプトになります。
dnf レポジトリ設定ファイルの heredoc 文法により、かなり長いスクリプトになったので、トグルで畳んでいます。
全手順シェルスクリプト
# お試し用のAL2023コンテナを起動する
$ docker run --rm -it public.ecr.aws/amazonlinux/amazonlinux:2023 bash
# Fedora 36 レポジトリ導入
$ cat <<'TXT' > /etc/yum.repos.d/fedora.repo
# See also: docker run --rm -it fedora:36 cat /etc/yum.repos.d/fedora.repo
[fedora]
name=Fedora 36 - $basearch
#baseurl=http://download.example/pub/fedora/linux/releases/36/Everything/$basearch/os/
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-36&arch=$basearch
enabled=1
countme=1
metadata_expire=7d
repo_gpgcheck=0
type=rpm
gpgcheck=1
gpgkey=https://getfedora.org/static/fedora.gpg
https://src.fedoraproject.org/rpms/fedora-repos/raw/f36/f/RPM-GPG-KEY-fedora-36-primary
skip_if_unavailable=False
TXT
# RPM Fusion レポジトリ導入
$ cat <<'TXT' > /etc/yum.repos.d/rpmfusion-free.repo
# See also: docker run --rm -it fedora:36 bash -c \
# 'dnf install -y https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-36.noarch.rpm; cat /etc/yum.repos.d/rpmfusion*'
[rpmfusion-free]
name=RPM Fusion for Fedora 36 - Free
#baseurl=http://download1.rpmfusion.org/free/fedora/releases/36/Everything/36/os/
metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-36&arch=$basearch
enabled=1
metadata_expire=14d
type=rpm-md
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://rpmfusion.org/keys?action=AttachFile&do=view&target=RPM-GPG-KEY-rpmfusion-free-fedora-2020
[rpmfusion-free-debuginfo]
name=RPM Fusion for Fedora 36 - Free - Debug
#baseurl=http://download1.rpmfusion.org/free/fedora/releases/$releasever/Everything/36/debug/
metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-debug-36&arch=$basearch
enabled=0
metadata_expire=7d
type=rpm-md
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://rpmfusion.org/keys?action=AttachFile&do=view&target=RPM-GPG-KEY-rpmfusion-free-fedora-2020
[rpmfusion-free-source]
name=RPM Fusion for Fedora 36 - Free - Source
#baseurl=http://download1.rpmfusion.org/free/fedora/releases/36/Everything/source/SRPMS/
metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-source-36&arch=$basearch
enabled=0
metadata_expire=7d
type=rpm-md
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://rpmfusion.org/keys?action=AttachFile&do=view&target=RPM-GPG-KEY-rpmfusion-free-fedora-2020
[rpmfusion-free-updates]
name=RPM Fusion for Fedora 36 - Free - Updates
#baseurl=http://download1.rpmfusion.org/free/fedora/updates/36/$basearch/
metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-updates-released-36&arch=$basearch
enabled=1
enabled_metadata=1
type=rpm-md
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://rpmfusion.org/keys?action=AttachFile&do=view&target=RPM-GPG-KEY-rpmfusion-free-fedora-2020
[rpmfusion-free-updates-debuginfo]
name=RPM Fusion for Fedora 36 - Free - Updates Debug
#baseurl=http://download1.rpmfusion.org/free/fedora/updates/36/$basearch/debug/
metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-updates-released-debug-36&arch=$basearch
enabled=0
type=rpm-md
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://rpmfusion.org/keys?action=AttachFile&do=view&target=RPM-GPG-KEY-rpmfusion-free-fedora-2020
[rpmfusion-free-updates-source]
name=RPM Fusion for Fedora 36 - Free - Updates Source
#baseurl=http://download1.rpmfusion.org/free/fedora/updates/36/SRPMS/
metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-updates-released-source-36&arch=$basearch
enabled=0
type=rpm-md
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://rpmfusion.org/keys?action=AttachFile&do=view&target=RPM-GPG-KEY-rpmfusion-free-fedora-2020
[rpmfusion-free-updates-testing]
name=RPM Fusion for Fedora 36 - Free - Test Updates
#baseurl=http://download1.rpmfusion.org/free/fedora/updates/testing/36/$basearch/
metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-updates-testing-36&arch=$basearch
enabled=0
enabled_metadata=0
type=rpm-md
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://rpmfusion.org/keys?action=AttachFile&do=view&target=RPM-GPG-KEY-rpmfusion-free-fedora-2020
[rpmfusion-free-updates-testing-debuginfo]
name=RPM Fusion for Fedora $releasever - Free - Test Updates Debug
#baseurl=http://download1.rpmfusion.org/free/fedora/updates/testing/36/$basearch/debug/
metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-updates-testing-debug-36&arch=$basearch
enabled=0
type=rpm-md
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://rpmfusion.org/keys?action=AttachFile&do=view&target=RPM-GPG-KEY-rpmfusion-free-fedora-2020
[rpmfusion-free-updates-testing-source]
name=RPM Fusion for Fedora 36 - Free - Test Updates Source
#baseurl=http://download1.rpmfusion.org/free/fedora/updates/testing/36/SRPMS/
metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-updates-testing-source-36&arch=$basearch
enabled=0
type=rpm-md
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://rpmfusion.org/keys?action=AttachFile&do=view&target=RPM-GPG-KEY-rpmfusion-free-fedora-2020
TXT
# AL2023に含まれないニッチなパッケージを確認する
$ dnf repoquery --nvr 'rtmpdump'
続けて、各ステップの説明をしていきます。
Amazon Linux 2023 コンテナ起動
まず、AL2023 の Docker イメージからコンテナを起動し、bash シェルのセッションを開きます。
# お試し用のAL2023コンテナを起動する
$ docker run --rm -it public.ecr.aws/amazonlinux/amazonlinux:2023 bash
Fedora 36レポジトリ導入
次に Fedora 36 レポジトリの dnf レポジトリ設定ファイルを作成します。
Fedora 36 の設定ファイルを参考にしていますが、もともと Fedora 系列の $releasever=36
などが代入されるよう期待されている部分は AL2023 の $releasever=2023.0.20230222.1
などが代入されてエラーになるので 36
に固定にし、GPG キーはローカルファイルパスを参照する代わりにオンライン URL パスを参照するように変更しています。
# Fedora 36 レポジトリ導入
$ cat <<'TXT' > /etc/yum.repos.d/fedora.repo
# See also: docker run --rm -it fedora:36 cat /etc/yum.repos.d/fedora.repo
[fedora]
name=Fedora 36 - $basearch
#baseurl=http://download.example/pub/fedora/linux/releases/36/Everything/$basearch/os/
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-36&arch=$basearch
enabled=1
countme=1
metadata_expire=7d
repo_gpgcheck=0
type=rpm
gpgcheck=1
gpgkey=https://getfedora.org/static/fedora.gpg
https://src.fedoraproject.org/rpms/fedora-repos/raw/f36/f/RPM-GPG-KEY-fedora-36-primary
skip_if_unavailable=False
TXT
RPM Fusion レポジトリ導入
次に RPM Fusion レポジトリの dnf レポジトリ設定ファイルを作成します。
以下は手順の一部抜粋ですが、Fedora 36 と同じく $releasever
と GPG キー周りを調整しています。
# See also: docker run --rm -it fedora:36 bash -c \
# 'dnf install -y https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-36.noarch.rpm; cat /etc/yum.repos.d/rpmfusion*'
[rpmfusion-free]
name=RPM Fusion for Fedora 36 - Free
#baseurl=http://download1.rpmfusion.org/free/fedora/releases/36/Everything/36/os/
metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-36&arch=$basearch
enabled=1
metadata_expire=14d
type=rpm-md
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://rpmfusion.org/keys?action=AttachFile&do=view&target=RPM-GPG-KEY-rpmfusion-free-fedora-2020
RPM Fusion レポジトリのパッケージ検索
最後に、RPM Fusion レポジトリのパッケージを実際に検索してみます。
# AL2023に含まれないニッチなパッケージを確認する
dnf repoquery --nvr 'rtmpdump'
RPM Fusion と Fedora の提供パッケージの違い
RPM Fusion provides software that the Fedora Project or Red Hat doesn’t want to ship.
RPM Fusion の公式サイトには「RPM Fusion は Fedora Project や Red Hat がレポジトリで提供したくないソフトウェアを提供する」とあります。
https://rpmfusion.org/Configuration/#Installing_Free_and_Nonfree_Repositories
We have two separate software repositories:
- free for Open Source Software (as defined by the Fedora Licensing Guidelines) which the Fedora project cannot ship due to other reasons
- nonfree for redistributable software that is not Open Source Software (as defined by the Fedora Licensing Guidelines); this includes software with publicly available source-code that has “no commercial use”-like restrictions
また、提供するレポジトリが2種類あり、フリー版 free
では Fedora プロジェクトが何らかの理由で提供していない OSS を、非フリー版 nonfree
では配布可能な、ただし商用利用が不可能な非 OSS を提供しているとあります。
RPM Fusion 非フリー版レポジトリが提供するパッケージが Fedora レポジトリで提供されていない理由は自明 1 ですが、ではフリー版はどういう理由により提供されていないのか考察してみました。
コマンド dnf --repo rpmfusion-free info
などで提供パッケージの説明文を読んでみると、下記のようなものが目立ちます。
- オーディオ・ビデオのコーデック、ライブラリ、ツール
- ゲーム、およびそのエミュレータ、ツール
オーディオ、ビデオ、ゲーム… どれも大きな利権が絡むカテゴリですし、提供しているパッケージ自体はライセンス的に商用利用が可能なんでしょうけれど、関連する技術、ライブラリやコンテンツの利用如何によっては、容易に商用利用が不可能になるように見えました。
あくまで個人的予想ですが、そういう扱いの難しさから Fedora Project や Red Hat がパッケージ提供を差し控えているのかもしれません。
Linux ディストロを商用利用するケースが世の中に溢れていることを考えると、商用利用不可なソフトウェアはデフォルトのレポジトリで提供しない、使いたいなら独自に導入してもらうくらいのほうが良い。 ↩︎