Permalink
| #!/bin/sh | |
| if [ ! -e /var/lib/dpkg/status ]; then | |
| echo "This script only works on Ubuntu Classic" | |
| exit 1 | |
| fi | |
| if [ "$(id -u)" != 0 ]; then | |
| echo "This script needs to be run as root" | |
| exit 1 | |
| fi | |
| echo "This script will permanently destroy and reset all state in snapd" | |
| echo "You will loose all of your installed snaps" | |
| echo | |
| echo "Type: DESTROY to remove all of your snap state" | |
| echo | |
| read consent | |
| if [ "$consent" != "DESTROY" ]; then | |
| echo "No consent, aborting" | |
| exit 0 | |
| fi | |
| echo | |
| echo "ABOUT TO DESTROY ALL OF STATE OF SNAPD" | |
| echo | |
| echo "Interrupt the script in 10 seconds to abort" | |
| sleep 10 || exit | |
| echo | |
| echo "DESTROYING ALL STATE OF SNAPD" | |
| if systemctl is-active --quiet snapd.service snapd.socket; then | |
| snapd_was_active=yes | |
| echo | |
| echo "Stoping snapd..." | |
| echo | |
| ( | |
| set -x | |
| systemctl stop snapd.socket snapd.service | |
| ) | |
| else | |
| echo "Skipping stopping snapd as systemctl reports it's inactive." | |
| fi | |
| echo | |
| echo "Unmounting all snaps..." | |
| echo | |
| ( | |
| set -x | |
| umount /var/lib/snapd/snaps/*.snap | |
| ) | |
| echo | |
| echo "Removing all support files and state..." | |
| echo | |
| ( | |
| set -x | |
| rm -rvf /var/lib/snapd/* | |
| ) | |
| echo | |
| echo "Removing generated systemd units..." | |
| echo | |
| ( | |
| set -x | |
| rm -vf /etc/systemd/system/snap-*.mount | |
| rm -vf /etc/systemd/system/snap-*.service | |
| rm -vf /etc/systemd/system/multi-user.target.wants/snap-*.mount | |
| ) | |
| echo | |
| echo "Removing generated executable wrappers..." | |
| echo | |
| ( | |
| set -x | |
| rm -vrf /snap/* | |
| ) | |
| if [ "$snapd_was_active" = "yes" ]; then | |
| echo | |
| echo "Starting snapd" | |
| ( | |
| set -x | |
| systemctl start snapd.socket | |
| ) | |
| fi |