Ubuntu

Ubuntu20.04 再インストールで依存・推奨パッケージを入れる

Live環境を作ってテストしているのだけれど、GDMをインストールする時に–no-install-recommendsを指定したことが原因で、インストールされるパッケージが足らなくなり、Miix 2 8で音が鳴らなかった。–no-install-recommendsなしでもう一度パッケージをインストールしてみたが、既にインストールされているから何も起きない。

一旦、インストールしたパッケージをリムーブして、今度は–no-install-recommends指定なしでインストールしてみたが、いくつかパッケージがインストールされたけれども、Miix 2 8では音が鳴らなかった。

インストールの手順を組み替えて、–no-install-recommends指定をせずに最初からLive環境を作り直してみたところ、音が鳴るようになった。



広告


Live環境を作り込む手順はすべて書き記しているから、最初からやり直すことは難しくない。
でも、長期間掛けて作り込んだ環境でこの問題が発生すると困ったことになるかもしれないので、差分を吸収する方法について調べてみた。

原因

パッケージAをインストールする時、デフォルトではDependsとRecommendsがインストールされるようになっている。

できるだけ小さな環境を作ろうとして、–no-install-recommendsを指定したことで、Recommendsのパッケージはインストールされなかった。
パッケージAをインストールする時、DependsのパッケージBがインストールされるが、パッケージBのRecommendsはインストールされない。

今回のMiix 2 8は、パターン2の状態になっていた。パッケージDがインストールされていないから音が鳴らない(概念的には)。

[パターン1]               [パターン2]
Recommendsをインストール  Recommendsをインストールしない
A                         A
 + B(Depends)              + B(Depends)
   + C(Depends)              + C(Depends)
   + D(Recommends)           + D(Recommends)
 + E(Reccommends)          + E(Reccommends)

パッケージBは既にインストールされているから、たとえパッケージAをリムーブしてインストールし直しても、パッケージDはインストールされない(パッケージEはインストールされる)。

ちなみに、パッケージの依存関係はざっくりとは以下の通り。

宣言意味
Depends完全に依存する。
Recommends強い依存関係だけれども、絶対ではない。
Suggests存在するとこのパッケージを便利に使える、なくても問題ない。
Enhancesこのパッケージが、ここに書かれたパッケージの有用性を増す。Suggestsの反対に作用。
Pre-Dependsこのパッケージをインストールする前に、完全にインストールされている必要がある。
Debian ポリシーマニュアル Chapter 7 – パッケージ間の関連性の宣言

対策

今回の例では、パッケージAとBをリムーブして、再度パッケージAをインストールすれば、同じ状態にできる。
あるいは、パッケージABCをすべてリムーブし、あらためてAをインストールすれば良い。

今回はGDMで発生した問題だったので、ツリーがとても大きくなっていて、Depends指定されたパッケージを追いかけるのはなかなか大変に思えた。

そこで、他の方法を探してみたところ、インストールの履歴がログに残っているようだった。
UNIX&LINUX / Remove package and installed dependencies with apt-get

/var/log/apt/history.log

Commandline: apt install --no-install-recommends plymouth-theme-spinner ubuntu-gnome-desktop ubuntu-gnome-wallpapers yaru-theme-icon yaru-theme-gtk yaru-theme-sound network-manager-gnome libcanberra-pulse gvfs-backends
Install: ubuntu-settings:amd64 (20.04.6, automatic), libmpc3:amd64 (1.1.0-1, automatic), ...

雑な方法ではあるが、Installで示されているパッケージをすべてリムーブしてしまえば、最初からやり直すことができる。

ただし…
リムーブするパッケージに依存しているパッケージがあれば、一緒にリムーブされてしまうので、リムーブされるパッケージに注意する必要がある。

実例

ubuntu-gnome-desktopで起こしてしまった Recommends パッケージがインストールされていなかった問題を整理してみる。

広告

インストールされるパッケージの差分を確認

