Source -> http://punkts.org/trac/wiki/Skype22ForCentOS5

Package, install Skype 2.2.0.35 on CentOS 5

CentOS 5 has its own GCC Standard C++ Library package, but it is relatively old:

$ rpm -q --provides libstdc++-4.1.2-48.el5.i386 |grep GLIBC

  libstdc++.so.6(GLIBCXX_3.4)
  libstdc++.so.6(GLIBCXX_3.4.1)  
  libstdc++.so.6(GLIBCXX_3.4.2)  
  libstdc++.so.6(GLIBCXX_3.4.3)  
  libstdc++.so.6(GLIBCXX_3.4.4)  
  libstdc++.so.6(GLIBCXX_3.4.5)  
  libstdc++.so.6(GLIBCXX_3.4.6)  
  libstdc++.so.6(GLIBCXX_3.4.7)  
  libstdc++.so.6(GLIBCXX_3.4.8)  


Precompiled version of Skype 2.2 Beta for Linux requires a slightly newer version, libstdc++.so.6(GLIBCXX_3.4.9). Will install the libstdc++ package from Fedora 10, and make sure that it won't overwrite the one that came with the CentOS.

  1. Download, install the GCC Standard C++ Library RPM from the Fedora 10 archive. 
  1. rpm -i --relocate /usr/lib=/usr/local/lib http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/10/Fedora/i386/os/Packages/libstdc++-4.3.2-7.i386.rpm
  1. rpm -ql libstdc++-4.3.2-7

/usr/local/lib/libstdc++.so.6 /usr/local/lib/libstdc++.so.6.0.10

  1. ( cd /usr/local/lib ; ls -log libstdc++* )

lrwxrwxrwx 1 19 Apr 6 12:00 libstdc++.so.6 -> libstdc++.so.6.0.10 -rwxr-xr-x 1 954544 Nov 5 2008 libstdc++.so.6.0.10

  1. whereis libstdc++.so.6

libstdc++.so: /usr/lib/libstdc++.so.6 /usr/local/lib/libstdc++.so.6


Now will download a few files, build and install the RPM.

  2. Download statically compiled version of Skype (to avoid installation of Qt 4). 
  1. cd /usr/src/redhat/SOURCES
  2. wget http://www.skype.com/go/getskype-linux-static/skype_static-2.2.0.35.tar.bz2
  3. Download a simple patch, and a .spec file. 
  1. url=http://punkts.org/sw/el5
  2. wget $url/skype-2.2.0.25-shell.patch
  3. wget $url/skype.sh
  1. cd /usr/src/redhat/SPECS
  2. wget $url/skype.spec


  4. Build, then install the package. 
  1. rpmbuild -bb skype.spec
[...]
  1. rpm -i /usr/src/redhat/RPMS/i386/skype-2.2.0.35-*.i386.rpm


What was the patch needed for?

$ rpm -ql skype |grep desktop /usr/share/applications/skype.desktop

$ grep Exec /usr/share/applications/skype.desktop Exec=skype.sh

$ rpm -ql skype |grep bin/skype /usr/bin/skype /usr/bin/skype.sh

$ pr -to3 /usr/bin/skype.sh

  #!/bin/sh
  LD_PRELOAD=/usr/local/lib/libstdc++.so.6 /usr/bin/skype


Upgrade to CentOS 5.6

If you'd followed instructions given above, and now are trying to upgrade your system to CentOS 5.6, you may encounter the following error:

  1. yum update
[...]

ERROR with rpm_check_debug vs depsolve: libstdc++.so.6(GLIBCXX_3.4.9) is needed by (installed) skype-2.2.0.25-2.el5.punkts.i386 libstdc++.so.6(GLIBCXX_3.4.9) is needed by (installed) skype-2.2.0.25-2.el5.punkts.i386 libstdc++.so.6(GLIBCXX_3.4.9) is needed by (installed) skype-2.2.0.25-2.el5.punkts.i386 libstdc++.so.6(GLIBCXX_3.4.9) is needed by (installed) skype-2.2.0.25-2.el5.punkts.i386 Complete! (1, [u'Please report this error in https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%205&component=yum'])


To work around this problem uninstall the libstdc++-4.3.2-7 package, upgrade libstdc++ to the version that comes with CentOS 5.6, and then install the libstdc++-4.3.2-7 package back in place.

  1. rpm -e --nodeps libstdc++-4.3.2-7
  1. yum update libstdc++
[...]

Updated:

 libstdc++.i386 0:4.1.2-50.el5                 libstdc++.x86_64 0:4.1.2-50.el5                

Dependency Updated:

 cpp.x86_64 0:4.1.2-50.el5                    gcc.x86_64 0:4.1.2-50.el5                       
 gcc-c++.x86_64 0:4.1.2-50.el5                gcc-gfortran.x86_64 0:4.1.2-50.el5              
 libgcc.i386 0:4.1.2-50.el5                   libgcc.x86_64 0:4.1.2-50.el5                    
 libgfortran.x86_64 0:4.1.2-50.el5            libstdc++-devel.x86_64 0:4.1.2-50.el5           

Complete!

  1. rpm -i --relocate /usr/lib=/usr/local/lib libstdc++-4.3.2-7.i386.rpm