Информация пользователя для UNIX glibc

C-библиотека относится к самым важным компонентам каждой системы Unix, так как она также отвечает за безупречное взаимодействие приложения и процесса сервера.

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

 

Причина

 

Почти все компоненты системы Unix (сама ОС, системные программы и преимущественное большинство всех приложений) либо написаны непосредственно на языке программирования C, либо строятся на компонентах, написанных на C.

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

Логично, что эти функции не находятся постоянно каждой программой и не отправляются. Поэтому они установлены в центральном месте системы и доступны всем остальным программам. С тех пор как система Unix поддерживает концепцию доступных библиотек (сопоставимо с файлами DLL на других платформах), принято распределять соответствующие приложения как так называемые dynamically linked binaries. Лежащая в основе операционная система только в момент запуска программы предоставляет соответствующую привязанную C-библиотеку.

 

Наиболее часто встречающейся под Linux реализацией этих библиотек libc является библиотека glibc, имеющая → домашнюю страницу.
Как и все полюбившиеся и широко распространенные проекты Open-Source, этот код постоянно находится в состоянии разработки и изменения. Устраняются баги, расширяется функциональная ориентация, устанавливаются дополнения. В ходе этого живого процесса постоянно проводится сравнение и корректировка в соответствии с общими стандартами, которые также постоянно изменяются и совершенствуются.

Поэтому невозможно избежать того, что то там, то здесь возникают несоответствия со стандартом. Иногда даже „в оболочке“ получается однородная, согласованная картина, но в более сложных областях отклонения могут приводить к тому, что используемые приложения должны соответствовать измененным условиям. Последствия измененной семантики могут быть такими, что, например, интерфейс, интерпретировавший данные определенный способом, неожиданно используется в других процессах обработки. Возможно другое последствие: Интерфейсы из-за модификации их параметров меняют свой образ и принцип действия, так как их функциональность была расширена.

По этим причинам библиотека имеет четкое обозначение версий (ее текущее состояние развития и тем самым ее характеристика). Однако не все используемые версии совместимы между собой „во всех направлениях“.

 

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

Так что же делать? Если имеются исходники операционной системы и приложений, можно сделать преобразование всей системы для того, чтобы благодаря этому добиться консистентного и совместимого состояния. Если приложения скачиваются как двоичные, при загрузке надо выбирать правильную версию. При обновлении основных компонентов следует обращать внимание на то, чтобы в компонентах более высокой версии присутствовала зависимость и чтобы при необходимости их можно было обновить. Если, например, меняется такой важный компонент системы, как libc или выполняется его обновление до более высокой версии, может потребоваться обновить не только основную систему, но и все прикладное ПО.  

 

Определение версии библиотеки или поддерживаемых AntiVir версий

 

Это может звучать своеобразно, но по причине совместимости и взаимодействия с открытой системой работающее приложение не способно распознавать версию установленной libc и, тем самым, определять, может ли оно работать в этой среде. Проект библиотеки вовсе не предусматривает возможность определять версию (даже если и существуют разработки, предлагающие подобную функцию, эта процедура еще долго будет работать не во всех системах и не на всех платформах). При этом, в данном случае речь идет о типичной проблеме яйца и курицы: Как при – непостоянстве необходимых и имеющихся версий – должно запускаться неработоспособное приложение и затем тестировать свою работоспособность?

К сожалению мы, разработчики программного обеспечения, не можем в настоящее время решить эту дилемму и облегчить пользователям работу так, как мы того сами бы хотели. Описанная выше ситуация требует того, чтобы сетевой администратор постоянно контролировал совместимое состояние установленного ПО– эту задачу за него не выполнит никто. Однако мы бы хотели, по крайней мере, предложить руководство по распознаванию и устранению проблем.

 

Устранение проблемы

 

Следующие указания опираются на ОС Linux с библиотекой GNU-C. Разумеется. для других платформ описанные выше аспекты также действуют, однако до сих пор только в Linux и в сочетании с GNU libc существует настоятельное требование выбирать одну из предложенных версий.

Библиотека glibc находится на жестком диске в формате, который позволяет использовать ее как „обычную программу“. Это помогает не только на этапе разработки, но и позволяет позже при получении выводить существенную информацию.

 

Вызов

 

/lib/libc.so.6 | head -1

 

показывает номер версии (предоставляемая информация намного обширнее, однако в данном случае отфильтровывается только строка с номером версии). Если при этой команде возникает сообщение „Permission denied“ или файл по каким-либо другим причинам не запускается как „программа“, то можно попытаться произвести старт с помощью следующей команды:

