Optware / Optware-ng

279 stars 52 forks source link

glibc-opt: is borked #121

Closed cswl closed 8 years ago

cswl commented 8 years ago

Nothing dynamically linked is working..

Here's output from ipkg files glibc-opt

Package glibc-opt (2.21-6) is installed on /opt/ and has the following files:
/opt/lib/libgcc_s.so.1
/opt/lib/libnss_hesiod.so.2
/opt/lib/libm.so.6
/opt/lib/libnss_files.so.2
/opt/lib/libanl.so.1
/opt/lib/libnss_compat.so.2
/opt/lib/librt.so.1
/opt/lib/ld-linux-armhf.so.3
/opt/lib/libresolv.so.2
/opt/lib/libutil.so.1
/opt/lib/libdl.so.2
/opt/lib/libc.so.6
/opt/lib/libnss_dns.so.2
/opt/lib/libthread_db.so.1
/opt/lib/libpthread.so.0
/opt/lib/libBrokenLocale.so.1
/opt/lib/libcidn.so.1
/opt/lib/libnss_nisplus.so.2
/opt/lib/libcrypt.so.1
/opt/lib/libnss_nis.so.2

Downgraded to glibc-opt (2.21-5) and everything is working again. Looks like in (2.21-6), the actual .so libraries are not installed, there's only symlinks.. I saw some commit's related to glibc-opt, some files were moved to libc-dev it seems.. but I dont think the dev package need to be installed. I just did a ipkg update then ipkg upgrade, then this happened.

alllexx88 commented 8 years ago

What's the actual error when trying to run an executable? Your assumption the actual .so libraries are not installed being the cause of your issue is wrong: '*.so' are only needed for linking -- not during runtime. Older glibc-opt, before I changed glibc prefix to /opt (6ef167bb5cbad3a2278df26b187bb82ba72894ea), had no .so files either. They were accidentally packaged after prefix change, which later was fixed by the commit you mentioned. I don't have a hardfloat armv7 platform for testing, but i686 target of similar config is working fine:

DiskStation> ipkg files glibc-opt
Package glibc-opt (2.21-3) is installed on /opt/ and has the following files:
/opt/lib/libgcc_s.so.1
/opt/lib/libnss_hesiod.so.2
/opt/lib/libm.so.6
/opt/lib/libnss_files.so.2
/opt/lib/libanl.so.1
/opt/lib/libnss_compat.so.2
/opt/lib/librt.so.1
/opt/lib/libresolv.so.2
/opt/lib/libutil.so.1
/opt/lib/libdl.so.2
/opt/lib/libc.so.6
/opt/lib/libnss_dns.so.2
/opt/lib/libthread_db.so.1
/opt/lib/libpthread.so.0
/opt/lib/libBrokenLocale.so.1
/opt/lib/libcidn.so.1
/opt/lib/libnss_nisplus.so.2
/opt/lib/libcrypt.so.1
/opt/lib/libnss_nis.so.2
/opt/lib/ld-linux.so.2
DiskStation> /opt/bin/file /opt/bin/nano
/opt/bin/nano: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /opt/lib/ld-linux.so.2, for GNU/Linux 2.6.32, stripped
mundschenk-at commented 8 years ago

I've got the same problem since updating glibc-opt today: No binary runs. This even prevents me from installing /opt/bin/file, here's the example output:

root@...> ipkg install file
Installing file (5.25+git20160111-1) on /opt/.
Downloading http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/file_5.25+git20160111-1_arm.ipk.
Installing zlib (1.2.8-2) on /opt/.
Downloading http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/zlib_1.2.8-2_arm.ipk.
Configuring zlib.
Configuring file.
//opt/lib/ipkg/info/file.postinst: line 5: /opt/bin/file: No such file or directory
chmod: cannot access ‘magic.mgc’: No such file or directory
Collected errors:
 * pkg_run_script: package "file" postinst script returned status 1.
 * opkg_configure: file.postinst returned 1.
alllexx88 commented 8 years ago

@mundschenk-at Try to run some executable, e.g., what's the output of '/opt/bin/file' (it is installed, just not configured)?

alllexx88 commented 8 years ago

OK, I got it figured out. Will fix soon

alllexx88 commented 8 years ago

Should be fixed now. It was a silly mistake on my side: I forgot that the actual glibc libs are called "lib-${version}.so" -- unlike in uclibc, where the actual libs are called according to the sonames (like libc.so.1), so by removing the '.so' files, I removed the glibc :D Should be all good now

UPD: no, with uclibc it's similar to glibc:

root@unknown:/tmp/home/root# ls -l /opt/lib/libthread_db.so.1
lrwxrwxrwx    1 root     root            22 May 21 12:28 /opt/lib/libthread_db.so.1 -> libthread_db-1.0.14.so