73·包管理入门

snap 与 flatpak 通用包

snapflatpak

第 73 课:snap 与 flatpak 通用包

1. 学习目标

  • 理解:掌握 snap 和 flatpak 的基本概念,了解它们与传统包管理器(如 apt、yum)的区别。
  • 应用:学会使用命令行进行 snap 和 flatpak 包的安装、查询、删除和更新操作。
  • 比较:能够说出 snap 和 flatpak 的主要优缺点及适用场景。
  • 实践:能够独立安装一个跨发行版的图形应用程序(如 VLC、Spotify)。

2. 核心概念

想象一下,你买了一个新家电,却发现它需要一根特定的插头,与你家里的插座不匹配。这可能会让你很烦恼。在 Linux 世界里,传统的软件包(如 .deb.rpm)就像这种“特定插头”,它们严格依赖于特定的 Linux 发行版及其库版本。

snapflatpak 就是为了解决这个“插座兼容性”问题而诞生的通用包管理系统。它们是现代 Linux 桌面的两个主流选择。

  • Snap

    • 由谁开发:由 Canonical(Ubuntu 背后的公司)主导。
    • 如何工作:一个 snap 包包含了应用本身以及它运行所需的所有依赖库(就像把整个家电和它的适配器都打包在一个盒子里)。它运行在一个受限的“沙盒”环境中,这增强了安全性,但也稍微增加了启动时间和占用空间。
    • 中央仓库:软件主要来自 Snap Store(snapcraft.io)。
  • Flatpak

    • 由谁开发:一个由 Red Hat(Fedora 背后的公司)等公司和社区共同推动的开源项目。
    • 如何工作:理念类似,也是自包含的包和沙盒。它的设计与 GNOME 桌面环境集成得特别好。
    • 中央仓库:软件主要来自 Flathub (flathub.org)。

简单比喻

  • 传统包 (apt/yum):像现场用原材料和家具装修房子,轻巧但与房子结构绑定。
  • Snap/Flatpak:像把一间完整的预制模块化房间拖到你的房子里。它独立、完整,但可能占点地方。

3. 代码示例

以下是在 Ubuntu 和 Fedora 两个发行版上的通用操作示例。

3.1 使用 Snap

# 1. 确保系统已安装 snapd(Ubuntu 通常预装,其他发行版可能需要手动安装)
# sudo apt update && sudo apt install snapd  # 对于 Debian/Ubuntu
# sudo dnf install snapd                       # 对于 Fedora

# 2. 安装一个软件包(例如,经典的 VLC 播放器)
sudo snap install vlc

# 3. 列出所有已安装的 snap 包
snap list

# 4. 搜索一个软件包
snap find "blender"

# 5. 获取一个软件包的详细信息
snap info vlc

# 6. 更新所有 snap 包
sudo snap refresh

# 7. 卸载一个软件包
sudo snap remove vlc

3.2 使用 Flatpak

# 1. 确保系统已安装 flatpak(Fedora 通常预装,其他发行版可能需要手动安装)
# sudo apt install flatpak              # 对于 Debian/Ubuntu
# sudo dnf install flatpak              # 对于 Fedora(可能已安装)

# 2. 添加 Flathub 仓库(这是获取大多数 flatpak 应用的地方)
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

# 3. 安装一个软件包(例如,图像编辑器 GIMP)
flatpak install flathub org.gimp.GIMP

# 4. 列出所有已安装的 flatpak 包
flatpak list

# 5. 搜索一个软件包
flatpak search "spotify"

# 6. 运行一个 flatpak 应用(有时需要使用完整应用ID)
flatpak run org.gimp.GIMP

# 7. 更新所有 flatpak 包
flatpak update

# 8. 卸载一个软件包
flatpak uninstall org.gimp.GIMP

# 9. 删除无用的运行时(类似清理依赖缓存)
flatpak uninstall --unused

4. 实践练习

  1. 基础练习:在你的系统中,使用 snap 安装文本编辑器 notepadqq,然后使用命令行启动它,最后将其卸载。

    • 提示:sudo snap install notepadqq,运行:notepadqq,卸载:sudo snap remove notepadqq
  2. 进阶练习:使用 flatpak 安装音乐播放器 Spotify。安装完成后,尝试在应用程序菜单中找到它并打开。

    • 命令参考:flatpak install flathub com.spotify.Client
  3. 对比练习:分别使用 snap listflatpak list 查看你系统上已经安装了哪些 snap 和 flatpak 应用。思考一下,哪些应用你可能更倾向于用这种方式安装?

5. 常见错误

  1. 权限错误:忘记在 installremoverefresh 等命令前加 sudo(在大多数系统上需要 root 权限来管理系统软件)。
  2. 命令/应用名错误
    • Snap 应用名通常是简洁的单词(如 vlc),但有时可能不同。
    • Flatpak 应用 ID 是一长串域名格式(如 org.gimp.GIMP)。记不住时,用 search 命令查找。
  3. Flatpak 仓库未添加:直接使用 flatpak install 会失败,因为没有指定从哪里安装。务必先添加 Flathub 仓库。
  4. 磁盘空间不足:snap 和 flatpak 因为包含依赖,比传统包大很多。定期使用 flatpak uninstall --unused 或检查 /var/lib/snapd/snaps 目录进行清理。
  5. 沙盒限制导致的功能问题:某些应用(如需要深度访问系统文件的工具)在沙盒内可能无法正常工作。这是安全性的权衡。

6. 小结

  • snap 和 flatpak 是两大主流的通用 Linux 包格式,旨在解决软件跨发行版兼容性问题。
  • 核心思想是“自包含”:应用与其所有依赖库打包在一起,运行在沙盒中。
  • 优点:跨发行版通用、更新及时、隔离安全、易于在多个系统上部署。
  • 缺点:包体积较大、占用更多磁盘和内存、启动可能稍慢、沙盒可能带来限制。
  • 常用命令installlistremoveupdate/refreshsearch
  • 如何选择:如果你是 Ubuntu 用户,snap 集成更无缝;如果你是 Fedora/GNOME 用户,flatpak 体验更原生。对于很多流行桌面应用,两者在 Flathub 或 Snap Store 上都能找到。

练习编辑器

rust
Loading...

继续学习

完成本课后,建议继续学习下一课「源码编译安装软件」 以巩固所学知识。