それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ubuntuから snapd(snap/snapcraft) を除去(アンインストール)て snapcraft 抜きのubuntuにする

ubuntu にある snapd と snap.lxd はすごく便利だからプリインストールは嬉しい。

でも、用途が限られているときには、snapd が要らない。snapremoveしたい

snapd の消し方

apt を使ってしまいますが、さきに snapd でsnap されているアプリを消す必要があります。

最初にsnap app を消す

初期導入されているSnapも含めて現在のSnapd 状況を見る。

sudo snap list 

全部消していく。初期導入されているのは core / snapd / lxd

sudo snap remove lxd
sudo snap remove coreXX # core20 core18とか
sudo snap remove snapd

消しても消えないものがあるので、forgetする

sudo snap saved
sudo snap forget 1 

apt でsnapd を消す。

## sudo apt autoremove --purge snapd で一発
sudo apt purge spand 
sudo apt autoremove 

ファイルを除去する

残存ファイルを除去する

sudo rm -rf /var/cache/snapd/
rm -rf ~/snap # 各ユーザーが持ってるsnap

これで無事に消えるが。再起動が必要

automount系を除去する。

systemd いくつか自動マウント系のジョブ・ユニットが残る。

sudo systemctl list-units snapd.*

必要に応じて除去したり。再起動して反映させる。

sudo systemctl disable snapd.*

アスタリスクで記入していますが、本当はアスタリスクでは処理ができません。めんどくさいのですが、一つずつ手作業で行います。これで無事にsnapが消えます。

snap-xxx.mount / snap-xxx.socket / snapd-xxx.service などいろいろがあります。mount は後述のapt remove 後も残るので手作業で行いました。

## コマンド例
systemctl disable var-snap-xxx.mount
rm /etc/systemd/system/var-snap-xxx.mount

aptを先にやってしまった場合

apt を先にやってしまった場合は、ずっとファイルが残り続けたり、起動時に systemd units がエラーになる。

apt install snapd 
## 
snap remove XXX
apt remove snapd

再度snapd をインストールして、snapdを除去していけば解決するはずである。

無事に除去された。

全部消したら、3GB未満になった。

takuya@spare:~$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda4       7.8G  2.6G  4.8G  36% /

snapd はいらないときもある

ubuntugrub メニューを隠したり、snapd を推してきたり。cloud-initを入れたりと、便利な反面ってところが見え隠れする。

消せるから特に気にしないけどね。

注意:

LXCのコンテナでこれをやると、LXCホスト側にも影響することがあるので注意。

lxc(snap版)は ホストーゲスト間でLXC(snap)を共有しているので、security.privileged: "true"の場合は、snap の操作が、lxc ホスト側に影響することがあるのでむやみに消すべきではないと思われる。

私はやらかしました snapd を消したら、ホスト側でも見えなくなって背筋が凍った。

/snap/lxd/24918/commands/lxc: 5: cannot open /proc/self/attr/current: Permission denied
/snap/lxd/24918/commands/lxc: 6: exec: /usr/bin/aa-exec: Permission denied

などとなり、app armor exec (aa_exec)がエラーになり、lxc コマンド関連が全部動かなくなった。もう泣いた。