我做了什么来修复它。

我做了什么来修复它。

今天,我几周以来第一次尝试使用 intellij-idea。它告诉我 snap 中有更新。还有一个编译错误(但这可能是也可能不是我的错误)。

我尝试过更新,但没有成功。以下是我尝试过的方法。

#↳ sudo snap refresh
All snaps up to date.

#↳ snap list
Name                     Version   Rev   Tracking  Publisher   Notes
core                               9993  latest    canonical✓  broken
core18                             1885  latest    canonical✓  broken
gtk-common-themes                  1506  latest    canonical✓  broken
intellij-idea-community  2020.2.3  257   latest    jetbrains✓  classic
kotlin                             53    latest    jetbrains✓  broken

#↳ snap list --all
Name                     Version   Rev   Tracking  Publisher   Notes
core                               9993  latest    canonical✓  broken
core                               9804  latest    canonical✓  disabled,broken
core18                             1885  latest    canonical✓  broken
gtk-common-themes                  1506  latest    canonical✓  broken
intellij-idea-community            249   latest    jetbrains✓  disabled,broken
intellij-idea-community            252   latest    jetbrains✓  disabled,broken
intellij-idea-community  2020.2.3  257   latest    jetbrains✓  classic
kotlin                             50    latest    jetbrains✓  disabled,broken
kotlin                             53    latest    jetbrains✓  broken

如您所见,Snap 告诉 Be 它已损坏。什么坏了?它是否更新了损坏的代码?当 intellij-idea 告诉 Be 有更新时,它为什么不更新?

答案1

我做了什么来修复它。

我仍然不知道出了什么问题snap,但这个解决方法对我有用。

删除所有包

for package_name in …
do
    sudo snap remove $package_name
done

重新安装软件包

for package_name in …
do
    sudo snap install $package_name
done

根据需要替换省略号。

答案2

有时 snap 无法挂载。systemctl --failed显示失败的 snap 包。需要通过 启动它们,然后systemctl start <...>通过 重新连接失败的 snap 包。/还要修复失败的 snap 包。重新安装肯定有效,但还有更简单的方法。snap disable <pkg>snap enable <pkg>snap revert <pkg>snap refresh <pkg>

这是修复该问题的脚本:

#!/bin/sh

set -x

alwaysfix=chromium
[ -z "$1" ] || alwaysfix="$1"

tofix="`snap list | awk '/broken/{print $1}'`"

for t in `COLUMNS=1000 systemctl --failed | awk '/snap.+mount/{print $1}'`; do
        systemctl start "$t"
done

for s in $tofix; do
        snap disable "$s"
        snap enable "$s"
done

for s in $alwaysfix; do
        snap disable "$s"
        snap enable "$s"
done

相关内容