ubuntのsnapパッケージを全て削除してsnapdも完全に削除してsnapdが再インストールされないように制限する

なぜsnapを削除するのか?

最近のubuntuは有料版サブスクのubuntu pro版の導線が仕込まれていたりubuntu独自のsnapパッケージを勝手にインストールさせたり、システムを不安定化させる要因が多数含まれている。

システム不安定化の要因を除去するためにsnapパッケージを完全に削除する手順を共有します。

snapのインストール状況を確認

sudo snap list

※例

core18  20230901       2796   latest/stable  canonical✓  base
core20  20230801       2015   latest/stable  canonical✓  base
lxd     4.0.9-a29c6f1  24061  4.0/stable/…   canonical✓  -
snapd   2.60.4         20290  latest/stable  canonical✓  snapd

手作業で削除する場合は順番にsnap removeで削除する

sudo snap remove lxd
sudo snap remove core20
sudo snap remove core18
sudo snap remove snapd

これが結構めんどうでセットアップ状況によってインストール済みパッケージも異なるのでサーバーが多数あると把握しづらくなります。
そこで後述のように自動化します。

snapパッケージ削除用のshell-script

sudoコマンドが利用可能なユーザーでの実行を前提とします

shell-scriptを編集

vim remove-snapapp.sh
#!/bin/bash
while :
do
WSNAP=$(which snap)
if [ "$WSNAP" = "" ]; then
break
fi
SNAPLISTFILE=snaplist.txt
sudo snap list |awk '{print $1}'>$SNAPLISTFILE
## snap list が空ファイルであれば終了
if [ ! -s $SNAPLISTFILE ]; then
break
fi
## snap list の件数が0件の場合も終了
NSNAP=`grep "No snaps are installed" $SNAPLISTFILE -c`
if [[ $NSNAP > 0 ]]; then
break
fi
while read linetext; do
if [ $linetext != "Name" ]; then
sudo snap remove $linetext
fi
done < "${SNAPLISTFILE}"
done

実行

./remove-snapapp.sh

1度では全て削除できない場合があるのでsnapのパッケージが全て消えるまでコマンドを繰り返す。


snapdを削除する

パッケージを削除しただけではubuntuを再起動した時に勝手にsnapのパッケージが再インストールされてしまうので、snapd自体を削除する。

sudo apt remove snapd snap
sudo apt purge snapd snap --purge -y
sudo apt update

automount系のデーモンを除去する

snapdを削除してもsystemdでsnap関連の自動マウント系のジョブ・ユニットが残る場合がある。

snap系のデーモンを確認

sudo systemctl list-unit-files|grep snap

snapd関連のsystemctlデーモンを無効化

sudo systemctl disable snapd.*

snapdとsnapのインストールを制限する

ここまで制限してもOSのアップグレードで"apt upgrade"や"do-release-upgrade"を実行するとsnapdが勝手にインストールされて有効化されてしまう。
そうなるとまたパッケージが競合したり不安定になるのでsnapd自体に制限をかけておく。

sudo apt-mark hold snapd snap

もしsnapdの利用を再開する場合は、"apt-mark unhold"で解除すればよい。

snapやubuntu proが嫌な人はdebianへの移行を推奨

snapやubuntu proのようなリスクを嫌う人で、OSを入れ替える余裕がある人はdebianへ移行することを推奨します。

稼働中のubuntuをそのまま利用したい、ubuntuを安定化させて整備したい人にはこの記事のsnapdの削除は有用になると思います。