Jump to content
Wikipedia The Free Encyclopedia

Snap (software)

From Wikipedia, the free encyclopedia
Software deployment system for Linux by Canonical
Snap
Snap / Snapcraft Logo
Developer Canonical Ltd.
Repository
Written inGo, C, Shell script, Python, JavaScript, NASL[1]
Operating system Linux
License GNU GPLv3 (Client & Runtime), proprietary (Backend)[2]
Websitesnapcraft.io  Edit this on Wikidata

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 [3] 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

[edit ]

Configurable sandbox

[edit ]

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.[4] [5] [6] 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.[7] [8] 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.[9] This is often used to share common libraries and application frameworks between Snaps to reduce the size of Snaps by avoiding duplication.[10] [11]

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,[12] 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.[13] [12] [14]

Automatic and atomic updates

[edit ]

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[15] [16] and use delta encoding to reduce their download size.[17] [18] [19]

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 latest/stable 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 2.0/stable 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.[20] [21] [22] [23]

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.[24] [25] [26] Updates are automatically paused on metered connections.[27] [28]

Snapcraft

[edit ]
Snapcraft
Snapcraft Logo
Developer Canonical Ltd.
Stable release
8.12.0[29] / 5 September 2025; 3 months ago (5 September 2025)
Repository github.com/snapcore/snapcraft
Written inPython, Shell script, C++, Go, Dart [30]
Operating system Linux
License GNU General Public License, version 3.0
Websitesnapcraft.io  Edit this on Wikidata

Snapcraft is a tool for developers to package their programs in the Snap format.[31] It runs on any Linux distribution supported by Snap, macOS [32] and Microsoft Windows.[33] Snapcraft builds the packages in a Virtual Machine using Multipass,[34] in order to ensure the result of a build is the same, regardless of which distribution or operating system it is built on.[35] 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 setup.py files.[32] [36]

Snap Store

[edit ]

The Snap Store allows developers to publish their snap-packaged applications.[37] 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.[38] Although the Snap sandbox attempts to reduce the impact of a malicious app, multiple exploits have been found that allow malicious Snaps to escape the sandbox and gain direct access to the user's data.[39] [40] Canonical recommends users only install Snaps from publishers trusted by the user.[41] [42]

Support

[edit ]

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.[43] [44]

The command 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 .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 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.[45] [23] Although this has the advantage that snaps use less disk space, it also means some large applications start more slowly.[46] [47]

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.[48] [49] To ensure this, Snap relies on systemd for features such as running socket-activated system services in a Snap.[50] This causes Snap to work best only on distributions that can adopt that init system.[51]

Adoption

[edit ]
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.[52] Snap requires Systemd which is available in most, but not all, Linux distributions. Other Unix-like systems (e.g. FreeBSD) are not supported.[53] ChromeOS does not support Snap directly, only through Linux distributions installed in it that support Snap, such as Gallium OS.[54]

Ubuntu and its official derivatives pre-install Snap by default, as well as other Ubuntu-based distributions such as KDE Neon, and Zorin OS.[55] Solus have currently planned to drop Snap, to reduce the burden of maintaining AppArmor patches needed for strict Snap confinement.[56] Zorin OS have removed Snap as a default package in the Zorin OS 17 release.[57] 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.[58]

A number of notable desktop software development companies publish their software in the Snap Store, including Google,[59] JetBrains,[60] KDE,[61] Microsoft (for Linux versions of e.g. .NET Core 3.1,[62] Visual Studio Code, Skype,[63] and PowerShell), Mozilla [64] and Spotify.[65] Snaps are also used in Internet-of-Things environments, ranging from consumer-facing products[66] to enterprise device management gateways[67] and satellite communication networks.[68] [69] Finally, Snap is also used by developers of server applications such as InfluxDB,[70] Kata Containers,[71] Nextcloud [72] and Travis CI.[73]

Reception

[edit ]

