Upgrading glibc on my own


(Skool182) #1

Hi all,

I’ve a strange question, but I prefer to post here before changing my distrib.
Is there any way to upgrade glibc on my system ?

Why ? Because I want to use a proprietary app that needs gllibc >= 2.27. It’s the linux client for https://shadow.tech (a french cloud gaming solution)

I tried to build glibc from arch repo. It takes time, and as you imagine, it doesnt work. I suppose that I need to rebuild all the packets that use glibc (a lot).

The only solution I see is to switch to Arch, but I love Chakra (I’m using it since 2013) and it’s why, if there is any option to keep Chakra running, I’m really interested !

(tom) #2

glibc is a backbone…these packags need to be rebuild, if installed:

tom@frija ~]$ LC_ALL=C pacman -Qi glibc
Name            : glibc
Version         : 2.26-3
Description     : GNU C Library
Architecture    : x86_64
URL             : http://www.gnu.org/software/libc
Licenses        : GPL  LGPL
Groups          : base
Provides        : None
Depends On      : linux-api-headers>=4.14  tzdata  filesystem
Optional Deps   : None
Required By     : a52dec  alsa-lib  attr  bash  bin86  binutils  bison
                  btrfs-progs  bzip2  c-ares  cdparanoia  chmlib  coreutils
                  cracklib  device-mapper  dhcpcd  diffutils  dmidecode
                  dosfstools  ed  expat  faac  faad2  fakeroot  ffmpeg  file
                  findutils  flex  fribidi  gawk  gcc-libs  gdbm
                  gen-init-cpio  giflib  grep  gsm  gzip  haveged  hdparm
                  hspell  hyphen  iasl  ijs  iproute2  iptables  iwd  jemalloc
                  json-c  kbd  keyutils  kmod  less  libao  libass  libasyncns
                  libatomic_ops  libbluray  libbsd  libcap  libcap-ng  libcddb
                  libdaemon  libdatrie  libdbus  libdmtx  libdvdcss
                  libdvdread  libepoxy  libevdev  libexif  libfdk-aac  libffi
                  libgpg-error  libice  libidn  libksba  liblqr  libmad
                  libmpeg2  libmythes  libnl  libogg  libomxil-bellagio
                  libpciaccess  libpipeline  libraw1394  libseccomp  libsodium
                  libsrtp  libsystemd  libtasn1  libtool  libunistring
                  libunwind  libusb  libutempter  libva  libva-intel-driver
                  libvisual  libvpx  libwbclient  libx264  libxau  libxdmcp
                  libxkbcommon  libxshmfence  lpsolve  lsof  lz4  lzo  m4
                  make  mcpp  mdadm  mkinitcpio-busybox  mlocate  mtdev
                  ncurses  net-tools  nspr  ocl-icd  openal  opencore-amr
                  openmp  opus  orc  p11-kit  pacman  pam  patch  pciutils
                  perl  pixman  pkg-config  popt  readline  rtmpdump  sbc
                  schedtool  sdl  sdl2  sed  shaderc  snappy  speexdsp  sudo
                  sysfsutils  talloc  tar  time  tslib  util-linux  vid.stab
                  vulkan-icd-loader  wayland  which  wireless_tools
                  xf86-input-keyboard  xf86-video-fbdev  xf86-video-vesa
                  xorg-sessreg  xvidcore  zip  zlib

(totte) #3

Consider using some sort of virtual environment to keep that software in and avoid messing with your system.

(Skool182) #4


The problem is that the shadow.tech app need to directly talk to hardware, for H264/H265 decoding (it also needs special hardware graphic card for that). It’s why nobody succeed to launch it on a virtual env.

(brli) #5

check the binary/library of that app with ldd and understand how deep it is to fool this app.

if it is just a linker problem, you could simply build and install glibc to custom prefix and apply LD trick to execute the binary.

btw, checked AUR? https://aur.archlinux.org/packages/shadow-beta/

(Skool182) #6


