Mover pacotes de snap para outro local / diretório


13

Quero mover os pacotes de snap instalados para o diretório inicial. Os pacotes snap são um pouco maiores que os pacotes .deb, portanto, ocupam espaço na minha partição raiz. Eu sei que os pacotes estão localizados /var/lib/snapd/snapse eles estão trabalhando para montar o pacote /snap/app_dir. Eu tentei fazer o link, mas não funcionou.

Respostas:


14

Alterar diretório de instalação de snaps

Este é um problema comum que muitos pedem. Parece que os desenvolvedores rápidos não pretendem resolvê-lo em breve, então algumas soluções foram sugeridas.

A primeira solução que foi fortemente recusada pela comunidade, mas não tentei, é usar links simbólicos para vincular os diretórios que levam a snaps. Esse método parece não funcionar, pois a comunidade responde que o aparato não funciona com links simbólicos.

A segunda solução é mount --bindo diretório /val/lib/snapd/snapsque funciona bem para mim com os aplicativos já instalados, mas não conseguiu instalar novos aplicativos porque eu estava movendo o diretório para outra partição. Isso me deu um erro ao vincular fortemente o aplicativo snap ao diretório de cache localizado em /var/lib/snapd/cache. Não sei se esta solução pode funcionar se o local estiver na mesma partição ou não; mas essa é a razão pela qual estou movendo o diretório snap para liberar espaço da partição para outra.

A terceira opção de trabalho é mover o /var/lib/snapddiretório como um todo e depois mount --bindpara outro local, e isso funcionou para mim e aqui estão as etapas.

Apenas uma pequena nota, você já sabe, depois que o rsync é feito nas etapas abaixo, você pode fazer backup dos dados dentro /var/lib/snapdpara outro local até que todo o processo seja concluído com êxito e remover os dados de backup, se desejar liberar mais espaço.

##############################################################################
# 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 !!!
##############################################################################

Referências

  1. Local do disco personalizado para certos problemas de snaps
  2. ask ubuntu Pergunta (Não é a melhor solução) Link
  3. Sugestão de uso bind de montagem em vez de links simbólicos em mover diretórios de encaixe Ligação
  4. Diferenças entre o ligamento montagem e links simbólicos link
  5. Tornar a montagem de ligação permenante

1
Funciona muito bem para mim. Obrigado! Eu só tinha a (re) criar a var / lib / snapD diretório / após movê-lo para .bak para mount -a para o trabalho
Salim

@Salim, você está certo, eu perdi este passo, que vou acrescentar ao roteiro
Muhammad Yusuf

11

Eu finalmente encontrei um caminho.

  • Primeiro mova o pacote de encaixe para o local desejado. Deixe snap_app.snapcomo o aplicativo que você deseja mover. Mova o pacote de /var/lib/snapd/snaps/snap_app.snappara ~/snaps/snap_app.snap.
  • Então você deve alterar a opção de montagem /etc/systemd/system/snap-snap_app-90.mount, o número no nome do arquivo pode variar. Tem diretiva What=/snap_app_loactionsob [Mount]. Altere-o para o novo local do pacote de snap.
  • Finalmente, você deve vincular o pacote snap ao /var/lib/snapd/snaps/.
    Ex: ln -s ~/snaps/snap_app.snap /var/lib/snapd/snaps/snap_app.snap

O pacote Snap é originalmente montado no /snap/snap_appdiretório você pode conferir com mount. Reinicie sua máquina e pronto.


forum.snapcraft.io/t/… também pode ser útil
Adam Monsen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.