Ubuntu 20.04 の Snap を駆逐する
Ubuntu 20.04 は Gnome ディストリビューションで、Gnome 3.26.1 を採用している。だが Canonical はいつも何か違うことをやりたがる。Flatpak に対抗するため、彼らは Snappy なるものを作り出した。今は Snap と呼ばれているらしい。
Snap を作ること自体が悪いとは言わない。ただ、この Snap が現状本当にダメなのだ。しかも Canonical はいつもの余計なことを始めた:
エコシステムが整っておらず、性能も機能も大したことないのに、強引に抱き合わせて推進している
Unity を覚えているか? Unity は後期にはなかなか良くなったが、初期の強引な推進でヘイトを稼ぎまくった。
個人的には Canonical には Snap をちゃんとしてほしいと思っているが、現状は問題が多すぎる:
- パッケージが巨大。ソフトを動かすたびにイメージをマウントする必要があるらしい。依存関係の解決のためだと言うが……
- フォントレンダリングの対応がひどい
- インプットメソッドの対応もイマイチ
- 起動速度が激遅。調べてみると、Snap はやはりソフトを全部パッケージして圧縮してイメージにしている。毎回解凍してからマウントしている……そりゃ遅いわ
起動速度の遅さ、フォントレンダリング、インプットメソッド対応の3つだけでも十分に購買意欲をそがれる。ただ Snap にも利点はあって、Canonical の中国本土での運営のおかげでダウンロード速度はまあまあだ。CDN があるらしい。
Canonical が Ubuntu で Snap を含めてサポートし、ユーザーに Snap を使うよう促しつつ、Snap の様々な問題を改善・解決していけば、徐々に普及していったかもしれない。しかし奴らは Ubuntu 20.04 でストアまで Snap Store に変えてしまい、しかも Chrome をインストールしようとすると Snap を使うよう強制され、apt で何をインストールしても Snap を勧めてくる。ふざけんな。
というわけで、一緒にこのクソ Snap を駆逐して、元のストアを取り戻そう。
for p in $(snap list | awk '{print $1}'); do
sudo snap remove $p
done
インストール済みの Snap ソフトを全部削除する。
sudo systemctl stop snapd
for m in /snap/core/*; do
sudo umount $m
done
sudo snap remove core
Snap の Core ファイルを削除する。デカいぞ。
sudo apt autoremove --purge snapd
Snap の管理ツールを削除する。
rm -rf ~/snap
sudo rm -rf /snap
sudo rm -rf /var/snap
sudo rm -rf /var/lib/snapd
sudo rm -rf /var/cache/snapd
Snap のディレクトリを削除する。
sudo bash -c "cat > /etc/apt/preferences.d/no-snapd.pref" << EOL
Package: snapd
Pin: origin ""
Pin-Priority: -1
EOL
Snap の更新元を削除する。
あとは Chrome をインストールすればいい。Google 公式の deb を直接使ってもいい。

もちろん、Snap を散々罵ったからといって、Flatpak がどれだけ良いと思っているわけではない。あれは Snap よりもインプットメソッドとフォントレンダリングの対応が悪く、容量が少しマシなだけで、いわゆる「クソな Red Hat」が推進する業界標準にすぎない。欧米人が推進するパッケージ管理は、いつも CJK ユーザーのニーズを選択的に無視する。インプットメソッド対応を指摘すれば、オープンなインプットメソッドは安全でないと言い、じゃあどうすればいいのかと聞けば iBus を使えと言い、iBus は使いにくいと言えば「使えないわけじゃない」と言う。ふざけんな。
コメントは中国語の本家サイトで受け付けています。このミラーは閲覧専用です。