Closed cswl closed 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
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.
@mundschenk-at Try to run some executable, e.g., what's the output of '/opt/bin/file' (it is installed, just not configured)?
OK, I got it figured out. Will fix soon
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
Nothing dynamically linked is working..
Here's output from
ipkg files glibc-opt
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
thenipkg upgrade
, then this happened.