Snap 安装特定/旧版本

Snap 安装特定/旧版本

我正在使用通过 snap 安装的 VS code。最新版本有一个烦人的错误,我想恢复到以前的版本,但我看不到告诉 snap 安装特定版本的方法。我通过 snap info 看到的只是不同的频道,它们都转到最新版本。此外,在Snapcraft 网站我无法选择其他版本。

snap 文档中说我可以恢复,但这对我来说不起作用,因为没有安装以前的版本。

我可以从 VS Code 网站下载特定版本的 snap,2020 年 6 月(版本 1.47),但我个人更喜欢直接通过 snap 来处理这个问题。

似乎有些人遇到了同样的问题,但我没有找到可行的答案:

问题总结为:是否有可能恢复到旧的 snap 版本,如果可以,如何恢复?

答案1

例如,安装旧版本的blender:

sudo snap refresh blender --channel=2.92/stable

如何知道渠道价值是多少?

snap info blender

会得到如下结果:

snap info blender       
name:      blender
summary:   Blender is the free and open source 3D creation suite.

BLA BLA BLA BLA BLA

channels:
  latest/stable:     2.93.5  2021-10-06 (830) 205MB classic
  latest/candidate:  2.93.1  2021-06-23 (206) 205MB classic
  latest/beta:       2.93.0  2021-06-01 (161) 205MB classic
  latest/edge:       ↑                              
  2.93lts/stable:    2.93.5  2021-10-06 (830) 205MB classic
  2.93lts/candidate: 2.93.6  2021-10-25 (935) 205MB classic
  2.93lts/beta:      ↑                              
  2.93lts/edge:      ↑                              
  2.92/stable:       2.92.0  2021-02-25 (111) 196MB classic
  2.92/candidate:    2.92.0  2021-04-21 (134) 173MB classic
  2.92/beta:         2.92.0  2021-02-17  (95) 197MB classic
  2.92/edge:         ↑                              
  2.91/stable:       2.91.2  2021-01-20  (65) 193MB classic
[...]

下面是神奇的一行:

2.92/stable:       2.92.0  2021-02-25 (111) 196MB classic

答案2

您可以在 snap 中安装特定的旧版本,这不是问题。看看这个答案了解详细说明。

你真正的问题是 Visual Studio Code 的 snap repo 没有旧版本,只有一个最新版本:

snap info code

答案3

虽然其他答案是正确的,因为snap refresh您只能安装提供的特定版本snap info,但这并不是您真正想要的。

最新版本有一个烦人的错误,我想恢复到以前的版本

默认情况下,snap 会保留系统上缓存的每个软件包的两个先前版本。因此,解决将 snap 恢复code到先前工作版本的问题的方法非常简单:

snap revert code

您还可以列出 snap 包的所有本地可用修订版本,并选择要恢复到哪个版本,请参阅这个答案

答案4

虽然给出的回应是赫斯兰特通常是准确的,注意到该snap list命令只显示一个包的两个最新版本,值得强调的是,相当多的缓存快照实际上被保留了下来(正如他在链接的来源中指出的那样,米兰·博约维奇,尽管还没有得到足够的重视)。

$ snap list lxd --all
Name  Version      Rev    Tracking     Publisher   Notes
lxd   git-5a1faae  25306  latest/edge  canonical✓  held
lxd   git-752650e  25381  latest/edge  canonical✓  disabled,held

事实上,我的系统中有以下 .snaps:

