Изменить каталог установки моментальных снимков
Это общая проблема, о которой многие спрашивают. Кажется, разработчики оснастки не собираются решать ее в ближайшее время, поэтому были предложены некоторые решения.
Первое решение, которое было решительно отвергнуто сообществом, но я не пытался, это использовать символические ссылки для связи каталогов, которые приводят к привязкам. Этот метод, кажется, не работает, так как ответы сообщества говорят, что apparmom не работает с символическими ссылками.
Второе решение - mount --bind
это каталог, /val/lib/snapd/snaps
который отлично работает для меня с уже установленными приложениями, но не смог установить новые приложения, потому что я перемещал каталог в другой раздел. Это дало мне ошибку о жесткой связи приложения привязки с каталогом кэша, который находится в /var/lib/snapd/cache
. Я не знаю, может ли это решение работать, если местоположение находится в одном разделе или нет; но это причина, по которой я перемещаю каталог моментальных снимков, чтобы освободить место из раздела в другой.
Третий и рабочий вариант - переместить /var/lib/snapd
каталог целиком, затем mount --bind
в другое место, и это сработало для меня, и вот шаги.
Просто небольшая заметка, вы уже знаете, что после выполнения rsync в следующих шагах вы можете выполнить резервное копирование данных /var/lib/snapd
в другое место, пока весь процесс не будет успешно завершен, затем вы можете удалить данные резервной копии, если хотите освободить больше места.
##############################################################################
# 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 !!!
##############################################################################
Ссылки
- Пользовательское расположение диска для определенных проблем с привязками
- задать вопрос Ubuntu (не лучшее решение) Ссылка
- Предложение использовать bind mount вместо символических ссылок в движущихся каталогах моментальных снимков Ссылка
- Различия между привязка смонтированного и символические ссылки Ссылка
- Сделайте привязку горе постоянным
Я наконец нашел способ.
snap_app.snap
в качестве приложения вы хотите переместить. Переместить пакет из/var/lib/snapd/snaps/snap_app.snap
в~/snaps/snap_app.snap
./etc/systemd/system/snap-snap_app-90.mount
, номер в имени файла может отличаться. Он имеет директивуWhat=/snap_app_loaction
под[Mount]
. Измените его на новое расположение оснастки./var/lib/snapd/snaps/
.Пример:
ln -s ~/snaps/snap_app.snap /var/lib/snapd/snaps/snap_app.snap
Пакет Snap изначально монтируется в
/snap/snap_app
каталог. Вы можете проверить это сmount
. Перезагрузите машину, и все готово.источник