Parallel snap installs is a new feature that will allow installing multiple instances of a given snap.
Each instance will have a locally assigned, optional, unique key. The meaning of the local key is up to the user. For example:
postgres_prod
postgres_stage
postgres
are 3 different instances of postgres
snap. Each instance is completely independent, with separate version, revision, track, data etc.
The local key is implicitly assigned during installation, that is snap install postgres_prod
creates a posgres_prod
instance of posgres
snap, with local key prod
. The proposed constraints for the format of the key is [a-z0-9]{1,10}
. All other snap
commands will work as before.
To help snap packages, the paths and environment variables inside the snap will remain unchanged, so that the existing snaps continue to work. That is, when the mount namespace is set up, /snap/hello-world_foo
will be made available as /snap/hello-world
. The environment variables will also be updated to reflect this, consider this mapping:
| variable | inside snap environment | outside |
|------------------+------------------------------------+----------------------------------------|
| SNAP_NAME | hello-world | hello-world_foo |
| SNAP | /snap/hello-world/27 | /snap/hello-world_foo/27 |
| SNAP_COMMON | /var/snap/hello-world/common | /var/snap/hello-world_foo/common |
| SNAP_DATA | /var/snap/hello-world/27 | /var/snap/hello-world_foo/27 |
| SNAP_USER_COMMON | /home/user/snap/hello-world/common | /home/user/snap/hello-world_foo/common |
| SNAP_USER_DATA | /home/user/snap/hello-world/27 | /home/user/snap/hello-world_foo/27 |
The work has already started, expect updates to be posted in this topic.