我正在尝试使用 snapd 在 Fedora 37 上安装 flutter,但它不起作用。每当我尝试使用该命令时:
sudo snap install flutter --classic
我收到错误:
Classic confinement requires snaps under /snap or symlink from /snap to /var/lib/snapd/snap.
然后我运行命令:
sudo ln -s /var/lib/snapd/snap /snap
我收到错误:
Failed to create symbolic link "snap/snap": File exists.
如何修复此问题或找到在 Fedora 37 上使用 flutter 的其他方法?
[ninal@fedora ~]$ sudo ln -s /var/lib/snapd/snap /snap
ln: failed to create symbolic link '/snap/snap': File exists
[ninal@fedora ~]$ sudo snap install flutter --classic
error: cannot install "flutter": classic confinement requires snaps under /snap
or symlink from /snap to /var/lib/snapd/snap
[ninal@fedora ~]$
最佳答案
无论是否使用 Sudo,如果链接文件已存在,ln -s
总是会失败。为了覆盖,您可以使用 --force
选项覆盖现有链接文件。
但是,错误消息“snap/snap”:文件存在。
表示您已经有一个名为 /snap
的目录,其中有一个新的 snap
尝试创建符号链接(symbolic link)。
因此 ln
有两种不同的模式,最后一个参数是 的名称
- 链接文件或
- 要在其中创建链接文件的目录
$ cd /tmp
$ mkdir -p a/b/c
$ ln -s /tmp/a/b # First time, create "b" symlink in /tmp
$ ln -s /tmp/a/b # Second time, fails since symlink exists
ln: failed to create symbolic link './b': File exists
$ ln -sf /tmp/a/b # Succeds, overwrites existing symlink
$ mkdir c
$ ln -s /tmp/a/b/c c # First time, create "c" symlink inside /tmp/c directory
$ ln -s /tmp/a/b/c c # Second time, fails since symlink exists
ln: failed to create symbolic link 'c/c': File exists
$
对于您的特定场景,您需要删除现有的 /snap
目录以创建预期的符号链接(symbolic link)。
sudo mv /snap /snap.old
sudo ln -s /var/lib/snapd/snap /snap
关于linux - 适用于 Fedora 37 的 flutter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75396068/