当前位置: 首页> 文旅> 酒店 > snap 技术包安装、卸载、执行过程原理浅析

snap 技术包安装、卸载、执行过程原理浅析

时间:2025/7/9 11:19:41来源:https://blog.csdn.net/Longyu_wlz/article/details/141724039 浏览次数:0次

snap 是什么?

Snap 是一种软件打包和分发格式,用于在不同的 Linux 操作系统上安装和运行应用程序。
它不仅包括应用程序本身,还包括其依赖项和运行环境,因此可以保证在任何支持 Snap 的 Linux 系统中都能够以相同的方式运行。
Snap 还具有自动更新功能,使得应用程序可以快速而轻松地得到最新版本的更新。

包安装过程

  1. 从 snap-store 查找、下载包并校验签名
  2. 调用 unsquashfs 解压包到临时目录
  3. 生成包自动挂载的 systemd 服务并启动
  4. 调用 snap-seccomp 编译系统调用过滤规则为二进制文件
  5. 调用 apparmor_parser 配置 apparmor 规则
  6. 其它配置操作

snap 包挂载服务示例:

[Unit]
Description=Mount unit for hello-world, revision 29
After=snapd.mounts-pre.target
Before=snapd.mounts.target
Before=local-fs.target
[Mount]
What=/var/lib/snapd/snaps/hello-world_29.snap
Where=/snap/hello-world/29
Type=squashfs
Options=nodev, ro,x-gdu.hide,x-gvfs-hide
LazyUnmount=yes
[Install]
WantedBy=snapd.mounts.target WantedBy=multi-user.target

包卸载的过程

  1. 备份压缩数据文件
  2. 调用 /snap/snapd/19993/usr/lib/snapd/snap-discard-ns 退出命名空间
    2.1 进入到 /run/snapd/ns 目录,找到目标包的 .mnt 文件
    2.2 umount xxx.mnt 然后删除此文件及其它关联文件
  3. 卸载挂载点
  4. 禁用挂载服务,移除相关内容

snap 二进制程序执行的过程

  1. 将可执行程序名做为参数,使用 snap 命令执行
  2. 在 /tmp 下生成一 snap.rootfs_XXX 目录使用 core 基础组件目录与部分宿主机目录挂载新的根文件系统后执行 privt_root 切根
  3. 调用 snap-confine 命令执行目标命令配置运行模式
  4. 调用 snap-update-ns 更新命名空间
  5. 设置 seccomp filter 规则
  6. snap-exec 命令执行目标命令
关键字:snap 技术包安装、卸载、执行过程原理浅析

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: