Установка glibc 2.14 и 2.17 для контейнера singularity для ядра centos6

#pip #centos #glibc #singularity-container

Вопрос:

Я пытаюсь создать контейнер сингулярности для использования в кластере под управлением CentOS 6. Некоторые из необходимых мне пакетов написаны на python. Проблема в том, что для установки с помощью pip требуются glibc-2.14 и glibc-2.17. Я установил их в соответствии с здесь и здесь.

Вот мой файл определения:

 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 устанавливается нормально, но установка glibc-2.17 оказывается сложной. Установка завершается неудачно со следующими ошибками:

 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
 

Установка glibc-2.17 таким же образом, как и 2.14, приведет к segfault при вызове python. Может ли кто-нибудь более опытный дать некоторое представление о возможных решениях? Или если там есть контейнеры для CentOS 6 с более новым glibc?

Заранее спасибо!

Ответ №1:

Проблема в том, что для установки с помощью pip требуются glibc-2.14 и glibc-2.17.

Нет никакого способа, чтобы что-то требовало как GLIBC-2.14, так и GLIBC-2.17-эти версии обычно не сосуществуют в одной системе.

Установка GLIBC-2.17 должна удовлетворять всем требованиям (она предоставляет как GLIBC-2.17, так и все символы предыдущей версии).

Комментарии:

1. Вы правы. Я думаю, что меня смутила ошибка подпроцесса Pip начальных сообщений об ошибках: /usr/local/envs/htseq/bin/python: /lib64/libc.so.6: версия GLIBC_2.14 не найдена (требуется /usr/local/envs/htseq/bin/python) /usr/local/envs/htseq/bin/python: /lib64/libc.so.6: версия GLIBC_2.17 не найдена (требуется /usr/local/envs/htseq/bin/python) ‘я попытался просто установить glibc-2.17 через rpm, и теперь он работает, даже если он сообщает мне, что glibc-2.14 не найден во время установки. Спасибо!