Snap 可以从一个安装转移到另一个安装吗?

Snap 可以从一个安装转移到另一个安装吗?

当您在 Linux 系统上安装软件包时,它会在系统上创建和修改一组文件。通常,不可能将所有这些文件从一个系统移动到另一个系统并最终得到一个正常运行的程序。这有几个原因,但一个主要原因是程序所依赖的系统库在两个版本的 Ubuntu 之间会有所不同。

由于 Snap 的依赖关系比以 Apt 包形式安装的程序更独立,我很好奇在升级时将 Snap 从一个版本的 Ubuntu 移到另一个版本并使其在新系统上仍然能正常工作会遇到哪些障碍。即使不可能,弄清楚为什么不可能应该和弄清楚如何做到这一点一样有教育意义。

作为练习,我尝试将 Snap 从一个安装(Ubuntu 20.04)移动到另一个安装(Ubuntu 22.04)。我用来实验的 Snap 是 Authy,它最初是snap install authy在 20.04 系统上以正常方式安装的。到目前为止,我已将以下文件和文件夹从 20.04 移动到 22.04 系统:

  • ~/snap/authy/
  • /snap/authy/
  • /snap/bin/authy
  • /var/snap/authy/

以及/var/lib/snapd/名称中含有“authy”的所有内容:

  • /var/lib/snapd/snaps/authy_12.snap
  • /var/lib/snapd/snaps/authy_11.snap
  • /var/lib/snapd/inhibit/authy.lock
  • /var/lib/snapd/sequence/authy.json
  • /var/lib/snapd/seccomp/bpf/snap.authy.authy.src
  • /var/lib/snapd/seccomp/bpf/snap.authy.authy.bin
  • /var/lib/snapd/cookie/snap.authy
  • /var/lib/snapd/mount/snap.authy.user-fstab
  • /var/lib/snapd/mount/snap.authy.fstab
  • /var/lib/snapd/apparmor/profiles/snap-update-ns.authy
  • /var/lib/snapd/apparmor/profiles/snap.authy.authy
  • /var/lib/snapd/desktop/applications/authy_authy.desktop

当我移动时~/snap/authy/,我还将 20.04 用户名的所有可 grepp 用法更改为 22.04 用户名。我移动的其他任何文件均不包含对系统用户名的引用。

正如您所料,移动authy_authy.desktop文件会导致 Authy 程序出现在系统菜单中。与此启动器关联的可执行命令是

env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/authy_authy.desktop /snap/bin/authy %U

从系统菜单中选择该程序不会执行任何操作。从命令行尝试该程序(删除%U因为它不起作用并且不需要)会产生一个 snap 命令的样板列表:

$ env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/authy_authy.desktop /snap/bin/authy
The snap command lets you install, configure, refresh and remove snaps.
Snaps are packages that work across many different Linux distributions,
enabling secure delivery and operation of the latest apps and utilities.

Usage: snap <command> [<options>...]

Commonly used commands can be classified as follows:

         Basics: find, info, install, remove, list
        ...more: refresh, revert, switch, disable, enable, create-cohort
        History: changes, tasks, abort, watch
        Daemons: services, start, stop, restart, logs
    Permissions: connections, interface, connect, disconnect
  Configuration: get, set, unset, wait
    App Aliases: alias, aliases, unalias, prefer
        Account: login, logout, whoami
      Snapshots: saved, save, check-snapshot, restore, forget
         Device: model, reboot, recovery
      ... Other: warnings, okay, known, ack, version
    Development: download, pack, run, try

For more information about a command, run 'snap help <command>'.
For a short summary of all commands, run 'snap help --all'.

因此没有错误消息,但也没有正常运行的 Authy 程序。

这就是我能找到的所有与 Authy-Snap 相关的文件。我发帖是为了问

  1. 我是否遗漏了什么而也应该尝试移动?
  2. 有没有一个具体的解释可以说明为什么这样的事情永远不会奏效?

提前致谢。

更新

一条评论提到了systemd单元文件,这是我之前没有考虑到的。我找到了这些 Authy 单元文件:

/etc/systemd/system/snap-authy-11.mount
/etc/systemd/system/snap-authy-12.mount

以及相应启用的符号链接

/etc/systemd/system/default.target.wants/
/etc/systemd/system/multi-user.target.wants/

我在系统之间复制了两个单元文件,启用了它们 ( $ sudo systemctl enable snap-authy-12.mount),然后重新加载systemd( $ sudo systemctl daemon-reload)。这并没有改变问题;我尝试打开 Authy 时仍然得到相同的样板 Snap 信息。

不管怎样,我放弃这个,专注于其他事情。如果您对这个问题感兴趣,欢迎大家发表更多想法,但前提是您必须明白,这是关于识别和移动文件集,而不是snap install在本地文件上运行。

相关内容