Application packaging notes: Difference between revisions
Jump to navigation
Jump to search
m (→Snap) |
m (→Snap) |
||
Line 51: | Line 51: | ||
'''Intent''' | '''Intent''' | ||
Snap (and its origins, click) are intended as app images | Snap (and its origins, click) are intended as an implementation of the [[app images]] ''idea'': packaging ''all'' the dependencies. | ||
packaging all the dependencies | This makes it easier to create packages that run on any ubuntu variant - or any linux variant really - e.g. letting you have newer or older libraries without creating dependency conflicts. | ||
e.g. letting you have newer or older libraries without creating dependency conflicts. | |||
Yes, containers would allow the same, but would be overkill and a little harder to handle - isolation would actually be in the way of accessing filesystem, local networking, X and thereby any GUI. | Yes, containers would allow the same, but would be overkill and a little harder to handle - isolation would actually be in the way of accessing filesystem, local networking, X and thereby any GUI. | ||
The main downside is that, being app images, they take a bunch of space. | The main downside is that, being app images, they take a bunch of space. Expect | ||
* each graphical app to take order of 300MB almost regardless of what they do, and | |||
* to retain up to three versions of everything | |||
...meaning that you will very quickly fill 10, maybe 20GB or more, | |||
For some things, a single installed version of the same, in a shared dependency tree, might take GBytes less. | |||
You can try to see the difference by doing | |||
snap list | |||
to see what's installed, see if there's an according apt package, and do | |||
snap remove ''name'' | |||
apt install ''name'' | |||
Line 74: | Line 85: | ||
'''In technical terms''' | '''In technical terms''' | ||
A snap package is basically a compressed filesystem | A snap package is basically a compressed filesystem (based on [[squashfs]]) that can be mounted. | ||
From the app's view, it has | From the app's view, it has | ||
: read-only access to the snap image (app+libraries) | : mounted read-only access to the snap image (app+libraries) | ||
: read-only access to / | : mounted read-only access to / | ||
: writeable directory, like your own homedir | : a mounted writeable directory, like your own homedir | ||
Line 85: | Line 96: | ||
'''In practical terms''' | '''In practical terms''' | ||
You will have ''many'' copies of the same libraries. | |||
It's not precisely [[static linking]], but leads to the same bloat as static linking. | |||
It's not precisely static linking, but leads to the same bloat as static linking. | |||
(though snap seems to allow for shared files more than e.g. [[AppImage]]{{verify}}) | (though snap seems to allow for shared files more than e.g. [[AppImage]]{{verify}}) | ||
Line 110: | Line 121: | ||
Limitations: | Limitations/downsides: | ||
* often not lightweight in practice | * often not lightweight in practice | ||
: they're monolithic things that need to include everything (and will duplicate many things) | : they're monolithic things that need to include everything (and will duplicate many things) |
Latest revision as of 15:39, 26 March 2024