Nina Lombard
Nina Lombard

Reputation: 31

Flutter for fedora 37

I'm trying to install flutter on Fedora 37 with snapd but it's not working. Whenever I try to use the command:

sudo snap install flutter --classic

I get the error:

Classic confinement requires snaps under /snap or symlink from /snap to /var/lib/snapd/snap.

Then I run the command:

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

I get the error:

Failed to create symbolic link "snap/snap": File exists.

How do I fix this or find another way to use flutter on Fedora 37?

[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 ~]$ 

Upvotes: 3

Views: 1229

Answers (1)

hlovdal
hlovdal

Reputation: 28198

Sudo or not, ln -s will always fail if the link file already exists. In order to overwrite there is a --force option you can use overwrite an existing link file.

However, the error message "snap/snap": File exists. indicates that you already have a directory named /snap in which a new snap symlink is attempted to be created.

So ln behaves in two different modes, either the last argument is the name of

  1. the link file or
  2. a directory where the link file is to be created within
$ 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
$

For your particular scenario you need to get rid of the existing /snap directory to create the expected symlink.

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

Upvotes: 4

Related Questions