<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ snaps  - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ snaps  - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 25 Aug 2026 10:12:18 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/snaps/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Linux Package Management with Snaps ]]>
                </title>
                <description>
                    <![CDATA[ A big part of administrating Linux machines - especially remote machines - is managing and installing software.  When something goes wrong with a local application or when something on the file system breaks and needs fixing, you're often going to wa... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/linux-package-management-with-snaps/</link>
                <guid isPermaLink="false">66b9960894b336889c600438</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                    <category>
                        <![CDATA[ snaps  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software-packaging ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ David Clinton ]]>
                </dc:creator>
                <pubDate>Mon, 22 Jun 2020 13:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/06/software-snap.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>A big part of administrating Linux machines - especially remote machines - is managing and installing software. </p>
<p>When something goes wrong with a local application or when something on the file system breaks and needs fixing, you're often going to want to push updates without having to travel many miles to sit down in front of a physical screen. </p>
<p>A lot of problems can be solved through Bash scripts, of course, but there are still plenty of use-cases where there's no alternative to a good old fashioned binary.</p>
<p>Imagine that some of your remote systems need new applications installed so the team members using those computers will be able to perform some business function. Being able to leverage the integration and automation of one of the major Linux repository systems - like Debian or RPM - can make your administration tasks a whole lot easier. </p>
<p>In this article we'll explore a relatively new standalone package management system: Snap.</p>
<p>As Linus Torvalds never tires of reminding us, the problem with many Linux software managements systems is that there are too many Linux software management systems. </p>
<p>App development and even Linux adoption have, over the years, become more complicated. All the time and work you invest in preparing your software for, say, Debian repos, won't help you if you want to get them into RPM systems. And neither will help for SUSE's zypper manager.</p>
<p>As I show in <a target="_blank" href="https://pluralsight.pxf.io/VMKQj">my Pluralsight course: Linux System Maintenance and Troubleshooting</a>, one promising solution to the software silo problem is to distribute applications with their own self-contained environments that'll work on any Linux distribution. </p>
<p>The two big standards in this young and growing field are AppImage and snap. We'll start with snaps.</p>
<h2 id="heading-working-with-snaps">Working with Snaps</h2>
<p>The snap system - under the guidance of Canonical, the company that sponsors Ubuntu - installs each individual application on your system within its own virtual partition. All those loop partitions sure make a royal mess of the output of the df command, but they also represent a rational approach to distributing a single version of software across any and all Linux installations.</p>
<pre><code>$ df
Filesystem     <span class="hljs-number">1</span>K-blocks      Used Available Use% Mounted on
udev             <span class="hljs-number">7101884</span>         <span class="hljs-number">0</span>   <span class="hljs-number">7101884</span>   <span class="hljs-number">0</span>% /dev
tmpfs            <span class="hljs-number">1432092</span>      <span class="hljs-number">3936</span>   <span class="hljs-number">1428156</span>   <span class="hljs-number">1</span>% /run
/dev/sda2      <span class="hljs-number">479152840</span> <span class="hljs-number">183520724</span> <span class="hljs-number">271222724</span>  <span class="hljs-number">41</span>% /
tmpfs            <span class="hljs-number">7160452</span>    <span class="hljs-number">329336</span>   <span class="hljs-number">6831116</span>   <span class="hljs-number">5</span>% <span class="hljs-regexp">/dev/</span>shm
tmpfs               <span class="hljs-number">5120</span>         <span class="hljs-number">4</span>      <span class="hljs-number">5116</span>   <span class="hljs-number">1</span>% <span class="hljs-regexp">/run/</span>lock
tmpfs            <span class="hljs-number">7160452</span>         <span class="hljs-number">0</span>   <span class="hljs-number">7160452</span>   <span class="hljs-number">0</span>% <span class="hljs-regexp">/sys/</span>fs/cgroup
/dev/loop2           <span class="hljs-number">384</span>       <span class="hljs-number">384</span>         <span class="hljs-number">0</span> <span class="hljs-number">100</span>% <span class="hljs-regexp">/snap/g</span>nome-characters/<span class="hljs-number">539</span>
/dev/loop4         <span class="hljs-number">56320</span>     <span class="hljs-number">56320</span>         <span class="hljs-number">0</span> <span class="hljs-number">100</span>% <span class="hljs-regexp">/snap/</span>core18/<span class="hljs-number">1705</span>
/dev/loop5         <span class="hljs-number">56320</span>     <span class="hljs-number">56320</span>         <span class="hljs-number">0</span> <span class="hljs-number">100</span>% <span class="hljs-regexp">/snap/</span>core18/<span class="hljs-number">1754</span>
/dev/loop3        <span class="hljs-number">145664</span>    <span class="hljs-number">145664</span>         <span class="hljs-number">0</span> <span class="hljs-number">100</span>% <span class="hljs-regexp">/snap/</span>slack/<span class="hljs-number">23</span>
/dev/loop0          <span class="hljs-number">2560</span>      <span class="hljs-number">2560</span>         <span class="hljs-number">0</span> <span class="hljs-number">100</span>% <span class="hljs-regexp">/snap/g</span>nome-calculator/<span class="hljs-number">730</span>
/dev/loop6         <span class="hljs-number">15360</span>     <span class="hljs-number">15360</span>         <span class="hljs-number">0</span> <span class="hljs-number">100</span>% <span class="hljs-regexp">/snap/</span>aws-cli/<span class="hljs-number">130</span>
[...]
/dev/loop21       <span class="hljs-number">521216</span>    <span class="hljs-number">521216</span>         <span class="hljs-number">0</span> <span class="hljs-number">100</span>% <span class="hljs-regexp">/snap/</span>onlyoffice-desktopeditors/<span class="hljs-number">38</span>
/dev/loop22       <span class="hljs-number">145664</span>    <span class="hljs-number">145664</span>         <span class="hljs-number">0</span> <span class="hljs-number">100</span>% <span class="hljs-regexp">/snap/</span>slack/<span class="hljs-number">22</span>
/dev/loop23       <span class="hljs-number">185472</span>    <span class="hljs-number">185472</span>         <span class="hljs-number">0</span> <span class="hljs-number">100</span>% <span class="hljs-regexp">/snap/</span>spotify/<span class="hljs-number">36</span>
/dev/loop25        <span class="hljs-number">96128</span>     <span class="hljs-number">96128</span>         <span class="hljs-number">0</span> <span class="hljs-number">100</span>% <span class="hljs-regexp">/snap/</span>core/<span class="hljs-number">8935</span>
/dev/loop26       <span class="hljs-number">319104</span>    <span class="hljs-number">319104</span>         <span class="hljs-number">0</span> <span class="hljs-number">100</span>% <span class="hljs-regexp">/snap/</span>onlyoffice-desktopeditors/<span class="hljs-number">43</span>
/dev/loop27         <span class="hljs-number">1152</span>      <span class="hljs-number">1152</span>         <span class="hljs-number">0</span> <span class="hljs-number">100</span>% <span class="hljs-regexp">/snap/</span>drawing/<span class="hljs-number">16</span>
/dev/loop24        <span class="hljs-number">56192</span>     <span class="hljs-number">56192</span>         <span class="hljs-number">0</span> <span class="hljs-number">100</span>% <span class="hljs-regexp">/snap/g</span>tk-common-themes/<span class="hljs-number">1502</span>
/dev/loop31         <span class="hljs-number">2560</span>      <span class="hljs-number">2560</span>         <span class="hljs-number">0</span> <span class="hljs-number">100</span>% <span class="hljs-regexp">/snap/g</span>nome-calculator/<span class="hljs-number">748</span>
/dev/sda1         <span class="hljs-number">523248</span>      <span class="hljs-number">6152</span>    <span class="hljs-number">517096</span>   <span class="hljs-number">2</span>% <span class="hljs-regexp">/boot/</span>efi
tmpfs            <span class="hljs-number">1432088</span>        <span class="hljs-number">12</span>   <span class="hljs-number">1432076</span>   <span class="hljs-number">1</span>% <span class="hljs-regexp">/run/u</span>ser/<span class="hljs-number">121</span>
tmpfs                <span class="hljs-number">100</span>         <span class="hljs-number">0</span>       <span class="hljs-number">100</span>   <span class="hljs-number">0</span>% <span class="hljs-regexp">/var/</span>lib/lxd/shmounts
tmpfs                <span class="hljs-number">100</span>         <span class="hljs-number">0</span>       <span class="hljs-number">100</span>   <span class="hljs-number">0</span>% <span class="hljs-regexp">/var/</span>lib/lxd/devlxd
tmpfs            <span class="hljs-number">1432088</span>        <span class="hljs-number">68</span>   <span class="hljs-number">1432020</span>   <span class="hljs-number">1</span>% <span class="hljs-regexp">/run/u</span>ser/<span class="hljs-number">1000</span>
</code></pre><p>In this demo, I'm going to show you how to package a GitHub-based application as a snap. With such a package, you would theoretically be able to submit it to the official snap store where, if accepted, it would be freely available to anyone on earth.</p>
<p>Now, I could pretend that I worked tirelessly to figure out the very best way to get all this done from the command line - but that wouldn't be completely honest. Actually, it wouldn't be honest at all. </p>
<p>In fact, I simply used the "first snap" tutorial on <a target="_blank" href="https://snapcraft.io/">the snapcraft.io website</a> that lets you select a language and then helpfully guides you through each step of the process. At the very end, it shows you how to submit your snap to the official snap store. </p>
<p>I'm going to take you through the process from the command line but, if you're doing this for yourself, it would probably make sense to check out the website to make sure nothing has changed.</p>
<p>So let's begin. You'll first need to make sure that the virtual machine manager Multipass is properly installed, since that's what snap uses to create the VMs where the images will be build. Naturally, Multipass itself is available as a snap. </p>
<p>Likewise, you'll need the snapcraft package. After installing snapcraft, you should follow it up with "hash -r" to refresh the list of places your shell will look for known programs.</p>
<pre><code>$ sudo snap install multipass --classic
$ sudo snap install snapcraft --classic
$ hash -r
</code></pre><p>As I went with Python for my language, the tutorial provided me with a link to the GitHub site of an open source Python email backup project called OfflineIMAP. Don't feel you're restricted to Python, for that matter. And, obviously, you can substitute your own project for the example. </p>
<p>When I've cloned the project locally, I'll cd into the new offlineimap directory. Next, I'll use wget to download the special Python-specific version of the YAML configuration file. </p>
<p>Since there's already a file with that name in the directory, this one will get an alternative name, so I'll just overwrite the old copy by changing the name of the new one. We'll then open the file and edit the three places where the word "name" appears in curly braces. I need to replace those with the name I'd actually like to use.</p>
<pre><code>$ git clone https:<span class="hljs-comment">//github.com/snapcraft-docs/offlineimap</span>
$ cd offlineimap
$ wget https:<span class="hljs-comment">//snapcraft.io/first-snap/python/snapcraft.yaml</span>
</code></pre><p>From here, running "snapcraft" will take care of the packaging process. This can be a long process, especially if there's software you need - like Multipass - that's not yet installed and set up. You may see some errors, but the odds are that the install script with automatically fix them on the fly. </p>
<p>When that's all died down, you can install the snap locally using the regular "snap install" command, but you'll need to add --devmode and --dangerous because this isn't an official, supported snap so, technically, no one knows what might happen when you start it up. </p>
<p>You can prove it's installed by running "snap list" and then confirm that everything worked by running the test-offlineimap-mysnap command with -h to get the help screen. </p>
<p>Enjoy the software - I know that this kind of email backup is something I've been meaning to get to for years.</p>
<pre><code>$ snapcraft
$ sudo snap install --devmode --dangerous *.snap
$ snap list
$ test-offlineimap-mysnap -h
</code></pre><p>If you're interested in learning how to manage snaps within your Linux environment, you might also enjoy my "<a target="_blank" href="https://www.freecodecamp.org/news/managing-ubuntu-snaps/">How to manage Ubuntu Snaps: the stuff no one tells you</a>" and "<a target="_blank" href="https://www.freecodecamp.org/news/snapd-nextcloud/">snapd Makes Administering Nextcloud a Snap</a>" articles.</p>
<h2 id="heading-working-with-other-package-managers">Working with other package managers</h2>
<p>We just got a pretty good look at snaps. But perhaps now is the perfect time to admit that I've left out some other big players in the alternative package manager world, in particular <a target="_blank" href="https://flatpak.org/setup/">Flatpak</a> and <a target="_blank" href="https://appimage.org/">AppImages</a>. </p>
<p>I discuss AppImages in some depth <a target="_blank" href="https://opensource.com/article/20/6/appimages">here</a>, but a quick word or two about Flatpak wouldn't be out of place here.</p>
<p>Flatpak's primary goal is to let developers build their applications into a single package and then distribute them to any Linux distribution. As an end-user, you would install the Flatpak system using your regular software manager - like Apt on Ubuntu or Yum on CentOS. Flatpak is installed by default on Fedora. From there, it's pretty much smooth sailing. Solves all the right problems, doesn't it?</p>
<p>Perhaps. There's been some <a target="_blank" href="https://flatkill.org/">recent criticism</a> over possible (and significant) security weaknesses in the fundamental design of Flatpak. I'll let you decide for yourself.</p>
<p><em>There's much more administration goodness in the form of books, courses, and articles available at my <a target="_blank" href="https://bootstrap-it.com/">bootstrap-it.com</a>.</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to manage Ubuntu Snaps: the stuff no one tells you ]]>
                </title>
                <description>
                    <![CDATA[ Canonical’s Snaps are definitely the real deal. The secure and portable Linux package management system is more than a geeky tool for showing off your tech creds. Just consider the growing list of companies that have already bought in and are providi... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/managing-ubuntu-snaps/</link>
                <guid isPermaLink="false">66b9960ec39234149cf01101</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                    <category>
                        <![CDATA[ snaps  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ System administration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Ubuntu ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ David Clinton ]]>
                </dc:creator>
                <pubDate>Mon, 19 Aug 2019 13:23:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2019/08/lego.svg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><a target="_blank" href="https://snapcraft.io/">Canonical’s Snaps</a> are definitely the real deal. The secure and portable Linux package management system is more than a geeky tool for showing off your tech creds. Just consider the <a target="_blank" href="https://snapcraft.io/store">growing list</a> of companies that have already bought in and are providing their desktop software through snaps, including Blender, Slack, Spotify, Android Studio, and Microsoft’s (Microsoft!) Visual Studio Code. And don’t forget that the real growth of the snap system is in the world of IoT devices and servers rather than desktops.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/image-138.png" alt="Image" width="600" height="400" loading="lazy">
<em>The snapcraft.io site: where snap developers and users meet</em></p>
<p>But as the popularity of snaps grows — some new Linux distros come with the snapd service installed by default — you might be forgiven for wondering how you’re supposed to make them work. Don’t get me wrong: there are all kinds of web-based guides for finding, installing, and removing snaps. And there are places developers can go for help building their applications as snaps. But right now I’m talking about <em>configuring</em> their behavior or <em>troubleshooting</em> when things go wrong.</p>
<p>Just for the record, you search for new snaps to install using something like:</p>
<pre><code>snap find aws
</code></pre><p>When you find a package you like, you install it using:</p>
<pre><code>snap install aws-cli
</code></pre><p>Oh, and you delete ‘em with remove.</p>
<pre><code>snap remove aws-cli
</code></pre><p>There. You can’t say I never taught you anything. But that’s not what this article is about. What we are going to talk about is real management stuff, like changing configurations or troubleshooting things that broke.</p>
<h2 id="heading-understanding-the-snap-file-system">Understanding the snap file system</h2>
<p>Well, how’s that going to be different from the way you’d normally do it on Linux? Configuration files are usually going to be in <em>/etc/</em>, processes will reveal their deepest secrets through <em>systemctl</em>, and logs will find their way to <em>/var/log/</em>.</p>
<p>Not so fast there, pilgrim. That’s not always how things work in Snapland. You see, a snap is really nothing more than a single compressed file (named using the <em>.snap</em> extension) containing the entire file system needed for running a package. These files are never actually decompressed and “installed,” but are mounted dynamically at run time and exposed to the user as a virtual environment.</p>
<p>This means that the resources used by a program might not actually exist on the host system. Thus, for example, the Nextcloud snap creates its own versions of Apache and MySQL for its backend. So if, say, you want to configure a new virtual host in <em>/etc/apache2/sites-available/</em> or create a new MySQL user the traditional way, you’re out of luck.</p>
<p>The advantages of this approach are significant: installation and setup will generally be much smoother and you’re far less likely to run into dependency issues and conflicts. But it also at least appears to mean that you get less access to the vital organs that power your software.</p>
<p>So, then, where does everything snappy happen? Take a look through your host file system for yourself: you’ll probably find more snap directories than you can shake a stick at (should you be so inclined). Here are the directories the snap install process probably created:</p>
<p>/snap/<br>/var/snap/<br>/var/lib/snapd/<br>/home/username/snap/</p>
<p>That many? What for? Let’s go through those one at a time. Feel free to poke around your own Linux machine to see all this for yourself.</p>
<p>The actual <em>.snap</em> files are kept in the <em>/var/lib/snapd/snaps/</em> directory. When running, those files will be mounted within the root directory <em>/snap/</em>. Looking over there — in the /snap/core/ subdirectory — you’ll see what looks like a regular Linux file system. It’s actually the virtual file system that’s being used by active snaps.</p>
<pre><code>ls /snap/core/current
bin   dev  home  lib64  meta  opt   root  sbin  srv  tmp  <span class="hljs-keyword">var</span>
boot  etc  lib   media  mnt   proc  run   snap  sys  usr  writable
</code></pre><p>And here’s a subdirectory containing (read-only) configuration files used by the Nextcloud snap. That’ll only be there, of course, if you’ve installed Nextcloud (<em>snap install nextcloud</em>).</p>
<pre><code>ls /snap/nextcloud/current/conf/
httpd.conf  mime.types  ssl.conf
</code></pre><p>Ok. Now what about <em>/var/snap/</em>? Very much like traditional inhabitants of <em>/var/</em>, the files within <em>/var/snap/</em> contain various forms of user data and log files — the kind of data that’s generated and consumed by applications during operations. This example shows directories for data used by some desktop-related snaps, including the AWS CLI and the Slack team communication tool. (OK, technically speaking, the AWS CLI isn’t a desktop tool.)</p>
<pre><code>ls /<span class="hljs-keyword">var</span>/snap
aws-cli  core18           gnome-system-monitor  gnome-calculator
brave    gnome<span class="hljs-number">-3</span><span class="hljs-number">-26</span><span class="hljs-number">-1604</span>  gnome-characters      gtk-common-themes
core     gnome<span class="hljs-number">-3</span><span class="hljs-number">-28</span><span class="hljs-number">-1804</span>  gnome-logs            slack
</code></pre><p>Dive deep into the subdirectories within _/var/snap/_on your machine and see what you can discover.</p>
<p>That leaves just the <em>~/snap</em> directory that exists in a user’s home directory on at least some Linux file systems. It’ll contain directories using some of the names you’ll see in /var/snap. What’s going on in there?</p>
<pre><code>ls ~/snap
aws-cli  brave  gnome-calculator  slack
</code></pre><p>As far as I can tell, these directories are meant to store versioned data related to settings used by your user account.</p>
<h2 id="heading-snap-administration-tools">Snap administration tools</h2>
<p>So far I’ve shown you how to find various classes of data kept in configuration files (within <em>/var/snap/</em>), virtual file systems (<em>/snap/</em>), and collections of user settings (<em>~/snap</em>). I also showed you where <em>not</em> to look — <em>/var/lib/snapd/</em> — which is where the .snap files themselves live; nothing to see here, move along now.</p>
<p>Now what about actual administration? This is a bit more complicated. Some snaps — like Nextcloud — expose a fully-featured admin interface. I talk about that in <a target="_blank" href="https://www.freecodecamp.org/news/snapd-nextcloud/">my Administrating Nextcloud as a Snap article</a>. But it seems that the simplicity of snaps sometimes means that there just isn’t much hands-on configuration that’s possible.</p>
<p>However, that’s not always the case. But first, you’ll need to know about <em>snap services</em>. Some more complex applications require multi-layer software stacks. Nextcloud, for instance, creates and manages its own versions of Apache, MySQL, PHP, and Redis. Each one of those “layers” is, in snap terms, called a service.</p>
<p>If any snaps installed on your machine have their own services, you’ll be able to list them along with their status using this snapd command:</p>
<pre><code>snap services
Service                    Startup  Current   Notes
nextcloud.apache           enabled  active    -
nextcloud.mdns-publisher   enabled  active    -
nextcloud.mysql            enabled  active    -
nextcloud.nextcloud-cron   enabled  active    -
nextcloud.nextcloud-fixer  enabled  inactive  -
nextcloud.php-fpm          enabled  active    -
nextcloud.redis-server     enabled  active    -
nextcloud.renew-certs      enabled  active    -
</code></pre><p>You can also control the run and startup status of a service. This example will stop Nextcloud’s Apache service and ensure that it doesn’t launch when the system reboots (although, just remember that this will disable Nextcloud — you probably don’t want to do that):</p>
<pre><code>snap stop --disable nextcloud.apache
</code></pre><p>You can also use systemctl to manage snap service processes:</p>
<pre><code>systemctl status snap.nextcloud.apache
</code></pre><p>If your snap includes at least one service, you can view its logs using snapd:</p>
<pre><code>snap logs nextcloud
</code></pre><p>You can also specify a particular service:</p>
<pre><code>snap logs nextcloud.mysql
</code></pre><p>For some snaps (like Nextcloud), snapd makes useful configurations available from the command line. You can display available settings using <em>snap get</em>:</p>
<pre><code>snap get nextcloud
Key        Value
mode       production
nextcloud  {...}
php        {...}
ports      {...}
private    {...}
</code></pre><p>Drop down a level by adding the name of a specific setting. This example shows us that Nextcloud is currently listening on only ports 80 (HTTP) and 443 (HTTPS).</p>
<pre><code>snap get nextcloud ports
Key          Value
ports.http   <span class="hljs-number">80</span>
ports.https  <span class="hljs-number">443</span>
</code></pre><p>You could change a setting using the <em>set</em> command. This one would tell Nextcloud to listen on port 8080 for insecure HTTP requests instead of 80.</p>
<pre><code>snap set nextcloud ports.http=<span class="hljs-number">8080</span>
</code></pre><p>Snapd also offers some system-wide configuration settings that are <a target="_blank" href="https://docs.snapcraft.io/system-options/87">described here</a>, documentation of <a target="_blank" href="https://docs.snapcraft.io/environment-variables/7983">environment variables is maintained here</a>, and information on <a target="_blank" href="https://docs.snapcraft.io/keeping-snaps-up-to-date/7022">keeping your snaps updated can be found here</a>.</p>
<p>All that’ll get you started when things need fixing. So get to it.</p>
<p><em>Looking for more? You might enjoy my</em> <a target="_blank" href="https://bootstrap-it.com/"><em>books and Pluralsight courses</em></a> <em>on Linux, AWS, and Docker-related topics.</em></p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
