Skip to content

Instantly share code, notes, and snippets.

@haim0n
Created September 18, 2024 16:43
Show Gist options
  • Save haim0n/501ba1e4384683093b70d01e03174e45 to your computer and use it in GitHub Desktop.
Save haim0n/501ba1e4384683093b70d01e03174e45 to your computer and use it in GitHub Desktop.
Mount Ubuntu snap package for editing
#!/bin/bash -x
function mount_snap() {
local snap_name=$1
local snap_version=$(snap list | grep $snap_name | awk '{print $3}')
local snap_name_escaped=$(echo $snap_name | sed 's/-/\\x2d/g')
local snap_dir=/var/lib/snapd/snaps
local tmp_dir=$(mktemp -d)
sudo systemctl stop snap-$snap_name_escaped-$snap_version.mount
sudo /usr/lib/snapd/snap-discard-ns $snap_name
cd $tmp_dir || exit 1
local snap_file=$snap_dir/${snap_name}_${snap_version}.snap
sudo chmod o+r $snap_file
sudo unsquashfs -d snap $snap_file
echo "Snap $snap_name mounted in $tmp_dir/snap"
read -r -p "Hit Enter to repackage the snap after you're done editing"
sudo rm -rf $snap_file
sudo mksquashfs snap $snap_file -noappend -comp lzo -no-fragments
sudo systemctl start snap-$snap_name_escaped-$snap_version.mount
read -r -p "Hit Enter to cleanup $tmp_dir/snap"
sudo rm -rf $tmp_dir/snap
}
# sample usage
mount_snap "pycharm-professional"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment