{{short description|Software deployment system for Linux by Canonical}} {{Infobox software | name = Snap | logo = Snapcraft-logo-bird.svg | logo alt = Snap / Snapcraft Logo | screenshot = | screenshot alt = | caption = | collapsible = | author = | developer = {{#statements:developer}} | released = {{#statements:inception}} | discontinued = | latest release version = {{wikidata|property|reference|P348}} | latest release date = | programming language = Go, C, Shell script, Python, JavaScript, NASL<ref>{{cite web |title=snapcore · GitHub |url=https://github.com/snapcore/ |website=GitHub |access-date=5 November 2022 |archive-date=2 April 2023 |archive-url=https://web.archive.org/web/20230402191543/https://github.com/snapcore/ |url-status=live }}</ref> | operating system = Linux | platform = | size = | language = | language count = <!-- Number only --> | language footnote = | license = GNU GPLv3 (Client & Runtime), proprietary (Backend)<ref>{{cite web|url=https://hackaday.com/2020/06/24/whats-the-deal-with-snap-packages|title=What's The Deal With Snap Packages?|date=24 June 2020|access-date=13 February 2023|archive-date=9 June 2023|archive-url=https://web.archive.org/web/20230609064418/https://hackaday.com/2020/06/24/whats-the-deal-with-snap-packages/|url-status=live}}</ref> | alexa = | standard = | AsOf = }}

'''Snap''' is a software packaging and deployment system developed by Canonical for operating systems that use the Linux kernel and the systemd init system. The packages, called ''snaps'', and the tool for using them, ''snapd'', work across a range of Linux distributions<ref>{{cite web |title=snapd package versions - Repology |url=https://repology.org/project/snapd/versions |website=Repology |access-date=20 August 2021 |archive-date=19 May 2021 |archive-url=https://web.archive.org/web/20210519104919/https://repology.org/project/snapd/versions |url-status=live }}</ref> and allow upstream software developers to distribute their applications directly to users. Snaps are self-contained applications running in a sandbox with mediated access to the host system.

==Functionality==

===Configurable sandbox=== Applications in a Snap run in a container with limited access to the host system. Using ''Interfaces'', users can give an application mediated access to additional features of the host such as recording audio, accessing USB devices and recording video.<ref>{{cite web |title=Supported interfaces {{!}} Snapcraft documentation |url=https://snapcraft.io/docs/supported-interfaces |access-date=2020-08-05 |work=Snapcraft |language=en |archive-date=2020-08-03 |archive-url=https://web.archive.org/web/20200803180313/https://snapcraft.io/docs/supported-interfaces|url-status=live}}</ref><ref>{{cite web |date=2019-06-06 |title=Snapcraft confinement & interfaces |url=https://readyspace.com.cn/snapcraft-confinement-interfaces/ |access-date=2020-08-05 |work=ReadySpace China |language=zh-hans |archive-date=2020-11-25 |archive-url=https://web.archive.org/web/20201125174521/https://readyspace.com.cn/snapcraft-confinement-interfaces/ |url-status=dead}}</ref><ref>{{cite web |date=2018-11-02 |title=A guide to snap permissions and interfaces |url=https://readyspace.com.hk/a-guide-to-snap-permissions-and-interfaces/ |access-date=2020-08-05 |work=ReadySpace Hong Kong |language=en-US |archive-date=2020-03-19 |archive-url=https://web.archive.org/web/20200319182537/https://readyspace.com.hk/a-guide-to-snap-permissions-and-interfaces/ |url-status=dead}}</ref> 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 the Flatpak project (originally called xdg-app) to give sandboxed desktop applications access to host resources.<ref>{{cite web |title=Flatpak's XDG-Desktop-Portal Adds Initial Support For Snaps - Phoronix |url=https://www.phoronix.com/scan.php?page=news_item&px=XDG-Desktop-Portal-Snapped|access-date=2020-08-05 |work=www.phoronix.com |archive-date=2020-08-14 |archive-url=https://web.archive.org/web/20200814170909/https://www.phoronix.com/scan.php?page=news_item&px=XDG-Desktop-Portal-Snapped |url-status=live}}</ref><ref>{{cite web |title=Desktop Integration — Flatpak documentation |url=https://docs.flatpak.org/en/latest/desktop-integration.html?highlight=portals#portals |access-date=2020-08-05 |work=docs.flatpak.org}}</ref> 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 and Unix sockets between Snaps.<ref>{{cite web |title=The content interface |url=https://snapcraft.io/docs/content-interface|access-date=2020-04-29 |work=Snapcraft |language=en |archive-date=2020-10-20 |archive-url=https://web.archive.org/web/20201020181538/https://snapcraft.io/docs/content-interface |url-status=live}}</ref> This is often used to share common libraries and application frameworks between Snaps to reduce the size of Snaps by avoiding duplication.<ref>{{cite web |date=2017-06-11 |title=Snappy Is Finally Doing Something About Super Large App Sizes |url=https://www.omgubuntu.co.uk/2017/06/gnome-platform-snap-development |access-date=2020-08-07 |work=OMG! Ubuntu! |language=en-GB |archive-date=2020-08-14 |archive-url=https://web.archive.org/web/20200814170915/https://www.omgubuntu.co.uk/2017/06/gnome-platform-snap-development |url-status=live}}</ref><ref>{{cite web |title=Bundling KDE |url=https://archive.fosdem.org/2017/schedule/event/desktops_bundling_kde/ |access-date=2020-08-07 |work=archive.fosdem.org |language=en |archive-date=2021-06-28 |archive-url=https://web.archive.org/web/20210628133640/https://archive.fosdem.org/2017/schedule/event/desktops_bundling_kde/ |url-status=live}}</ref>

The Snap sandbox heavily relies on the AppArmor Linux Security Module from the upstream Linux kernel. Because only one "major" Linux Security Module (LSM) can be active at the same time,<ref name="LSM_LWN" /> the Snap sandbox is much less secure when another major LSM is enabled. As a result, on distributions such as Fedora which enable SELinux by 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, in 2020 this solution was still a long time away.<ref>{{cite web |date=2020-07-11 |title=How Are SNAPS claiming to have no internet plug regulated? |url=https://forum.snapcraft.io/t/how-are-snaps-claiming-to-have-no-internet-plug-regulated/18755/25 |access-date=2020-08-06 |work=snapcraft.io |language=en-US |archive-date=2020-08-14 |archive-url=https://web.archive.org/web/20200814170905/https://forum.snapcraft.io/t/how-are-snaps-claiming-to-have-no-internet-plug-regulated/18755/25 |url-status=live}}</ref><ref name="LSM_LWN">{{cite web |title=LSM stacking and the future |url=https://lwn.net/Articles/804906/ |last=Edge |first=Jake |date=2019-11-20 |access-date=2020-08-06 |work=LWN.net |archive-date=2020-08-14 |archive-url=https://web.archive.org/web/20200814170912/https://lwn.net/Articles/804906/ |url-status=live}}</ref><ref>{{cite web |last=Johansen |first=John |date=3 February 2019 |title=Containers with Different Security Modules |url=https://archive.fosdem.org/2019/schedule/event/containers_lsm/ |access-date=6 August 2020 |archive-date=24 July 2021 |archive-url=https://web.archive.org/web/20210724001615/https://archive.fosdem.org/2019/schedule/event/containers_lsm/ |url-status=live}}</ref>

===Automatic and atomic updates=== Multiple times a day, snapd checks for available updates of all Snaps and installs them in the background using an atomic operation. Updates can be reverted<ref>{{Cite web|date=2017-03-08|title=How to revert to a previous version of a snap package? wekan in this case|url=https://costales.github.io/posts/how-to-revert-to-previous-version-of/|access-date=2020-08-05|website=costales.github.io|language=en-us|archive-date=2020-08-14|archive-url=https://web.archive.org/web/20200814170909/https://costales.github.io/posts/how-to-revert-to-previous-version-of/|url-status=live}}</ref><ref>{{Cite web|title=A Beginners Guide to Snaps in Linux - Part 1|url=https://www.tecmint.com/install-snap-in-linux/|access-date=2020-08-05|website=www.tecmint.com|date=5 June 2020|language=en-US|archive-date=2020-07-27|archive-url=https://web.archive.org/web/20200727222240/https://www.tecmint.com/install-snap-in-linux/|url-status=live}}</ref> and use delta encoding to reduce their download size.<ref name=":0">{{Cite web|title=Snapcraft - Snaps are universal Linux packages|url=https://snapcraft.io/|website=Snapcraft|access-date=2019-07-02|archive-date=2020-04-17|archive-url=https://web.archive.org/web/20200417015931/https://snapcraft.io/|url-status=live}}</ref><ref>{{cite news|last1=Willis|first1=Nathan|date=28 January 2015|title=Ubuntu Core and Snappy|work=Linux Weekly News|url=https://lwn.net/Articles/630660/|access-date=7 November 2015|archive-date=24 February 2015|archive-url=https://web.archive.org/web/20150224203420/https://lwn.net/Articles/630660/|url-status=live}}</ref><ref>{{Cite web|last=Vaughan-Nichols|first=Steven J.|title=Ubuntu Snap takes charge of Linux desktop and IoT software distribution|url=https://www.zdnet.com/article/ubuntu-snap-takes-charge-of-linux-desktop-and-iot-software-distribution/|website=ZDNet|access-date=2024-07-05|archive-date=2018-02-26|archive-url=https://web.archive.org/web/20180226215127/https://www.zdnet.com/article/ubuntu-snap-takes-charge-of-linux-desktop-and-iot-software-distribution/|url-status=live}}</ref>

Publishers can release and update multiple versions of their software in parallel using ''channels''. Each channel has a specific ''track'' and ''risk'', which indicate the ''version'' and ''stability'' of the software released on that channel. When installing an application, Snap defaults to using the <code>latest/stable</code> channel, 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, a <code>2.0/stable</code> channel 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.<ref>{{Cite web|title=Controlling snap releases with channels, tracks and branches – Part 1|url=https://ubuntu.com/blog/controlling-snap-releases-with-channels-tracks-and-branches-part-1|access-date=2020-08-07|website=Ubuntu|language=en|archive-date=2020-08-14|archive-url=https://web.archive.org/web/20200814170909/https://ubuntu.com/blog/controlling-snap-releases-with-channels-tracks-and-branches-part-1|url-status=live}}</ref><ref>{{Cite web|title=Controlling snap releases with channels, tracks and branches – Part 2|url=https://ubuntu.com/blog/controlling-snap-releases-with-channels-tracks-and-branches-part-2|access-date=2020-08-07|website=Ubuntu|language=en}}</ref><ref>{{Cite web|last=Prakash|first=Abhishek|title=Using Snap Packages In Ubuntu & Other Linux [Complete Guide]|date=23 April 2016 |url=https://itsfoss.com/use-snap-packages-ubuntu-16-04/|access-date=2020-08-07|language=en-US}}</ref><ref name=":5">{{Cite web |last=McKay |first=Dave |title=How to Work with Snap Packages on Linux |url=https://www.howtogeek.com/660193/how-to-work-with-snap-packages-on-linux/ |access-date=2020-08-05 |website=How-To Geek |date=18 March 2020 |language=en-US}}</ref>

The schedule, frequency and timing of automatic updates can be configured by users. Users can also pause automatic updates for a certain period of time, or indefinitely.<ref>{{Cite web |last=Ljubuncic |first=Igor |date=2022-11-15 |title=Hold your horses, I mean snaps! New feature lets you stop snap updates, for as long as you need |url=https://snapcraft.io/blog/hold-your-horses-i-mean-snaps-new-feature-lets-you-stop-snap-updates-for-as-long-as-you-need |access-date=2022-12-02 |website=Snapcraft |language=en |archive-date=2022-12-02 |archive-url=https://web.archive.org/web/20221202212124/https://snapcraft.io//blog/hold-your-horses-i-mean-snaps-new-feature-lets-you-stop-snap-updates-for-as-long-as-you-need |url-status=live }}</ref><ref>{{Cite web |date=2022-11-10 |title=You can finally disable Snap updates |url=https://merlijn.sebrechts.be/blog/2022-11-10-turn-off-snap-updates/ |access-date=2022-12-02 |website=merlijn.sebrechts.be |language=en}}</ref><ref>{{Cite web |title=Ubuntu snap updates will soon be able to be held temporarily and indefinitely |url=https://www.neowin.net/news/ubuntu-snap-updates-will-soon-be-able-to-be-held-temporarily-and-indefinitely/ |access-date=2022-12-02 |website=Neowin |language=en}}</ref> Updates are automatically paused on metered connections.<ref>{{Cite web|title=How To Change Snap Refresh (Update) Schedule|url=https://www.linuxuprising.com/2019/07/how-to-change-snap-refresh-update.html|access-date=2020-08-07|website=Linux Uprising Blog|date=17 July 2019|language=en-us|archive-date=2020-08-14|archive-url=https://web.archive.org/web/20200814170849/https://www.linuxuprising.com/2019/07/how-to-change-snap-refresh-update.html|url-status=live}}</ref><ref>{{Cite web|last=Pope|first=Alan|date=3 March 2020|title=Controlling Snap Updates|website=YouTube|url=https://www.youtube.com/watch?v=gVZOBgTDJWc}}</ref>

===Snapcraft=== {{Infobox software | name = Snapcraft | logo = Snapcraft logo.svg | logo alt = Snapcraft Logo | screenshot = <!-- Image name is enough --> | screenshot alt = | caption = | collapsible = | author = | developer = {{#statements:developer|from=Q74878673}} | released = {{#statements:inception|from=Q74878673}} | discontinued = | latest release version = {{wikidata|property|reference|Q74878673|P348}} | latest release date = {{start date and age|{{wikidata|qualifier|Q74878673|P348|P577}}}} | repo = [https://github.com/snapcore/snapcraft github.com/snapcore/snapcraft] | programming language = Python, Shell script, C++, Go, Dart<ref>{{cite web |title=GitHub - snapcore/snapcraft: Package, distribute, and update any app for Linux and IoT. |url=https://github.com/snapcore/snapcraft |website=GitHub |access-date=5 November 2022 |archive-date=5 November 2022 |archive-url=https://web.archive.org/web/20221105210738/https://github.com/snapcore/snapcraft |url-status=live }}</ref> | operating system = Linux | platform = | size = | language = | language count = <!-- Number only --> | language footnote = | license = {{#statements:copyright license|from=Q74878673}} | alexa = | standard = | AsOf = }}

Snapcraft is a tool for developers to package their programs in the Snap format.<ref>{{cite news|last1=Brodkin|first1=Jon|title=Adios apt and yum? Ubuntu's snap apps are coming to distros everywhere|url=https://arstechnica.com/information-technology/2016/06/goodbye-apt-and-yum-ubuntus-snap-apps-are-coming-to-distros-everywhere/|access-date=13 August 2016|work=Ars Technica|archive-date=14 May 2019|archive-url=https://web.archive.org/web/20190514225803/https://arstechnica.com/information-technology/2016/06/goodbye-apt-and-yum-ubuntus-snap-apps-are-coming-to-distros-everywhere/|url-status=live}}</ref> It runs on any Linux distribution supported by Snap, macOS<ref name=":7" /> and Microsoft Windows.<ref>{{Cite web|last=Nestor|first=Marius|title=Ubuntu's Snapcraft Snap Creator Tool Will Soon Get a Windows Installer|url=https://news.softpedia.com/news/ubuntu-s-snapcraft-snap-creator-tool-will-soon-get-a-windows-installer-527336.shtml|access-date=2020-08-08|website=softpedia|date=10 September 2019|language=en|archive-date=2019-12-27|archive-url=https://web.archive.org/web/20191227103310/https://news.softpedia.com/news/ubuntu-s-snapcraft-snap-creator-tool-will-soon-get-a-windows-installer-527336.shtml|url-status=live}}</ref> Snapcraft builds the packages in a Virtual Machine using Multipass,<ref>{{Cite web|url=https://snapcraft.io/docs/build-options|title=Build options &#124; Snapcraft documentation|access-date=2020-12-20|archive-date=2020-05-27|archive-url=https://web.archive.org/web/20200527142939/https://snapcraft.io/docs/build-options|url-status=live}}</ref> in order to ensure the result of a build is the same, regardless of which distribution or operating system it is built on.<ref>{{Cite web|date=2019-03-15|title=Make your snap development faster|url=https://readyspace.com.cn/make-your-snap-development-faster/|access-date=2020-08-05|website=ReadySpace China|language=zh-hans|archive-date=2021-06-28|archive-url=https://web.archive.org/web/20210628133641/https://readyspace.com.cn/make-your-snap-development-faster/|url-status=dead}}</ref> Snapcraft supports multiple build tools and programming languages, such as Go, Java, JavaScript, Python, C/C++ and Rust. It also allows importing application metadata from multiple sources such as AppStream, git, shell scripts and <code>setup.py</code> files.<ref name=":7">{{Cite web|last=Nestor|first=Marius|title=Canonical Releases Snapcraft 3.1 Snap Creator Tool with Various Improvements|url=https://news.softpedia.com/news/canonical-releases-snapcraft-3-1-snap-creator-tool-with-various-improvements-524761.shtml|access-date=2020-08-05|website=softpedia|date=30 January 2019|language=en|archive-date=2019-02-03|archive-url=https://web.archive.org/web/20190203175304/https://news.softpedia.com/news/canonical-releases-snapcraft-3-1-snap-creator-tool-with-various-improvements-524761.shtml|url-status=live}}</ref><ref>{{Cite web|title=Using external metadata {{!}} Snapcraft documentation|url=https://snapcraft.io/docs/using-external-metadata|access-date=2020-08-05|website=Snapcraft|language=en|archive-date=2020-08-13|archive-url=https://web.archive.org/web/20200813050218/https://snapcraft.io/docs/using-external-metadata|url-status=live}}</ref>

===Snap Store=== The Snap Store allows developers to publish their snap-packaged applications.<ref name=":1">{{Cite web |last1=Sanders |first1=James |date=August 6, 2019 |title=Why Canonical views the Snap ecosystem as a compelling distribution-agnostic solution |url=https://www.techrepublic.com/article/why-canonical-views-the-snap-ecosystem-as-a-compelling-distribution-agnostic-solution/ |access-date=2020-08-05 |website=TechRepublic |language=en|archive-url=https://web.archive.org/web/20200814054036/https://www.techrepublic.com/article/why-canonical-views-the-snap-ecosystem-as-a-compelling-distribution-agnostic-solution/|archive-date=2020-08-14|url-status=deviated}}</ref> All apps uploaded to the Snap Store undergo automatic testing, including a malware scan. However, the scan does not catch all issues. In one case in May 2018, two applications by the same developer were found to contain a cryptocurrency miner which ran in the background during application execution. In 2024, fake cryptocurrency wallets were uploaded that would steal the user's funds, and then when taken down by Canonical, simply reuploaded by a new account.<ref>{{cite web | title=Malware in the snap store (Again) | date=21 March 2024 | url=https://forum.level1techs.com/t/malware-in-the-snap-store-again/208817 }}</ref> Canonical recommends users only install Snaps from publishers trusted by the user.<ref>{{Cite web |title=Packages for Ubuntu |url=https://ubuntu.com/about/packages |access-date=2020-08-07 |website=Ubuntu |language=en |archive-date=2020-08-06 |archive-url=https://web.archive.org/web/20200806135205/https://ubuntu.com/about/packages |url-status=live }}</ref><ref>{{Cite web |date=2018-03-27 |title=Bogus apps in store |url=https://forum.snapcraft.io/t/bogus-apps-in-store/4703/9 |access-date=2020-08-07 |website=snapcraft.io |language=en-US |archive-date=2021-06-28 |archive-url=https://web.archive.org/web/20210628133643/https://forum.snapcraft.io/t/bogus-apps-in-store/4703/9 |url-status=live }}</ref>

== Support == ''Snaps'' are self-contained packages that work across a range of Linux distributions. This is unlike traditional Linux package management approaches, which require specifically adapted packages for each Linux distribution.<ref>{{Cite web |last=Wallen |first=Jack |date=June 21, 2016 |title=Canonical changes the game by announcing universal snap packages |url=https://www.techrepublic.com/article/canonical-changes-the-game-by-announcing-universal-snap-packages/ |access-date=2020-08-08 |website=TechRepublic |language=en |archive-date=2020-08-14 |archive-url=https://web.archive.org/web/20200814170907/https://www.techrepublic.com/article/canonical-changes-the-game-by-announcing-universal-snap-packages/ |url-status=live }}</ref><ref>{{Cite web |last=Kepes |first=Ben |date=2016-06-14 |title=Snap! Do the Linux distros finally agree on something? |url=https://www.computerworld.com/article/3082766/snap-do-the-linux-distros-finally-agree-on-something.html |access-date=2020-08-08 |website=Computerworld |language=en |archive-date=2020-09-21 |archive-url=https://web.archive.org/web/20200921000707/https://www.computerworld.com/article/3082766/snap-do-the-linux-distros-finally-agree-on-something.html |url-status=live }}</ref>

[[File:Snap-list.png|thumb|The command {{code|snap list}} here shows that Skype and IntelliJ IDEA have been installed]]

The snap file format is a single compressed filesystem using the SquashFS format with the extension <code>.snap</code>. This filesystem contains the application, libraries it depends on, and declarative metadata. This metadata is interpreted by snapd to set up an appropriately shaped secure sandbox for that application. After installation, the snap is mounted by the host operating system and decompressed on the fly when the files are used.<ref>{{Cite web |date=2019-11-14 |title=A technical comparison between the snap and the Flatpak formats |url=https://readyspace.co.id/en/a-technical-comparison-between-the-snap-and-the-flatpak-formats/ |access-date=2020-08-05 |website=ReadySpace Indonesia |language=en-US}}{{Dead link|date=March 2023|bot=InternetArchiveBot|fix-attempted=yes}}</ref><ref name=":5" /> Although this has the advantage that snaps use less disk space, it also means some large applications start more slowly.<ref>{{Cite web |date=2019-10-29 |title=Squashfs performance effect on snap startup time |url=https://forum.snapcraft.io/t/squashfs-performance-effect-on-snap-startup-time/13920 |access-date=2020-08-05 |website=snapcraft.io |language=en-US |archive-date=2020-08-14 |archive-url=https://web.archive.org/web/20200814170913/https://forum.snapcraft.io/t/squashfs-performance-effect-on-snap-startup-time/13920 |url-status=live }}</ref><ref>{{Cite web |last=McKay |first=Dave |title=What You Need to Know About Snaps on Ubuntu 20.04 |url=https://www.howtogeek.com/670084/what-you-need-to-know-about-snaps-on-ubuntu-20.04/ |access-date=2021-07-28 |website=How-To Geek |date=30 April 2020 |language=en-US |archive-date=2021-07-28 |archive-url=https://web.archive.org/web/20210728020303/https://www.howtogeek.com/670084/what-you-need-to-know-about-snaps-on-ubuntu-20.04/ |url-status=live }}</ref>

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.<ref>{{Cite web |date=2018-03-09 |title=Call for testing: OpenPrinting's printing-stack-snap (Printing in a Snap) |url=https://forum.snapcraft.io/t/call-for-testing-openprintings-printing-stack-snap-printing-in-a-snap/4406 |access-date=2020-08-05 |website=snapcraft.io |language=en-US |archive-date=2020-08-14 |archive-url=https://web.archive.org/web/20200814170859/https://forum.snapcraft.io/t/call-for-testing-openprintings-printing-stack-snap-printing-in-a-snap/4406 |url-status=live }}</ref><ref>{{cite web |title=Canonical unveils 6th LTS release of Ubuntu with 16.04 |url=https://insights.ubuntu.com/2016/04/20/canonical-unveils-6th-lts-release-of-ubuntu-with-16-04/ |access-date=22 April 2016 |website=Ubuntu Insights |publisher=Canonical Ltd. |archive-date=3 November 2017 |archive-url=https://web.archive.org/web/20171103141231/https://insights.ubuntu.com/2016/04/20/canonical-unveils-6th-lts-release-of-ubuntu-with-16-04/ |url-status=live }}</ref> To ensure this, Snap relies on systemd for features such as running socket-activated system services in a Snap.<ref>{{cite web |title=Services and daemons |url=https://snapcraft.io/docs/services-and-daemons |access-date=2020-07-31 |archive-date=2020-08-13 |archive-url=https://web.archive.org/web/20200813063922/https://snapcraft.io/docs/services-and-daemons |url-status=live }}</ref> This causes Snap to work best only on distributions that can adopt that init system.<ref>{{Cite web |title=WSL2- Ubuntu 20.04 Snap store doesn't work due to systemd dependency · Issue #5126 · microsoft/WSL |url=https://github.com/microsoft/WSL/issues/5126 |access-date=2020-08-07 |website=GitHub |language=en |archive-date=2020-11-01 |archive-url=https://web.archive.org/web/20201101115729/https://github.com/microsoft/WSL/issues/5126 |url-status=live }}</ref>

==Adoption== [[File:Spotify-EasyRPM installation process screenshot.webp|thumb|Screenshot of Spotify-EasyRPM installation script running on openSUSE Tumbleweed, the script downloaded the Spotify Linux Snap package from snapcraft.io, processed and converted the package into RPM, and installed the RPM into the system]] Snap initially only supported the all-Snap Ubuntu Core distribution, but in June 2016, it was ported to a wide range of Linux distributions to become a format for universal Linux packages.<ref>{{Cite web |last=Lunden |first=Ingrid |date=14 June 2016 |title=Ubuntu's container-style Snap app packages now work on other Linux distributions |url=https://techcrunch.com/2016/06/14/ubuntus-container-style-snap-app-packages-now-work-on-other-linux-distributions/ |access-date=2020-08-08 |website=TechCrunch |language=en-US |archive-date=2020-08-14 |archive-url=https://web.archive.org/web/20200814171134/https://techcrunch.com/2016/06/14/ubuntus-container-style-snap-app-packages-now-work-on-other-linux-distributions/ |url-status=live }}</ref> Snap requires Systemd which is available in most, but not all, Linux distributions. Other Unix-like systems (e.g. FreeBSD) are not supported.<ref>{{Cite web |title=Installing snapd {{!}} Snapcraft documentation |url=https://snapcraft.io/docs/installing-snapd |access-date=2022-04-25 |website=Snapcraft |language=en |archive-date=2022-04-22 |archive-url=https://web.archive.org/web/20220422203522/https://snapcraft.io/docs/installing-snapd |url-status=live }}</ref> ChromeOS does not support Snap directly, only through Linux distributions installed in it that support Snap, such as Gallium OS.<ref>{{Cite web|title=Installing snap on GalliumOS {{!}} Snapcraft documentation|url=https://snapcraft.io/docs/installing-snap-on-galliumos|access-date=2020-08-18|website=Snapcraft|language=en|archive-date=2020-09-23|archive-url=https://web.archive.org/web/20200923133400/https://snapcraft.io/docs/installing-snap-on-galliumos|url-status=live}}</ref>

Ubuntu and its official derivatives pre-install Snap by default, as well as other Ubuntu-based distributions such as KDE Neon, and Zorin OS.<ref>{{Cite web |title=Installing snapd {{!}} Snapcraft documentation |url=https://snapcraft.io/docs/installing-snapd |access-date=2020-08-05 |website=Snapcraft |language=en |archive-date=2020-08-05 |archive-url=https://web.archive.org/web/20200805134504/https://snapcraft.io/docs/installing-snapd |url-status=live }}</ref> Solus have currently planned to drop Snap, to reduce the burden of maintaining AppArmor patches needed for strict Snap confinement.<ref>{{Cite web |title=Snap deprecation issue |url=https://github.com/getsolus/packages/issues/325 |access-date=2023-11-04 |website=GitHub |language=en |archive-date=2023-11-04 |archive-url=https://web.archive.org/web/20231104175734/https://github.com/getsolus/packages/issues/325 |url-status=live }}</ref> Zorin OS have removed Snap as a default package in the Zorin OS 17 release.<ref>{{Cite web |title=Zorin community manager express the plan to remove Snap as default package |url=https://forum.zorin.com/t/packaging-formats-and-their-use-in-zorin-os/31972/16 |access-date=2023-12-13|website=Zorin Forum |date=11 December 2023 |language=en}}</ref> While other official Ubuntu derivatives such as Kubuntu, Xubuntu, and Ubuntu MATE have also shipped with the competing Flatpak as a complement, they will no longer do so beginning with Ubuntu 23.04, meaning that it must be installed manually by the user.<ref>{{Cite web |title=Ubuntu Flavors/Spins Will No Longer Be Able To Install Flatpak By Default |url=https://www.phoronix.com/news/Ubuntu-No-Flatpak-By-Default |access-date=2023-02-26 |website=www.phoronix.com |language=en}}</ref>

A number of notable desktop software development companies publish their software in the Snap Store, including Google,<ref>{{Cite web|date=2020-07-08|title=Google and Canonical bring Flutter apps to Linux and the Snap Store|url=https://venturebeat.com/2020/07/08/google-canonical-ubuntu-flutter-apps-linux-support/|access-date=2020-08-05|website=VentureBeat|language=en-US|archive-date=2020-08-11|archive-url=https://web.archive.org/web/20200811045709/https://venturebeat.com/2020/07/08/google-canonical-ubuntu-flutter-apps-linux-support/|url-status=live}}</ref> JetBrains,<ref>{{Cite web|title=Install IntelliJ IDEA on Ubuntu with Snaps – IntelliJ IDEA Blog {{!}} JetBrains|url=https://blog.jetbrains.com/idea/2017/11/install-intellij-idea-with-snaps/|access-date=2020-08-05|website=JetBrains Blog|date=16 November 2017|language=en-US|archive-date=2020-09-29|archive-url=https://web.archive.org/web/20200929111510/https://blog.jetbrains.com/idea/2017/11/install-intellij-idea-with-snaps/|url-status=live}}</ref> KDE,<ref>{{Cite web|title=Month of KDE Applications Snaps – KDE neon Developers' Blog|date=13 February 2019|url=https://blog.neon.kde.org/index.php/2019/02/13/month-of-kde-applications-snaps/|access-date=2020-08-05|language=en-US|archive-date=2020-08-04|archive-url=https://web.archive.org/web/20200804135437/https://blog.neon.kde.org/index.php/2019/02/13/month-of-kde-applications-snaps/|url-status=live}}</ref> Microsoft (for Linux versions of e.g. .NET Core 3.1,<ref>{{Citation|title=.NET Core 3.1.0 Preview 2|date=2019-11-08|url=https://github.com/dotnet/core/blob/master/release-notes/3.1/preview/3.1.0-preview2-install-instructions.md|publisher=.NET Foundation|access-date=2019-11-08|archive-date=2020-04-22|archive-url=https://web.archive.org/web/20200422083919/https://github.com/dotnet/core/blob/master/release-notes/3.1/preview/3.1.0-preview2-install-instructions.md|url-status=live}}</ref> Visual Studio Code, Skype,<ref>{{Cite web|last=Vaughan-Nichols|first=Steven J.|title=Use Ubuntu's snap to install Skype on any Linux desktop|url=https://www.zdnet.com/article/use-ubuntus-snap-to-install-skype-on-any-linux-desktop/|access-date=2020-08-08|website=ZDNet|language=en|archive-date=2020-10-30|archive-url=https://web.archive.org/web/20201030052538/https://www.zdnet.com/article/use-ubuntus-snap-to-install-skype-on-any-linux-desktop/|url-status=live}}</ref> and PowerShell), Mozilla<ref>{{Cite web|last1=Hoffman|first1=Chris|date=2016-04-25|title=Mozilla will provide Firefox as a Snap package for Ubuntu, cutting out the middleman|url=https://www.pcworld.com/article/3060143/mozilla-will-provide-firefox-as-a-snap-package-for-ubuntu-cutting-out-the-middleman.html|access-date=2020-08-05|website=PCWorld|language=en}}</ref> and Spotify.<ref>{{Cite web|date=2017-12-30|title=Spotify Now Available as a Snap App on Ubuntu|url=https://www.omgubuntu.co.uk/2017/12/spotify-now-available-snap-app-ubuntu|access-date=2020-08-05|website=OMG! Ubuntu!|language=en-GB|archive-date=2020-09-22|archive-url=https://web.archive.org/web/20200922054331/https://www.omgubuntu.co.uk/2017/12/spotify-now-available-snap-app-ubuntu|url-status=live}}</ref> Snaps are also used in Internet-of-Things environments, ranging from consumer-facing products<ref>{{cite news|url=https://www.zdnet.com/article/ubuntu-jumps-into-internet-of-things-with-acer-ge-and-microsoft/|title=Ubuntu jumps into Internet of Things with Acer, GE, and Microsoft|date=11 May 2015|work=ZDNet|ref=sjvn-iot|last1=Vaughan-Nichols|first1=Stephen J.|access-date=7 November 2015|archive-date=9 January 2017|archive-url=https://web.archive.org/web/20170109003551/https://www.zdnet.com/article/ubuntu-jumps-into-internet-of-things-with-acer-ge-and-microsoft/|url-status=live}}</ref> to enterprise device management gateways<ref>{{cite web|url= https://insights.ubuntu.com/2015/10/21/snappy-core-unlocks-iot-value-within-the-dell-edge-gateway-5000-series/|title= Snappy Core unlocks IoT value within the Dell Edge Gateway 5000 Series|website= Ubuntu Insights|publisher= Canonical Ltd.|last1= Sherman|first1= Jordana|access-date= 7 November 2015|archive-date= 31 July 2017|archive-url= https://web.archive.org/web/20170731034934/https://insights.ubuntu.com/2015/10/21/snappy-core-unlocks-iot-value-within-the-dell-edge-gateway-5000-series/|url-status= live}}</ref> and satellite communication networks.<ref>{{Cite web|date=2018-03-14|title=LimeSDR Mini takes off in satellites|url=http://linuxgizmos.com/limesdr-mini-takes-off-in-satellites/|access-date=2020-08-05|website=LinuxGizmos.com|archive-date=2020-08-02|archive-url=https://web.archive.org/web/20200802153450/http://linuxgizmos.com/limesdr-mini-takes-off-in-satellites/|url-status=live}}</ref><ref>{{Cite web|title=Ubuntu Core 18 released for secure, reliable IoT devices|url=https://ubuntu.com/blog/ubuntu-core-18-released-for-secure-reliable-iot-devices|access-date=2020-08-05|website=Ubuntu|language=en|archive-date=2020-08-09|archive-url=https://web.archive.org/web/20200809045956/https://ubuntu.com/blog/ubuntu-core-18-released-for-secure-reliable-iot-devices|url-status=live}}</ref> Finally, Snap is also used by developers of server applications such as InfluxDB,<ref>{{Cite web|title=Install influxdb for Linux using the Snap Store|url=https://snapcraft.io/influxdb|access-date=2020-08-05|website=Snapcraft|language=en|archive-date=2020-08-05|archive-url=https://web.archive.org/web/20200805140946/https://snapcraft.io/influxdb|url-status=live}}</ref> Kata Containers,<ref>{{Cite web|last=Nestor|first=Marius|title=You Can Now Install Kata Containers VM as a Snap on Ubuntu, Other Linux Distros|url=https://news.softpedia.com/news/you-can-now-install-kata-containers-as-a-snap-on-ubuntu-and-other-linux-distros-522138.shtml|access-date=2020-08-05|website=softpedia|date=27 July 2018|language=en|archive-date=2020-08-14|archive-url=https://web.archive.org/web/20200814170838/https://news.softpedia.com/news/you-can-now-install-kata-containers-as-a-snap-on-ubuntu-and-other-linux-distros-522138.shtml|url-status=live}}</ref> Nextcloud<ref>{{Cite web|date=April 27, 2020|first=Jack|last=Wallen|title=How to install Nextcloud with SSL using snap|url=https://www.techrepublic.com/article/how-to-install-nextcloud-with-ssl-using-snap/|access-date=2020-08-08|website=TechRepublic|language=en|archive-date=2020-07-17|archive-url=https://web.archive.org/web/20200717223637/https://www.techrepublic.com/article/how-to-install-nextcloud-with-ssl-using-snap/|url-status=live}}</ref> and Travis CI.<ref>{{Cite web|title=Install travis-worker for Linux using the Snap Store|url=https://snapcraft.io/travis-worker|access-date=2020-08-05|website=Snapcraft|language=en|archive-date=2021-06-28|archive-url=https://web.archive.org/web/20210628133644/https://snapcraft.io/travis-worker|url-status=live}}</ref>

==Reception==

Clément Lefèbvre, founder and project leader of Linux Mint, criticized Snap, arguing that Canonical controls the distribution of software and makes its store a requirement for Snap users. In 2020, the Linux Mint project announced that its releases would not ship with snap software and would not allow snap packages to be installed automatically via APT.<ref>{{Cite web |title=Linux Mint dumps Ubuntu Snap |url=https://www.zdnet.com/article/linux-mint-dumps-ubuntu-snap/ |access-date=2022-12-03 |website=ZDNet }}</ref><ref>{{cite news |last=Anderson |first=Tim |title=Snapping at Canonical's Snap: Linux Mint team says no to Ubuntu store 'backdoor' |url=https://www.theregister.com/2020/06/02/linux_mint_team_snap/ |work=The Register |date=2 June 2020 }}</ref>

On recent versions of Ubuntu, Canonical has migrated certain packages exclusively to Snap, such as Chromium and Firefox<ref name=":2">{{Cite web |title=Canonical Continues Working On Ubuntu's Firefox Snap Performance |url=https://www.phoronix.com/news/Firefox-Snap-Performance-2 |access-date=2023-02-26 |website=www.phoronix.com |language=en |archive-date=2023-02-26 |archive-url=https://web.archive.org/web/20230226022346/https://www.phoronix.com/news/Firefox-Snap-Performance-2 |url-status=live }}</ref> web browsers.<ref>{{Cite web |last=Vaughan-Nichols |first=Steven J. |title=Ubuntu opens the door to talking with Linux Mint about Snap |url=https://www.zdnet.com/article/ubuntu-opens-the-door-to-talking-with-linux-mint-about-snap/ |access-date=2020-08-08 |website=ZDNet |language=en |archive-date=2020-08-14 |archive-url=https://web.archive.org/web/20200814170908/https://www.zdnet.com/article/ubuntu-opens-the-door-to-talking-with-linux-mint-about-snap/ |url-status=live }}</ref><ref name=":1" /> The replacement of Firefox led to mixed reception from users due to performance issues with the Snap version, especially on startup.<ref name=":2" />

==See also== {{Portal|Free and open-source software}} * Flatpak * AppImage * Nix * Portable application creators * ROX uses directories (AppDirs) as application bundles. * List of Linux package management systems

==References== {{Reflist}}

==External links== * [https://snapcraft.io/ Official website] * [https://ubuntu.com/blog/a-technical-comparison-between-snaps-and-debs A technical comparison between snaps and debs]

{{Linux package management systems}}{{Package management systems}}{{Software digital distribution platforms}} Category:Linux installation software Category:Linux package management-related software Category:Operating system technology Category:Free package management systems Category:Software distribution Category:Ubuntu Category:Software using the GNU General Public License Category:Free software programmed in Go Category:Free software programmed in Python