$ sudo ls -lah  /var/lib/snapd/snaps/
total 8.5G
drwxr-xr-x  3 root    root    4.0K Aug 21 22:07 .
drwxr-xr-x 23 root    root    4.0K Aug 21 18:20 ..
-rw-------  1 root    root    165M May  3 01:15 lxd_24758.snap
-r--r--r--  1 1000000 1000000 170M Aug 21 22:05 lxd_24817.snap <- transferred from other machine (May 3)
-rw-------  1 root    root    174M Jun 16 20:10 lxd_24988.snap
-rw-------  1 root    root    174M Jun 17 02:50 lxd_24994.snap
-rw-------  1 root    root    174M Jun 17 15:45 lxd_24999.snap
-rw-------  1 root    root    174M Jun 19 14:21 lxd_25003.snap
-rw-------  2 root    root    174M Jun 20 02:30 lxd_25009.snap
-rw-------  2 root    root    174M Jun 21 01:15 lxd_25013.snap
-rw-------  2 root    root    174M Jun 21 22:10 lxd_25027.snap
-rw-------  2 root    root    174M Jun 22 07:55 lxd_25042.snap
-rw-------  2 root    root    174M Jun 22 15:16 lxd_25050.snap
-rw-------  2 root    root    174M Jun 22 21:51 lxd_25056.snap
-rw-------  2 root    root    174M Jun 23 03:36 lxd_25063.snap
-rw-------  2 root    root    174M Jun 26 19:55 lxd_25075.snap
-rw-------  2 root    root    174M Jun 28 00:50 lxd_25092.snap
-rw-------  2 root    root    174M Jun 29 04:25 lxd_25097.snap
-rw-------  1 root    root    174M Jul  6 23:11 lxd_25128.snap
-rw-------  1 root    root    176M Jul  7 04:01 lxd_25136.snap
-rw-------  1 root    root    176M Jul  7 11:45 lxd_25144.snap
-rw-------  1 root    root    176M Jul  7 12:41 lxd_25154.snap
-rw-------  2 root    root    176M Jul 11 07:00 lxd_25186.snap
-rw-------  2 root    root    176M Jul 11 13:21 lxd_25197.snap
-rw-------  2 root    root    176M Jul 12 00:45 lxd_25224.snap
-rw-------  2 root    root    176M Jul 12 09:51 lxd_25228.snap
-rw-------  2 root    root    176M Jul 13 07:45 lxd_25234.snap
-rw-------  2 root    root    176M Jul 13 16:11 lxd_25239.snap
-rw-------  2 root    root    176M Jul 14 09:10 lxd_25246.snap
-rw-------  2 root    root    176M Jul 15 18:35 lxd_25253.snap
-rw-------  2 root    root    176M Jul 17 14:45 lxd_25269.snap
-rw-------  2 root    root    176M Jul 18 16:00 lxd_25285.snap
-rw-------  2 root    root    176M Jul 19 10:20 lxd_25292.snap
-rw-------  1 root    root    176M Jul 20 05:30 lxd_25306.snap
-rw-------  1 root    root    176M Jul 20 15:30 lxd_25313.snap
-rw-------  1 root    root    176M Jul 21 07:30 lxd_25319.snap
-rw-------  1 root    root    176M Jul 24 07:01 lxd_25332.snap
-rw-------  1 root    root    176M Jul 26 00:00 lxd_25345.snap
-rw-------  1 root    root    176M Jul 26 14:05 lxd_25357.snap
-rw-------  2 root    root    176M Jul 27 09:10 lxd_25364.snap
-rw-------  2 root    root    176M Jul 27 20:30 lxd_25371.snap
-rw-------  2 root    root    176M Jul 29 10:05 lxd_25376.snap
-rw-------  2 root    root    176M Aug  3 20:10 lxd_25381.snap
drwxr-xr-x  2 root    root    4.0K Apr 10  2020 partial

恢复过程非常简单,只需执行一个命令即可:

$ sudo snap install  /var/lib/snapd/snaps/lxd_24817.snap
lxd git-49b9c78 from Canonical✓ installed
$ snap list lxd --all
Name  Version      Rev    Tracking     Publisher   Notes
lxd   git-5a1faae  25306  latest/edge  canonical✓  disabled,held
lxd   git-49b9c78  24817  latest/edge  canonical✓  held

最后,我们可以停止自动更新特定快照发出命令:

 sudo snap refresh --hold lxd

PS 我搜索了此解决方案以恢复最近发布版本中“修复”的功能,并费了好大劲才找到以前的 snap 版本。讽刺的是,它就在那里,触手可及。但是,此 snap 的自动更新目前对我来说不可行(至少目前不可行)。

相关内容