Mover paquetes a otra ubicación / directorio

13

Quiero mover los paquetes snap instalados al directorio de inicio. Los paquetes Snap son un poco más grandes que los paquetes .deb, por lo que ocupan espacio en mi partición raíz. Sé que los paquetes están ubicados /var/lib/snapd/snapsy están trabajando con el montaje del paquete /snap/app_dir. Traté de simlinked, pero no funcionó.

ultimatex
fuente

Respuestas:

14

Cambiar el directorio de instalación de instantáneas

Este es un problema común que muchos piden. Parece que los desarrolladores rápidos no tienen la intención de resolverlo pronto, por lo que se sugirieron algunas soluciones.

La primera solución que fue fuertemente rechazada por la comunidad, pero no lo intenté, es usar enlaces simbólicos para vincular los directorios que conducen a las instantáneas. Este método parece no funcionar ya que las respuestas de la comunidad dicen que apparmom no funciona con enlaces simbólicos.

La segunda solución es mount --bindel directorio /val/lib/snapd/snapsque funciona bien para mí con las aplicaciones ya instaladas, pero no pude instalar nuevas aplicaciones porque estaba moviendo el directorio a otra partición. Eso me dio un error acerca de la vinculación de la aplicación instantánea con el directorio de caché que se encuentra en /var/lib/snapd/cache. No sé si esta solución puede funcionar si la ubicación está en la misma partición o no; pero esta es la razón por la que estoy moviendo el directorio snap para liberar espacio de la partición a otra.

En tercer lugar, la opción de trabajo es mover el /var/lib/snapddirectorio como un todo mount --binddesde otra ubicación y eso funcionó para mí y aquí están los pasos.

Solo una pequeña nota, ya lo sabe, después de que rsync se realiza en los pasos a continuación, puede hacer una copia de seguridad de los datos dentro /var/lib/snapdde otra ubicación hasta que todo el proceso se complete con éxito, luego puede eliminar los datos de la copia de seguridad si desea liberar más espacio.

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

Referencias

  1. Ubicación de disco personalizada para cierto problema de instantáneas
  2. preguntar ubuntu Pregunta (No es la mejor solución) Enlace
  3. Sugerencia para usar el montaje de enlace en lugar de enlaces simbólicos en directorios de ajuste de movimiento Enlace
  4. Diferencias entre montaje de enlace y enlaces simbólicos Enlace
  5. Haga que el montaje de unión sea permanente
Muhammad Yusuf
fuente
1
Funciona muy bien para mi. ¡Gracias! Solo tuve que (re) crear el directorio / var / lib / snapd después de moverlo a .bak para que monte -a funcione
Salim
@Salim, tienes razón, me he perdido este paso que agregaré al guión
Muhammad Yusuf el
11

Finalmente encontré un camino.

  • Primero mueva el paquete a presión a la ubicación deseada. Deje snap_app.snapcomo la aplicación que desea mover. Mueva el paquete de /var/lib/snapd/snaps/snap_app.snapa ~/snaps/snap_app.snap.
  • Luego debe cambiar la opción de montaje /etc/systemd/system/snap-snap_app-90.mount, el número en el nombre del archivo puede variar. Tiene directiva What=/snap_app_loactionbajo [Mount]. Cámbielo a su nueva ubicación de paquete instantáneo.
  • Finalmente, debe vincular el paquete de complemento a /var/lib/snapd/snaps/.
    Ex: ln -s ~/snaps/snap_app.snap /var/lib/snapd/snaps/snap_app.snap

El paquete Snap se monta originalmente en el /snap/snap_appdirectorio. puedes consultarlo con mount. Reinicie su máquina y ya está.

ultimatex
fuente
forum.snapcraft.io/t/… también puede ser útil
Adam Monsen