Spostare i pacchetti di snap in un'altra posizione / directory


13

Voglio spostare i pacchetti di snap installati nella home directory. I pacchetti di snap sono leggermente più grandi dei pacchetti .deb quindi occupano spazio nella mia partizione di root. So che i pacchetti si trovano in /var/lib/snapd/snapse stanno lavorando con il montaggio del pacchetto /snap/app_dir. Ho provato a simlink, ma non ha funzionato.

Risposte:


14

Cambia la directory di installazione degli snap

Questo è un problema comune che molti chiedono. Sembra che gli sviluppatori di snap non intendano risolverlo presto, quindi sono state suggerite alcune soluzioni.

La prima soluzione che è stata fortemente rifiutata dalla comunità, ma non ho provato, è quella di utilizzare collegamenti simbolici per collegare le directory che portano agli snap. Questo metodo sembra non funzionare poiché le risposte della community affermano che Apparmom non funziona con collegamenti simbolici.

La seconda soluzione è mount --bindla directory /val/lib/snapd/snapsche funziona bene per me con le applicazioni già installate ma non ho potuto installare nuove applicazioni perché stavo spostando la directory in un'altra partizione. Ciò mi ha dato un errore sul collegamento effettivo dell'applicazione di snap con la directory della cache in cui si trova /var/lib/snapd/cache. Non so se questa soluzione potrebbe funzionare se la posizione si trova nella stessa partizione oppure no; ma questo è il motivo per cui sto spostando la directory di snap per liberare spazio dalla partizione a un'altra.

La terza e funzionante opzione è quella di spostare la /var/lib/snapddirectory nel suo insieme mount --bindda un'altra posizione e che ha funzionato per me ed ecco i passaggi.

Solo una piccola nota, sai già, dopo aver eseguito rsync nei passaggi seguenti, è possibile eseguire il backup dei dati all'interno /var/lib/snapddi un'altra posizione fino a quando l'intero processo non viene eseguito correttamente, quindi è possibile rimuovere i dati di backup se si desidera liberare più spazio.

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

Riferimenti

  1. Posizione del disco personalizzata per determinati problemi di snap
  2. porre domanda Ubuntu (non migliore soluzione) Link
  3. Suggerimento di utilizzare bind mount invece di collegamenti simbolici nelle directory snap snap in movimento Link
  4. Differenze tra bind mount e link simbolici Link
  5. Rendere permenente il bind mount

1
Funziona benissimo per me. Grazie! Ho dovuto solo (ri) creare la directory / var / lib / snapd dopo averla spostata in .bak perché mount -a funzionasse
Salim,

@Salim, hai ragione, ho perso questo passaggio che aggiungerò alla sceneggiatura
Muhammad Yusuf

11

Finalmente ho trovato un modo.

  • Innanzitutto spostare il pacchetto snap nella posizione desiderata. Lascia snap_app.snapcome l'app che desideri spostare. Sposta il pacchetto da /var/lib/snapd/snaps/snap_app.snapa ~/snaps/snap_app.snap.
  • Quindi devi modificare l'opzione mount in /etc/systemd/system/snap-snap_app-90.mount, il numero nel nome del file può variare. Ha direttiva ai What=/snap_app_loactionsensi [Mount]. Modificalo nella nuova posizione del pacchetto snap.
  • Alla fine devi collegare simbolicamente il pacchetto snap a /var/lib/snapd/snaps/.
    Ex: ln -s ~/snaps/snap_app.snap /var/lib/snapd/snaps/snap_app.snap

Il pacchetto Snap è originariamente montato nella /snap/snap_appdirectory. puoi controllarlo con mount. Riavvia il tuo computer e hai finito.


forum.snapcraft.io/t/… può anche essere utile
Adam Monsen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.