Ubuntu の公式リポジトリに収録されているパッケージは、ライセンスやサポート形態によって main, restricted, universe, multiverse の4つに分けて収録されています。その中でも multiverse や restricted は「フリー」でないソフトウェアが収録されているのですが、これらのパッケージをどれだけインストールしているか調べてみました。
方針
- インストールされているパッケージ一覧を installed.txt に保存
- restricted に収録されているパッケージ一覧を restricted.txt に保存
- multiverse も同様
- moreutils の combine コマンドを使って積集合を計算する
インストールされているパッケージ一覧を取得
いろいろやり方はありますが apt list --installed
の結果を加工するのが一番簡単なように思います。とはいえ、これはこれで先頭に Listing...
というメッセージが標準出力に出るので万全ではありません。
$ apt list --installed | head
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Listing...
a2ps/bionic,now 1:4.14-3 amd64 [installed]
accountsservice/bionic,now 0.6.45-1ubuntu1 amd64 [installed]
adduser/bionic,bionic,now 3.116ubuntu1 all [installed]
amd64-microcode/bionic-updates,now 3.20180524.1~ubuntu0.18.04.2 amd64 [installed,automatic]
apache2/bionic-updates,bionic-security,now 2.4.29-1ubuntu4.11 amd64 [installed]
apache2-bin/bionic-updates,bionic-security,now 2.4.29-1ubuntu4.11 amd64 [installed,automatic]
apache2-data/bionic-updates,bionic-updates,bionic-security,bionic-security,now 2.4.29-1ubuntu4.11 all [installed,automatic]
apache2-utils/bionic-updates,bionic-security,now 2.4.29-1ubuntu4.11 amd64 [installed,automatic]
apparmor/bionic-updates,bionic-security,now 2.12-4ubuntu5.1 amd64 [installed]
$ apt list --installed | grep -Fxv 'Listing...' | grep -Po '^[^/]+' > installed.txt
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
$ head installed.txt
a2ps
accountsservice
adduser
amd64-microcode
apache2
apache2-bin
apache2-data
apache2-utils
apparmor
apt
$
restricted, multiverse に収録されているパッケージ一覧を取得
/var/lib/apt/lists
以下にあるインデックスファイルを利用しました。別のリポジトリを利用している場合には別のファイルを使うことになることでしょう。
$ cat /var/lib/apt/lists/jp.archive.ubuntu.com_ubuntu_dists_bionic_restricted_binary-amd64_Packages | head
Package: bcmwl-kernel-source
Architecture: amd64
Version: 6.30.223.271+bdcom-0ubuntu4
Priority: optional
Section: restricted/admin
Source: bcmwl
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Alberto Milone <alberto.milone@canonical.com>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
$ grep ^Package: /var/lib/apt/lists/jp.archive.ubuntu.com_ubuntu_dists_bionic_restricted_binary-amd64_Packages | grep -Po '\S+$' > restricted.txt
$ cat restricted.txt | head
bcmwl-kernel-source
libcuda1-340
libnvidia-cfg1-390
libnvidia-common-390
libnvidia-compute-390
libnvidia-decode-390
libnvidia-encode-390
libnvidia-fbc1-390
libnvidia-gl-390
libnvidia-ifr1-390
$
combine コマンドを使って積集合を計算
$ combine installed.txt and restricted.txt
$ combine installed.txt and multiverse.txt
$
幸か不幸か、使っているパッケージはなかったです。universe のものでテストすると以下のようになりました。
$ combine installed.txt and universe.txt | head
a2ps
certbot
libapache2-mod-fcgid
libapache2-mod-rpaf
libgsasl7
libkyotocabinet16v5
libmailutils5
libntlm0
lpr
mailutils
shora@jag:~$