ubuntu-gnome-desktopをインストールすると、UbuntuのGUIがインストールできる。
このパッケージがDepends指定しているのは、以下の2パッケージだった。

apt show ubuntu-gnome-desktop
Package: ubuntu-gnome-desktop
Version: 0.87
Priority: optional
Section: universe/metapackages
Source: ubuntu-gnome-meta
Origin: Ubuntu
Maintainer: Ubuntu GNOME Developers <mask@exsample.com>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 13.3 kB
Depends: ubuntu-desktop, gnome-session
Download-Size: 3,100 B
APT-Sources: http://mirror.hogeserver.hogeddns.jp/ubuntu focal/universe amd64 Packages
Description: The Ubuntu desktop system (transitional package)
 This package depends on all of the packages in the Ubuntu desktop system.
 .
 Before Ubuntu 17.10, this was the metapackage for the Ubuntu GNOME flavor.
 .
 Install vanilla-gnome-desktop instead if you prefer a full GNOME desktop
 with minimal Ubuntu branding.

ubuntu-desktopは、yaruのテーマとか、LibreOfficeといったUbuntuっぽいパッケージを取り込んでいく。
gnome-sessionは、GDMが必要とするパッケージを取り込んでいく。

今回、Miix 2 8で音が鳴らなかったのは、gnome-sessionパッケージ(あるいはその下のパッケージ)のRecommends指定されたパッケージがインストールされなかったからだった。

そこで、以下の2手順でインストールされるパッケージの差分を確認し、どうやればその差分が埋まるのか確認してみる。

手順(1) ※音が鳴るインストール手順

apt install gnome-session

apt install --no-install-recommends \
plymouth-theme-spinner \
ubuntu-gnome-desktop \ ← 先に--no-install-recommends指定なしでgnome-sessionがインストールされている
ubuntu-gnome-wallpapers \
yaru-theme-icon \
yaru-theme-gtk \
yaru-theme-sound \
network-manager-gnome \
libcanberra-pulse \
gvfs-backends

手順(2) ※音が鳴らないインストール手順

apt install --no-install-recommends \
plymouth-theme-spinner \
ubuntu-gnome-desktop \
ubuntu-gnome-wallpapers \
yaru-theme-icon \
yaru-theme-gtk \
yaru-theme-sound \
network-manager-gnome \
libcanberra-pulse \
gvfs-backends

apt remove gnome-session ← 一緒にubuntu-gnome-desktopがremoveされる

apt install ubuntu-gnome-desktop ← removeされたubuntu-gnome-desktopを再度インストール

手順(2)では、gnome-sessionを一度削除しているものの、gnome-sessionの先にあるDepends指定されたパッケージはインストールされたまま。
結果として、手順(2)でインストールされたパッケージは104個程少なくなっていた。

# apt show gnome-session
Package: gnome-session
Version: 3.36.0-2ubuntu1
<omit>
Depends: gnome-session-bin (<< 3.37), gnome-session-bin (>= 3.36.0-2ubuntu1), gnome-session-common (= 3.36.0-2ubuntu1), gnome-settings-daemon (>= 3.33.90), gnome-shell (>= 3.33.90), xwayland
Recommends: adwaita-icon-theme-full, fonts-cantarell, gnome-themes-extra
<omit>

※これらのパッケージの先にもDepends指定されたパッケージがあって、それらもみんな–no-install-recommendsでインストールされている。

パッケージが自動でインストールされたものなのか、手でインストールされたものなのか…手順(2)を実行した環境で確認してみた。
今回はコマンドで確認してみているが、/var/lib/apt/extended_statesを読んでも同じことが分かりそうだ。
serverfault / How to remove the “installed manually” flag and revert to “automatically installed” with apt-get?

# apt-mark showmanual | grep gnome
language-pack-gnome-ja
network-manager-gnome
ubuntu-gnome-desktop
ubuntu-gnome-wallpapers

# apt-mark showauto | grep gnome
<omit>
gnome-session
gnome-session-bin
gnome-session-canberra
gnome-session-common
gnome-settings-daemon
gnome-settings-daemon-common
gnome-shell
<omit>

