socketry/nio4r

version `GLIBC_2.28' not found

Closed this issue · 7 comments

Trying to run a rack app using Puma server which depends on nio4r. However, I encounter a load error
version GLIBC_2.28' not found (required by /home/pi/.gem/gems/nio4r-2.5.8/lib/nio4r_ext.so)`

My OS is as follows;

cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

Below are the GLIBC versions that i have installed;

ldd --version
ldd (Debian GLIBC 2.31-13+rpt2+rpi1+deb11u2) 2.31
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
strings /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBC_2.4
GLIBC_2.29
GLIBC_2.6
GLIBC_2.18
GLIBC_2.16
GLIBC_2.17
GLIBCXX_DEBUG_MESSAGE_LENGTH

How do I install GLIBC_2.28, or tell nio4r to utilise the available i.e GLIBC_2.29?

I'm not sure why it's asking for an old version. Can you try recompiling the gem?

Could you give me direction as to how I recompile as you have suggested.
This is what I have tried;
Installed Gem Compiler from https://github.com/luislavena/gem-compiler
and then compiled to get the following:

Successfully built RubyGem
  Name: nio4r
  Version: 2.5.8
  File: nio4r-2.5.8-armv7l-linux-eabihf.gem

I tried to install local gem compiled using
gem install --local nio4r-2.5.8-armv7l-linux-eabihf.gem

and get the following error

ERROR:  Error installing nio4r-2.5.8-armv7l-linux-eabihf.gem:
	There are no versions of nio4r (= 2.5.8) compatible with your Ruby & RubyGems
	nio4r requires Ruby version ~> 2.7.0. The current ruby version is 2.7.0.dev.

Don't know how to get v2.7.0 instead of 2.7.0.dev
Install using Snap's latest/stable channel. The only other channel available is 2.6/stable which would not be ideal since nio4r wants 2.7.0

@arnoldtonderaimarunda When did you install Ruby? There might be a newer version available now, https://snapcraft.io/install/ruby/raspbian says "Last updated 31 December 2021" (but I don't know, I'm not Raspbian user)

Otherwise you could try to search or ask for help over at https://forums.raspberrypi.com/

@dentarg Reinstalled today, and still issue arises when I try to install compiled Nio4r gem. Look like all versions installed by Snap have 'dev' suffix. May have to try install using rbenv.

However, the core issue is the nio4r gem seems hardcoded to look for a specific GLIBC version, which happens to be old.

@arnoldtonderaimarunda there's nothing specific to glibc in nio4r.

This error relates to the version of glibc that nio4r is compiled against.

If you compile a new version, it should link against the current version of glibc. If the error persists, you may still have the old one installed.

OK understoond. Will focus on getting the required version of Ruby to be able to compile.
Thanks