It’s the one I’m using. But this package only download the official deb file and install it properly on the system.

About ldd, I tried but there is a lot of links :

[skool:/opt/shadowbeta] $ ldd shadow-beta                        
linux-vdso.so.1 (0x00007ffe180ca000)
libnode.so => /opt/shadowbeta/./libnode.so (0x00007f8f6a7b0000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f8f6a592000)
libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0x00007f8f69f58000)
libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0x00007f8f69ca3000)
libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0x00007f8f69a96000)
libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x00007f8f69870000)
libcairo.so.2 => /usr/lib/libcairo.so.2 (0x00007f8f69541000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0x00007f8f69319000)
libgio-2.0.so.0 => /usr/lib/libgio-2.0.so.0 (0x00007f8f68f7e000)
libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x00007f8f68d31000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007f8f68ade000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00007f8f68899000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007f8f685d2000)
libdbus-1.so.3 => /usr/lib/libdbus-1.so.3 (0x00007f8f68381000)
libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0x00007f8f6817f000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f8f67f56000)
libXi.so.6 => /usr/lib/libXi.so.6 (0x00007f8f67d45000)
libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x00007f8f67b3a000)
libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0x00007f8f67938000)
libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x00007f8f6772d000)
libXcomposite.so.1 => /usr/lib/libXcomposite.so.1 (0x00007f8f6752a000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x00007f8f67318000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x00007f8f67112000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0x00007f8f66f07000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f8f66bc9000)
libXtst.so.6 => /usr/lib/libXtst.so.6 (0x00007f8f669c3000)
libXss.so.1 => /usr/lib/libXss.so.1 (0x00007f8f667c0000)
libgconf-2.so.4 => /usr/lib/libgconf-2.so.4 (0x00007f8f6658e000)
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x00007f8f6638a000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f8f6606a000)
libnss3.so => /usr/lib/libnss3.so (0x00007f8f65d40000)
libnssutil3.so => /usr/lib/libnssutil3.so (0x00007f8f65b10000)
libsmime3.so => /usr/lib/libsmime3.so (0x00007f8f658e9000)
libnspr4.so => /usr/lib/libnspr4.so (0x00007f8f656aa000)
libffmpeg.so => /opt/shadowbeta/./libffmpeg.so (0x00007f8f65222000)
libasound.so.2 => /usr/lib/libasound.so.2 (0x00007f8f64f42000)
libcups.so.2 => /usr/lib/libcups.so.2 (0x00007f8f64cb3000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007f8f64aab000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f8f648a7000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007f8f6467c000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f8f642ee000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f8f63fa3000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f8f63d8b000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f8f639d3000)
/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f8f6bb52000)
libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0x00007f8f637be000)
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x00007f8f635bb000)
libthai.so.0 => /usr/lib/libthai.so.0 (0x00007f8f633b1000)
libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x00007f8f631af000)
libharfbuzz.so.0 => /usr/lib/libharfbuzz.so.0 (0x00007f8f62f17000)
libpixman-1.so.0 => /usr/lib/libpixman-1.so.0 (0x00007f8f62c6c000)
libEGL.so.1 => /usr/lib/libEGL.so.1 (0x00007f8f62a58000)
libpng16.so.16 => /usr/lib/libpng16.so.16 (0x00007f8f62822000)
libxcb-shm.so.0 => /usr/lib/libxcb-shm.so.0 (0x00007f8f6261e000)
libxcb-render.so.0 => /usr/lib/libxcb-render.so.0 (0x00007f8f62410000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007f8f621f9000)
libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f8f61f6e000)
libmount.so.1 => /usr/lib/libmount.so.1 (0x00007f8f61d16000)
libresolv.so.2 => /usr/lib/libresolv.so.2 (0x00007f8f61aff000)
libffi.so.6 => /usr/lib/libffi.so.6 (0x00007f8f618f6000)
libbz2.so.1.0 => /usr/lib/libbz2.so.1.0 (0x00007f8f616e6000)
libsystemd.so.0 => /usr/lib/libsystemd.so.0 (0x00007f8f6145b000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f8f61257000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f8f61051000)
libdbus-glib-1.so.2 => /usr/lib/libdbus-glib-1.so.2 (0x00007f8f60e2a000)
libpcre.so.1 => /usr/lib/libpcre.so.1 (0x00007f8f60bb7000)
libplds4.so => /usr/lib/libplds4.so (0x00007f8f609b3000)
libplc4.so => /usr/lib/libplc4.so (0x00007f8f607ae000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00007f8f60560000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00007f8f60279000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00007f8f60047000)
libcom_err.so.2 => /usr/lib/libcom_err.so.2 (0x00007f8f5fe43000)
libgnutls.so.30 => /usr/lib/libgnutls.so.30 (0x00007f8f5fad8000)
libavahi-common.so.3 => /usr/lib/libavahi-common.so.3 (0x00007f8f5f8cb000)
libavahi-client.so.3 => /usr/lib/libavahi-client.so.3 (0x00007f8f5f6ba000)
libcrypt.so.1 => /usr/lib/libcrypt.so.1 (0x00007f8f5f482000)
libdatrie.so.1 => /usr/lib/libdatrie.so.1 (0x00007f8f5f27a000)
libgraphite2.so.3 => /usr/lib/libgraphite2.so.3 (0x00007f8f5f04f000)
libGLdispatch.so.0 => /usr/lib/libGLdispatch.so.0 (0x00007f8f5ed99000)
libGLX.so.0 => /usr/lib/libGLX.so.0 (0x00007f8f5eb68000)
libblkid.so.1 => /usr/lib/libblkid.so.1 (0x00007f8f5e91a000)
libuuid.so.1 => /usr/lib/libuuid.so.1 (0x00007f8f5e713000)
liblzma.so.5 => /usr/lib/liblzma.so.5 (0x00007f8f5e4ed000)
liblz4.so.1 => /usr/lib/liblz4.so.1 (0x00007f8f5e2db000)
libgcrypt.so.20 => /usr/lib/libgcrypt.so.20 (0x00007f8f5dfbf000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00007f8f5ddb2000)
libkeyutils.so.1 => /usr/lib/libkeyutils.so.1 (0x00007f8f5dbae000)
libp11-kit.so.0 => /usr/lib/libp11-kit.so.0 (0x00007f8f5d87d000)
libunistring.so.2 => /usr/lib/libunistring.so.2 (0x00007f8f5d50c000)
libtasn1.so.6 => /usr/lib/libtasn1.so.6 (0x00007f8f5d2f9000)
libnettle.so.6 => /usr/lib/libnettle.so.6 (0x00007f8f5d0c2000)
libhogweed.so.4 => /usr/lib/libhogweed.so.4 (0x00007f8f5ce8c000)
libgmp.so.10 => /usr/lib/libgmp.so.10 (0x00007f8f5cbfa000)
libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0x00007f8f5c9da000)

(tom) #7

hardware acceleration should be possible but i don’t know how https://wiki.archlinux.org/index.php/VirtualBox#Hardware_acceleration

(Skool182) #8

I know that some people from the shadow.tech linux community already tried to use virtualbox without success.
But I will look around docker for that (looks that we can now bind some /dev peripherials directly to the container).

I tried to build glibc, installing it on a directory, and using LD_LIBRARY_PATH, but I suppose that I need to do more because I get another strange errors…

I suppose that it’s not planned to upgrade glibc on Chakra ? Looks that it’s a big work.

(tom) #9

do thy use hardware acceleration?

(Skool182) #10

I tried this weekend the virtualbox solution. And it does not work. Probably that Virtualbox have a 3D hardware acceleration, and my application does not need 3D acceleration but needs H264 hardware decoding with the VA-API, and it’s not implemented on the Virtualbox driver.

I also tried with docker, but without success, but it’s hard to understand why, because my app just says that « there is a problem » during the decoding part.