# apt-mark showauto | grep xway
xwayland

※gnome-sessionのRecommendパッケージはインストールされていた。

差分の吸収

差分を取って確認できる環境があるなら、不足しているパッケージをインストールし直せば、(パッケージ有無の観点でいえば)差分は埋まる。
今回は、そんな確認はできない環境で問題解決する方法を整理しておこうと思った。

手順(2)で作った環境で、gnome-sessionパッケージがDependsと指定しているパッケージをたどっていって、すべてをremoveした上で、もう一度gnome-sessionパッケージをインストールし直す。

ということで、gnome-sessionがDependsと指定しているのはパッケージと、それが取り込むパッケージを削除しようと確認をはじめたけれど…

gnome-session-bin
 dbus-x11
 gsettings-desktop-schemas
 upower
 dconf-gsettings-backend
 gsettings-backend
 libc6
 libegl1
 libepoxy0
 libgl1
 libgles2
 libglib2.0-0
 libgnome-desktop-3-19
 libgtk-3-0
 libice6
 libjson-glib-1.0-0
 libsm6
 libsystemd0
 libx11-6
 libxcomposite1
gnome-session-common
gnome-settings-daemon
gnome-shell
xwayland

gnome-session-binを見たところで、手作業でこれを追跡するのはなかなか大変そうだと思った。
子パッケージ、孫パッケージ、ひ孫パッケージとか、色々とあるだろうし。

そこで、インストールの履歴をログで確認してみたところ、インストールのコマンドラインと、そのときにインストールされたパッケージを確認することができた。手でたどっていくよりも確実。

/var/log/apt/history.log

Commandline: apt install --no-install-recommends plymouth-theme-spinner ubuntu-gnome-desktop ubuntu-gnome-wallpapers yaru-theme-icon yaru-theme-gtk yaru-theme-sound network-manager-gnome libcanberra-pulse gvfs-backends
Install: ubuntu-settings:amd64 (20.04.6, automatic), libmpc3:amd64 (1.1.0-1, automatic), ...とてもたくさん並んでいた

パッケージのリストは、ターミナル画面1枚に収まらない感じだったけれども、どうにかコピーしてapt removeの後に貼り付けて実行してみた。
結果は、括弧が問題となってエラー。そこで、vimで

:%s/([0-9a-z\-.:~,+ ]\+)\(, \)\{,1\}//g

的なコマンドで括弧を消し、改めて貼り付けてみる。

