Error creating snap for XGate


Hi All,

I’m brand-new to creating snaps and I’m looking to create a snap for a program called XGate. I use it for email over satellite phones. It has a bunch of old i386 library dependencies which are causing packaging conflicts on my system - a perfect candidate for a snap!

Global Marine Net (the company that makes XGate) have installation instructions here:

They seem to have removed the .deb from their website, but I have a copy on my Nextcloud server here:

I’m running Pop!_OS 18.10 and have followed the Quick Start Guide for Pre-built binaries here:

I’ve created a snapcraft.yaml file:

name: xgate
version: '0.1'
summary: Satellite Email
description: |

  Email on satellite connections

confinement: devmode
base: core18

    plugin: dump
    source: /home/iscott/xgate-snap/xgate-i386.deb
    source-type: deb
    command: xgate

But when I run the “snapcraft” command, get the following error:

$ snapcraft --debug
Using 'snapcraft.yaml': Project assets will be searched for from the 'snap' directory.
Launching a VM.
launch failed: timed out waiting for instance to respond                        
An error occurred with the instance when trying to launch with 'multipass': returned exit code 2.
Ensure that 'multipass' is setup correctly and try again.

I read another post on the same issue and ran:

$multipass launch

and after a minute received

Launched: lustrous-carinal

I’m rather out of my depth with this. Any pointers would be greatly appreciated.


Try run multipass launch --name snapcraft-xgate instead.


Nice, good luck on that! Remember about the architecture field, you want to specify that the snap will be i386-only.


Thanks for the suggestions.
I ran multipass launch --name snapcraft-xgate and got

launch failed: instance "snapcraft-xgate" already exists

Bear in mind, I’m a seasoned Linux user but completely new to creating snaps and my only exposure so far is trying to follow the Pre-built binary quick start documentation when I’ve run into this issue.

@zyga - where/how do I specify the architecture?

My system has the necessary libraries installed to make XGate work, but if multipass is starting a VM to build the snap in, how do I ensure these old non-standard libraries are referenced?

Here’s my notes on how I got X-Gate to work on my system (Pop!_OS 18.10 x64):

sudo dpkg --add-architecture i386
sudo apt update
sudo apt-get -f install ppp:i386 libice6:i386 libtiff5:i386 libjpeg62:i386
sudo dpkg -i xgate_i386.deb

# now x11 has an issue in apt, do following to install gtk2-x11
sudo apt --fix-broken install
sudo ln -s /usr/lib/i386-linux-gnu/ /usr/lib/i386-linux-gnu/
sudo ln -s /usr/lib/i386-linux-gnu/ /usr/lib/i386-linux-gnu/

#copy library file
cp /usr/lib/i386-linux-gnu/
sudo ln -s /usr/lib/i386-linux-gnu/ /usr/lib/i386-linux-gnu/

The shared dependencies are:

iscott@galago76:/usr/share/xgate$ ldd wxxgate (0xf7f94000) => /usr/lib/i386-linux-gnu/ (0xf7a6e000) => /usr/lib/i386-linux-gnu/ (0xf79ab000) => /usr/lib/i386-linux-gnu/ (0xf7982000) => /usr/lib/i386-linux-gnu/ (0xf7955000) => /usr/lib/i386-linux-gnu/ (0xf790a000) => /usr/lib/i386-linux-gnu/ (0xf78f5000) => /usr/lib/i386-linux-gnu/ (0xf78e9000) => /usr/lib/i386-linux-gnu/ (0xf78e4000) => /usr/lib/i386-linux-gnu/ (0xf78d1000) => /usr/lib/i386-linux-gnu/ (0xf78c4000) => /usr/lib/i386-linux-gnu/ (0xf78b6000) => /usr/lib/i386-linux-gnu/ (0xf78af000) => /usr/lib/i386-linux-gnu/ (0xf7860000) => /usr/lib/i386-linux-gnu/ (0xf7714000) => /usr/lib/i386-linux-gnu/ (0xf76b0000) => /usr/lib/i386-linux-gnu/ (0xf76aa000) => /lib/i386-linux-gnu/ (0xf76a4000) => /usr/lib/i386-linux-gnu/ (0xf769f000) => /usr/lib/i386-linux-gnu/ (0xf7567000) => /usr/lib/i386-linux-gnu/ (0xf755e000) => /usr/lib/i386-linux-gnu/ (0xf7533000) => /lib/i386-linux-gnu/ (0xf7512000) => /usr/lib/i386-linux-gnu/ (0xf74ec000) => /usr/lib/i386-linux-gnu/ (0xf746b000) => /lib/i386-linux-gnu/ (0xf7365000) => /usr/lib/i386-linux-gnu/ (0xf71de000) => /lib/i386-linux-gnu/ (0xf71c0000) => /lib/i386-linux-gnu/ (0xf719e000) => /lib/i386-linux-gnu/ (0xf6fbd000) => /usr/lib/i386-linux-gnu/ (0xf6fad000) => /usr/lib/i386-linux-gnu/ (0xf6e5c000) => /usr/lib/i386-linux-gnu/ (0xf6c70000) => /usr/lib/i386-linux-gnu/ (0xf6c55000) => /usr/lib/i386-linux-gnu/ (0xf6c51000) => /usr/lib/i386-linux-gnu/ (0xf6c4d000) => /usr/lib/i386-linux-gnu/ (0xf6b90000) => /lib/i386-linux-gnu/ (0xf6b55000) => /lib/i386-linux-gnu/ (0xf6b4b000) => /usr/lib/i386-linux-gnu/ (0xf6b3f000) => /usr/lib/i386-linux-gnu/ (0xf6b23000) => /usr/lib/i386-linux-gnu/ (0xf6af5000) => /usr/lib/i386-linux-gnu/ (0xf6aea000)
	/lib/ (0xf7f96000) => /lib/i386-linux-gnu/ (0xf6a71000) => /usr/lib/i386-linux-gnu/ (0xf6a55000) => /lib/i386-linux-gnu/ (0xf6a29000) => /usr/lib/i386-linux-gnu/ (0xf6a1a000) => /usr/lib/i386-linux-gnu/ (0xf698f000) => /usr/lib/i386-linux-gnu/ (0xf68e0000) => /usr/lib/i386-linux-gnu/ (0xf68a6000) => /usr/lib/i386-linux-gnu/ (0xf68a1000) => /usr/lib/i386-linux-gnu/ (0xf6892000) => /lib/i386-linux-gnu/ (0xf6885000) => /lib/i386-linux-gnu/ (0xf6859000) => /lib/i386-linux-gnu/ (0xf683f000) => /lib/i386-linux-gnu/ (0xf67d8000) => /usr/lib/i386-linux-gnu/ (0xf6715000) => /usr/lib/i386-linux-gnu/ (0xf670c000) => /usr/lib/i386-linux-gnu/ (0xf6708000) => /usr/lib/i386-linux-gnu/ (0xf6701000) => /lib/i386-linux-gnu/ (0xf66e3000) => /lib/i386-linux-gnu/ (0xf6686000) => /usr/lib/i386-linux-gnu/ (0xf6658000)

What’s the mechanism for me to make sure these libraries are included when I build the snap?
Sorry if this is a stupid question, I’m trying to get my head around this since it’s new to me.

If anyone has a minute to give building this snap a go, feel free! The link to the .deb is in my first post.

Thanks again for your help, Iain