Jump to content

Snap (software)

From Wikipedia, the free encyclopedia
(Redirected fromSnap Store)
Snap
Developer(s)Canonical Group Limited
Repository
Written inGo,C,Shell script,Python,JavaScript,NASL[1]
Operating systemLinux
LicenseGNU GPLv3(Client & Runtime),proprietary(Backend)[2]
Websitesnapcraft.ioEdit this on Wikidata

Snapis a softwarepackaginganddeploymentsystem developed byCanonicalforoperating systemsthat use theLinuxkernel and thesystemdinitsystem. The packages, calledsnaps,and the tool for using them,snapd,work across a range ofLinux distributions[3]and allowupstreamsoftware developers to distribute their applications directly to users. Snaps are self-contained applications running in a sandbox with mediated access to the host system. Snap was originally released forcloudapplications[4]but was later ported to also work forInternet of Thingsdevices[5][6]and desktop[7][8]applications.

Functionality

[edit]

Configurable sandbox

[edit]

Applications in a Snap run in a container with limited access to the host system. UsingInterfaces,users can give an application mediated access to additional features of the host such as recording audio, accessing USB devices and recording video.[9][10][11]These interfaces mediate regular Linux APIs so that applications can function in the sandbox without needing to be rewritten. Desktop applications can also use the XDG Desktop Portals, a standardized API originally created by theFlatpakproject to give sandboxed desktop applications access to host resources.[12][13]These portals often provide a better user experience compared to the native Linux APIs because they prompt the user for permission to use resources such as a webcam at the time the application uses them. The downside is that applications and toolkits need to be rewritten in order to use these newer APIs.

The Snap sandbox also supports sharing data andUnix socketsbetween Snaps.[14]This is often used to share common libraries and application frameworks between Snaps to reduce the size of Snaps by avoiding duplication.[15][16]

The Snap sandbox heavily relies on theAppArmorLinux Security Module from the upstreamLinux kernel.Because only one "major"Linux Security Module(LSM) can be active at the same time,[17]the Snap sandbox is much less secure when another major LSM is enabled. As a result, on distributions such asFedorawhich enableSELinuxby default, the Snap sandbox is heavily degraded. Although Canonical is working with many other developers and companies to make it possible for multiple LSMs to run at the same time, this solution is still a long time away.[18][17][19]

The Snap sandbox prevents snapped desktop applications from accessing the themes of the host operating system to prevent compatibility issues. In order for Snaps to use a theme, it also needs to be packaged in a separate Snap. Many popular themes are packaged by the Snap developers[20]but some themes are not supported yet[21]and uncommon themes have to be installed manually. If a theme is not available as a Snap package, users have to resort to choosing the best matching theme available.[22]Work is ongoing to make it easier for third parties to package themes in a Snap and to automatically install uncommon system themes.[23]

Automatic and atomic updates

[edit]

Multiple times a day, snapd checks for available updates of all Snaps and installs them in the background using anatomic operation.Updates can be reverted[24][25]and usedelta encodingto reduce their download size.[26][27][28]

Publishers can release and update multiple versions of their software in parallel usingchannels.Each channel has a specifictrackandrisk,which indicate theversionandstabilityof the software released on that channel. When installing an application, Snap defaults to using thelatest/stablechannel, which will automatically update to new major releases of the software when they become available. Publishers can create additional channels to give users the possibility to stick to specific major releases of their software. For example, a2.0/stablechannel would allow users to stick to the 2.0 version of the software and only get minor updates without the risk of backwards incompatible changes. When the publisher releases a new major version in a new channel, users can manually update to the next version when they choose.[29][30][31][32]

The schedule, frequency and timing of automatic updates can be configured by users. For example, this command will check for updates on the last Friday from 23:00 to 01:00.

$sudosnapsetsystemrefresh.timer=fri5,23:00-01:00

Users can also pause automatic updates for a certain period of time, or indefinitely.[33][34][35]Updates are automatically paused on metered connections.[36][37]

Snapcraft

[edit]
Snapcraft
Developer(s)Canonical Group Limited
Stable release
8.4.1[38] / 20 September 2024;11 days ago(20 September 2024)
Repositorygithub /snapcore/snapcraft
Written inPython,Shell script,C++,Go,Dart[39]
Operating systemLinux
LicenseGNU General Public License, version 3.0
Websitesnapcraft.ioEdit this on Wikidata

