前提
- Ubuntu Serverを入れてサーバー運用していたマシンを、仕事部屋用作業マシンにしようと思い、再インストールも面倒だったので、
sudo apt install ubuntu-desktopしてデスクトップ版にした。 - 元サーバー運用用なのでディスクは
/varを大きめに切って、/var/homeをホームディレクトリの親にしていた - ルートディレクトリには
ln -s /var/home /homeでリンクを作っていた
2000年頃のLinuxだったらこんな感じで上手くいってたなー、と思いながら何も考えずに上記のセットアップをして運用していたものの、デスクトップ版にアップデートしたら問題発生。
- ブラウザがインストールされていないので、
sudo apt install firefoxしたらエラーが発生。
$ sudo snap install firefox
[sudo] password for User:
cannot create mount point /tmp/snap.rootfs_00owC7//home: Read-only file system
調べてみると、/home以外にホームディレクトリがある場合、snapがエラーを吐くとのこと。対策として以下のコマンドを実行。
sudo apt update
sudo apt upgrade snapd
sudo snap set system homedirs=/var/home
sudo systemctl restart snapd
ところが動かないまま。色々なパターンで試したが、理由は謎のまま動かない。
回答
ルートディレクトリ直下のシンボリックリンクは削除し、ホームディレクトリの実体をマウントする。sudo snap unset system homedirsも忘れない。
sudo mkdir /home
sudo mount --bind /var/home /home
起動時にマウントされるように、/etc/fstabに以下を追加。
/var/home /home none bind 0 0
/etc/passwd等のホームディレクトリ位置は/home/$HOMEでOK。
結果
$ sudo snap install firefox
[sudo] password for User:
firefox 130.0.1-1 from Mozilla✓ installed
動いた!
結論
今どきシンボリックリンクでホームディレクトリを移動してはいけない。