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

aws_logo

Amazon Linux 2022の GA にともない提供するパッケージ構成が変わりうるので、本記事で説明する手順は GA までの参考程度にどうぞ。

以前投稿した Amazon Linux 2022 にFedora 36レポジトリを導入する記事の続きです。

https://www.gclue.jp/2022/06/amazon-linux-2022-epel-fedora.html

さて、またタイトル詐欺を暴露しますが、EPEL レポジトリは導入しません。

今回は、EPELの代わりに、有志コミュニティによりEPELと同等かそれ以上のパッケージ提供を実現している RPM Fusion のレポジトリをAmazon Linux 2022に導入する手順を説明します。

Amazon Linux 1・2で確立されたEPELユースケースを考えると Amazon Linux 2022(AL2022)へのパッケージ導入にあたりEPELで検索する人が多いんじゃないかと予想しますが、AL2022 ではEPELが使えないのでその代わりの記事ということになります。

レポジトリ導入手順

AL2022のDockerイメージからコンテナを起動、RPM Fusionフリー版レポジトリを導入し、パッケージ検索するまでを試してみましょう。

今回はFedora 36向けRPM Fusionフリー版レポジトリを導入しますが、依存関係としてFedora 36レポジトリの導入も必要となります。Fedora 36レポジトリ導入手順は以前の記事で扱っていますが、簡単のためこちらの導入手順に組み込んで紹介します。

全手順

以下、全手順シェルスクリプトになります。
dnfレポジトリ設定ファイルの heredoc文法 により、かなり長いスクリプトになったので、トグルで畳んでいます。

全手順シェルスクリプト
# お試し用のAL2022コンテナを起動する
$ docker run --rm -it public.ecr.aws/amazonlinux/amazonlinux:2022 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
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

# AL2022に含まれないニッチなパッケージを確認する
$ dnf repoquery --nvr 'rtmpdump'

続けて、各ステップの説明をしていきます。

Amazon Linux 2022コンテナ起動

まず、AL2022のDockerイメージからコンテナを起動し、bashシェルのセッションを開きます。

# お試し用のAL2022コンテナを起動する
$ docker run --rm -it public.ecr.aws/amazonlinux/amazonlinux:2022 bash

Fedora 36レポジトリ導入

次にFedora 36レポジトリのdnfレポジトリ設定ファイルを作成します。

Fedora 36の設定ファイルを参考にしていますが、もともとFedora系列の$releasever=36などが代入されるよう期待されている部分はAL2022の$releasever=2022.0.20220531などが代入されてエラーになるので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
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レポジトリのパッケージを実際に検索してみます。

# AL2022に含まれないニッチなパッケージを確認する
dnf repoquery --nvr 'rtmpdump'

RPM Fusion と Fedora の提供パッケージの違い

https://rpmfusion.org/

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がパッケージ提供を差し控えているのかもしれません。





  1. Linuxディストロを商用利用するケースが世の中に溢れていることを考えると、商用利用不可なソフトウェアはデフォルトのレポジトリで提供しない、使いたいなら独自に導入してもらうくらいのほうが良い。 ↩︎