spacemeshos / smcli

Spacemesh command-line tool
https://spacemesh.io/
MIT License
8 stars 9 forks source link

glibc issue/Debian support #57

Open lrettig opened 10 months ago

lrettig commented 10 months ago

Reported by community in v1.0.7:

./smcli: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.32' not found (required by ./smcli)

uname -a:
Linux cs-8965316041-ephemeral-h1n4 5.15.107+ #1 SMP Thu Jun 15 09:51:46 UTC 2023 x86_64 GNU/Linux

cat /etc/os-release:
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian

Building from source caused dylib linking issues

lrettig commented 7 months ago

I'm getting this error on a vanilla Debian instance that I just spun up:

lane@instance-1:~$ ./smcli -h
./smcli: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./smcli)
./smcli: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./smcli)
./smcli: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./smcli)
lane@instance-1:~$ ldd --version
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
ldd (Debian GLIBC 2.31-13+deb11u6) 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.
lane@instance-1:~$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
lane@instance-1:~$ uname -a
Linux instance-1 5.10.0-24-cloud-amd64 #1 SMP Debian 5.10.179-5 (2023-08-08) x86_64 GNU/Linux
lrettig commented 7 months ago

It looks like Debian 11 (bullseye) has an old version of glibc: https://packages.debian.org/source/bullseye/glibc Debian 12 (bookworm) has a more recent version: https://packages.debian.org/source/bookworm/glibc.

I was able to upgrade glibc in Debian 11 by making this change to /etc/apt/sources.list:

#deb https://deb.debian.org/debian bullseye main
deb https://deb.debian.org/debian bookworm main

And then running:

> sudo apt update
> sudo apt-get -t bookworm install libc6 libc6-dev libc6-dbg

See also https://www.cyberciti.biz/faq/update-upgrade-debian-11-to-debian-12-bookworm/

And voila, it's working:

lane@instance-1:~$ ldd --version
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
ldd (Debian GLIBC 2.36-9+deb12u1) 2.36
Copyright (C) 2022 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.
lane@instance-1:~$ ./smcli -h
smcli is your terminal's connection to the Spacemesh network.

This tool provides an ergonomic set of tools for managing a wallet.

Usage:
  smcli [command]

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  genesis     Genesis-related utilities
  help        Help about any command
  wallet      A brief description of your command

Flags:
      --config string   config file (default is $HOME/.smcli.yaml)
  -h, --help            help for smcli
  -t, --toggle          Help message for toggle

Use "smcli [command] --help" for more information about a command.