2.35-r0: glibc compatibility regression due to removal of /lib64
thotypous opened this issue · 5 comments
Programs which used to run normally with the 2.34-r0 release are broken after ddfe092.
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 ddfe092, 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.
[...]
@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.
Similar reprod Dockerfile
at #176 (comment)
@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
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