apt remove ubuntu-settings:amd64 libmpc3:amd64 libgoa-backend-1.0-1:amd64 xserver-xorg-input-all:amd64 libjson-glib-1.0-0:amd64 hunspell-en-us:amd64 dmz-cursor-theme:amd64 alsa-base:amd64 libsoup-gnome2.4-1:amd64 python3-defer:amd64 gnome-control-center-data:amd64 python3-distro-info:amd64 evolution-data-server-common:amd64 libgdata-common:amd64 libwebp6:amd64 gnome-keyring:amd64 libldb2:amd64 gnome-settings-daemon-common:amd64 xserver-xorg:amd64 fuse:amd64 libcogl20:amd64 python3-cupshelpers:amd64 tracker-extract:amd64 libopenjp2-7:amd64 libpangoft2-1.0-0:amd64 dbus-x11:amd64 gnome-shell-extension-desktop-icons:amd64 libgusb2:amd64 libaa1:amd64 gstreamer1.0-alsa:amd64 ubuntu-desktop-minimal:amd64 libgphoto2-port12:amd64 libpackagekit-glib2-18:amd64 libcrack2:amd64 glib-networking-services:amd64 libraw1394-11:amd64 libieee1284-3:amd64 libfontenc1:amd64 libclutter-1.0-0:amd64 gir1.2-nm-1.0:amd64 gnome-session:amd64 libplist3:amd64 sound-theme-freedesktop:amd64 libvte-2.91-0:amd64 libedataserverui-1.2-2:amd64 libcups2:amd64 libwayland-egl1:amd64 update-manager-core:amd64 libgtop2-common:amd64 libclutter-gst-3.0-0:amd64 gnome-session-common:amd64 gir1.2-gtk-3.0:amd64 system-config-printer:amd64 gir1.2-mutter-6:amd64 gvfs-backends:amd64 python3-dateutil:amd64 bc:amd64 libmtp9:amd64 gnome-control-center:amd64 session-migration:amd64 libgcr-base-3-1:amd64 gir1.2-notify-0.7:amd64 xserver-common:amd64 gir1.2-soup-2.4:amd64 gstreamer1.0-plugins-base-apps:amd64 libmpfr6:amd64 gcc-9-base:amd64 python3-software-properties:amd64 gvfs-bin:amd64 openssl:amd64 libblockdev-swap2:amd64 libnotify-bin:amd64 xserver-xorg-core:amd64 gir1.2-clutter-1.0:amd64 libgxps2:amd64 libdv4:amd64 libgirepository-1.0-1:amd64 libgphoto2-6:amd64 gir1.2-gdkpixbuf-2.0:amd64 python3-wadllib:amd64 libcogl-path20:amd64 libgdk-pixbuf2.0-0:amd64 libproxy1v5:amd64 liblcms2-2:amd64 libgoa-1.0-0b:amd64 foomatic-db-compressed-ppds:amd64 dconf-service:amd64 python3-xkit:amd64 libcairo-gobject2:amd64 update-notifier-common:amd64 libgoa-1.0-common:amd64 libcdparanoia0:amd64 python3-distro:amd64 python3-jwt:amd64 yaru-theme-icon:amd64 libgweather-3-16:amd64 libpulsedsp:amd64 glib-networking:amd64 libgtk-3-common:amd64 acl:amd64 gstreamer1.0-tools:amd64 xdg-user-dirs:amd64 apg:amd64 libgtk-3-0:amd64 libgd3:amd64 libshout3:amd64 libavahi-glib1:amd64 libgjs0g:amd64 python3-ldb:amd64 pulseaudio:amd64 gstreamer1.0-plugins-good:amd64 libgs9:amd64 cpp-9:amd64 libedata-cal-2.0-1:amd64 gnome-desktop3-data:amd64 yelp:amd64 libyelp0:amd64 libpixman-1-0:amd64 libasound2-data:amd64 libxkbfile1:amd64 libdbusmenu-glib4:amd64 libsecret-1-0:amd64 fonts-urw-base35:amd64 update-manager:amd64 liborc-0.4-0:amd64 librsvg2-common:amd64 libwoff1:amd64 ubuntu-advantage-tools:amd64 libcdio18:amd64 python3-urllib3:amd64 gir1.2-atk-1.0:amd64 cpp:amd64 libwhoopsie0:amd64 libogg0:amd64 humanity-icon-theme:amd64 libsnmp-base:amd64 python3-aptdaemon.gtk3widgets:amd64 libtracker-sparql-2.0-0:amd64 libarchive13:amd64 libwrap0:amd64 p11-kit:amd64 libavahi-common-data:amd64 at-spi2-core:amd64 linux-sound-base:amd64 xdg-dbus-proxy:amd64 dconf-gsettings-backend:amd64 perl-modules-5.30:amd64 libavahi-common3:amd64 libunity-protocol-private0:amd64 gir1.2-geoclue-2.0:amd64 ubuntu-wallpapers-focal:amd64 libcdio-cdda2:amd64 libmp3lame0:amd64 libgdata22:amd64 anacron:amd64 python3-keyring:amd64 xfonts-utils:amd64 gir1.2-accountsservice-1.0:amd64 ubuntu-session:amd64 libxcursor1:amd64 python3-entrypoints:amd64 libpython3.8:amd64 ubuntu-desktop:amd64 xserver-xorg-input-libinput:amd64 libextutils-pkgconfig-perl:amd64 gcr:amd64 libgnome-bluetooth13:amd64 liblocale-gettext-perl:amd64 gjs:amd64 gnome-session-canberra:amd64 gnome-settings-daemon:amd64 plymouth-label:amd64 libthai-data:amd64 gpg:amd64 libcogl-pango20:amd64 gir1.2-pango-1.0:amd64 libharfbuzz-icu0:amd64 python3-idna:amd64 libvorbisfile3:amd64 x11-apps:amd64 gstreamer1.0-plugins-base:amd64 xinit:amd64 python3-lazr.restfulclient:amd64 libepoxy0:amd64 libpwquality-common:amd64 evolution-data-server:amd64 libappindicator3-1:amd64 libsecret-common:amd64 python3-six:amd64 libwhoopsie-preferences0:amd64 inputattach:amd64 gsettings-desktop-schemas:amd64 whoopsie-preferences:amd64 alsa-utils:amd64 libgraphene-1.0-0:amd64 x11-xkb-utils:amd64 network-manager-gnome:amd64 libgles2:amd64 libu2f-udev:amd64 libblockdev-loop2:amd64 libhyphen0:amd64 upower:amd64 libblockdev-fs2:amd64 gir1.2-freedesktop:amd64 gdm3:amd64 libtotem-plparser-common:amd64 yaru-theme-gtk:amd64 libgsf-1-114:amd64 python3-lazr.uri:amd64 bubblewrap:amd64 libassuan0:amd64 libwavpack1:amd64 libmutter-6-0:amd64 software-properties-gtk:amd64 colord-data:amd64 libblockdev-part2:amd64 libatk-adaptor:amd64 libparted-fs-resize0:amd64 p11-kit-modules:amd64 libopus0:amd64 libgexiv2-2:amd64 python3-requests:amd64 libisl22:amd64 gir1.2-gdm-1.0:amd64 glib-networking-common:amd64 python3-httplib2:amd64 libgstreamer-plugins-good1.0-0:amd64 ubuntu-gnome-wallpapers:amd64 libvpx6:amd64 libgcr-ui-3-1:amd64 libsoup2.4-1:amd64 python3-cups:amd64 tracker-miner-fs:amd64 ubuntu-gnome-wallpapers-yakkety:amd64 gtk2-engines-murrine:amd64 libwebpdemux2:amd64 libtracker-miner-2.0-0:amd64 libexempi8:amd64 libltdl7:amd64 gstreamer1.0-pulseaudio:amd64 x11-session-utils:amd64 mutter-common:amd64 libpaper1:amd64 geoclue-2.0:amd64 gir1.2-gnomedesktop-3.0:amd64 libgeocode-glib0:amd64 libgeoclue-2-0:amd64 gir1.2-clutter-gst-3.0:amd64 python3-simplejson:amd64 libusbmuxd6:amd64 libcairo-perl:amd64 libperl5.30:amd64 libaspell15:amd64 samba-libs:amd64 libstartup-notification0:amd64 libcdio-paranoia2:amd64 xorg-docs-core:amd64 libpangoxft-1.0-0:amd64 libgdm1:amd64 gir1.2-gck-1:amd64 gdisk:amd64 libexif12:amd64 libebackend-1.2-10:amd64 fonts-ubuntu:amd64 gir1.2-cogl-1.0:amd64 libtiff5:amd64 udisks2:amd64 libsnmp35:amd64 libgnome-autoar-0-0:amd64 ubuntu-drivers-common:amd64 gvfs-libs:amd64 nautilus:amd64 libnautilus-extension1a:amd64 libxaw7:amd64 libgnome-desktop-3-19:amd64 libatk1.0-0:amd64 libxcomposite1:amd64 adwaita-icon-theme:amd64 python3-cryptography:amd64 python3-distupgrade:amd64 libsasl2-modules:amd64 libpangocairo-1.0-0:amd64 libboost-thread1.71.0:amd64 libebook-1.2-20:amd64 libpulse0:amd64 python3-debconf:amd64 distro-info:amd64 yelp-xsl:amd64 gir1.2-graphene-1.0:amd64 libtotem-plparser18:amd64 libmpg123-0:amd64 gir1.2-glib-2.0:amd64 gir1.2-vte-2.91:amd64 python3-update-manager:amd64 libcaca0:amd64 libimobiledevice6:amd64 gir1.2-gweather-3.0:amd64 libxtst6:amd64 libatspi2.0-0:amd64 gir1.2-snapd-1:amd64 ubuntu-release-upgrader-core:amd64 librsvg2-2:amd64 python3-apport:amd64 im-config:amd64 libxi6:amd64 pkg-config:amd64 gtk2-engines-pixbuf:amd64 libjbig2dec0:amd64 libiec61883-0:amd64 libxt6:amd64 libxv1:amd64 gir1.2-gnomebluetooth-1.0:amd64 libvorbisenc2:amd64 libtag1v5:amd64 libxcb-res0:amd64 libdee-1.0-4:amd64 python3-cffi-backend:amd64 libgstreamer-gl1.0-0:amd64 python3-click:amd64 libpulse-mainloop-glib0:amd64 libgif7:amd64 libxinerama1:amd64 libgsf-1-common:amd64 libcap2-bin:amd64 libblockdev2:amd64 libspeex1:amd64 libjack-jackd2-0:amd64 libglib2.0-bin:amd64 libxmuu1:amd64 libunity9:amd64 gnome-shell-common:amd64 libxft2:amd64 zenity:amd64 python3-blinker:amd64 libjson-glib-1.0-common:amd64 gir1.2-gcr-3:amd64 libgck-1-0:amd64 libxfont2:amd64 libxrandr2:amd64 libgstreamer-plugins-base1.0-0:amd64 xwayland:amd64 distro-info-data:amd64 libtheora0:amd64 libsndfile1:amd64 xz-utils:amd64 libnma0:amd64 python3-yaml:amd64 gstreamer1.0-x:amd64 python3-pkg-resources:amd64 libcanberra-pulse:amd64 ghostscript:amd64 packagekit:amd64 libcolord2:amd64 gir1.2-goa-1.0:amd64 shared-mime-info:amd64 plymouth-theme-spinner:amd64 libgomp1:amd64 libmozjs-68-0:amd64 libwebkit2gtk-4.0-37:amd64 gir1.2-upowerglib-1.0:amd64 rfkill:amd64 libcanberra-gtk3-0:amd64 openprinting-ppds:amd64 gir1.2-atspi-2.0:amd64 libglu1-mesa:amd64 hicolor-icon-theme:amd64 libglib-perl:amd64 gir1.2-gst-plugins-base-1.0:amd64 libenchant-2-2:amd64 ubuntu-gnome-desktop:amd64 libthai0:amd64 libsoxr0:amd64 gnome-shell-extension-appindicator:amd64 libijs-0.35:amd64 mysql-common:amd64 libxxf86dga1:amd64 emacsen-common:amd64 libasyncns0:amd64 libblockdev-utils2:amd64 ghostscript-x:amd64 libupower-glib3:amd64 libgdk-pixbuf2.0-common:amd64 libsmbclient:amd64 unzip:amd64 yaru-theme-gnome-shell:amd64 xorg:amd64 libspeexdsp1:amd64 aptdaemon-data:amd64 zip:amd64 libtdb1:amd64 libnfs13:amd64 libmysqlclient21:amd64 libgs9-common:amd64 keyboard-configuration:amd64 tracker:amd64 libasound2:amd64 libblockdev-part-err2:amd64 gnome-session-bin:amd64 libasound2-plugins:amd64 x11-xserver-utils:amd64 genisoimage:amd64 libgpm2:amd64 libcheese-gtk25:amd64 plymouth:amd64 python3-talloc:amd64 libvisual-0.4-0:amd64 libgsound0:amd64 libglib2.0-data:amd64 cheese-common:amd64 libdbusmenu-gtk3-4:amd64 libcolord-gtk1:amd64 printer-driver-pnm2ppa:amd64 libxdamage1:amd64 gir1.2-gdesktopenums-3.0:amd64 librest-0.7-0:amd64 gir1.2-coglpango-1.0:amd64 dictionaries-common:amd64 gvfs:amd64 libatk-bridge2.0-0:amd64 libpwquality1:amd64 python3-cairo:amd64 python3-aptdaemon:amd64 lsb-release:amd64 libphonenumber7:amd64 ubuntu-release-upgrader-gtk:amd64 libjbig0:amd64 ubuntu-wallpapers:amd64 libsane-common:amd64 python3-gi:amd64 libvte-2.91-common:amd64 libxmu6:amd64 gir1.2-packagekitglib-1.0:amd64 libflac8:amd64 xfonts-base:amd64 libidn11:amd64 libebook-contacts-1.2-3:amd64 gir1.2-webkit2-4.0:amd64 gnome-terminal-data:amd64 libtracker-control-2.0-0:amd64 libibus-1.0-5:amd64 libnss3:amd64 libedata-book-1.2-26:amd64 libtwolame0:amd64 libcairo-gobject-perl:amd64 libudisks2-0:amd64 gir1.2-ibus-1.0:amd64 ca-certificates:amd64 python3-oauthlib:amd64 python3-launchpadlib:amd64 perl:amd64 libcheese8:amd64 xauth:amd64 gvfs-common:amd64 libecal-2.0-1:amd64 spice-vdagent:amd64 nautilus-data:amd64 gnome-shell:amd64 gir1.2-gstreamer-1.0:amd64 libical3:amd64 python3-requests-unixsocket:amd64 libappstream4:amd64 gtk-update-icon-cache:amd64 libsnapd-glib1:amd64 libxpm4:amd64 libhunspell-1.7-0:amd64 dbus-user-session:amd64 x11-utils:amd64 aptdaemon:amd64 libunity-scopes-json-def-desktop:amd64 gir1.2-json-1.0:amd64 libvorbis0a:amd64 libv4l-0:amd64 libatk1.0-data:amd64 gnome-themes-extra-data:amd64 language-selector-gnome:amd64 libgtk3-perl:amd64 gir1.2-polkit-1.0:amd64 libglib-object-introspection-perl:amd64 libv4lconvert0:amd64 system-config-printer-common:amd64 libextutils-depends-perl:amd64 libprotobuf17:amd64 gstreamer1.0-clutter-3.0:amd64 libtag1v5-vanilla:amd64 libyaml-0-2:amd64 libgdbm-compat4:amd64 libcamel-1.2-62:amd64 libstemmer0d:amd64 xfonts-encodings:amd64 libcolorhug2:amd64 xinput:amd64 libcanberra0:amd64 libcairo2:amd64 libexiv2-27:amd64 libtext-iconv-perl:amd64 python3-debian:amd64 libpoppler-glib8:amd64 pinentry-gnome3:amd64 libavc1394-0:amd64 libpoppler97:amd64 libavahi-client3:amd64 gnome-terminal:amd64 pulseaudio-utils:amd64 gstreamer1.0-packagekit:amd64 libdpkg-perl:amd64 libpango-1.0-0:amd64 gnome-themes-extra:amd64 desktop-file-utils:amd64 poppler-data:amd64 libjavascriptcoregtk-4.0-18:amd64 dconf-cli:amd64 gir1.2-rsvg-2.0:amd64 python3-certifi:amd64 patch:amd64 python3-secretstorage:amd64 update-notifier:amd64 xdg-user-dirs-gtk:amd64 python3-chardet:amd64 libgstreamer1.0-0:amd64 python3-problem-report:amd64 xdg-desktop-portal:amd64 libnotify4:amd64 libsamplerate0:amd64 ubuntu-mono:amd64 gvfs-daemons:amd64 libedataserver-1.2-24:amd64 python3-colorama:amd64 libdconf1:amd64 fonts-freefont-ttf:amd64 libmtp-common:amd64 gir1.2-gtkclutter-1.0:amd64 libgweather-common:amd64 libatasmart4:amd64 libnspr4:amd64 zenity-common:amd64 gpgconf:amd64 gir1.2-nma-1.0:amd64 libsane:amd64 libatopology2:amd64 libfribidi0:amd64 libgtop-2.0-11:amd64 gir1.2-javascriptcoregtk-4.0:amd64 colord:amd64 mutter:amd64 libclutter-gtk-1.0-0:amd64 libxslt1.1:amd64 libfftw3-single3:amd64 gnome-shell-extension-ubuntu-dock:amd64 libdatrie1:amd64 yaru-theme-sound:amd64 libwebrtc-audio-processing1:amd64 gnome-menus:amd64 libcue2:amd64 libwayland-cursor0:amd64 software-properties-common:amd64