Snapcraft is a tool for developers to package their programs in the Snap format.[40]It runs on any Linux distribution supported by Snap,macOS[41]andMicrosoft Windows.[42]Snapcraft builds the packages in aVirtual Machineusing Multipass,[43]in order to ensure the result of a build is the same, regardless of which distribution or operating system it is built on.[44]Snapcraft supports multiple build tools and programming languages, such asGo,Java,JavaScript,Python,C/C++andRust.It also allows importing application metadata from multiple sources such asAppStream,git,shell scripts andsetup.pyfiles.[41][45]

Snap Store

[edit]

The Snap Store allows developers to publish their snap-packaged applications.[46]All apps uploaded to the Snap Store undergo automatic testing, including amalwarescan. However, the scan does not catch all issues. In one case in May 2018, two applications by the same developer were found to contain acryptocurrencyminer which ran in the background during application execution. When this issue was found, Canonical removed the applications from the Snap Store and transferred ownership of the Snaps to a trusted third party which re-published the Snaps without the miner present.[47][48][49]Although the Snap sandbox reduces the impact of a malicious app, Canonical recommends users only install Snaps from publishers trusted by the user.[50][51]

Support

[edit]

Snapsareself-containedpackages that work across a range ofLinux distributions.This is unlike traditional Linux package management approaches, which require specifically adapted packages for each Linux distribution.[52][53]

The commandsnap listhere shows thatSkypeandIntelliJ IDEAhave been installed

The snapfile formatis a single compressedfilesystemusing theSquashFSformat with the extension.snap.This filesystem contains the application, libraries it depends on, and declarative metadata. This metadata is interpreted by snapd to set up an appropriately shaped securesandboxfor that application. After installation, the snap is mounted by the host operating system and decompressed on the fly when the files are used.[54][32]Although this has the advantage that snaps use less disk space, it also means some large applications start more slowly.[55][56]

A significant difference between Snap and other universal Linux packaging formats such asFlatpakis that Snap supports any class of Linux application such as desktop applications, server tools, IoT apps and even system services such as the printer driver stack.[46][57][58]To ensure this, Snap relies onsystemdfor features such as running socket-activated system services in a Snap.[59]This causes Snap to work best only on distributions that can adopt thatinit system.[60]

Adoption

[edit]

Snap initially only supported the all-SnapUbuntuCore distribution, but in June 2016, it was ported to a wide range of Linux distributions to become a format for universal Linux packages.[61]Snap requiresSystemdwhich is available in most, but not all, Linux distributions. OtherUnix-likesystems (e.g.FreeBSD) are not supported.[62]ChromeOSdoes not support Snap directly, only through Linux distributions installed in it that support Snap, such asGallium OS.[63]

Ubuntu and its official derivatives pre-install Snap by default, as well as other Ubuntu-based distributions such asKDE Neon,andZorin OS.[64]Solushave currently planned to drop Snap, to reduce the burden of maintaining AppArmor patches needed for strict Snap confinement.[65]Zorin OShave removed Snap as a default package in the Zorin OS 17 release.[66]While other official Ubuntu derivatives such asKubuntu,Xubuntu,andUbuntu MATEhave also shipped with the competingFlatpakas a complement, they will no longer do so beginning with Ubuntu 23.04, meaning that it must be installed manually by the user.[67]

A number of notable desktop software development companies publish their software in the Snap Store, includingGoogle,[68]JetBrains,[69]KDE,[70]Microsoft(for Linux versions of e.g..NET Core 3.1,[71]Visual Studio Code,Skype,[72]andPowerShell),Mozilla[73]andSpotify.[74]Snaps are also used inInternet-of-Thingsenvironments, ranging from consumer-facing products[75]to enterprise device management gateways[76]andsatellite communicationnetworks.[77][78]Finally, Snap is also used by developers of server applications such asInfluxDB,[79]Kata Containers,[80]Nextcloud[81]andTravis CI.[82]

Reception

[edit]

Snap has received mixed reaction from the developer community. On Snap's promotional site,Herokupraised Snap's auto-update as it fits their fast release schedule well.Microsoftmentions its ease of use and Snap beingYAML-based, as well as it being distribution-agnostic.JetBrainssays the Snap Store gives their tools more exposure,[83][better source needed]although some users claim launching the tools takes much longer when it's installed from the Snap Store than when it's installed another way.[84]