/lib/ld-linux.so.2 /lib/libc.so.6 | head -1

Если номер версии начинается с 2.0 или 2.1, можно использовать помеченные как glibc20 архивы нашего ПО. Если номер версии начинается с 2.2 или 2.3, следует использовать архивы, помеченные как glibc22 . Разумеется, libc также может быть представлен в виде (внутренней) версии 1 и в таком случае иметь имя файла libc.so.5. Хотя данная разработка не актуальна и имеет меньше функций, но благодаря своему небольшому объему (отсутствует интернационализация) она часто используется во встроенных системах, т.е. там, где требуется экономия или об обновлении не может быть и речи.

Наряду с версией GNU библиотеки libc также используются другие варианты исполнения, преследующие различные цели, например, „гибкость“ или „ высокую мобильность ПО“. Поскольку использование данного ПО является следствием осознанных решений (вовсе не „случайно“ и не вследствие установки стандартного дистрибутива), мы исходим из того, что администраторы очень хорошо знают свою систему. Они соблюдают рассматриваемые здесь положения и точно знают, какая библиотека glibc лучше всего подходит для используемой реализации. Поэтому они знают какой архив ПО Avira надо использовать.

В редких случаях, когда файл с реализацией libc не находится в каталоге lib, администратор должен знать, где находится файл. В спорном случае загрузчик в работающей системе знает, где находятся открытые объекты. При сомнении можно использовать команду

ldd /bin/ls (или любую другую динамически связанную программу)

и искать строки с помощью libc (или по ldlinux для описанного выше случая с библиотекой, не запускающейся в качестве программы).

 

Вывод

 

Внешние программы „обеспечивают“ только высокий логический уровень приложений, в то время как они обращаются к функциям низкого логического уровня таких системных компонентов, как libc. Если эти компоненты конфликтуют, ПО не будет работать правильно (и палитра эффектов будет меняться, сперва „вроде бы работает“ далее „периодически работает , но часто сбои“ потом „вообще не работает, ничего не происходит“ вплоть до „форматирует мой жесткий диск, из-за неё выпадают мои волосы и моя кошка меня ненавидит“).

Прикладное ПО не в состоянии выполнить удовлетворительный тест на совместимость, в следствие чего администратор должен отвечать за совместимость и работоспособность системы. Поскольку версии Linux нашего ПО предлагаются в различных вариантах для различных сред, требуется сделать выбор на основании установленной C-библиотеки.

Полный путь к файлу установленной C-библиотеки на жестком диске и версию используемого варианта исполнения можно узнать с помощью следующих команд:

 

$ ldd /bin/ls /bin/bash /usr/bin/vi

/bin/ls:

 

librt.so.1 => /lib/librt.so.1 (0x4001e000)

libc.so.6 => /lib/libc.so.6 (0x40030000)

libpthread.so.0 => /lib/libpthread.so.0 (0x40160000)

/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

 

/bin/bash:

 

libdl.so.2 => /lib/libdl.so.2 (0x4001e000)

libc.so.6 => /lib/libc.so.6 (0x40022000)

/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

 

/usr/bin/vi:

 

libncurses.so.5 => /lib/libncurses.so.5 (0x4001e000)

libgpm.so.1 => /usr/lib/libgpm.so.1 (0x40066000)

libdl.so.2 => /lib/libdl.so.2 (0x4006c000)

libperl.so.1 => /usr/lib/libperl.so.1 (0x4006f000)

libcrypt.so.1 => /lib/libcrypt.so.1 (0x4016f000)

libutil.so.1 => /lib/libutil.so.1 (0x4019c000)

libpthread.so.0 => /lib/libpthread.so.0 (0x4019f000)

libm.so.6 => /lib/libm.so.6 (0x401f0000)

libc.so.6 => /lib/libc.so.6 (0x40213000)

/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

 

$ /lib/libc.so.6 | head -1

GNU C Library stable release version 2.3.1, by Roland McGrath et al.

Рассматриваемые продукты

  • Avira AntiVir MailGate [Linux]
  • Avira AntiVir MailGate [Solaris]
  • Avira MailGate Suite [Linux]
  • Avira WebGate Suite [Linux]
  • Avira WebGate Suite [Solaris]
  • Avira AntiVir Professional [Linux]
  • Avira AntiVir Professional [Solaris]
  • Avira AntiVir Server [Linux]
  • Avira AntiVir Server [Solaris]
  • Создано : среда, 14 марта 2007 г.
  • Последнее изменение: понедельник, 21 марта 2011 г.
  • Оценить статью