как узнать версию glibc linux

Benohead’s Software Blog

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

Linux: Check the glibc version

If you need to check which version of the GNU C library (glibc) is used on you Linux system, whether it’s to check whether you are affected by the GHOST vulnerability or you need to install a software requiring at least a certain version but not checking it on build/installation, the easiest way is to use ldd which comes with glibc and should in most cases have the same version:

If you know you might have patched the system to use a different version of ldd and know that its version doesn’t match the glibc version, you have two additional ways to find out the glibc version:

The second way is a little bit more difficult. You first have to find which libc.so file is being used by a known program e.g. netstat:

You can also find the libc.so file used with the following command:

So we now know that /lib64/libc.so.6 is being used and we just need to get it’s version:

If you want to determine the glibc version from C program and not from a shell script, you can just use something like this:

You can then compile it and execute it like this to get the glibc version:

Of course, if your C file is not called glibc_version.c, you’ll have to use the name you’ve actually used in the gcc arguments.

Since your current shell is probably also using glibc, you can also find out which libc library it has loaded by using the following command:

Источник

узнать версию программы

Как узнать версию программы, находящейся в репозитории Debian, без помощи пакетных менеджеров?

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

Посмотреть на packages.debian.org?

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

Посмотреть на сайте Debian’а [pokerface.png]

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

ну или искать в man ключ.

Буду рад услышать от ылиты более Ъ-методы. Подписался.

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

Проwgetить ее каталог

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

без браузера желательно

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

дело в том, что у тс не debian

И без интернета? Но зачем? 🙂

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

Точнее проcurlить. Я даже однострочник наваял на коленке:

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

Извращенец?
aptitude versions package
Решает

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

спс, а чем так wine не угодил?

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

ну не debian у меня

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

потому что пиво дороже выходит при таком же количестве эффекта, а коньяк мне жинка запретила временно. Да, а вообще я против вина и за коньяк

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

Я думаю в этом твоя и проблема, что у тебя не debian.
А по теме думаю или packages качать, либо на packages.debian.org смотреть. Надо учитывать, что несколько веток (stable, testing, sid, experimental, backports) и то что пакет может немного называться по-другому в отличие от твоего дистра.

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

и не дебиан, и не сходить в интернет? Тогда только через libastral.

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

без помощи пакетных менеджеров

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

А имя пакета с программой и расположение его в зеркале телепатия подскажет.

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

Давай переформулируем вопрос. Как хоть в каком-нибудь дистрибутиве узнать версию программы без пакетного менеджера и без браузера?

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

Посему оговорку про коленку и написал. Сложный и правильный пример пусть пишут те, у кого неарч

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

Дубль два показывает версии исходников со странички(поправьте регекспы, мне лень):

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

В том-то и дело, что зная название пакета дёрнуть версию нетрудно. Тут ты всё правильно делаешь.

Но ведь в условии стоит «узнать версию программы». Т.е. пакет неизвестен. Вот я и пытаюсь узнать у ТС, как он без пакетного менеджера будет искать версию программы в консоли для любого дистра.

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

ааа. То есть ты распарсил как «узнать версию того же echo из coreutils без всего»?

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

спасибо, то что надо!

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

А разве не это имелось ввиду? 🙂

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

Зачем знать версию программы в разных дистрах как раз вопрос простой. Мало ли там, статистику собрать захотелось. Или автоматическое сравнение дистрибутивов какое.

Источник

Эксперимент по проверке библиотеки glibc

glibc

glibc — GNU C Library (GNU библиотека). Glibc является библиотекой Си, которая обеспечивает системные вызовы и основные функции, такие как open, malloc, printf и т.д. Библиотека C используется для всех динамически скомпонованных программ. Она написана Free Software Foundation для GNU операционных систем. glibc выпущена под лицензией GNU LGPL.

Не так давно в интернете появились новости, что вышла новая версия библиотеки glibc. Это подвигло нас на проверку этой библиотеки с помощью нашего анализатора PVS-Studio. А именно, была проверена версия glibc-2-19-90. К сожалению, на пару недель я отвлекся, поэтому нашёл время написать статью только сейчас. Я был занят большим сравнением нескольких статических анализаторов. Это очень важная для нас задача так как не перестают спрашивать, чем мы лучше Cppcheck и статического анализатора в Visual Studio 2013. Поэтому glibc пришлось немного подождать.

В чем сложность анализа

Незнакомым с внутренней кухней инструментов статического анализа, они кажутся очень простыми утилитами. Это не так. Это очень сложные программы.

