我正在使用通过 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 的自动更新目前对我来说不可行(至少目前不可行)。