/opt/cpanel/ea-php74/root/usr/lib64/php/modules/chilkat_9_5_0.so (/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found - server

I am trying to use a PHP extension (chilkat_9_5_0) on VPS server. after adding it, it gives below error message:
PHP Startup: Unable to load dynamic library 'chilkat_9_5_0.so' (tried: /opt/cpanel/ea-php74/root/usr/lib64/php/modules/chilkat_9_5_0.so (/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /opt/cpanel/ea-php74/root/usr/lib64/php/modules/chilkat_9_5_0.so)), /opt/cpanel/ea-php74/root/usr/lib64/php/modules/chilkat_9_5_0.so.so (/opt/cpanel/ea-php74/root/usr/lib64/php/modules/chilkat_9_5_0.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
I have looked for possible solutions, and found that GCC is an old version, so I have upgrade it to 6.5.0
however, I facing the same issue. in the server terminal I executed a search command and it appears that libstdc++.so.6 is pointing to the previous version of GCC:
also, I tried this solution, but still same issue:
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.8' not found
can you please help me.

Just a suggestion. Maybe you need to link libstdc++.so.6 to the just installed version of libstdc++ manually ?
root#lenovo:~# ldd /usr/bin/gcc
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff3c8c76000)
root#lenovo:~# ls -l /lib/x86_64-linux-gnu/|grep libstdc
lrwxrwxrwx 1 root root 19 maj 13 2022 libstdc++.so.6 -> libstdc++.so.6.0.30
-rw-r--r-- 1 root root 2252096 maj 13 2022 libstdc++.so.6.0.30
/lib64/ld-linux-x86-64.so.2 (0x00007fe3c8eb7000)
You can also use ldconfig -p to see libraries in the local cache
root#lenovo:~# ldconfig -p |grep libstdc++.so.6
libstdc++.so.6 (libc6,x86-64) => /lib/x86_64-linux-gnu/libstdc++.so.6
libstdc++.so.6 (libc6) => /lib/i386-linux-gnu/libstdc++.so.6

Related

CRYPTO_num_locks error occurs due to two versions of libcurl on Centos 7

I've trying to build some c++ libraries on a virtual Centos 7 distribution.
For a reason that I haven't found out this os can't see the /usr/local/lib or /usr/local/lib64 where these libraries are installed as other linux distributions do. So I had to add these folders on /etc/ld.so.conf. Then the c++ linker was able to see these libraries.
However when afterwards I gave
sudo yum update
I got the following message:
/usr/lib64/python2.7/site-packages/pycurl.so: undefined symbol: CRYPTO_num_locks
After searching I found that it was cause due to the existence of two version of libcurl. I gave
ldconfig -v | grep libcurl
And I got the following :
ldconfig: Path `/usr/lib' given more than once
ldconfig: Path `/usr/lib64' given more than once
libcurl.so.4 -> libcurl.so.4.4.0
libcurl.so.4 -> libcurl.so.4.3.0
Meaning that I installed a new version of libcurl and now two versions coexist.
When I removed the folder paths from the /etc/ld.so.conf then yum worked fine but c++ linker could not find the c++ libaries that my app needs. I also tried to update the LD_LIBRARY_PATH but I had the same problems.
Is there a way to fix this issue without having reinstall the libraries on new location ? Is it safe to remove the older version?
The ls -lsa /usr/lib64/*curl* gave
0 lrwxrwxrwx. 1 root root 16 Aug 10 10:19 /usr/lib64/libcurl.so.4 -> libcurl.so.4.3.0
428 -rwxr-xr-x. 1 root root 435120 Nov 14 2016 /usr/lib64/libcurl.so.4.3.0
I tried giving
sudo unlink /usr/lib64/libcurl.so.4
sudo ln -s /usr/local/lib/libcurl.so.4.4.0 /usr/lib64/libcurl.so.4
I even gave them as root but every time I give ldconfig I get
libcurl.so.4 -> libcurl.so.4.3.0
while before ldconfig gives
libcurl.so.4 -> /usr/local/lib/libcurl.so.4.4.0
I had this same issue, but I didn't have two versions of curl or pycurl installed on my system. One of my end user software installs, changed the LD_LIBRARY_PATH and it didn't include /usr/lib or /usr/lib64. I tried adding them at the end of the path and I still received the same error. I added them to the front, and no more error. I have to inquire with my end user if there's a legitimate reason they excluded the default libraries from the enviroment variable.
The default path for standard libraries, as far as I know, on CentOS is /usr/lib and /usr/lib64. If you compiling from source, without explicitly specify the library path when you use ./configure, those libraries will be installed by default in /usr/local/lib or /usr/local/lib64 (usually lib64 is found on 64 bit OS). So if the libraries are installed there, you should add those path in /etc/ld.so.conf and run a ldconfig afterwards;
According to your example:
ldconfig: Path `/usr/lib' given more than once
ldconfig: Path `/usr/lib64' given more than once
libcurl.so.4 -> libcurl.so.4.4.0
libcurl.so.4 -> libcurl.so.4.3.0
libcurl.so.4 is linked to 2 different library versions and I think that's the cause of your issue.
You could remove the second link, libcurl.so.4 -> libcurl.so.4.3.0, leaving libcurl.so.4 only linked to libcurl.so.4.4.0, run ldconfig and try again.

How upgrade to latest glibc on BeagleBone Black using opkg (or otherwise)

I have glibc version 2.15 on my BeagleBone Black. I want version 2.19, but I don't know how to upgrade to the newest version. opkg list-upgradable doesn't print anything. What should I do?
root#am335x-evm:/lib# ls -la | grep libc
-rwxr-xr-x 1 root root 888940 May 2 2013 libc-2.15.so
lrwxrwxrwx 1 root root 12 Mar 31 02:33 libc.so.6 -> libc-2.15.so
I know this part is not an easy task but here are few methods to upgrade package on linux embedded device.
1) Method:
Download glibc-2.19 debian package on to device (either directly using curl or download onto PC and scp to the device)
(download the debian package based on your architecture type 32/64 bit)
Use Opkg module to install the new glibc package,
opkg -f /etc/opkg.conf -d ram update
opkg -f /etc/opkg.conf -d ram install <package-name>
Note:
a) verify the opkg configuration file
b) below is sample of config file
src/gz repo <package-repository-url>
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
arch all 100
arch armv7l 200
arch armel 300
2) Method:
If you have internet on beagle bone then refer below links and you can find some command format examples.
http://wiki.openwrt.org/doc/techref/opkg
http://wiki.blue-panel.com/index.php/OPKG_%28en%29
3) Method:
Download the package source files on to your linux PC and cross-compile to beagle bone.
And then scp all required files of the package(binary,config files.....)

Yum error on Centos 6.4

Yum suddenly start to give the error pasted bellow
I tried to rebuild yum, but the error remains. I re-installed krb5-libs, but the error remains
How can I repair yum without reinstating Centos?
Error:
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
/lib64/libkrb5.so.3: symbol krb5int_push_fscreatecon_for, version krb5support_0_MIT not defined in file libkrb5support.so.0 with link time reference
Please install a package which provides this module, or
verify that the module is installed correctly.
It's possible that the above module doesn't match the
current version of Python, which is:
2.6.6 (r266:84292, Jul 10 2013, 22:48:45)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)]
If you cannot solve this problem yourself, please go to
the yum faq at:
http://yum.baseurl.org/wiki/Faq
At my machine the issue was caused by a second libkrb5support.so distributed with PostgreSQL 5.2 / PSqlODBC. After commenting the library path in /etc/ld.so.conf.d/psqlODBC.conf and runing ldconfig -v, I can run yum again without any issue.
In my case, the path to the "wrong" library is /opt/PostgreSQL/9.2/lib/libkrb5support.so.0
Edgar.
I encountered this error after defining LD_LIBRARY_PATH environment variable. It was fixed by adding /lib and /lib64 to LD_LIBRARY_PATH.
export LD_LIBRARY_PATH=/lib:/lib64:....
Run the below command to test what all the libraries you have:
# ldd /lib64/libkrb5.so.3
And make sure that the module 'libkrb5support.so.0' is available under '/lib64' directory or having the soft ink to the files that is inside /lib64 directory. If its not there then this error is expected. So manually you have to link it again.
From my test system:
# locate libkrb5support.so.0
/lib64/libkrb5support.so.0
# ls -l /lib64/libkrb5support.so.0
lrwxrwxrwx. 1 root root 21 Aug 19 15:52 /lib64/libkrb5support.so.0 -> libkrb5support.so.0.1
# ls -l /lib64/libkrb5support.so.0.1
-rwxr-xr-x. 1 root root 46336 May 1 2012 /lib64/libkrb5support.so.0.1

Debian aptitude install: 'find' not found in PATH or not executable

When I try to install any package such as php5, it gives me this error.
I did update and upgrade all libraries.
root#host:~# apt-get install apache2-mpm-prefork libapache2-mod-php5
Reading package lists... Done
Building dependency tree
Reading state information... Done
apache2-mpm-prefork is already the newest version.
The following extra packages will be installed:
libonig2 libqdbm14 php5-cli php5-common
Suggested packages:
php-pear
The following NEW packages will be installed:
libapache2-mod-php5 libonig2 libqdbm14 php5-cli php5-common
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/6,106 kB of archives.
After this operation, 18.7 MB of additional disk space will be used.
Do you want to continue [Y/n]? y
debconf: delaying package configuration, since apt-utils is not installed
dpkg: warning: 'find' not found in PATH or not executable
dpkg: error: 1 expected program not found in PATH or not executable
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin
E: Sub-process /usr/bin/dpkg returned an error code (2)
Can someone help me?
There is probably something messed up with the permissions of find, find on your installation is probably located in /usr/bin/find, to check the permissions of this application run
ls -l /usr/bin/find
This should return something like this:
-rwxr-xr-x 1 root root 136152 Oct 26 2010 /usr/bin/find
If this returns an error, try to ls find on other locations in you path (eg. /bin/find, /usr/local/sbin/find)
The first part should be identical for the command to work. If not, reset the permissions to with the following command:
chmod 755 /usr/bin/find
This should fix it.

libc.so.6() (64-bit) is needed by .... ubuntu 11.10

I am trying to install an odbc driver for vPostgres (Vmware's version for postgres) on Ubuntu 11.10 (64-bit).
I have downloaded the rpm file of the installer (64-bit) and when I try to install the rpm using:
rpm -ivh Vmware-vPostgres-client.rpm, it shows me this error:
error: Failed dependencies:
libc.so.6()(64bit) is needed by VMware-vPostgres-client-1.0.1.1145-532311.x86_64
libc.so.6(GLIBC_2.2.5)(64bit) is needed by VMware-vPostgres-client-1.0.1.1145-532311.x86_64
libc.so.6(GLIBC_2.3)(64bit) is needed by VMware-vPostgres-client-1.0.1.1145-532311.x86_64
libc.so.6(GLIBC_2.3.3)(64bit) is needed by VMware-vPostgres-client-1.0.1.1145-532311.x86_64
libdl.so.2()(64bit) is needed by VMware-vPostgres-client-1.0.1.1145-532311.x86_64
libdl.so.2(GLIBC_2.2.5)(64bit) is needed by VMware-vPostgres-client-1.0.1.1145-532311.x86_64
libpthread.so.0()(64bit) is needed by VMware-vPostgres-client-1.0.1.1145-532311.x86_64
libpthread.so.0(GLIBC_2.2.5)(64bit) is needed by VMware-vPostgres-client-1.0.1.1145-532311.x86_64
libresolv.so.2()(64bit) is needed by VMware-vPostgres-client-1.0.1.1145-532311.x86_64
libresolv.so.2(GLIBC_2.2.5)(64bit) is needed by VMware-vPostgres-client-1.0.1.1145-532311.x86_64
Few things I have tried:
locate libpthread.so.0 returns:
/lib/i386-linux-gnu/libpthread.so.0
/lib/x86_64-linux-gnu/libpthread.so.0
/lib32/libpthread.so.0
I get similar locations for all other files:
locate libc.so.6
/lib/i386-linux-gnu/libc.so.6
/lib/x86_64-linux-gnu/libc.so.6
/lib32/libc.so.6
and so on.
I tried creating symlinks using:
sudo ln -s lib/x86_64-linux-gnu/libc.so.6
/lib64/libc.so.6
sudo ln -s lib/x86_64-linux-gnu/libc.so.6
/lib/libc.so.6
sudo ln -s lib/x86_64-linux-gnu/libc.so.6
libc.so.6
but none of them worked. I am not sure where exactly it is trying to search for this files.
ldd Vmware-vPostgres-client.rpm doesnt help much and returns
'not a dynamic executable' which is expected
I tried adding the path in the /etc/ld.so.conf file
include lib/x86_64-linux-gnu/libc.so.6
I also tried setting the LD_LIBRARY_PATH to the specified file but of no use.
ldd --version shows
GLIBC 2.13
Can anyone help me out where exactly does it searches for the file?
Finally, found the solution..
Use alien. rpm packages are for redhat based distributions of linux like CentOS and redhat. For debian based systems(Ubuntu) you need deb packages. Alien is a product which can convert rpm file to deb file which can then be installed on ubuntu.