以下のコマンドを使用すると、 Ubuntu にインストールされているパッケージのうち、Main リポジトリ以外(Restricted, Universe, Multiverse)に属するものを一覧で表示できる。
dpkg-query --show --showformat='${binary:Package}\n' | xargs -IX bash -c "apt-cache policy X | sed -n --regexp-extended '1h;/.*(\/restricted|\/universe|\/multiverse) .*/{x;p;x;p;Q}'"
以上!
…とすると、この記事だけでは少し物足りない気がするので、使い方についても少し説明しておく。
なぜ Main リポジトリ以外のものを把握したいのか?
パッケージの取得元リポジトリのカテゴリを把握する理由は、Canonical による Ubuntu Pro のサポート範囲が関係しているからだ。
apt
コマンドを使用して、Ubuntu の標準リポジトリから取得される各パッケージは、以下の4つのカテゴリに分類される。 1
- Main
- Ubuntu チームによってサポートされる、フリーソフトウェアを収容するコンポーネントで、 2,300 以上のパッケージを含む。
- Ubuntu インストール時にデフォルトでインストールされるパッケージの大半はこれ。
- Restricted
- ドライバーなど、利便性の面でデフォルトでインストールされたほうが望ましいものの、プロプライエタリであるソフトウェアを含むコンポーネント。
- Universe
- Ubuntu コミュニティによって管理されている、 Linux 界の多くのオープンソースソフトウェアを収容するコンポーネントで、 23,000 以上のパッケージを含む。
- Multiverse
- フリーソフトの要件を満たさないような、特殊なライセンス要件をもつソフトウェアを収容するコンポーネント。
- GPU 関連 (CUDA 等) や, VirtualBox などが含まれている。
これらのうち、Restricted と Multiverse リポジトリのパッケージについては、それぞれのソフトの提供元によってのみメンテナンスされ、Canonical によるサポートは行われない。
一方で、Main と Universe リポジトリのパッケージについては、セキュリティ修正の提供期間や、電話/オンラインチケットサポート範囲が、 Ubuntu Pro の有無やライセンスの種類ごとに以下のような内訳となっている。 2
Security patching Ubuntu LTS Ubuntu Pro (Infra-only) Ubuntu Pro Over 2,300 packages in Ubuntu Main repository 5 years 10 years 10 years Over 23,000 packages in Ubuntu Universe repository Best effort Best effort 10 years Optional phone/ticket support No Yes Yes
5年のLTSの期間中、Main リポジトリのパッケージを主に使用する場合、(ライブパッチ等の他のUbuntu Proのサービスが不要であれば)無料の範囲内で十分だ。
Main リポジトリのパッケージを主に使用しながら、10年の延長サポートを望む場合は、"Ubuntu Pro (Infra-only)" を契約することをおすすめする。
また、Universe リポジトリのパッケージを積極的に活用したい場合は、"Ubuntu Pro" を契約しておくと、より安心だろう。
Ubuntu の Universe リポジトリのパッケージの更新基準
ちなみに、Universe repository の "Best effort" と "10 years" の違いがいまいちわかりにくいが…
例えば、サポート中の Ubuntu 22.04 LTS であっても、 Universe リポジトリの imagemagick パッケージを更新しようとすると、 Ubuntu Pro with 'esm-apps'
の有効化が必要と広告が表示される。
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.2 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
$
$ sudo apt update
$ sudo apt install imagemagick
$
$ sudo apt upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
Get more security updates through Ubuntu Pro with 'esm-apps' enabled:
imagemagick ansible libopenexr25 libmagickcore-6.q16-6-extra
libmagickwand-6.q16-6 imagemagick-6.q16 libmagickcore-6.q16-6
imagemagick-6-common
Learn more about Ubuntu Pro at https://ubuntu.com/pro
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
$
$ apt-cache policy imagemagick
imagemagick:
Installed: 8:6.9.11.60+dfsg-1.3ubuntu0.22.04.3
Candidate: 8:6.9.11.60+dfsg-1.3ubuntu0.22.04.3
Version table:
*** 8:6.9.11.60+dfsg-1.3ubuntu0.22.04.3 500
500 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages
500 http://archive.ubuntu.com/ubuntu jammy-security/universe amd64 Packages
100 /var/lib/dpkg/status
8:6.9.11.60+dfsg-1.3build2 500
500 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
上記の回答によると、 Ubuntu の Universe リポジトリのアップストリームパッチの取り込みは引き続き行っているものの、 Canonical のセキュリティチームによるパッチは Ubuntu Pro の 'esm-apps' に限って行うようになっている。
ここでいう「アップストリームパッチ」とはなんぞや?
ImageMagick の元の開発元の GitHub を見れば分かる通り、より高いバージョンのパッケージもメンテナンスリリースされ続けているが、これがそのまま取り込まれているわけではなさそうだ。
一方で、Ubuntu 22.04 LTS の元となっている Debian 11 bullseye のパッケージを見ると、 2023年7月 現在は
imagemagick (8:6.9.11.60+dfsg-1.3+deb11u1)
と、 Ubuntu 側の非ESMのバージョンと、似たようなバージョンにとどまっている。
すなわち、ココで言う「アップストリーム」とは、 Debian のパッケージ管理の方を指しているのだと思われる。
おそらく、Universe リポジトリのパッケージについては以下のようになっているのだろう。
- ベースとなっている Debian でリリースされているバージョンは Best effort で LTS へ取り込み
- それ以外の Canonical 側で当てたセキュリティパッチは Ubuntu Pro のみに提供
だとすれば、Ubuntu Pro の esm-apps を有効にしていなくても、ベースとなった Debian レベルの修正はされると考えてよさそうだ。
実際にソースコードを見てみる
実際に、 Debian 11 bullseye, Ubuntu 22.04 LTS, Ubuntu 22.04 ESM それぞれに於ける2023年7月現在最新版のソースを、 apt source
コマンドで入手してみて比べてみると…
ディストリビューション | .dsc (Debian Source Control) ファイル | ソースファイル |
---|---|---|
Debian 11 bullseye | imagemagick_6.9.11.60+dfsg-1.3+deb11u1.dsc |
|
Ubuntu 22.04 LTS | imagemagick_6.9.11.60+dfsg-1.3ubuntu0.22.04.3.dsc |
|
Ubuntu 22.04 esm-apps | imagemagick_6.9.11.60+dfsg-1.3ubuntu0.22.04.3+esm2.dsc 3 |
|
このうち、 imagemagick_6.9.11.60+dfsg.orig.tar.xz
についてはハッシュ値まで同じファイルなので、相違点は以下のファイルとなる。
imagemagick_6.9.11.60+dfsg-1.3+deb11u1.debian.tar.xz
imagemagick_6.9.11.60+dfsg-1.3ubuntu0.22.04.3.debian.tar.xz
imagemagick_6.9.11.60+dfsg-1.3ubuntu0.22.04.3+esm2.debian.tar.xz
これらのアーカイブファイルの中身に対して WinMerge の3方向マージなどを使い、changelog やパッチファイルなどの比較をしてみよう。
すると、いずれも 6.9.11.60+dfsg-1.3
までのパッチがあたっているのに加えて、それぞれ以下のセキュリティフィックスを含んでいることがわかる。
- Debian 11 と Ubuntu 22.04 LTS
- CVE-2022-44267
- CVE-2022-44268
- Ubuntu 22.04 esm-apps
- CVE-2022-44267
- CVE-2022-44268
- CVE-2021-3574
- CVE-2021-3610
- CVE-2021-4219
- CVE-2021-20241
- CVE-2021-20243
- CVE-2021-20244
- CVE-2021-20245
- CVE-2021-20246
- CVE-2021-20309
- CVE-2021-20312
- CVE-2021-20313
- CVE-2021-39212
- CVE-2022-1114
- CVE-2022-28463
- CVE-2022-32545
- CVE-2022-32546
- CVE-2022-32547
- CVE-2023-1289
- CVE-2023-1906
- CVE-2023-3195
- CVE-2023-3428
- CVE-2023-34151
前述の、 Debian 11
≒ Ubuntu 22.04 LTS
≦ Ubuntu 22.04 esm-apps
だろうという予想は当たっていそうだ。
ちなみに、つい先日2023年6月にリリースされたばかりの Debian 12 bookworm では、imagemagick_6.9.11.60+dfsg-1.6.dsc という少し dfsg のバージョンが高いパッケージがリリースされている。
その changelog を見てみると、6.9.11.60+dfsg-1.3
までのパッチに加えて、以下のセキュリティフィックスが含まれていた。
- Debian 12
- CVE-2022-44267
- CVE-2022-44268
- CVE-2021-3574
- CVE-2021-4219
- CVE-2021-20241
- CVE-2021-20243
- CVE-2021-20244
- CVE-2021-20245
- CVE-2021-20246
- CVE-2021-20309
- CVE-2021-20312
- CVE-2021-20313
- CVE-2021-39212
- CVE-2022-1114
- CVE-2022-28463
- CVE-2022-32545
- CVE-2022-32546
- CVE-2022-32547
Ubuntu Pro の esm-apps のほうが、Debian 12 に含まれているパッチに加え、更に多くのセキュリティフィックスを含んでいることがわかる。
… Debian 12 bookworm のパッケージでも、ImageMagick 6.9.12系 や ImageMagick 7系へのパッケージの更新はしていないのね。
参考:
- 「Ubuntu Pro」のワークステーション・データセンター向けベータリリース | gihyo.jp
- 【Ubuntu日和】【第30回】DebianとUbuntu、CentOSとRHELから学ぶ、Upstreamとの関係 - PC Watch
-
ESM向けの配信ページはパスワード保護がかかっているが、Ubuntu Pro を有効すると作成される
/etc/apt/auth.conf.d/
内のファイルに記載されたユーザー名(bearer
)とパスワードで認証できる。 ↩