これでこの時インストールされたパッケージをすべて削除することができた。

改めて手順(1)でインストールしてみた結果、手順(1)との差分は以下の通りとなった。

fcitx-frontend-gtk2 1:4.2.9.7-3
fcitx-frontend-gtk3 1:4.2.9.7-3
fcitx-module-x11 1:4.2.9.7-3
fcitx-ui-classic 1:4.2.9.7-3
gnome-user-docs-ja 3.36.2+git20200704-0ubuntu0.1
ibus-mozc 2.23.2815.102+dfsg-8ubuntu1
inetutils-ping 2:1.9.4-11ubuntu0.1

これらは、この先の手順でインストールするモジュールっぽいので、関係しそうなインストール手順を実行してみた。

apt install --no-install-recommends ibus-mozc gkbd-capplet `check-language-support -l ja`
apt autoremove

結果として、以下の2つのパッケージが新たに不足する事態が発生。

inetutils-ping 2:1.9.4-11ubuntu0.1
xxd 2:8.1.2269-1ubuntu5.6

今回は差分を簡単に確認できる環境を用意したので、これらのパッケージがアンインストールされていることが分かった。
稼働中の環境でこれをやるときは、リムーブされるパッケージをよく確認する必要がある。

さて、この2つをインストールしたときのコマンドを、もう一度実行してみる。

