备忘录

关于snap包管理工具

最近将自己的CentOS7的一个docker机器换成Ubuntu Server20.04系统。

系统安装时,没有出现任何问题,甚至是我的RAID盘都无配置的自动识别了;但是在使用snap安装Docker的时候出现了问题。出现两个主要问题:1)因为系统盘很小,我将docker的data-root配置改到其他位置,各种不行。2)使用docker-compose启动旧环境时,提示“权限”问题,发现其只能执行“$HOME”下的。
经过各种尝试,非常耗时的网上搜索,结论都是要求重新使用apt安装docker。经过处理后,的确如此,使用snap安装docker就是在浪费生命。

在这种情况下,研究了一下snapcraft。这个东西,充其量就是Ubuntu厂家(Canonical Ltd.)的一个“应用商店”而已。其实现场景非常的简单和古老:实现windows、macosx那样的“低依赖”(系统库还是需要依赖的)应用安装。

理解snapcraft,必须要了解传统Linux的应用安装方式:通过yum、apt等系统默认的包管理,将应用安装到/user之下;所有应用基本都安装在“一个目录”(先这样简单理解)。这种安装方式带来一个非常“恶心”的副作用:“一个应用”的版本居然依赖于“其他应用”,造成更新一个应用版本的时候,会连带更新其他应用的版本,比如我更新一个vim的版本(2M),居然也连带的将ruby既其他(200M)的版本也更新了。
相对的Windows和MacOS,“一个应用”会独立的安装在“自己的独立目录下”,如果应用需要依赖”其他应用”,那么就会将这个“其他应用”作为”当前应用”的一部分而一起发布。从用户的角度,只看到了唯一的“当前应用”。snapcraft就是给Linux提供的这种应用安装方式。