Snap has received mixed reaction from the developer community. On Snap's promotional site, Heroku praised Snap's auto-update as it fits their fast release schedule well. Microsoft mentions its ease of use and Snap being YAML-based, as well as it being distribution-agnostic. JetBrains says the Snap Store gives their tools more exposure.[74] [better source needed ]

Others have objected to the closed-source nature of the Snap Store. Clément Lefèbvre (Linux Mint founder and project leader[75] [76] ) 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.[77] He later announced that the installing of Snap would be blocked by APT in Linux Mint,[78] [79] although a way to disable this restriction would be documented.[80]

On recent versions of Ubuntu, Canonical has migrated certain packages exclusively to Snap, such as Chromium and Firefox [81] web browsers.[82] [37] The replacement of Firefox led to mixed reception from users due to performance issues with the Snap version, especially on startup.[81]

See also

[edit ]

References

[edit ]
  1. ^ "snapcore · GitHub". GitHub. Archived from the original on 2 April 2023. Retrieved 5 November 2022.
  2. ^ "What's The Deal With Snap Packages?". 24 June 2020. Archived from the original on 9 June 2023. Retrieved 13 February 2023.
  3. ^ "snapd package versions - Repology". Repology. Archived from the original on 19 May 2021. Retrieved 20 August 2021.
  4. ^ "Supported interfaces | Snapcraft documentation". Snapcraft. Archived from the original on 2020年08月03日. Retrieved 2020年08月05日.
  5. ^ "Snapcraft confinement & interfaces". ReadySpace China (in Simplified Chinese). 2019年06月06日. Archived from the original on 2020年11月25日. Retrieved 2020年08月05日.
  6. ^ "A guide to snap permissions and interfaces". ReadySpace Hong Kong. 2018年11月02日. Archived from the original on 2020年03月19日. Retrieved 2020年08月05日.
  7. ^ "Flatpak's XDG-Desktop-Portal Adds Initial Support For Snaps - Phoronix". www.phoronix.com. Archived from the original on 2020年08月14日. Retrieved 2020年08月05日.
  8. ^ "Desktop Integration — Flatpak documentation". docs.flatpak.org. Retrieved 2020年08月05日.
  9. ^ "The content interface". Snapcraft. Archived from the original on 2020年10月20日. Retrieved 2020年04月29日.
  10. ^ "Snappy Is Finally Doing Something About Super Large App Sizes". OMG! Ubuntu!. 2017年06月11日. Archived from the original on 2020年08月14日. Retrieved 2020年08月07日.
  11. ^ "Bundling KDE". archive.fosdem.org. Archived from the original on 2021年06月28日. Retrieved 2020年08月07日.
  12. ^ a b Edge, Jake (2019年11月20日). "LSM stacking and the future". LWN.net . Archived from the original on 2020年08月14日. Retrieved 2020年08月06日.
  13. ^ "How Are SNAPS claiming to have no internet plug regulated?". snapcraft.io. 2020年07月11日. Archived from the original on 2020年08月14日. Retrieved 2020年08月06日.
  14. ^ Johansen, John (3 February 2019). "Containers with Different Security Modules". Archived from the original on 24 July 2021. Retrieved 6 August 2020.
  15. ^ "How to revert to a previous version of a snap package? wekan in this case". costales.github.io. 2017年03月08日. Archived from the original on 2020年08月14日. Retrieved 2020年08月05日.
  16. ^ "A Beginners Guide to Snaps in Linux - Part 1". www.tecmint.com. 5 June 2020. Archived from the original on 2020年07月27日. Retrieved 2020年08月05日.
  17. ^ "Snapcraft - Snaps are universal Linux packages". Snapcraft. Archived from the original on 2020年04月17日. Retrieved 2019年07月02日.
  18. ^ Willis, Nathan (28 January 2015). "Ubuntu Core and Snappy". Linux Weekly News . Archived from the original on 24 February 2015. Retrieved 7 November 2015.
  19. ^ Vaughan-Nichols, Steven J. "Ubuntu Snap takes charge of Linux desktop and IoT software distribution". ZDNet. Archived from the original on 2018年02月26日. Retrieved 2024年07月05日.
  20. ^ "Controlling snap releases with channels, tracks and branches – Part 1". Ubuntu. Archived from the original on 2020年08月14日. Retrieved 2020年08月07日.
  21. ^ "Controlling snap releases with channels, tracks and branches – Part 2". Ubuntu. Retrieved 2020年08月07日.
  22. ^ Prakash, Abhishek (23 April 2016). "Using Snap Packages In Ubuntu & Other Linux [Complete Guide]" . Retrieved 2020年08月07日.
  23. ^ a b McKay, Dave (18 March 2020). "How to Work with Snap Packages on Linux". How-To Geek. Retrieved 2020年08月05日.
  24. ^ 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. Archived from the original on 2022年12月02日. Retrieved 2022年12月02日.
  25. ^ "You can finally disable Snap updates". merlijn.sebrechts.be. 2022年11月10日. Retrieved 2022年12月02日.
  26. ^ "Ubuntu snap updates will soon be able to be held temporarily and indefinitely". Neowin. Retrieved 2022年12月02日.
  27. ^ "How To Change Snap Refresh (Update) Schedule". Linux Uprising Blog. 17 July 2019. Archived from the original on 2020年08月14日. Retrieved 2020年08月07日.
  28. ^ Pope, Alan (3 March 2020). "Controlling Snap Updates". YouTube .
  29. ^ "Release 8.12.0". 5 September 2025. Retrieved 21 October 2025.
  30. ^ "GitHub - snapcore/snapcraft: Package, distribute, and update any app for Linux and IoT". GitHub. Archived from the original on 5 November 2022. Retrieved 5 November 2022.
  31. ^ Brodkin, Jon. "Adios apt and yum? Ubuntu's snap apps are coming to distros everywhere". Ars Technica . Archived from the original on 14 May 2019. Retrieved 13 August 2016.
  32. ^ a b Nestor, Marius (30 January 2019). "Canonical Releases Snapcraft 3.1 Snap Creator Tool with Various Improvements". softpedia. Archived from the original on 2019年02月03日. Retrieved 2020年08月05日.
  33. ^ Nestor, Marius (10 September 2019). "Ubuntu's Snapcraft Snap Creator Tool Will Soon Get a Windows Installer". softpedia. Archived from the original on 2019年12月27日. Retrieved 2020年08月08日.
  34. ^ "Build options | Snapcraft documentation". Archived from the original on 2020年05月27日. Retrieved 2020年12月20日.
  35. ^ "Make your snap development faster". ReadySpace China (in Simplified Chinese). 2019年03月15日. Archived from the original on 2021年06月28日. Retrieved 2020年08月05日.
  36. ^ "Using external metadata | Snapcraft documentation". Snapcraft. Archived from the original on 2020年08月13日. Retrieved 2020年08月05日.
  37. ^ a b Sanders, James (August 6, 2019). "Why Canonical views the Snap ecosystem as a compelling distribution-agnostic solution". TechRepublic. Archived from the original on 2020年08月14日. Retrieved 2020年08月05日.
  38. ^ "Malware in the snap store (Again)". 21 March 2024.
  39. ^ "The Hidden Dangers within Ubuntu's Package Suggestion System". 14 February 2024.
  40. ^ "Privilege Escalation Vulnerability in Snap Package Manager puts Linux users at risk | Hive Pro".
  41. ^ "Packages for Ubuntu". Ubuntu. Archived from the original on 2020年08月06日. Retrieved 2020年08月07日.
  42. ^ "Bogus apps in store". snapcraft.io. 2018年03月27日. Archived from the original on 2021年06月28日. Retrieved 2020年08月07日.
  43. ^ Wallen, Jack (June 21, 2016). "Canonical changes the game by announcing universal snap packages". TechRepublic. Archived from the original on 2020年08月14日. Retrieved 2020年08月08日.
  44. ^ Kepes, Ben (2016年06月14日). "Snap! Do the Linux distros finally agree on something?". Computerworld. Archived from the original on 2020年09月21日. Retrieved 2020年08月08日.
  45. ^ "A technical comparison between the snap and the Flatpak formats". ReadySpace Indonesia. 2019年11月14日. Retrieved 2020年08月05日.[permanent dead link ]
  46. ^ "Squashfs performance effect on snap startup time". snapcraft.io. 2019年10月29日. Archived from the original on 2020年08月14日. Retrieved 2020年08月05日.
  47. ^ McKay, Dave (30 April 2020). "What You Need to Know About Snaps on Ubuntu 20.04". How-To Geek. Archived from the original on 2021年07月28日. Retrieved 2021年07月28日.
  48. ^ "Call for testing: OpenPrinting's printing-stack-snap (Printing in a Snap)". snapcraft.io. 2018年03月09日. Archived from the original on 2020年08月14日. Retrieved 2020年08月05日.
  49. ^ "Canonical unveils 6th LTS release of Ubuntu with 16.04". Ubuntu Insights. Canonical Ltd. Archived from the original on 3 November 2017. Retrieved 22 April 2016.
  50. ^ "Services and daemons". Archived from the original on 2020年08月13日. Retrieved 2020年07月31日.
  51. ^ "WSL2- Ubuntu 20.04 Snap store doesn't work due to systemd dependency · Issue #5126 · microsoft/WSL". GitHub. Archived from the original on 2020年11月01日. Retrieved 2020年08月07日.
  52. ^ Lunden, Ingrid (14 June 2016). "Ubuntu's container-style Snap app packages now work on other Linux distributions". TechCrunch. Archived from the original on 2020年08月14日. Retrieved 2020年08月08日.
  53. ^ "Installing snapd | Snapcraft documentation". Snapcraft. Archived from the original on 2022年04月22日. Retrieved 2022年04月25日.
  54. ^ "Installing snap on GalliumOS | Snapcraft documentation". Snapcraft. Archived from the original on 2020年09月23日. Retrieved 2020年08月18日.
  55. ^ "Installing snapd | Snapcraft documentation". Snapcraft. Archived from the original on 2020年08月05日. Retrieved 2020年08月05日.
  56. ^ "Snap deprecation issue". GitHub. Archived from the original on 2023年11月04日. Retrieved 2023年11月04日.
  57. ^ "Zorin community manager express the plan to remove Snap as default package". Zorin Forum. 11 December 2023. Retrieved 2023年12月13日.
  58. ^ "Ubuntu Flavors/Spins Will No Longer Be Able To Install Flatpak By Default". www.phoronix.com. Retrieved 2023年02月26日.
  59. ^ "Google and Canonical bring Flutter apps to Linux and the Snap Store". VentureBeat. 2020年07月08日. Archived from the original on 2020年08月11日. Retrieved 2020年08月05日.
  60. ^ "Install IntelliJ IDEA on Ubuntu with Snaps – IntelliJ IDEA Blog | JetBrains". JetBrains Blog. 16 November 2017. Archived from the original on 2020年09月29日. Retrieved 2020年08月05日.
  61. ^ "Month of KDE Applications Snaps – KDE neon Developers' Blog". 13 February 2019. Archived from the original on 2020年08月04日. Retrieved 2020年08月05日.
  62. ^ .NET Core 3.1.0 Preview 2, .NET Foundation, 2019年11月08日, archived from the original on 2020年04月22日, retrieved 2019年11月08日
  63. ^ Vaughan-Nichols, Steven J. "Use Ubuntu's snap to install Skype on any Linux desktop". ZDNet. Archived from the original on 2020年10月30日. Retrieved 2020年08月08日.
  64. ^ Hoffman, Chris (2016年04月25日). "Mozilla will provide Firefox as a Snap package for Ubuntu, cutting out the middleman". PCWorld. Retrieved 2020年08月05日.
  65. ^ "Spotify Now Available as a Snap App on Ubuntu". OMG! Ubuntu!. 2017年12月30日. Archived from the original on 2020年09月22日. Retrieved 2020年08月05日.
  66. ^ Vaughan-Nichols, Stephen J. (11 May 2015). "Ubuntu jumps into Internet of Things with Acer, GE, and Microsoft". ZDNet . Archived from the original on 9 January 2017. Retrieved 7 November 2015.
  67. ^ Sherman, Jordana. "Snappy Core unlocks IoT value within the Dell Edge Gateway 5000 Series". Ubuntu Insights. Canonical Ltd. Archived from the original on 31 July 2017. Retrieved 7 November 2015.
  68. ^ "LimeSDR Mini takes off in satellites". LinuxGizmos.com. 2018年03月14日. Archived from the original on 2020年08月02日. Retrieved 2020年08月05日.
  69. ^ "Ubuntu Core 18 released for secure, reliable IoT devices". Ubuntu. Archived from the original on 2020年08月09日. Retrieved 2020年08月05日.
  70. ^ "Install influxdb for Linux using the Snap Store". Snapcraft. Archived from the original on 2020年08月05日. Retrieved 2020年08月05日.
  71. ^ Nestor, Marius (27 July 2018). "You Can Now Install Kata Containers VM as a Snap on Ubuntu, Other Linux Distros". softpedia. Archived from the original on 2020年08月14日. Retrieved 2020年08月05日.
  72. ^ Wallen, Jack (April 27, 2020). "How to install Nextcloud with SSL using snap". TechRepublic. Archived from the original on 2020年07月17日. Retrieved 2020年08月08日.
  73. ^ "Install travis-worker for Linux using the Snap Store". Snapcraft. Archived from the original on 2021年06月28日. Retrieved 2020年08月05日.
  74. ^ "SnapCraft homepage". snapcraft.io. Archived from the original on April 17, 2020. Retrieved July 23, 2021.
  75. ^ "Q&A: Clement Lefebvre: The man behind Linux Mint". computerworld.com. 21 October 2013. Archived from the original on 31 May 2023. Retrieved May 31, 2023.
  76. ^ "Teams". linuxmint.com. Archived from the original on October 3, 2017. Retrieved January 7, 2020.
  77. ^ "Monthly News – June 2019". blog.linuxmint.com. 2 July 2019. Archived from the original on 24 October 2020. Retrieved October 23, 2019.
  78. ^ Lefèbvre, Clément (June 2020). "Monthly News – May 2020". The Linux Mint Blog. The Mint Team. Archived from the original on 10 June 2020. Retrieved 10 June 2020.
  79. ^ "Linux Mint dumps Ubuntu Snap". ZDNET. Archived from the original on 2022年12月03日. Retrieved 2022年12月03日.
  80. ^ Anderson, Tim (2 June 2020). "Snapping at Canonical's Snap: Linux Mint team says no to Ubuntu store 'backdoor'". The Register. Situation Publishing. Archived from the original on 3 June 2020. Retrieved 10 June 2020.
  81. ^ a b "Canonical Continues Working On Ubuntu's Firefox Snap Performance". www.phoronix.com. Archived from the original on 2023年02月26日. Retrieved 2023年02月26日.
  82. ^ Vaughan-Nichols, Steven J. "Ubuntu opens the door to talking with Linux Mint about Snap". ZDNet. Archived from the original on 2020年08月14日. Retrieved 2020年08月08日.
[edit ]
Gaming console
Unix-like,
Linux
dpkg
Purely functional
RPM
tarball
Other
macOS
z/OS
Mobile
operating
systems
Multi-platform
Solaris, illumos
Web browsers
Windows
BSD
C++
Java
JavaScript
Kubernetes
Linux
macOS
.NET
Perl
PHP
Python
Ruby
Rust
Scala
Software digital distribution platforms
Active
Personal
computers
Consoles
Mobile
devices
§
Arcade
Defunct

AltStyle によって変換されたページ (->オリジナル) /