#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 не найден во время установки. Спасибо!