sgerrand / alpine-pkg-glibc

A glibc compatibility layer package for Alpine Linux
2.04k stars 280 forks source link

2.35-r0: glibc compatibility regression due to removal of /lib64 #181

Open thotypous opened 2 years ago

thotypous commented 2 years ago

Programs which used to run normally with the 2.34-r0 release are broken after ddfe092f3d91c19f6cf8cb9f2938e088db4bfa8f.

I'm not sure how this could be fixed, since abuild now fails if the package contains /lib64 (otherwise you would not have removed it in ddfe092f3d91c19f6cf8cb9f2938e088db4bfa8f, of course)

>>> ERROR: glibc*: Packages must not put anything under /lib64, use /lib instead
>>> ERROR: glibc*: prepare_subpackages failed

but restoring the link from /usr/glibc-compat/lib/ld-linux-x86-64.so.2 to /lib64/ld-linux-x86-64.so.2 fixes the issue.

Please see some examples below:

/ # apk add dell-cctk
(1/2) Installing glibc (2.35-r0)
(2/2) Installing dell-cctk (2.2.1.142-r0)
Executing busybox-1.34.1-r5.trigger
OK: 16 MiB in 21 packages
/ # cctk
/usr/bin/cctk: exec: line 2: /opt/dell/toolkit/bin/cctk: not found
/ # mkdir -p /lib64
/ # ln -s /usr/glibc-compat/lib/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2
/ # cctk

Usage error.
[...]

and starting again from a fresh system in order to get more verbose error messages:

/ # apk add dell-cctk glibc-bin
(1/9) Installing glibc (2.35-r0)
(2/9) Installing dell-cctk (2.2.1.142-r0)
(3/9) Installing ncurses-terminfo-base (6.3_p20211120-r0)
(4/9) Installing ncurses-libs (6.3_p20211120-r0)
(5/9) Installing readline (8.1.1-r0)
(6/9) Installing bash (5.1.16-r0)
Executing bash-5.1.16-r0.post-install
(7/9) Installing libc6-compat (1.2.2-r7)
(8/9) Installing libgcc (10.3.1_git20211027-r0)
(9/9) Installing glibc-bin (2.35-r0)
Executing busybox-1.34.1-r5.trigger
Executing glibc-bin-2.35-r0.trigger
OK: 22 MiB in 28 packages
/ # cctk
Error relocating /opt/dell/srvadmin/lib64/libdchbas.so.7: __strdup: symbol not found
Error relocating /opt/dell/srvadmin/lib64/libdchbas.so.7: __strtod_internal: symbol not found
Error relocating /opt/dell/srvadmin/lib64/libdchbas.so.7: __strtok_r: symbol not found
/ # ls -l /lib64
total 0
lrwxrwxrwx    1 root     root            26 Jun  4 01:11 ld-linux-x86-64.so.2 -> /lib/libc.musl-x86_64.so.1
/ # ln -sf /usr/glibc-compat/lib/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2
/ # cctk

Usage error.
[...]
prantlf commented 1 year ago

The same as #175 and #176.

sgerrand commented 1 year ago

@thotypous: Would you please provide a minimal example Dockerfile which demonstrates the problem you're experiencing it. Without that I am unable to investigate this matter further.

chadlwilson commented 1 year ago

Similar reprod Dockerfile at https://github.com/sgerrand/alpine-pkg-glibc/issues/176#issuecomment-1507914131

thotypous commented 1 year ago

@thotypous: Would you please provide a minimal example Dockerfile which demonstrates the problem you're experiencing it. Without that I am unable to investigate this matter further.

I'm not using Docker. I'm running Alpine on bare metal. This is the affected package: https://gist.github.com/thotypous/219170b3099c2694cfb4918f2e56fcb9

sodul commented 1 year ago

For others, if this helps, we have updated our Dockerfile to recreate the missing symlink after installing the glibc package:

RUN set -eux; \
    version=2.35-r1; \
    wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub; \
    wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${version}/glibc-${version}.apk; \
    apk add glibc-${version}.apk; \
    rm glibc-${version}.apk; \
    if [ ! -e /lib64/ld-linux-x86-64.so.2 ]; then \
        mkdir -p /lib64; \
        ln -s /usr/glibc-compat/lib/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2; \
    fi