Переместить мгновенные пакеты в другое место / каталог

13

Я хочу переместить установленные пакеты моментальных снимков в домашний каталог. Пакеты Snap немного больше, чем пакеты .deb, поэтому они занимают место в моем корневом разделе. Я знаю, что пакеты находятся в, /var/lib/snapd/snapsи они работают с монтированием пакета в /snap/app_dir. Я пытался связать, но это не сработало.

ultimatex
источник

Ответы:

14

Изменить каталог установки моментальных снимков

Это общая проблема, о которой многие спрашивают. Кажется, разработчики оснастки не собираются решать ее в ближайшее время, поэтому были предложены некоторые решения.

Первое решение, которое было решительно отвергнуто сообществом, но я не пытался, это использовать символические ссылки для связи каталогов, которые приводят к привязкам. Этот метод, кажется, не работает, так как ответы сообщества говорят, что 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 !!!
##############################################################################

Ссылки

  1. Пользовательское расположение диска для определенных проблем с привязками
  2. задать вопрос Ubuntu (не лучшее решение) Ссылка
  3. Предложение использовать bind mount вместо символических ссылок в движущихся каталогах моментальных снимков Ссылка
  4. Различия между привязка смонтированного и символические ссылки Ссылка
  5. Сделайте привязку горе постоянным
Мухаммед Юсуф
источник
1
Прекрасно работает для меня. Спасибо! Мне нужно было (заново) создать каталог / var / lib / snapd после перемещения его в .bak, чтобы смонтировать -a для работы
Salim
@Salim, Вы правы, я пропустил этот шаг, который добавлю к сценарию
Мухаммед Юсуф
11

Я наконец нашел способ.

  • Сначала переместите упаковку в нужное место. Пусть 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. Перезагрузите машину, и все готово.

ultimatex
источник
forum.snapcraft.io/t/… может также быть полезным
Адам Монсен