Поддержка glibc-2.17 и GLIBCXX_3.4.19, или то, чего вам так не хватало в RHEL6

Nov 25, 2016 01:14



Имел я сегодня неосторожность обновить свой любимый броузер Pale Moon. Причем не себе, а сотруднице. А его разработчики, оказывается, позавчера выложили версию 27.0 (предыдущей была 26.5.0 от 28.09.2016). И так нехорошо получилось, что новая версия запускаться категорически отказалась (дело было под Scientific Linux 6).

Поскольку времени разбираться на месте у меня не было, то я был вынужден вернуть обратно версию 26.5.0. А выяснять причину сел уже у себя. Оказалось, что новый Pale Moon требует glibc версии не ниже, чем 2.17. Что совсем грустно, т.к. крайнее официальное обновление имеет номер версии eще аж, 2.12-1.192, а найденное мною неофициальное, которое пару лет назад собрал английский народный умелец в рамках проекта по установке нативного Steam, - 2.15-60. Естественно, это мою проблему не решало.

Да, Scientific Linux 6 на сегодня дистрибутив, мягко говоря, далеко не новый. И даже, как бы, совсем наоборот. Но тем не менее, ведь работать-то надо! Тем более, что работа по массовой переустановке ОС на энном количестве компьютеров, с учетом объема и специфики стоЯщего на них софта, получается почти неподъемной. Итак, для выхода из создавшейся ситуации надо было найти (или собрать самому) glibc версии 2.17 или выше.

И, как выяснилось после непродолжительных поисков в Google, еще не перевелись таки на нашей планете хорошие люди! И не только не перевелись, а даже сделали за меня всю необходимую работу, позаимствовав необходимые пакеты у Fedora 20 и пересобрав их под EL6. Итак, знакомьтесь: репозиторий под неприметным названием mosquito-myrepo-el6. Чтобы воспоьзоваться его услугами, достаточно скачать файл mosquito-myrepo-el6.repo и сохранить его в папку /etc/yum.repos.d

Вот его содержимое (строчку enabled=1 лучше сразу поменять на enabled=0, чтобы система не обращалась туда лишний раз при установке каждого пакета):

[mosquito-myrepo-el6]
name=Copr repo for myrepo-el6 owned by mosquito
baseurl=https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/pubkey.gpg
repo_gpgcheck=0
enabled=1
enabled_metadata=1

И далее просто обновляем glibc до версии 2.17-55 командой:

#yum --enablerepo=mosquito-myrepo-el6 install glibc

Внимание! После обновления glibc обязательно проверяем содержимое папки /etc. Если файл /etc/localtime в процессе установки был переименован в /etc/localtime.rpmsave или что-то подобное, то переименовываем его обратно. Иначе системные часы в трее будут показывать неправильное время!

Кроме обновленного glibc, там присутствуют еще и другие вкусности. Например, gcc-4.8.2. А в нем - замечательный пакет libstdc++-4.8.2-16.3, установка которого обновит библиотеку libstdc++.so.6 аж до версии libstdc++.so.6.0.19 (официально доступна только  libstdc++.so.6.0.13, ранее мне посчастливилось наковырять libstdc++.so.6.0.16). Это позволит без проблем устанавливать и запускать программы, требующие вплоть до GLIBCXX_3.4.19 включительно. В данном репозитории присутствует также и binutils-2.23.52.0.1-17.

В результате установки обновлений из данного репозитория мне удалось заставить работать не только Pale Moon 27.0, но и Google Chrome 54.0.2840.100 (текущая на момент написания данной статьи стабильная версия):



Ранее, до вышеупомянутого обновления системы, установка Google Chrome в данных дистрибутивах была сопряжена с определенными сложностями ( см. статью по ссылке).

После обновления системных библиотек единственным нюансом остается тот момент, что при установке Google Chrome с помощью yum выскакивает сообщение о якобы неразрешенных зависимостях:

#yum --enablerepo=google-chrome install google-chrome-stable  --downloadonly
Загружены модули: fastestmirror, refresh-packagekit, security
Подготовка к установке
Loading mirror speeds from cached hostfile
 * sl: ftp.scientificlinux.org
 * sl-security: ftp.scientificlinux.org
Разрешение зависимостей
--> Проверка сценария
---> Package google-chrome-stable.x86_64 0:54.0.2840.100-1 will be для установки
--> Обработка зависимостей: libstdc++.so.6(GLIBCXX_3.4.14)(64bit) для пакета: google-chrome-stable-54.0.2840.100-1.x86_64
--> Обработка зависимостей: libstdc++.so.6(GLIBCXX_3.4.15)(64bit) для пакета: google-chrome-stable-54.0.2840.100-1.x86_64
--> Обработка зависимостей: libstdc++.so.6(GLIBCXX_3.4.18)(64bit) для пакета: google-chrome-stable-54.0.2840.100-1.x86_64
--> Проверка зависимостей окончена
Ошибка: Пакет: google-chrome-stable-54.0.2840.100-1.x86_64 (google-chrome)
            Необходимо: libstdc++.so.6(GLIBCXX_3.4.15)(64bit)
Ошибка: Пакет: google-chrome-stable-54.0.2840.100-1.x86_64 (google-chrome)
            Необходимо: libstdc++.so.6(GLIBCXX_3.4.18)(64bit)
Ошибка: Пакет: google-chrome-stable-54.0.2840.100-1.x86_64 (google-chrome)
            Необходимо: libstdc++.so.6(GLIBCXX_3.4.14)(64bit)
 Вы можете попробовать --skip-broken чтобы обойти проблему
 Вы можете попробовать запустить: rpm -Va --nofiles --nodigest

На самом деле, библиотека libstdc++.so.6.0.19 обеспечивает поддержку вплоть до GLIBCXX_3.4.19, в чем легко убедиться, введя в терминале:
strings /usr/lib/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

Поэтому просто скачиваем RPM-пакет (к примеру, google-chrome-stable-54.0.2840.100-1.x86_64.rpm) и устанавливаем его командой:

rpm -ivh google-chrome-stable-54.0.2840.100-1.x86_64.rpm --nodeps

Ключ --nodeps разрешает установку пакета с ингорированием зависимостей (на самом деле никакого нарушения зависимостей не происходит, и после установки все нормально работает).

Обновление glibc и libstdc++ позволило также успешно установить и запустить программу САПР DraftSight версии сначала 2016, а затем и 2017. Здесь установка и запуск прошли абсолютно гладко и без каких-либо особенностей; до обновления системы версия 2016 не работала, и при запуске "ругалась" на отсутствие нужной версии GLIBCXX_3.4.



Итак, благодаря обновлению системных библиотек из репозитория mosquito-myrepo-el6, стало возможным устанавливать и запускать под ОС Scientific Linux 6 (а значит, и с высокой вероятностью также и под Red Hat Enterprise Linux 6, CentOS 6, Oracle Linux 6 и т.п. дистрибутивами) прикладные программы, требующие наличия glibc 2.17 и GLIBCXX_3.4.19, которые раньше с этими дистрибутивами не работали. На очереди новые эксперименты. Давно хотел попробовать, к примеру, нативный клиент 1С 8.3, который раньше не ставился и не запускался по причине все тех же зависимостей.

Вы читаете зеркало моего журнала - yes1111.

Основной пост находится здесь: http://yes1111.dreamwidth.org/1439901.html

linux, компьютер, записки сумасшедшего, позитив

Previous post Next post
Up