Parallel Installs

Yes. Each instance of a snap is separate, and can track different channel.

However, blender is a classic snap, and currently, we only support parallel installation of confined snaps.

There is work planned in the forthcoming months that should address this problem, and hopefully it will be possible to parallel install classic snaps too. Unfortunately, I cannot give any exact dates as to when that feature will be available.

1 Like

@mborzecki how should snaps go forward (confined vs classic)? Does it make sense to have multiple snaps of the same app now?

Look at the Opera Snap. They originally allowed for consecutive installs on all platforms. Since there were no Parallel Install ability from Snaps, they appear to have released 3 snaps to cover this specific use case. Should this be seen as a bad practice nowadays? When is this a good idea?

Android Studio’s snap (classic) is coming up to a similar decision once Parallel Installs are fully supported. https://github.com/snapcrafters/android-studio/issues/26

1 Like

In the command line (v2.40, Ubuntu 18.04), I can’t do parallel installs with --classic – I’d really like to install multiple versions of dotnet-sdk, but if I say

sudo snap install dotnet-sdk dotnet-sdk_22 --classic

I get the error

error: a single snap name is needed to specify mode or channel flags

My guess is that the options parser is interpretting dotnet-sdk_22 as a second package rather than as an alias.

Classic snaps are not parallel installable yet unfortunately.

When using channel (--edge, --beta, --channel=..) or mode (--classic, --jailmode) flags, you can only pass a single snap name in the command line.

As for parallel installs of classic snaps, the current state is as @ijohnson wrote, we do not support it at the moment. However, we have some work scheduled to add support for this feature, so things may indeed change in 2-3 releases.

1 Like

We have discovered one more weird interaction that enabling parallel installs can have with existing snap mount namespaces, see Parallel-instances breaks content snap consumers for details.

With this in mind, I would recommend that if the users ran any snap applications in the currently booted system prior to enabling/disabling the feature, they should reboot after toggling the experimental flag state.
Alternatively they can discard the mount namespace of all snaps, though I see that as something that a snap developer or a snapd hacker would be more willing to try.

Is this still currently the case? It seems to be conflicting with the following passage:

Thanks for spotting. I’ve updated the doc.

2 Likes

The link at https://snapcraft.io/docs/parallel-installs 404s and I’m under the impression that it should be automatically generated from the post here, is there someone who can take a look at restoring it?

Thanks

Thanks for flagging this, and sorry for the 404. The webteam here at Canonical is experimenting with a new publishing mechanism and this seems to have inadvertently led to a number of 404s for our docs. We’re trying to sort this out now.

1 Like

On my Thinkpad T510 with 22.04, I’m getting this error when I try to install Firefox beta

$ sudo snap install --beta firefox_beta
error: cannot perform the following tasks:
- Set automatic aliases for snap "firefox_beta" (cannot enable alias "geckodriver" for "firefox_beta", already enabled for "firefox")

You have the firefox snap which already provides an alias named geckodriver for firefox.geckodriver app, so there’s a clear conflict. Try adding --unaliased when installing firefox_beta

1 Like

That worked, but what if the app is already installed?

$ sudo snap refresh 
error: cannot perform the following tasks:
- Set automatic aliases for snap "firefox" (cannot enable alias "geckodriver" for "firefox", already enabled for "firefox_beta")

Edit: Uninstalling and reinstalling worked so far.

Would there be detriments for having multiple Firefox instances and one of them installed using the --unaliased flag?

Do you still need to do:

# sudo snap set system experimental.parallel-instances=true

Doesn’t seem to be necessary anymore.

I just tried with snapd from beta (16778) and it still requires the experimental flag.

snap install hello-world hello-world_foo
error: cannot install "hello-world", "hello-world_foo": experimental feature disabled - test it by
       setting 'experimental.parallel-instances' to true

Ah, you are correct, I had quietly set that earlier and forgot. One wonders whether it’s time for this feature to stop being experimental.

1 Like

I am using the parallel installs feature to have side-by-side Microsoft Teams accounts (one for each organization I work with). It’s great, but, when Teams is running in the taskbar I have two identical icons (one for each Teams instance) and I cannot quickly differentiate between the two. Also, when I click on a link that is designed to be opened in Teams, I am given a pop-up asking which instance to open. Since the instances have the same title, I cannot tell which one is the correct one.

Is there a way to change the application title and/or icon on a per-parallel-install basis?

I believe the only entity that is suitable for the job are the application developers themselves.

Hi,

We are considering to use parallel install feature in our subordinate charms (to provide parallel pgbouncer installations for different postgresql clusters inside the same principal client-app charm).

Can you please share plans to remove experimental flag here? We are a bit uncomfortable to use experimental feature in production.

Thank you!

I second that idea … I’m currently rewriting Snapcraft 101 course and plan on covering parallel installs, but I’d prefer that that feature not still be listed as experimental.