С толку могут сбивать такие инструменты, как RATS. Если кто-то смотрел код RATS, то видел, что это просто поиск определённых имён функций в файлах. Этот инструмент тоже называется статическим анализатором кода. Однако, он очень далёк от того, чем занимаются настоящие анализаторы кода. Статический анализ, это вовсе не поиск с помощью регулярных выражений [1].

Неоднократно мы повторяли, что Linux-версия, это вовсе не тоже самое, что перекомпилированный исполняемый модуль [2]. Между исполняемым модулем и программным продуктом лежит пропасть. Одно из препятствий, поддержка специфичных расширений и тому подобное.

Что это такое, стороннему человеку совершенно непонятно. Вот от видит, в программе вызов функции strcmp():

И он даже не подозревает, в какой ужас может раскрываться эта строка после препроцессирования и какие нестандартные расширения будут использованы. Конкретно в нашем случае, строка превращается в это:

Анализатор не готов к такому повороту событий и временами выдаёт на подобных конструкциях бессмысленные ложные сообщения.

Поясню про ложные сообщения на более простом примере. Пусть у нас есть строка кода:

Макрос assert() раскрывается в следующий код:

V501 There are identical sub-expressions to the left and to the right of the ‘==’ operator: ((void *) — 1) == (void *) — 1 loadmsgcat.c 840

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

Надеюсь я приоткрыл маленькую щелочку, чтобы вы могли заглянуть в ад. В дальнейшем я планирую написать ряд статей, которые покажут сложность разработки инструментов статического анализа. Думаю, будет интересно.

Найденные подозрительные участки кода

Хотя проект glibc проверяется многими инструментами, кое что интересного всё-таки удалось найти. Давайте посмотрим на эти участки кода.

Странное выражение

V590 Consider inspecting this expression. The expression is excessive or contains a misprint. dcigettext.c 582

Условие можно упросить до:

Разыменование указателя до проверки

Не обязательно, это место опасно. Возможно, указатель никогда не может быть равен нулю. Но тем не менее:

V595 The ‘clp’ pointer was utilized before it was verified against nullptr. Check lines: 145, 150. clnt_raw.c 145

Рядом в этом файле можно увидеть аналогичный дефект: V595 The ‘clp’ pointer was utilized before it was verified against nullptr. Check lines: 232, 235. clnt_raw.c 232

Другой пример опасного кода:

V595 The ‘h_errnop’ pointer was utilized before it was verified against nullptr. Check lines: 146, 172. getnssent_r.c 146

Опасная оптимизация (уязвимость)

V597 The compiler could delete the ‘memset’ function call, which is used to flush ‘temp_result’ buffer. The RtlSecureZeroMemory() function should be used to erase the private data. sha256-crypt.c 385

Компилятор вправе удалить вызов функции memset() при компиляции Release версии. Точнее он не только в праве, но и обязан это сделать с целью оптимизации. Буфер ‘temp_result’ после вызова функции memset() нигде не используется, следовательно и сам вызов функции тоже лишний.

Мы имеем дело с уязвимостью, так как не будут очищены приватные данные. Следует заменить функцию memset() на более подходящую. Анализатор предлагает RtlSecureZeroMemory(), которой конечно нет в Linux. Но есть аналоги.

Аналогичная ситуация: V597 The compiler could delete the ‘memset’ function call, which is used to flush ‘temp_result’ buffer. The RtlSecureZeroMemory() function should be used to erase the private data. sha512-crypt.c 396

Undefined behavior

Казалось бы, библиотека glibc должна быть написана максимально переносимо. Однако мы встречаем в ней немало конструкций сдвига, которые нельзя назвать безопасными с точки зрения переносимости.

Вот что нам говорит стандарт языка Си о сдвигах:

The integer promotions are performed on each of the operands. The type of the result is that of the promoted left operand. If the value of the right operand is negative or is greater than or equal to the width of the promoted left operand, the behavior is undefined.

The result of E1 > E2 is E1 right-shifted E2 bit positions. If E1 has an unsigned type or if E1 has a signed type and a nonnegative value, the value of the result is the integral part of the quotient of E1 / 2 pow E2. If E1 has a signed type and a negative value, the resulting value is implementation-defined.

Из стандарта следует, что неправильно сдвигать отрицательные числа. Однако, это очень распространённая операция в библиотеке glibc.

Пример сдвига влево:

V610 Undefined behavior. Check the shift operator ‘ Ответы на вопросы

Источник

Glibc

Для получения инструкций по установке смотрите Раздел Установка Glibc-2.3.2 в Главе 6.

Официальный адрес пакета

Содержимое Glibc

Устанавливаемые программы: catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump и zic

Устанавливаемые библиотеки: ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libc_nonshared.a, libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so и libutil.[a,so]

Краткие описания

catchsegv может использоваться для слежения за состоянием стека, когда программа завершается из-за ошибки распределения памяти (segmentation fault).

