Ожидаемое время сборки: 12.3 SBU
|
Glibc является библиотекой C, которая обеспечивает системные вызовы и основные функции, такие как open, malloc, printf и другие. Библиотека C используется всеми динамически скомпоноваными программами.
Устанавливаемые программы: 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]
Glibc зависит от: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.
Система сборки Glibc является весьма самодостаточной и должна установится корректно, если ваши spec файл и компоновщик находятся в /tools. Мы не можем установить spec и компоновщик перед установкой Glibc потому, что тест автоконфинурации Glibc даст фиктивные результаты и от этого зависит чистота сборки.
Замечание: Тестирование Glibc в этой главе является критичным. Ни в коем случае нельзя его пропускать.
Перед началом сборки Glibc не забудьте снова распаковать Glibc-linuxthreads в дмректории glibc-2.3.2 и отключить переменные окружения, отвечающие за флаги оптимизации сборки.
На стадии установки Glibc выдает ошибку при отсутствии файла /etc/ld.so.conf. Исправим это командой:
touch /etc/ld.so.conf
|
Применим ранее использовавшийся патч:
patch -Np1 -i ../glibc-2.3.2-sscanf-1.patch
|
Документация по Glibc рекомендует собирать Glibc вне директории с исходниками в отдельной директории для сборки:
mkdir ../glibc-build
|
Теперь подготовим Glibc к компиляции:
../glibc-2.3.2/configure --prefix=/usr \
|
Описание параметров конфигурации:
--libexecdir=/usr/bin: Это надо для установки программы pt_chown в директорию /usr/bin.
--with-headers=/usr/include: Это позволит убедиться, что заголовки ядра из /usr/include будут использованы при сборке. Если вы не укажете этот параметр, то будут использованы заголовки из /tools/include что не идеально (несмотря на их идентичность). Использование этого переключателя позволит также убедиться что вы не забыли установить заголовки ядра в /usr/include.
Скомпилируем пакет:
make
|
Протестируем результаты:
make check
|
Тестирование, описаное в части Установка Glibc-2.3.2 Главы 5, будет очень уместно здесь. Убедитесь перед продолжением установки, что все в порядке.
И установим пакет:
make install
|
Локали позволят вашей системе работать на разных языках. Их установка не обеспечивается предыдущей командой, вам надо зделать это с помощью:
make localedata/install-locales
|
Альтернативой запуску предыдущей команды будет установка только необходимых вам локалей. Это обеспечивается запуском команды localedef.Информацию о ней можно получить из файла INSTALL file из директории с glibc-2.3.2. Тем не менее, есть ряд локалей, которые необходимы для успешного прохождения некоторых тестов других пакетов. Следующие инструкции установят минимально необходимый набор локалей:
mkdir -p /usr/lib/locale
|
Наконец, соберем man страницы для linuxthreads:
make -C ../glibc-2.3.2/linuxthreads/man
|
И установим их:
make -C ../glibc-2.3.2/linuxthreads/man install
|
Нам нужно создать файл /etc/nsswitch.conf потому, что по умолчанию Glibc не создает этот файл, а без него Glibc не работает с сетью. Также это надо для работы с вашей временной зоной.
Создадим новый файл /etc/nsswitch.conf запуском следующих команд:
cat > /etc/nsswitch.conf << "EOF"
|
Для определения вашей временной зоны, запустите скрипт:
tzselect
|
Когда вы ответите на некоторые вопросы о вашим местонахождении, скрипт выдаст вам вашу временную зону. Что-то наподобие EST5EDT или Canada/Eastern. Создадим файл /etc/localtime запуском:
cp --remove-destination /usr/share/zoneinfo/Canada/Eastern /etc/localtime
|
Описание параметров:
--remove-destination: Это необходимо для удаления существующей ссылки. Мы используем копию файла вместо ссылки на случай, если /usr находится на другом разделе. Также это нужно, например, когда вы загружаетесь в режиме single user (одного пользователя).
Само собой, вам надо заменить Canada/Eastern на вашу временную зону, которую мы определили с помощью скрипта tzselect.
По умолчанию, динамический загрузчик (/lib/ld-linux.so.2) ищет динамические библиотеки, необходимые для программ, в /lib и /usr/lib. Таким образом, если есть директории с библиотеками, отличные от /lib и /usr/lib, вам надо указать их в файле /etc/ld.so.conf. Две наиболее распространенные директории с дополнительными библиотеками находятся в /usr/local/lib и /opt/lib, и мы добавим их в путь поиска динамического компоновщика.
Создадим новый файл /etc/ld.so.conf запуском команды:
cat > /etc/ld.so.conf << "EOF"
|