Zmień katalog instalacyjny Snap
Jest to częsty problem, o który prosi wielu. Wygląda na to, że programiści nie zamierzają go wkrótce rozwiązać, dlatego zaproponowano kilka rozwiązań.
Pierwszym rozwiązaniem , któremu społeczność zdecydowanie odmówiła, ale nie próbowałem, jest użycie dowiązań symbolicznych do połączenia katalogów prowadzących do przyciągania. Ta metoda wydaje się nie działać, ponieważ odpowiedzi społeczności mówią, że apparmom nie działa z dowiązaniami symbolicznymi.
Drugim rozwiązaniem jest mount --bind
katalog, /val/lib/snapd/snaps
który działa dla mnie dobrze z już zainstalowanymi aplikacjami, ale nie udało się zainstalować nowych aplikacji, ponieważ przenosiłem katalog na inną partycję. To dało mi błąd dotyczący twardego połączenia aplikacji Snap z katalogiem pamięci podręcznej, który znajduje się w /var/lib/snapd/cache
. Nie wiem, czy to rozwiązanie może działać, jeśli lokalizacja znajduje się na tej samej partycji, czy nie; ale to jest powód, dla którego przenoszę katalog Snap, aby zwolnić miejsce z partycji na inną.
Trzecią i działającą opcją jest przeniesienie /var/lib/snapd
katalogu jako całości, a następnie przeniesienie mount --bind
go z innej lokalizacji i to działało dla mnie i oto kroki.
Tylko mała uwaga, już wiesz, że po wykonaniu rsync w poniższych krokach możesz wykonać kopię zapasową danych w /var/lib/snapd
innej lokalizacji, dopóki cały proces nie zostanie pomyślnie zakończony, a następnie możesz usunąć dane kopii zapasowej, jeśli chcesz zwolnić więcej miejsca.
##############################################################################
# Take Care this section may break the System !!!
##############################################################################
##Move snap folder to Home instead of root.
#Create the directory : you can change the location
mkdir /home/$USER/snap/snapd
#Copy the data
sudo rsync -avzP /var/lib/snapd/ /home/$USER/snap/snapd/
#Do backups
sudo mv /var/lib/snapd /var/lib/snapd.bak
sudo cp /etc/fstab /etc/fstab.bak
#Change fstab (Change $USER with your name or change the path totally)
echo "/home/$USER/snap/snapd /var/lib/snapd none bind 0 0" | sudo tee -a /etc/fstab
#remount fstab Or reboot.
sudo mkdir /var/lib/snapd
sudo mount -a
if ls /var/lib/snapd/ | grep snaps
then
echo "Re-mounting snapd folder is done successfully. !!!!"
sudo rm -rf /var/lib/snapd.bak
else
echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
# Trying to revert automatically
sudo cp /etc/fstab.bak /etc/fstab
sudo mount -a
sudo umount /var/lib/snapd
sudo mv /var/lib/snapd.bak /var/lib/snapd
echo "Files located at ~/snap/snapd should be removed, but it keeped for
recovery until you ,manually, reboot the system and make sure the service
is running correctly then manually you can remove that folder ~/snap/snapd
!!!!!!!!!!!!!!, you should do that manually."
fi
##############################################################################
# Take Care the pervious section may break the System !!!
##############################################################################
Bibliografia
- Niestandardowa lokalizacja dysku dla niektórych problemów ze snapami
- zadaj ubuntu Pytanie (Nie najlepsze rozwiązanie) Link
- Sugeruje się użycie bind mount zamiast dowiązań symbolicznych w ruchomych katalogach przyciągania Link
- Różnice między mocowaniem binda a linkami symbolicznymi Link
- Ustaw permenant na stałe
W końcu znalazłem sposób.
snap_app.snap
jako aplikacja, którą chcesz przenieść. Przenieś paczkę z/var/lib/snapd/snaps/snap_app.snap
na~/snaps/snap_app.snap
./etc/systemd/system/snap-snap_app-90.mount
, liczba w nazwie pliku może się różnić. Ma dyrektywę naWhat=/snap_app_loaction
mocy[Mount]
. Zmień go na nową lokalizację pakietu przystawki./var/lib/snapd/snaps/
.Dawny:
ln -s ~/snaps/snap_app.snap /var/lib/snapd/snaps/snap_app.snap
Pakiet Snap jest oryginalnie zamontowany w
/snap/snap_app
katalogu. możesz to sprawdzić za pomocąmount
. Uruchom ponownie komputer i gotowe.źródło