gencat генерирует каталоги сообщений.

getconf выводит параметры системной конфигурации для переменных, зависящих от файловой системы.

getent получает записи из административных баз данных.

glibcbug cсоздает отчет об ошибке и отсылает его по указанномы адресу.

iconv обеспечивает преобразование кодировки.

iconvconfig создает файл конфигурации для модуля iconv.

ldconfig настраивает временные привязки динамического компоновщика.

ldd возвращает список разделяемых библиотек, требующихся для указанной программы или библиотеки.

lddlibc4 используется ldd для объектных файлов.

localedef компилирует спецификации локали.

nscd_nischeck проверяет необходимость защищенного или простого запроса к NIS+.

rpcgen генерирует код C для реализации протокола RPC.

rpcinfo создает RPC вызов на сервер RPC.

sln используется для создания символических ссылок. Программа скомпонована статически, так что она используется для создания символических ссылок на динамические библиотеки если система динамической компоновки по каким-либо причинам нефункциональна.

sprof читает и отображает профильные данные распределяемого объекта.

tzselect спрашивает пользователя о его местонахождении и возвращает описание соответствующей временной зоны.

xtrace трассирует выполнение программы печатая исполняемую в данный момент функцию.

zdump делает дамп временной зоны.

libBrokenLocale используется программами, такими как Mozilla, для использования поврежденных локалей.

libSegFault обрабатывает ошибки распределения памяти (segmentation fault). Она пытается их перехватить.

libmcheck содержит код запуска при загрузке.

libmemusage используется memusage для сбора информации о памяти, используемой программой.

libpcprofile содержит профили функций, используемых для отслеживания времени, затрациваемого процессором на выполнения строк кода.

libresolv содержит функции для создания, отправки и интерпритации пакетов серверов доменных имен (DNS) Internet.

librpcsvc содержит функции, обеспецивающие различные сервисы RPC.

librt содержит функции, обеспечивающие большинство интерфейсов, описанных в POSIX.1b Realtime Extension.

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

libutil содержит код «стандартных» функций, использующихся во многих утилитах Unix.

Зависимости установки Glibc

Glibc зависит от: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.

Источник

Таблица соответствия GCC версий и libc в них

Есть версия GCC в нутри нее есть libc. Мне нужно знать соответстие версий обоих. Нужно типа такого: gcc 4.8 = glibc 2.5.3, gcc 5.2 = glibc 2.6.0

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

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

Мне нужно зная нужную версию glibc скачать gcc соответствующий ему

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

Какая версия glibc у вас?

Там точно не равно, а какой-то диапазон.

конкретная версия gcc может работать с разными версиями glibc

Например, вот PPA для Ubuntu 12.04, там есть gcc 11.1: https://launchpad.net/

Значит gcc 11.1 может работать как минимум от glibc2.15 до glibc2.34

Вот тут тестировали с glibc2.11

Так что gcc 11 может работать и с glibc2.11

Может и меньше возможно…

Какую gcc мне нужно установить, чтобы у нее по дефолту была 2.12.2 glibc?

Если ты будешь собирать на системе на которой glibc 2.12.2, то скорее всего любую.

Если ты будешь собирать на современном рабочем компьютере, то можешь запустить в докере систему с glibc 2.12.2 и там собрать любой gcc. Или установить из пакетного менеджера тот gcc, который шёл в той системе по умолчанию, если не нужно новые возможности С++

Если ты хочешь собирать на современном рабочем компьютере и не использовать докер, то поразбирайся тут: https://stackoverflow.com/questions/2856438/how-can-i-link-to-a-specific-glibc-version

Как мне перенастроить gcc под версию 2.12.2? Что нужно установить и как? беру образ докера gcc:4.8 ставл., и получаю segfault при вызове ldd.

Сейчас на моем железе работает исправно Ubuntu 12.04, у нее по умолчанию 2.15. Как мне переориентировать на 2.12?

Сейчас на моем железе работает исправно Ubuntu 12.04, у нее по умолчанию 2.15. Как мне переориентировать на 2.12?

Есть версия GCC в нутри нее есть libc

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

GCC можно скомпилировать с какой угодно версией Glibc. Например в репозитории SLES 11 доступен GCC 9. А версия GCC 10 доступна, если немного поработать напильником.

как узнать версию glibc linux. Смотреть фото как узнать версию glibc linux. Смотреть картинку как узнать версию glibc linux. Картинка про как узнать версию glibc linux. Фото как узнать версию glibc linux

GCC можно скомпилировать с какой угодно версией Glibc

Не совсем, есть диапазоны совместимости. GCC 2.95, например, с современной glibc не соберется.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *