ofek / pyapp

Runtime installer for Python applications
https://ofek.dev/pyapp/
1.1k stars 24 forks source link

Missing glibc when building an app on ubuntu and running on centos #116

Closed Stubatiger closed 2 months ago

Stubatiger commented 2 months ago

Hello,

im on Ubuntu 22.04 and just created with the tutorial a binary executable for cowsay. If i try to run that binary in a centos:7 docker container it crashes and shows

./cowsay: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.29' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./cowsay)

i assume that the glibc version on centos is too low for the container it says

glibc-common-2.17-317.el7.x86_64
glibc-2.17-317.el7.x86_64

and ldd cowsay gives

./cowsay: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.29' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by ./cowsay)
./cowsay: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./cowsay)
        linux-vdso.so.1 =>  (0x00007fffaa1dd000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007c29302b9000)
        libm.so.6 => /lib64/libm.so.6 (0x00007c292ffb7000)
        libc.so.6 => /lib64/libc.so.6 (0x00007c292fbe9000)
        /lib64/ld-linux-x86-64.so.2 (0x00007c2930894000)

Can we target different libc versions with pyapp? I sady have not enough knowledge of rust

ofek commented 2 months ago

The way glibc compatibility works is that you have to build on the oldest desired distribution. See https://github.com/cross-rs/cross