Search code examples
pipcentosglibcsingularity-container

Installing glibc 2.14 and 2.17 for singularity container for centos6 kernel


I am trying to build a singularity container for use in a cluster running centOS 6. Some of the packages i need are in python. The problem is that installing by pip requires glibc-2.14 and glibc-2.17. I installed those according to here and here.

Here is my definition file:

Bootstrap: docker
From: conda/miniconda3-centos6

%files

conda_env.yml
glibc-2.14
CentOS-Base.repo
glibc-2.17-55.el6.x86_64.rpm
glibc-common-2.17-55.el6.x86_64.rpm
glibc-devel-2.17-55.el6.x86_64.rpm
glibc-headers-2.17-55.el6.x86_64.rpm
glibc-static-2.17-55.el6.x86_64.rpm
glibc-utils-2.17-55.el6.x86_64.rpm
nscd-2.17-55.el6.x86_64.rpm

%post

rm /etc/yum.repos.d/CentOS-Base.repo
mv CentOS-Base.repo /etc/yum.repos.d/

yum install -y wget bzip2 gcc perl bzip2-devel gd

HOME="$PWD"

cd glibc-2.14
mkdir build
cd build
../configure --prefix=/opt/glibc-2.14
make -j8
make install
export LD_LIBRARY_PATH=/opt/glibc-2.14/lib 

cd "$HOME"

rpm -Uvh glibc-2.17-55.el6.x86_64.rpm \
glibc-common-2.17-55.el6.x86_64.rpm \
glibc-devel-2.17-55.el6.x86_64.rpm \
glibc-headers-2.17-55.el6.x86_64.rpm \
glibc-static-2.17-55.el6.x86_64.rpm \
glibc-utils-2.17-55.el6.x86_64.rpm \

/usr/local/bin/conda env create -f conda_env.yml    

glibc-2.14 installs fine, but installing glibc-2.17 proves to be difficult. The installion fails with the following errors:

warning: glibc-2.17-55.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID 73ec361c: NOKEY
Preparing...                ########################################### [100%]
   1:glibc-common           ########################################### [ 17%]
   2:glibc                  ########################################### [ 33%]
/usr/sbin/glibc_post_upgrade: While trying to execute /usr/sbin/iconvconfig.x86_64 child terminated abnormally
warning: %post(glibc-2.17-55.el6.x86_64) scriptlet failed, exit status 115
error: %pre(glibc-headers-2.17-55.el6.x86_64) scriptlet failed, signal 11
error:   install: %pre scriptlet failed (2), skipping glibc-headers-2.17-55.el6
   3:glibc-devel            ########################################### [ 50%]
error: %post(glibc-devel-2.17-55.el6.x86_64) scriptlet failed, signal 11
   4:glibc-static           ########################################### [ 67%]
   5:glibc-utils            ########################################### [ 83%]
FATAL:   While performing build: while running engine: exit status 6

Installing glibc-2.17 the same way as 2.14 will result in a segfault when python is called. Can anybody with more experienced provide some insights into possible solutions? Or if there are containers for centOS 6 with newer glibc out there?

Thanks in advance!


Solution

  • The problem is that installing by pip requires glibc-2.14 and glibc-2.17.

    There is no way that something requires both GLIBC-2.14 and GLIBC-2.17 -- these versions do not normally coexist on a single system.

    Installing GLIBC-2.17 should satisfy all the requirements (it provides both GLIBC-2.17 and all previous version symbols).