Updated from 29 to 31, suddenly neovim does not launch due to outdated libuv

After upgrading from Fedora 29 to 31, neovim (“nvim” command) errors out immediately with:

nvim: symbol lookup error: /usr/lib64/lua/5.1/luv.so: undefined symbol: uv_os_environ

It turns out this method doesn’t exist until libuv 1.31.0, and that my system’s is 1.30.1-1. However I’ve been unable to install a newer version, even after “dnf upgrade --refresh” and “dnf distro-sync”. Docs for the libuv package claims that Fedora 31 (stable?) is at 1.34.1-1.fc31.

dnf repolist

Results include Fedora 31 - x86_64, Fedora 31 - x86_64 - Updates, and Fedora Modular 31 - x86_64 - Updates, so what gives?

[derrick@yamakagashi roof_tagging]$ dnf --showduplicates list libuv
RPM Fusion for Fedora 31 - Nonfree - Updates 1.6 kB/s | 59 kB 00:36
RPM Fusion for Fedora 31 - Nonfree 128 kB/s | 241 kB 00:01
Visual Studio Code 1.0 MB/s | 2.7 MB 00:02
Yarn Repository 795 kB/s | 364 kB 00:00
Installed Packages
libuv.x86_64 1:1.30.1-1.module_f31+5445+bfe91f26 @fedora-modular
Available Packages
libuv.x86_64 1:1.30.1-1.module_f31+5445+bfe91f26 fedora-modular
libuv.x86_64 1:1.30.1-1.module_f31+5445+bfe91f26 updates-modular

It looks like dnf is only seeing this library in fedora-modular and updates-modular?

try:
sudo dnf clean metadata

Enable Fedora repository, your listing suggests that dnf is only using rpmfusion, visual-studio-code and yam repositories.

then try again:
sudo dnf --showduplicates list libuv

If you are still not picking the expected packages, confirm that you have the right repository configurations. You may want to enable the fedora updates and updates-tesing repositories.

Did your upgraded by recommended way?

It is short and containing interesting sections like “Clean-Up Old Symlinks”.

Hi @drrckln and welcome to the communty.

Maybe if the problem is only with the module. you can try reset it and reinstall from default stream

dnf [options] module reset <module-name>...
    Reset module state so it’s no longer enabled or disabled. Consequently, all installed profiles will be removed and only RPMs from the default stream will be available in the package set. 

So you could try:

  • Reset the module and reinstall the package libuv (checking that dnf is picking up the right version)

sudo dnf module reset libuv && sudo dnf reinstall libuv

  • Reset the module and reinstall the package neovim (checking that every dependence is installed from the default stream, if they are not maybe you wish reset other modules as also can be depending of the package too)

sudo dnf module reset libuv && sudo dnf reinstall neovim

Maybe it does the tryck.

Edit1: Maybe there is not any module libuv ( I did list all modules and there is not this one) so obviously my point is wrong. what should do that you need delete the old packages/libraries and reinstall them from default stream. But sure you did know it too.

Regards.

Hi all, thanks for your help. Haven’t been able to solve the issue yet.

Using @vits95’s link, I tried rebuilding the rpm database and importing the Fedora 31 GPG key. This did not help.

I found I had a nodesource repo for Fedora 28, so I disabled and deleted it, then installed/configured nodesource for Fedora 31. Still unable to update libuv.

I specifically enabled fedora, fedora-modular, updates, and updates-modular. “sudo dnf --showduplicates list libuv” returns the same results, with no packages from fedora or updates. The package version installed, 1:1.30.1-1.module_f31+5445+bfe91f26, contains “f31” in the name, though.

[derrick@yamakagashi yum.repos.d]$ sudo dnf --showduplicates list libuv
Copr repo for qgis owned by dani 410 kB/s | 247 kB 00:00
Copr repo for Signal-Desktop owned by luminoso 54 kB/s | 23 kB 00:00
Adobe Systems Incorporated 12 kB/s | 1.9 kB 00:00
Docker CE Stable - x86_64 12 kB/s | 6.6 kB 00:00
Fedora Modular 31 - x86_64 3.1 MB/s | 5.2 MB 00:01
Fedora Modular 31 - x86_64 - Updates 3.9 MB/s | 3.8 MB 00:00
Fedora 31 - x86_64 - Updates 5.6 MB/s | 18 MB 00:03
Fedora 31 - x86_64 7.3 MB/s | 71 MB 00:09
google-earth-pro 25 kB/s | 5.2 kB 00:00
Node.js Packages for Fedora Linux 31 - x86_64 205 kB/s | 156 kB 00:00
RPM Fusion for Fedora 31 - Free - Updates 196 kB/s | 308 kB 00:01
RPM Fusion for Fedora 31 - Free 419 kB/s | 663 kB 00:01
RPM Fusion for Fedora 31 - Nonfree - Updates 49 kB/s | 59 kB 00:01
RPM Fusion for Fedora 31 - Nonfree 162 kB/s | 241 kB 00:01
Visual Studio Code 1.9 MB/s | 2.7 MB 00:01
Yarn Repository 1.5 MB/s | 364 kB 00:00
Installed Packages
libuv.x86_64 1:1.30.1-1.module_f31+5445+bfe91f26 @fedora-modular
Available Packages
libuv.x86_64 1:1.30.1-1.module_f31+5445+bfe91f26 fedora-modular
libuv.x86_64 1:1.30.1-1.module_f31+5445+bfe91f26 updates-modular

