[Solved] Missing libc dependecy

Feels like i missed reading something because this dependency is used by almost any application i try to install. so far every time i install new applications i need to do --force-depends and it installs with the error below but works just fine. The error is annoying and means i cant use the web interface for installing apps. Any way to fix this, or do forcedepends on web interface?

Collected errors:

  • satisfy_dependencies_for: Cannot satisfy the following dependencies for adblock:
  • libc *
  • opkg_install_cmd: Cannot install package adblock.

Are you running a release firmware, snapshot or something you compiled on your own?

Sorry here is more info
Wrt1900ac v1

Had openwrt chaos calmer then went to lede

Firmware Version LEDE Reboot 17.01.4 r3560-79f57e422d / LuCI lede-17.01 branch (git-17.315.61305-a9bddc4)
Kernel Version 4.4.92

It should be stable version at least that's what I meant to load

I had a similar issue. If I understand correctly, you need the Standard C Library. In my case, I compiled software that required it.

Try:

opkg update
opkg install libstdcpp

You can also install libstdcpp from the Software section in the LuCI Web GUI.

Still the same error after installing the above. Thanks for the suggestion though

That dependency is supposed to get fulfilled automatically if you build with standard settings.

It sounds like you are using somehow non-standard package. (maybe the package has been compiled with cglibc instead of musl C library, or something like that)

Are you using 17.0.4 from the official site and also the adblock package for 17.01.4 from the official site?

1 Like

sorry for late response. i downloaded it from the lede site and would have selected stable

lede-17.01.4-mvebu-linksys-wrt1900ac-squashfs-factory.img

dont get too hung up on the package in question (adblock) all (so far) packages needs this c lib and post the same error

I resolved this by reloading

downloaded both the main img and the upgrade
the main img gave an error when trying to flash probably due to it being installed
but the upgrade img file flashed fine and after it was done no more lib c errors when installing packages

I had the same problem and re-flashing did NOT solve it, so I figured out the problem. The configuration archive I saved before the refresh and restored afterwards had all of the /overlay/upper/ directory tree (the changed files) and that includes many files that appear in /usr/lib/opkg/*.

The most important of those files is /usr/lib/opkg/status, which is a text record of all packages that are or have been installed. There is also an 'info' subdirectory full of files related to the management of each package. The firmware image (which can be found under /rom/ ) includes some installed packages and so includes a 'status' file and a 'info' subdirectory populated with files. If the config backup includes those files from the previous version of the system, opkg has a view of what packages are installed that isn't consistent with what is in the filesystem.

The specific problem of 'libc' is that it used to be an add-on package but in LEDE it is in the base installation and does not exist in the package tree. A very large fraction of packages (perhaps a majority) compiled for LEDE 17.x depend on it, while not so many OpenWRT 15.x packages did. In the re-merge of the projects, this was probably an unavoidable fragile part.

I THINK the best practice is to NOT include /overlay/upper/ in config backups, and restore add-on packages in a manual fashion.

thank you for this, i do still get the error (i was a little quick to mark this as solved). However I dont understand what todo (to fix it) from your reply.
your end sentence
"I THINK the best practice is to NOT include /overlay/upper/ in config backups, and restore add-on packages in a manual fashion."
is this something when making builds or something i can do to fix this?

I was afraid you'd ask something like that... :wink:

The simplest fix is to go back in time to before you flashed the router and change the list of files to be saved in the config backup (http://[your.router.address]/cgi-bin/luci/admin/system/flashops/backupfiles or edit /etc/sysupgrade.conf ) and remove anything except commented lines. All that requires is a time machine...

If you don't have a time machine handy, it is a bit messier. It can be done by hand and I THINK I managed to fix up my own case correctly, but I cannot in good conscience try to describe what I did and call it a solution. It was a bit ad hoc... If I were to do it over, I would do this instead on the broken system:

 ls /usr/lib/opkg/info/ |cut -d. -f1 |uniq >/tmp/pkglist
 rm -r /usr/lib/opkg
 cp -rp /rom//usr/lib/opkg /usr/lib/
 opkg update
 xargs opkg upgrade < /tmp/pkglist  

That will be noisy. It should be idempotent: run the same 5 lines again and you'll get the same state every time. Part of the output, at the end, will be some lines like this:

 * resolve_conffiles: Existing conffile /etc/config/dhcp is different from the conffile in the new package. The new conffile will be placed at /etc/config/dhcp-opkg.
 * resolve_conffiles: Existing conffile /etc/dropbear/dropbear_rsa_host_key is different from the conffile in the new package. The new conffile will be placed at /etc/dropbear/dropbear_rsa_host_key-opkg.
 * resolve_conffiles: Existing conffile /etc/config/dropbear is different from the conffile in the new package. The new conffile will be placed at /etc/config/dropbear-opkg.
 * resolve_conffiles: Existing conffile /etc/config/samba is different from the conffile in the new package. The new conffile will be placed at /etc/config/samba-opkg.
 * resolve_conffiles: Existing conffile /etc/samba/smb.conf.template is different from the conffile in the new package. The new conffile will be placed at /etc/samba/smb.conf.template-opkg.
 * resolve_conffiles: Existing conffile /etc/config/luci is different from the conffile in the new package. The new conffile will be placed at /etc/config/luci-opkg.
 * resolve_conffiles: Existing conffile /etc/config/uhttpd is different from the conffile in the new package. The new conffile will be placed at /etc/config/uhttpd-opkg.

You should look at the changes between the cited files and merge your local changes and the defaults. In some cases (e.g. /etc/dropbear/dropbear_rsa_host_key above) the "new" config file won't include anything of value.

1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.