第 73 课:snap 与 flatpak 通用包
1. 学习目标
- 理解:掌握 snap 和 flatpak 的基本概念,了解它们与传统包管理器(如 apt、yum)的区别。
- 应用:学会使用命令行进行 snap 和 flatpak 包的安装、查询、删除和更新操作。
- 比较:能够说出 snap 和 flatpak 的主要优缺点及适用场景。
- 实践:能够独立安装一个跨发行版的图形应用程序(如 VLC、Spotify)。
2. 核心概念
想象一下,你买了一个新家电,却发现它需要一根特定的插头,与你家里的插座不匹配。这可能会让你很烦恼。在 Linux 世界里,传统的软件包(如 .deb 或 .rpm)就像这种“特定插头”,它们严格依赖于特定的 Linux 发行版及其库版本。
snap 和 flatpak 就是为了解决这个“插座兼容性”问题而诞生的通用包管理系统。它们是现代 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. 实践练习
-
基础练习:在你的系统中,使用 snap 安装文本编辑器
notepadqq,然后使用命令行启动它,最后将其卸载。- 提示:
sudo snap install notepadqq,运行:notepadqq,卸载:sudo snap remove notepadqq
- 提示:
-
进阶练习:使用 flatpak 安装音乐播放器
Spotify。安装完成后,尝试在应用程序菜单中找到它并打开。- 命令参考:
flatpak install flathub com.spotify.Client
- 命令参考:
-
对比练习:分别使用
snap list和flatpak list查看你系统上已经安装了哪些 snap 和 flatpak 应用。思考一下,哪些应用你可能更倾向于用这种方式安装?
5. 常见错误
- 权限错误:忘记在
install、remove、refresh等命令前加sudo(在大多数系统上需要 root 权限来管理系统软件)。 - 命令/应用名错误:
- Snap 应用名通常是简洁的单词(如
vlc),但有时可能不同。 - Flatpak 应用 ID 是一长串域名格式(如
org.gimp.GIMP)。记不住时,用search命令查找。
- Snap 应用名通常是简洁的单词(如
- Flatpak 仓库未添加:直接使用
flatpak install会失败,因为没有指定从哪里安装。务必先添加 Flathub 仓库。 - 磁盘空间不足:snap 和 flatpak 因为包含依赖,比传统包大很多。定期使用
flatpak uninstall --unused或检查/var/lib/snapd/snaps目录进行清理。 - 沙盒限制导致的功能问题:某些应用(如需要深度访问系统文件的工具)在沙盒内可能无法正常工作。这是安全性的权衡。
6. 小结
- snap 和 flatpak 是两大主流的通用 Linux 包格式,旨在解决软件跨发行版兼容性问题。
- 核心思想是“自包含”:应用与其所有依赖库打包在一起,运行在沙盒中。
- 优点:跨发行版通用、更新及时、隔离安全、易于在多个系统上部署。
- 缺点:包体积较大、占用更多磁盘和内存、启动可能稍慢、沙盒可能带来限制。
- 常用命令:
install、list、remove、update/refresh、search。 - 如何选择:如果你是 Ubuntu 用户,snap 集成更无缝;如果你是 Fedora/GNOME 用户,flatpak 体验更原生。对于很多流行桌面应用,两者在 Flathub 或 Snap Store 上都能找到。
练习编辑器
rust
Loading...