try remove duplicates:

sudo dnf remove --duplicates

after remove the neovim package and reinstall it again.

sudo dnf remove neovim && sudo dnf clean all && sudo dnf install neovim

Check the output of terminal in every step.

1 Like

Ahhhh!!! What is this modular filtering? Btw, I disabled all repositories except for fedora and updates following this link.

[derrick@yamakagashi yum.repos.d]$ sudo dnf install python3-neovim
Fedora 31 - x86_64 - Updates 4.7 MB/s | 18 MB 00:03
Fedora 31 - x86_64 3.0 MB/s | 71 MB 00:23
Node.js Packages for Fedora Linux 31 - x86_64 200 kB/s | 156 kB 00:00
Error:
Problem: conflicting requests

  • package python3-neovim-0.4.0-1.fc31.noarch requires neovim, but none of the providers can be installed
  • package python3-neovim-0.3.2-3.fc31.noarch requires neovim, but none of the providers can be installed
  • package neovim-0.4.3-1.fc31.x86_64 requires libuv.so.1()(64bit), but none of the providers can be installed
  • package neovim-0.4.2-1.fc31.x86_64 requires libuv.so.1()(64bit), but none of the providers can be installed
  • package libuv-1:1.34.0-1.fc31.x86_64 is filtered out by modular filtering
  • package libuv-1:1.32.0-1.fc31.x86_64 is filtered out by modular filtering
    (try to add ‘–skip-broken’ to skip uninstallable packages)

I don’t would disable them, and there are 2 packages about neovim

neovim and python3-neovim (maybe this last has some dependence issue i don’t know) you would enable them and try run the commands above checking the output mainly of the first command to check that will go to delete.

I am not sure there was filtering for this, but I did manage to install this with the right libraries.

sudo dnf --setopt=fedora.module_hotfixes=true install python3-neovim

gave me libuv-1.32.0-1.fc31.x86_64, which is what’s in the Fedora 31 repo.

I have 1.34 in fedora 31 :wink:

[jorge@f31 ~]$ dnf info libuv
Senaste kontroll av utgång av metadata: för 0:03:04 sedan den tor 23 jan 2020 21:50:27.
Tillgängliga paket
Namn         : libuv
Epok         : 1
Version      : 1.34.0
Utgåva       : 1.fc31
Arkitektur   : i686
Storlek      : 153 k
Källa        : libuv-1.34.0-1.fc31.src.rpm
Förråd       : updates
Sammanf.     : Platform layer for node.js
URL          : http://libuv.org/
Licens       : MIT and BSD and ISC
Beskrivning  : libuv is a new platform layer for Node. Its purpose is to
             : abstract IOCP on Windows and libev on Unix systems. We intend to
             : eventually contain all platform differences in this library.

Namn         : libuv
Epok         : 1
Version      : 1.34.0
Utgåva       : 1.fc31
Arkitektur   : x86_64
Storlek      : 145 k
Källa        : libuv-1.34.0-1.fc31.src.rpm
Förråd       : updates
Sammanf.     : Platform layer for node.js
URL          : http://libuv.org/
Licens       : MIT and BSD and ISC
Beskrivning  : libuv is a new platform layer for Node. Its purpose is to
             : abstract IOCP on Windows and libev on Unix systems. We intend to
             : eventually contain all platform differences in this library.
1 Like

The “sudo dnf remove --duplicates” command did not find any duplicate packages.

1 Like

Maybe this command deleted them :wink: in anyway you have this working that is the important thing at all but i hope you have not problem try enable modular repos again and run a update to see if they are some change and all stay stable :smiley:

Ah no, I had tried it before executing the quoted command. I re-enabled updates-modular and fedora-modular just now, and now “sudo dnf --showduplicates list libuv” only shows the old 1.30 package. Maybe my modular repos are misconfigured.

run now this command to see if it does delete that package

Did so.

Error: No duplicated packages found for removal.

I’m very confused, because I followed the links in the repo files, and fedora-modular contains 1.32, and updates-modular contains 1.34. So it must be some filtering? Not sure where that is applied.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.