apt install --no-install-recommends \
apt-transport-https \
vim \
less \
iproute2 \
inetutils-ping \
ufw \
kbd \
bash-completion
Reading package lists... Done
Building dependency tree
Reading state information... Done
bash-completion is already the newest version (1:2.10-1ubuntu1).
less is already the newest version (551-1ubuntu0.1).
ufw is already the newest version (0.36-6ubuntu1).
apt-transport-https is already the newest version (2.0.6).
The following additional packages will be installed:
  console-setup console-setup-linux vim-common vim-runtime xxd
Suggested packages:
  iproute2-doc ctags vim-doc vim-scripts
Recommended packages:
  libatm1
The following NEW packages will be installed:
  console-setup console-setup-linux inetutils-ping iproute2 kbd vim vim-common vim-runtime xxd
0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.

いくつかパッケージが増えそうな表示だけれど、実際にはこの2つのパッケージが補完されて、パッケージの差分が吸収できた。

動作確認

パッケージのインストール状態は同じようになったけれど、実際に動くんだろうか?

仮想環境で起動してみたところ、動作に異常なし。
USBフラッシュメモリーに焼き込んで、Miix 2 8で起動してみたところ、こちらも異常なし。

ものによっては再設定が必要なものがあるかもしれないが、今回のLive環境については問題なく動作した。

さいごに

パッケージをインストールし直したけれど、問題が解決しない…という問題は、大概ネットを探すと解決策を書いてくれている人がいて、どうにかなる。

でも、–no-install-recommends指定をした場合はちょっと特殊で、一般的なQ&Aが適用できないこともあるんじゃないかと。
良い機会なので自分用のメモとして整理してみたが、出番はないかもしれないなぁ。

コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他