为软呢帽37Flutter

kd3sttzy  于 2023-02-09  发布在  Flutter
关注(0)|答案(1)|浏览(119)

我尝试用snapd在Fedora 37上安装flutter,但它不工作。每当我尝试使用以下命令时:

sudo snap install flutter --classic

我得到错误:
传统限制要求快照位于/snap下,或使用从/snap到/var/lib/snapd/snap的符号链接。
然后运行命令:

sudo ln -s /var/lib/snapd/snap /snap

我得到错误:
无法创建符号链接"快照/快照":文件存在。
我该如何解决这个问题,或者找到其他方法在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 ~]$
n3ipq98p

n3ipq98p1#

不管是否使用Sudo,如果链接文件已经存在,ln -s总是会失败。为了覆盖,可以使用--force选项覆盖现有的链接文件。
但是,错误消息"snap/snap": File exists.表明您已经有一个名为/snap的目录,试图在其中创建新的snap符号链接。
所以ln有两种不同的模式,要么最后一个参数是
1.链接文件或
1.要创建链接文件的目录

$ 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目录以创建预期的符号链接。

sudo mv /snap /snap.old
sudo ln -s /var/lib/snapd/snap /snap

相关问题