<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>containers on Developer&#39;s blog</title>
    <link>/tags/containers/</link>
    <description>Recent content in containers on Developer&#39;s blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 12 Sep 2020 06:00:00 +0000</lastBuildDate><atom:link href="/tags/containers/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Ubuntu Snap: the Price of the Isolation</title>
      <link>/posts/ubuntu-snap-the-price-of-the-isolation/</link>
      <pubDate>Sat, 12 Sep 2020 06:00:00 +0000</pubDate>
      
      <guid>/posts/ubuntu-snap-the-price-of-the-isolation/</guid>
      <description>&lt;p&gt;The idea of the majority of Linux distributions is to compile Linux kernel, collect existing Open
Source and proprietary software, test and then patch it if required, add something own and pack the
results into the packages, so users can install and use these programs. Ubuntu packages grouped into
APT repositories. Users can manage packages with &lt;code&gt;apt&lt;/code&gt; command.&lt;/p&gt;
&lt;p&gt;Software developers usually do not write all the code required by their programs, but use different
libraries and frameworks (e.g. graphical applications can use GTK to draw widgets like button or
label). It allows developers to save some time and make fewer bugs. As a result the majority of
software nowadays has dependencies. Different programs can depend on the same library (most of the
GUI programs in Gnome depend on GTK) that is why there is no need to install the same library
several times. Each APT package defines a list of dependencies, so when the user executes a command
like &lt;code&gt;apt install gnome-calculator&lt;/code&gt; package manager install not only &lt;code&gt;gnome-calculator&lt;/code&gt; itself but
also its dependencies like &lt;code&gt;libgtksourceview-4-0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Such an approach allows users to save disk space and reduce security risks: if there is some problem
in the common library it&amp;rsquo;s enough to update it once and all dependent programs will use the new
version. Unfortunately, such an approach is not a silver bullet and has some downsides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Suppose two programs depend on different versions of the same library. It this case there will be
a conflict during dependencies resolution that is why &lt;code&gt;apt&lt;/code&gt; command will fail and the user can&amp;rsquo;t
install both programs at the same time.&lt;/li&gt;
&lt;li&gt;Providers of third-party software like Viber or Skype have to make different packages of the same
product for different Ubuntu distributions, e.g. 18.04 and 20.04 have different versions of system
libraries that, so it&amp;rsquo;s required to build and maintain two different packages for one program.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apt&lt;/code&gt; installs each program globally so it will be a conflict when two packages try to create a
file with the same name.&lt;/li&gt;
&lt;li&gt;Traditional programs can access all user files and resources that is why it&amp;rsquo;s difficult to control
such software. In case of a security vulnerability in one program all user&amp;rsquo;s files are in danger.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Several years ago Ubuntu introduced &lt;a href=&#34;https://snapcraft.io/&#34;&gt;Snap&lt;/a&gt; - a package manager with an
alternative approach, designed to solve &lt;code&gt;apt&lt;/code&gt; problems.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
