A problem starting Squid

I hit a problem with starting Squid on RedHat Linux v.6.4. Squid just did not start.

When I tried to start the squid binary with this command:

/usr/sbin/squid -N

the root of the evil shows up:

/usr/sbin/squid: relocation error: /usr/sbin/squid: symbol private_MD5_Init, version libcrypto.so.10 not defined in file libcrypto.so.10 with link time reference

You can check who provides the library you need like this:

yum provides */libcrypto.so.10

On the output we get the list of packages that have it. Look for the latest one. In my case it is openssl-1.0.1e-16.el6_5.4.x86_64

rpm -q --provides openssl v.1.0.1e| grep libcrypto.so.10

And we get this result:

libcrypto.so.10()(64bit)  
libcrypto.so.10(OPENSSL_1.0.1)(64bit)  
libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)  
libcrypto.so.10(libcrypto.so.10)(64bit)

We can be a little happy that in the openssl-1.0.1e-16.el6_5.4.x86_64 package the libcrypto.so.10 library has the signature. But we will not be happy for long - when you try to install the new version of openssl the system will complain about the files that belong to the version that is already installed:

Transaction Check Error:  
file /usr/lib64/libcrypto.so.1.0.1e from install of openssl-1.0.1e-16.el6_5.4.x86_64 conflicts with file from package openssl10-libs-1.0.1e-1.ius.el6.x86_64  
file /usr/lib64/libssl.so.1.0.1e from install of openssl-1.0.1e-16.el6_5.4.x86_64 conflicts with file from package openssl10-libs-1.0.1e-1.ius.el6.x86_64  
file /usr/lib64/openssl/engines/lib4758cca.so from install of openssl-1.0.1e-16.el6_5.4.x86_64 conflicts with file from package openssl10-libs-1.0.1e-1.ius.el6.x86_64  
file /usr/lib64/openssl/engines/libaep.so from install of openssl-1.0.1e-16.el6_5.4.x86_64 conflicts with file from package openssl10-libs-1.0.1e-1.ius.el6.x86_64  
file /usr/lib64/openssl/engines/libatalla.so from install of openssl-1.0.1e-16.el6_5.4.x86_64 conflicts with file from package openssl10-libs-1.0.1e-1.ius.el6.x86_64  
file /usr/lib64/openssl/engines/libcapi.so from install of openssl-1.0.1e-16.el6_5.4.x86_64 conflicts with file from package openssl10-libs-1.0.1e-1.ius.el6.x86_64  
file /usr/lib64/openssl/engines/libchil.so from install of openssl-1.0.1e-16.el6_5.4.x86_64 conflicts with file from package openssl10-libs-1.0.1e-1.ius.el6.x86_64  
file /usr/lib64/openssl/engines/libcswift.so from install of openssl-1.0.1e-16.el6_5.4.x86_64 conflicts with file from package openssl10-libs-1.0.1e-1.ius.el6.x86_64  
file /usr/lib64/openssl/engines/libgmp.so from install of openssl-1.0.1e-16.el6_5.4.x86_64 conflicts with file from package openssl10-libs-1.0.1e-1.ius.el6.x86_64  
file /usr/lib64/openssl/engines/libnuron.so from install of openssl-1.0.1e-16.el6_5.4.x86_64 conflicts with file from package openssl10-libs-1.0.1e-1.ius.el6.x86_64  
file /usr/lib64/openssl/engines/libpadlock.so from install of openssl-1.0.1e-16.el6_5.4.x86_64 conflicts with file from package openssl10-libs-1.0.1e-1.ius.el6.x86_64  
file /usr/lib64/openssl/engines/libsureware.so from install of openssl-1.0.1e-16.el6_5.4.x86_64 conflicts with file from package openssl10-libs-1.0.1e-1.ius.el6.x86_64  
file /usr/lib64/openssl/engines/libubsec.so from install of openssl-1.0.1e-16.el6_5.4.x86_64 conflicts with file from package openssl10-libs-1.0.1e-1.ius.el6.x86_64

The problem is that these packages were already installed on the server

openssl  
openssl-devel  
openssl10-libs

You need to remove openssl10-libs. If you use yum - it will take all the dependent packages out of the system. In my case - a ton of nodejs packages. To remove packages without the dependencies use rpm:

rpm --nodeps -e openssl10-libs

Install the new version of openssl:

yum install openssl v.1.0.1e

Now we can start Squid.

/etc/init.d/squid start

Check if it started:

netstat -tunlp |grep 3128

After all the tambourine dancing around the packages I recommend checking the rest of them:

yum check