Безопасно обновите 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, но после прочтения некоторых форумов мне кажется, что я могу сломать систему. Знаете ли вы альтернативу?
Спасибо
2 ответа
Проверьте, действительно ли это необходимо
Во-первых, проверьте приложение 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-клиент для 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
Это сработало для меня