Déplacer des packages d'accrochage vers un autre emplacement / répertoire

13

Je souhaite déplacer les packages d'accrochage installés vers le répertoire personnel. Les packages Snap sont légèrement plus grands que les packages .deb, ils prennent donc de l'espace dans ma partition racine. Je sais que les packages sont situés dans /var/lib/snapd/snapset ils travaillent à leur montage /snap/app_dir. J'ai essayé de simlinked, mais cela n'a pas fonctionné.

Ultimatex
la source

Réponses:

14

Changer le répertoire d'installation des snaps

C'est un problème commun que beaucoup demandent. Il semble que les développeurs d'instantanés n'aient pas l'intention de le résoudre bientôt, donc certaines solutions ont été suggérées.

La première solution qui a été fortement refusée par la communauté, mais je n'ai pas essayé, est d'utiliser des liens symboliques pour lier les répertoires qui mènent aux snaps. Cette méthode ne semble pas fonctionner car la communauté répond que l'apparmom ne fonctionne pas avec des liens symboliques.

La deuxième solution est mount --bindle répertoire /val/lib/snapd/snapsqui fonctionne bien pour moi avec les applications déjà installées mais n'a pas réussi à installer de nouvelles applications parce que je déplaçais le répertoire vers une autre partition. Cela m'a donné une erreur sur la liaison difficile de l'application snap avec le répertoire cache qui se trouve dans /var/lib/snapd/cache. Je ne sais pas si cette solution peut fonctionner si l'emplacement est dans la même partition ou non; mais c'est la raison pour laquelle je déplace le répertoire snap pour libérer de l'espace de la partition vers une autre.

La troisième option qui fonctionne est de déplacer le /var/lib/snapdrépertoire dans son ensemble puis mount --bindd'y accéder à partir d'un autre emplacement et cela a fonctionné pour moi et voici les étapes.

Juste une petite note, vous savez déjà, une fois la rsync effectuée dans les étapes ci-dessous, vous pouvez sauvegarder les données à l'intérieur /var/lib/snapdvers un autre emplacement jusqu'à ce que le processus soit terminé avec succès, puis vous pouvez supprimer les données de sauvegarde si vous souhaitez libérer plus d'espace.

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

Références

  1. Emplacement du disque personnalisé pour certains problèmes de snapshots
  2. poser une question à ubuntu (Pas la meilleure solution) Lien
  3. Suggestion d'utiliser bind mount au lieu de liens symboliques dans le déplacement des répertoires d'accrochage Lien
  4. Différences entre le montage de liaison et les liens symboliques Lien
  5. Rendre le montage permanent permanent
Muhammad Yusuf
la source
1
Fonctionne très bien pour moi. Je vous remercie! Je n'ai eu qu'à (re) créer le répertoire / var / lib / snapd après l'avoir déplacé vers .bak pour que le montage -a fonctionne
Salim
@Salim, vous avez raison, j'ai raté cette étape que j'ajouterai au script
Muhammad Yusuf
11

J'ai enfin trouvé un moyen.

  • Déplacez d'abord le package d'accrochage à l'emplacement souhaité. Laissez snap_app.snapl'application que vous souhaitez déplacer. Déplacez le package de /var/lib/snapd/snaps/snap_app.snapvers ~/snaps/snap_app.snap.
  • Ensuite, vous devez modifier l'option de montage dans /etc/systemd/system/snap-snap_app-90.mount, le nombre dans le nom de fichier peut varier. Il a une directive What=/snap_app_loactionsous [Mount]. Remplacez-le par votre nouvel emplacement de package snap.
  • Enfin, vous devez créer un lien symbolique vers le package snap /var/lib/snapd/snaps/.
    Ex: ln -s ~/snaps/snap_app.snap /var/lib/snapd/snaps/snap_app.snap

Le package Snap est à l'origine monté dans le /snap/snap_apprépertoire. vous pouvez le vérifier avec mount. Redémarrez votre machine et vous avez terminé.

Ultimatex
la source
forum.snapcraft.io/t/… peut également être utile
Adam Monsen