Назад | Перейти на главную страницу

безопасно обновить glibc на CentOS 7

Я пробовал приложение Python на моем компьютере с CentOS, и оно выдает следующую ошибку:

ImportError: /usr/lib64/libc.so.6: version `GLIBC_2.18' not found (required by /tmp/_MEI2BYIr4/libstdc++.so.6)

У меня возникло желание обновить GLIBC, но, прочитав несколько форумов, мне кажется, что я могу сломать систему. Вы знаете альтернативу?

Спасибо

Проверить, действительно ли это необходимо

Сначала проверьте приложение python, так как оно может быть устаревшим и, вероятно, неправильно читает glibc версия. CentOS показывает базовую версию как установленную и исправленную, чтобы не отставать от изменений, и это может быть просто случай исправления версии, которая ищется в коде, в качестве быстрого исправления, но если приложение активно разрабатывается, вам необходимо дайте знать разработчикам или раскройте его для себя, если сможете.

Актуальный glibc на CentOS 7 должно быть 2.17-196.el7_4.2

Если необходимо, контейнеризуйте

Если это приложение абсолютно необходимо запускать, официальный подход RHEL будет заключаться в контейнеризации, но вам все равно потребуется предоставить работающую glibc, что было бы невозможно со стандартной CentOS 7.

В крайнем случае установите glibc в нестандартном месте

Если это нецелесообразно и в крайнем случае, можно установить более новую версию glibc чем 2,18, так как этому сейчас пять лет и glibc был обновлен для нескольких уязвимостей, и я не уверен, что он будет построен с версией make в CentOS 7, но любая более новая версия должна работать следующим образом:

  • Это потенциально может повлиять на функциональность вашего компьютера, поэтому убедитесь, что вы знаете, что делаете.

Вы можете построить версию glibc вам нужно где-нибудь на вашем сервере и добавьте его в LD_LIBRARY_PATH для приложения. Обратите внимание, что это нужно делать только для приложения.

wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar zxvf glibc-2.18.tar.gz
cd glibc-2.18
mkdir build
cd build
../configure --prefix=/opt/glibc-2.18
make -j4
sudo make install
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/glibc-2.18/lib

/opt - стандартное место для установки сторонних приложений и библиотек, но вы можете использовать любой путь, отличный от системных.

В конце концов, мне не пришлось обновлять GLIBC. В gdc-client Инструмент, который я загрузил через R, казалось, предназначен для Ubuntu, а не CentOS, хотя я сделал это на CentOS 7. Затем я загрузил gdc-client для CentOS, и он работал нормально.

В CentOS 7 я включил /usr/lib64 папка в rpath следующим образом

patchelf --set-interpreter /opt/glibc-2.18/lib/ld-linux-x86-64.so.2 --set-rpath /opt/glibc-2.18/lib:/usr/lib64 pydio-agent

Это сработало для меня