Others have objected to the closed-source nature of the Snap Store. Clément Lefèbvre (Linux Mintfounder and project leader[85][86]) has written that Snap is biased and has a conflict of interest. The reasons he cited include it being governed by Canonical and locked to their store, and also that Snap works better on Ubuntu than on other distributions.[87]He later announced that the installing of Snap would be blocked byAPTin Linux Mint,[88][89]although a way to disable this restriction would be documented.[90]

On recent versions of Ubuntu, Canonical has migrated certain packages exclusively to Snap, such asChromiumandFirefox[91]web browsers.[92][46]The replacement of Firefox led to mixed reception from users due to performance issues with the Snap version, especially on startup.[91]

See also

[edit]

References

[edit]
  1. ^"snapcore · GitHub".GitHub.Retrieved5 November2022.
  2. ^"What's The Deal With Snap Packages?".24 June 2020.Retrieved13 February2023.
  3. ^"snapd package versions - Repology".Repology.Retrieved20 August2021.
  4. ^Shuttleworth, Mark (9 December 2014)."Announcing Ubuntu Core, with snappy transactional updates!".Retrieved2020-08-07.
  5. ^Willis, Nathan (2015-01-28)."Ubuntu Core and Snappy".LWN.net.Retrieved2020-08-08.
  6. ^"Canonical unveils Snappy Ubuntu Core, a lightweight operating system for your home - ExtremeTech".extremetech.Retrieved2020-08-08.
  7. ^Bhartiya, Swapnil (2015-04-27)."Is Ubuntu moving away from.deb packages? Here is the complete story".CIO.Retrieved2020-08-08.
  8. ^Vaughan-Nichols, Steven J."The future of Linux desktop application delivery is Flatpak and Snap".ZDNet.Retrieved2020-08-08.
  9. ^"Supported interfaces | Snapcraft documentation".Snapcraft.Retrieved2020-08-05.
  10. ^"Snapcraft confinement & interfaces".ReadySpace China(in Simplified Chinese). 2019-06-06. Archived fromthe originalon 2020-11-25.Retrieved2020-08-05.
  11. ^"A guide to snap permissions and interfaces".ReadySpace Hong Kong.2018-11-02. Archived fromthe originalon 2020-03-19.Retrieved2020-08-05.
  12. ^"Flatpak's XDG-Desktop-Portal Adds Initial Support For Snaps - Phoronix".phoronix.Retrieved2020-08-05.
  13. ^"Desktop Integration — Flatpak documentation".docs.flatpak.org.Retrieved2020-08-05.
  14. ^"The content interface".Snapcraft.Retrieved2020-04-29.
  15. ^"Snappy Is Finally Doing Something About Super Large App Sizes".OMG! Ubuntu!.2017-06-11.Retrieved2020-08-07.
  16. ^"Bundling KDE".archive.fosdem.org.Retrieved2020-08-07.
  17. ^abEdge, Jake (2019-11-20)."LSM stacking and the future".LWN.net.Retrieved2020-08-06.
  18. ^"How Are SNAPS claiming to have no internet plug regulated?".snapcraft.io.2020-07-11.Retrieved2020-08-06.
  19. ^Johansen, John (3 February 2019)."Containers with Different Security Modules".
  20. ^"How to use the system GTK theme via the gtk-common-themes snap".snapcraft.io.2020-02-21.Retrieved2020-08-06.
  21. ^"Kubuntu 20.04 LTS Review | ORDINATECHNIC".ordinatechnic.Retrieved2020-07-19.
  22. ^"How to Change Snap App Theme on Ubuntu (With Examples)".OMG! Ubuntu!.2020-06-18.Retrieved2020-08-06.
  23. ^"Automatic theme snap installation notes".snapcraft.io.2020-05-25.Retrieved2020-08-06.
  24. ^"How to revert to a previous version of a snap package? wekan in this case".costales.github.io.2017-03-08.Retrieved2020-08-05.
  25. ^"A Beginners Guide to Snaps in Linux - Part 1".tecmint.5 June 2020.Retrieved2020-08-05.
  26. ^"Snapcraft - Snaps are universal Linux packages".Snapcraft.
  27. ^Willis, Nathan (28 January 2015)."Ubuntu Core and Snappy".Linux Weekly News.Retrieved7 November2015.
  28. ^Vaughan-Nichols, Steven J."Ubuntu Snap takes charge of Linux desktop and IoT software distribution".ZDNet.
  29. ^"Controlling snap releases with channels, tracks and branches – Part 1".Ubuntu.Retrieved2020-08-07.
  30. ^"Controlling snap releases with channels, tracks and branches – Part 2".Ubuntu.Retrieved2020-08-07.
  31. ^Prakash, Abhishek (23 April 2016)."Using Snap Packages In Ubuntu & Other Linux [Complete Guide]".Retrieved2020-08-07.
  32. ^abMcKay, Dave (18 March 2020)."How to Work with Snap Packages on Linux".How-To Geek.Retrieved2020-08-05.
  33. ^Ljubuncic, Igor (2022-11-15)."Hold your horses, I mean snaps! New feature lets you stop snap updates, for as long as you need".Snapcraft.Retrieved2022-12-02.
  34. ^"You can finally disable Snap updates".merlijn.sebrechts.be.2022-11-10.Retrieved2022-12-02.
  35. ^"Ubuntu snap updates will soon be able to be held temporarily and indefinitely".Neowin.Retrieved2022-12-02.
  36. ^"How To Change Snap Refresh (Update) Schedule".Linux Uprising Blog.17 July 2019.Retrieved2020-08-07.
  37. ^Pope, Alan (3 March 2020)."Controlling Snap Updates".YouTube.
  38. ^"Release 8.4.1".20 September 2024.Retrieved26 September2024.
  39. ^"GitHub - snapcore/snapcraft: Package, distribute, and update any app for Linux and IoT".GitHub.Retrieved5 November2022.
  40. ^Brodkin, Jon."Adios apt and yum? Ubuntu's snap apps are coming to distros everywhere".Ars Technica.Retrieved13 August2016.
  41. ^abNestor, Marius (30 January 2019)."Canonical Releases Snapcraft 3.1 Snap Creator Tool with Various Improvements".softpedia.Retrieved2020-08-05.
  42. ^Nestor, Marius (10 September 2019)."Ubuntu's Snapcraft Snap Creator Tool Will Soon Get a Windows Installer".softpedia.Retrieved2020-08-08.
  43. ^"Build options | Snapcraft documentation".
  44. ^"Make your snap development faster".ReadySpace China(in Simplified Chinese). 2019-03-15. Archived fromthe originalon 2021-06-28.Retrieved2020-08-05.
  45. ^"Using external metadata | Snapcraft documentation".Snapcraft.Retrieved2020-08-05.
  46. ^abcSanders, James (August 6, 2019)."Why Canonical views the Snap ecosystem as a compelling distribution-agnostic solution".TechRepublic.Retrieved2020-08-05.
  47. ^"How Canonical Is Improving Ubuntu Linux Security".eWEEK.29 August 2018.Retrieved2020-08-08.
  48. ^"Malware Found on the Ubuntu Snap Store".OMG! Ubuntu!.2018-05-13.Retrieved2020-07-19.
  49. ^"Trust and security in the Snap Store".Snapcraft.2018-05-15.Retrieved2020-08-05.
  50. ^"Packages for Ubuntu".Ubuntu.Retrieved2020-08-07.
  51. ^"Bogus apps in store".snapcraft.io.2018-03-27.Retrieved2020-08-07.
  52. ^Wallen, Jack (June 21, 2016)."Canonical changes the game by announcing universal snap packages".TechRepublic.Retrieved2020-08-08.
  53. ^Kepes, Ben (2016-06-14)."Snap! Do the Linux distros finally agree on something?".Computerworld.Retrieved2020-08-08.
  54. ^"A technical comparison between the snap and the Flatpak formats".ReadySpace Indonesia.2019-11-14.Retrieved2020-08-05.[permanent dead link]
  55. ^"Squashfs performance effect on snap startup time".snapcraft.io.2019-10-29.Retrieved2020-08-05.
  56. ^McKay, Dave (30 April 2020)."What You Need to Know About Snaps on Ubuntu 20.04".How-To Geek.Retrieved2021-07-28.
  57. ^"Call for testing: OpenPrinting's printing-stack-snap (Printing in a Snap)".snapcraft.io.2018-03-09.Retrieved2020-08-05.
  58. ^"Canonical unveils 6th LTS release of Ubuntu with 16.04".Ubuntu Insights.Canonical Ltd.Retrieved22 April2016.
  59. ^"Services and daemons".
  60. ^"WSL2- Ubuntu 20.04 Snap store doesn't work due to systemd dependency · Issue #5126 · microsoft/WSL".GitHub.Retrieved2020-08-07.
  61. ^Lunden, Ingrid (14 June 2016)."Ubuntu's container-style Snap app packages now work on other Linux distributions".TechCrunch.Retrieved2020-08-08.
  62. ^"Installing snapd | Snapcraft documentation".Snapcraft.Retrieved2022-04-25.
  63. ^"Installing snap on GalliumOS | Snapcraft documentation".Snapcraft.Retrieved2020-08-18.
  64. ^"Installing snapd | Snapcraft documentation".Snapcraft.Retrieved2020-08-05.
  65. ^"Snap deprecation issue".GitHub.Retrieved2023-11-04.
  66. ^"Zorin community manager express the plan to remove Snap as default package".Zorin Forum.11 December 2023.Retrieved2023-12-13.
  67. ^"Ubuntu Flavors/Spins Will No Longer Be Able To Install Flatpak By Default".phoronix.Retrieved2023-02-26.
  68. ^"Google and Canonical bring Flutter apps to Linux and the Snap Store".VentureBeat.2020-07-08.Retrieved2020-08-05.
  69. ^"Install IntelliJ IDEA on Ubuntu with Snaps – IntelliJ IDEA Blog | JetBrains".JetBrains Blog.16 November 2017.Retrieved2020-08-05.
  70. ^"Month of KDE Applications Snaps – KDE neon Developers' Blog".13 February 2019.Retrieved2020-08-05.
  71. ^.NET Core 3.1.0 Preview 2,.NET Foundation, 2019-11-08,retrieved2019-11-08
  72. ^Vaughan-Nichols, Steven J."Use Ubuntu's snap to install Skype on any Linux desktop".ZDNet.Retrieved2020-08-08.
  73. ^Hoffman, Chris (2016-04-25)."Mozilla will provide Firefox as a Snap package for Ubuntu, cutting out the middleman".PCWorld.Retrieved2020-08-05.
  74. ^"Spotify Now Available as a Snap App on Ubuntu".OMG! Ubuntu!.2017-12-30.Retrieved2020-08-05.
  75. ^Vaughan-Nichols, Stephen J. (11 May 2015)."Ubuntu jumps into Internet of Things with Acer, GE, and Microsoft".ZDNet.Retrieved7 November2015.
  76. ^Sherman, Jordana."Snappy Core unlocks IoT value within the Dell Edge Gateway 5000 Series".Ubuntu Insights.Canonical Ltd.Retrieved7 November2015.
  77. ^"LimeSDR Mini takes off in satellites".LinuxGizmos.2018-03-14.Retrieved2020-08-05.
  78. ^"Ubuntu Core 18 released for secure, reliable IoT devices".Ubuntu.Retrieved2020-08-05.
  79. ^"Install influxdb for Linux using the Snap Store".Snapcraft.Retrieved2020-08-05.
  80. ^Nestor, Marius (27 July 2018)."You Can Now Install Kata Containers VM as a Snap on Ubuntu, Other Linux Distros".softpedia.Retrieved2020-08-05.
  81. ^Wallen, Jack (April 27, 2020)."How to install Nextcloud with SSL using snap".TechRepublic.Retrieved2020-08-08.
  82. ^"Install travis-worker for Linux using the Snap Store".Snapcraft.Retrieved2020-08-05.
  83. ^"SnapCraft homepage".snapcraft.io.RetrievedJuly 23,2021.
  84. ^"Tip/Guide: For drastically faster Jetbrains IDE startups avoid installing with Snap".8 November 2019.RetrievedSeptember 20,2024.
  85. ^"Q&A: Clement Lefebvre: The man behind Linux Mint".computerworld.21 October 2013.RetrievedMay 31,2023.
  86. ^"Teams".linuxmint.RetrievedJanuary 7,2020.
  87. ^"Monthly News – June 2019".blog.linuxmint.2 July 2019.RetrievedOctober 23,2019.
  88. ^Lefèbvre, Clément (June 2020)."Monthly News – May 2020".The Linux Mint Blog.The Mint Team.Retrieved10 June2020.
  89. ^"Linux Mint dumps Ubuntu Snap".ZDNET.Retrieved2022-12-03.
  90. ^Anderson, Tim (2 June 2020)."Snapping at Canonical's Snap: Linux Mint team says no to Ubuntu store 'backdoor'".The Register.Situation Publishing.Retrieved10 June2020.
  91. ^ab"Canonical Continues Working On Ubuntu's Firefox Snap Performance".phoronix.Retrieved2023-02-26.
  92. ^Vaughan-Nichols, Steven J."Ubuntu opens the door to talking with Linux Mint about Snap".ZDNet.Retrieved2020-08-08.
[edit]