Yum Broken libelf.so libs* fix centos
-
Recently while installing letsencrypt I’ve come across yum being broken {by something @ somewhere} where yum tossed an error of libelf.so.1, a python shared object.
Where yum nor rpm was able to run.
So I ran ldconfig, which is a program used to maintain shared libraries. This from the man pages:
- ldconfig creates the necessary links and cache to the most recent shared libraries found in the directories specified on the command line, in the file /etc/ld.so.conf, and in the trusted directories (/lib and /usr/lib). The cache is used by the run-time linker, ld.so or ld-linux.so.
ldconfig checks the header and filenames of the libraries it encounters when determining which versions should have their links updated.
So I got on with it using the -v flag or verbose
ldconfig -v
Output:
ldconfig: /etc/ld.so.conf.d/kernel-2.6.32-573.18.1.el6.x86_64.conf:6: duplicate hwcap 1 nosegneg ldconfig: /etc/ld.so.conf.d/kernel-2.6.32-573.22.1.el6.x86_64.conf:6: duplicate hwcap 1 nosegneg ldconfig: /etc/ld.so.conf.d/kernel-2.6.32-573.26.1.el6.x86_64.conf:6: duplicate hwcap 1 nosegneg ldconfig: /etc/ld.so.conf.d/kernel-2.6.32-573.7.1.el6.x86_64.conf:6: duplicate hwcap 1 nosegneg ldconfig: /etc/ld.so.conf.d/kernel-2.6.32-573.8.1.el6.x86_64.conf:6: duplicate hwcap 1 nosegneg ldconfig: /etc/ld.so.conf.d/kernel-2.6.32-642.1.1.el6.x86_64.conf:6: duplicate hwcap 1 nosegneg /usr/lib64/mysql: libmysqlclient.so.16 -> libmysqlclient.so.16.0.0 libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0 /usr/lib64/tcl8.5: libTix.so -> libTix.so /lib: libbz2.so.1 -> libbz2.so.1.0.4 libSegFault.so -> libSegFault.so libnsl.so.1 -> libnsl-2.12.so libgssapi_krb5.so.2 -> libgssapi_krb5.so.2.2 libgmodule-2.0.so.0 -> libgmodule-2.0.so.0.2800.8 libkeyutils.so.1 -> libkeyutils.so.1.3 libncursesw.so.5 -> libncursesw.so.5.7 libfreeblpriv3.so -> libfreeblpriv3.so libcrypt.so.1 -> libcrypt-2.12.so libanl.so.1 -> libanl-2.12.so libext2fs.so.2 -> libext2fs.so.2.4 libutil.so.1 -> libutil-2.12.so libnss_nisplus.so.2 -> libnss_nisplus-2.12.so libncurses.so.5 -> libncurses.so.5.7 libattr.so.1 -> libattr.so.1.1.0 libnss_hesiod.so.2 -> libnss_hesiod-2.12.so libglib-2.0.so.0 -> libglib-2.0.so.0.2800.8 libz.so.1 -> libz.so.1.2.3 libselinux.so.1 -> libselinux.so.1 libkrb5.so.3 -> libkrb5.so.3.3 libdb-4.7.so -> libdb-4.7.so libc.so.6 -> libc-2.12.so libthread_db.so.1 -> libthread_db-1.0.so libresolv.so.2 -> libresolv-2.12.so libk5crypto.so.3 -> libk5crypto.so.3.1 libreadline.so.6 -> libreadline.so.6.0
And so many other shared libraries…
ldconfig in verbose mode will spit out shared libraries and links, re caching them.
Once this is complete I ran:
ldd /bin/rpm
Which from the lunux man:
- ldd prints the shared objects (shared libraries) required by each program or shared object specified on the command line.
Output:
linux-vdso.so.1 => (0x00007fffaaeba000) librpmbuild.so.1 => /usr/lib64/librpmbuild.so.1 (0x00007fa244e32000) librpm.so.1 => /usr/lib64/librpm.so.1 (0x00007fa244bc7000) libmagic.so.1 => /usr/lib64/libmagic.so.1 (0x00007fa2449a7000) librpmio.so.1 => /usr/lib64/librpmio.so.1 (0x00007fa244778000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fa244559000) libcap.so.2 => /lib64/libcap.so.2 (0x00007fa244354000) libacl.so.1 => /lib64/libacl.so.1 (0x00007fa24414c000) libdb-4.7.so => /lib64/libdb-4.7.so (0x00007fa243dd8000) libbz2.so.1 => /lib64/libbz2.so.1 (0x00007fa243bc6000) liblzma.so.0 => /usr/lib64/liblzma.so.0 (0x00007fa2439a5000) liblua-5.1.so => /usr/lib64/liblua-5.1.so (0x00007fa243778000) libm.so.6 => /lib64/libm.so.6 (0x00007fa2434f3000) libelf.so.1 => /usr/lib64/libelf.so.1 (0x00007fa2432dd000) libnss3.so => /usr/lib64/libnss3.so (0x00007fa242f9d000) libpopt.so.0 => /lib64/libpopt.so.0 (0x00007fa242d93000) libz.so.1 => /lib64/libz.so.1 (0x00007fa242b7d000) librt.so.1 => /lib64/librt.so.1 (0x00007fa242975000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa242757000) libc.so.6 => /lib64/libc.so.6 (0x00007fa2423c3000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fa2421ac000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fa241fa8000) /lib64/ld-linux-x86-64.so.2 (0x00007fa24506c000) libattr.so.1 => /lib64/libattr.so.1 (0x00007fa241da3000) libnssutil3.so => /usr/lib64/libnssutil3.so (0x00007fa241b76000) libplc4.so => /lib64/libplc4.so (0x00007fa241971000) libplds4.so => /lib64/libplds4.so (0x00007fa24176d000) libnspr4.so => /lib64/libnspr4.so (0x00007fa24152e000)
Boom, problem solved. Yum is functional again.
As note, I cannot blame this on certbot, considering this system has been beaten down as a dev / trial. break & fix whatever was the flavor of the day for the last 3++ years. So this is by far the first issue I’ve caused by intentionally wreaking havok on a system. Comes with the territory.