<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Flatpak on KnightLi的博客</title>
        <link>https://www.knightli.com/tags/flatpak/</link>
        <description>Recent content in Flatpak on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sat, 02 May 2026 11:18:10 +0800</lastBuildDate><atom:link href="https://www.knightli.com/tags/flatpak/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Snap、Flatpak 和 apt 到底有什么区别</title>
        <link>https://www.knightli.com/2026/05/02/snap-flatpak-apt-differences/</link>
        <pubDate>Sat, 02 May 2026 11:18:10 +0800</pubDate>
        
        <guid>https://www.knightli.com/2026/05/02/snap-flatpak-apt-differences/</guid>
        <description>&lt;p&gt;在 Ubuntu 上装软件时，经常会遇到三个名字：&lt;code&gt;apt&lt;/code&gt;、Snap 和 Flatpak。它们都能安装应用，但解决的问题不一样。&lt;/p&gt;
&lt;p&gt;简单说：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;工具&lt;/th&gt;
          &lt;th&gt;主要定位&lt;/th&gt;
          &lt;th&gt;更适合&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;apt&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Ubuntu/Debian 的传统包管理器&lt;/td&gt;
          &lt;td&gt;系统组件、命令行工具、发行版维护的软件&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Snap&lt;/td&gt;
          &lt;td&gt;Canonical 推动的应用打包格式&lt;/td&gt;
          &lt;td&gt;Ubuntu 桌面应用、服务端工具、自动更新软件&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Flatpak&lt;/td&gt;
          &lt;td&gt;面向桌面应用的跨发行版格式&lt;/td&gt;
          &lt;td&gt;图形软件、沙盒化应用、Flathub 生态&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;apt系统的一部分&#34;&gt;apt：系统的一部分
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;apt&lt;/code&gt; 是 Debian/Ubuntu 系的传统包管理器。它从发行版软件源安装 &lt;code&gt;.deb&lt;/code&gt; 包，并由发行版维护依赖关系。&lt;/p&gt;
&lt;p&gt;安装方式通常是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install firefox
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;apt&lt;/code&gt; 的特点是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;和系统集成最深。&lt;/li&gt;
&lt;li&gt;依赖由发行版统一管理。&lt;/li&gt;
&lt;li&gt;软件版本通常跟随发行版节奏。&lt;/li&gt;
&lt;li&gt;适合系统库、驱动、命令行工具和服务器组件。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;它的缺点也明显：软件版本可能偏旧。因为发行版更重视稳定性，不会总是第一时间提供上游最新版。&lt;/p&gt;
&lt;h2 id=&#34;snap把应用和依赖打进一个包&#34;&gt;Snap：把应用和依赖打进一个包
&lt;/h2&gt;&lt;p&gt;Snap 是 Canonical 推动的打包格式。它把应用和大量运行依赖一起打包，减少对系统库版本的依赖。&lt;/p&gt;
&lt;p&gt;安装方式类似：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo snap install firefox
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Snap 的优势是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;同一个包更容易跨 Ubuntu 版本运行。&lt;/li&gt;
&lt;li&gt;应用更新可以独立于系统更新。&lt;/li&gt;
&lt;li&gt;默认有一定隔离和权限控制。&lt;/li&gt;
&lt;li&gt;适合需要快速更新的桌面应用和部分服务端工具。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;它的常见槽点是启动慢、占用空间更大、主题集成不够自然，以及更新节奏不如 &lt;code&gt;apt&lt;/code&gt; 那样完全由用户控制。&lt;/p&gt;
&lt;h2 id=&#34;flatpak更偏桌面应用&#34;&gt;Flatpak：更偏桌面应用
&lt;/h2&gt;&lt;p&gt;Flatpak 也是跨发行版应用打包方案，但它更偏向 Linux 桌面应用生态。很多 Flatpak 应用来自 Flathub。&lt;/p&gt;
&lt;p&gt;常见安装方式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;flatpak install flathub org.mozilla.firefox
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Flatpak 的特点是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;跨发行版能力强。&lt;/li&gt;
&lt;li&gt;更关注桌面应用分发。&lt;/li&gt;
&lt;li&gt;使用 runtime 共享基础依赖。&lt;/li&gt;
&lt;li&gt;沙盒和权限模型更清晰。&lt;/li&gt;
&lt;li&gt;Flathub 上的软件选择很多。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Flatpak 也会占用额外空间，第一次安装 runtime 时尤其明显。但多个应用共享 runtime 后，空间浪费会少一些。&lt;/p&gt;
&lt;h2 id=&#34;最大区别依赖怎么处理&#34;&gt;最大区别：依赖怎么处理
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;apt&lt;/code&gt; 更像“系统拼装”。应用依赖系统里的库，多个软件共享同一套依赖。&lt;/p&gt;
&lt;p&gt;Snap 和 Flatpak 更像“应用自带运行环境”。应用带着自己需要的一部分依赖走，减少系统版本差异带来的问题。&lt;/p&gt;
&lt;p&gt;这带来一个取舍：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方式&lt;/th&gt;
          &lt;th&gt;优点&lt;/th&gt;
          &lt;th&gt;缺点&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;apt&lt;/code&gt; 共享系统依赖&lt;/td&gt;
          &lt;td&gt;省空间、集成好、维护统一&lt;/td&gt;
          &lt;td&gt;版本受发行版限制&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Snap/Flatpak 自带运行环境&lt;/td&gt;
          &lt;td&gt;跨版本、跨发行版、更容易更新&lt;/td&gt;
          &lt;td&gt;包更大、可能启动慢、集成感较弱&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;隔离和权限&#34;&gt;隔离和权限
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;apt&lt;/code&gt; 安装的软件通常直接运行在系统环境里。它们和系统集成自然，但隔离较少。&lt;/p&gt;
&lt;p&gt;Snap 和 Flatpak 都有沙盒思路：应用默认不能随便访问所有系统资源，需要通过权限接口访问文件、摄像头、网络、桌面通知等。&lt;/p&gt;
&lt;p&gt;这不等于它们绝对安全，但至少提供了更明确的权限边界。对来源复杂的桌面应用来说，这很有意义。&lt;/p&gt;
&lt;h2 id=&#34;更新方式不同&#34;&gt;更新方式不同
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;apt&lt;/code&gt; 通常跟随系统更新：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Snap 会自动更新，这是它方便也容易引起争议的地方。用户不用管版本，但也少了一些控制感。&lt;/p&gt;
&lt;p&gt;Flatpak 可以手动更新：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;flatpak update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;所以如果你很在意“什么时候更新”，&lt;code&gt;apt&lt;/code&gt; 和 Flatpak 的控制感通常更强；如果你想让应用自动保持新版本，Snap 更省心。&lt;/p&gt;
&lt;h2 id=&#34;该用哪个&#34;&gt;该用哪个
&lt;/h2&gt;&lt;p&gt;可以按场景选：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;系统工具、驱动、服务端组件：优先 &lt;code&gt;apt&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Ubuntu 默认推荐的桌面应用：可以用 Snap。&lt;/li&gt;
&lt;li&gt;想要较新的桌面软件，尤其是跨发行版应用：可以用 Flatpak。&lt;/li&gt;
&lt;li&gt;同一个软件三种方式都有：优先看稳定性、启动速度、主题集成和更新需求。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;一个保守的选择是：系统层用 &lt;code&gt;apt&lt;/code&gt;，桌面应用按需要在 Snap 和 Flatpak 之间选。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;apt&lt;/code&gt;、Snap、Flatpak 不是谁完全替代谁，而是分发模型不同。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt&lt;/code&gt; 更适合维护系统；Snap 更强调应用自带依赖和自动更新；Flatpak 更适合跨发行版桌面应用和沙盒化分发。&lt;/p&gt;
&lt;p&gt;如果只是日常使用，不必纠结“哪个最好”。系统软件用 &lt;code&gt;apt&lt;/code&gt;，桌面应用看发行版推荐和自己的体验，能稳定运行、更新可控、权限清楚，就是合适的选择。&lt;/p&gt;
&lt;p&gt;参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/Ubuntu/comments/9awvip/eli5_snap_and_flatpak_how_are_they_differ_from_apt/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.reddit.com/r/Ubuntu/comments/9awvip/eli5_snap_and_flatpak_how_are_they_differ_from_apt/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
