- glibc⚓︎
- Дополнительные необходимые файлы⚓︎
- Подготовка⚓︎
- Настройка⚓︎
- Для multilib⚓︎
- Значения параметров⚓︎
- Сборка⚓︎
- Тестирование⚓︎
- Установка⚓︎
- Установка локали⚓︎
- Настройка⚓︎
- nsswitch.conf⚓︎
- Установка tzdata⚓︎
- ld.so.conf⚓︎
- Для multilib⚓︎
- Подготовка⚓︎
- Настройка⚓︎
- Сборка⚓︎
- Установка⚓︎
- Установленные файлы⚓︎
- Краткое описание⚓︎
glibc⚓︎
Пакет содержит стандартную библиотеку языка Си (GNU C Library). Эта библиотека предоставляет функции для выделения памяти, поиска каталогов, открытия и закрытия файлов, чтения и записи файлов, обработки строк, соответствия шаблонов (pattern matching), арифметических операций, и т.д.
Версия: 2.34
Размер: 16.50Mb
Приоритет: Необходимый
MD5: 31998b53fb39cb946e96abc310af1c89
SBU (Сборка временной системы): 5.4
Дополнительные необходимые файлы⚓︎
https://lx4u.ru/downloads/packages/tzdata2021d.tar.gz
Подготовка⚓︎
Исправьте обнаруженную проблему безопасности:
sed -e '/NOTIFY_REMOVED)/s/)/ \&\& data.attr != NULL)/' \ -i sysdeps/unix/sysv/linux/mq_notify.c
Glibc по умолчанию использует несоответствующую стандарту FHS директорию /var/db . Для соответствия с FHS примените патч:
patch -Np1 -i ../glibc-2.33-fhs-1.patch
Пакет Glibc требует использовать отдельную директорию для сборки. Создайте её:
Настройка⚓︎
Если вы собираете систему с раздельной структурой директорий, убедитесь, что утилиты ldconfig и sln установлены в /usr/sbin :
echo "rootsbindir=/usr/sbin" > configparms
../configure \ --prefix=/usr \ --disable-werror \ --enable-kernel=3.2 \ --with-headers=/usr/include \ libc_cv_slibdir=/lib
Для multilib⚓︎
Добавьте параметр —enable-multi-arch
Значения параметров⚓︎
—enable-kernel=3.2 — оптимизирует glibc для использования с ядрами новее 3.2.
—with-headers=/usr/include — задаёт путь к заголовкам ядра.
Сборка⚓︎
Тестирование⚓︎
Создайте необходимую для тестирования ссылку (только если вы собираете систему с раздельными каталогами!):
ln -sfnv $PWD/elf/ld-linux-x86-64.so.2 /lib
Вы можете запустить тесты, выполнив:
Известно, что следующие тесты могут дать сбой:
- io/tst-lchmod , misc/tst-ttyname выдают ошибку в среде LX4;
- elf/tst-cpu-features-cpuinfo может дать сбой на некоторых архитектурах;
- nss/tst-nss-files-hosts-multi может потерпеть неудачу по пока неизвестным причинам;
- rt/tst-cputimer сильно зависит от версии ядра. На старых ядрах (4.14.91–4.14.96, 4.19.13–4.19.18, и 4.20.0–4.20.5) известно, что тесты выдают ошибку;
- Математические тесты иногда терпят неудачу при работе на системах, где ЦП не является относительно новым процессором Intel или AMD.
Установка⚓︎
Удалите предупреждение при установке и отключите запуск ненужных проверок:
touch /etc/ld.so.conf sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
Установите пакет и файлы конфигурации для демона nscd
make install cp -v ../nscd/nscd.conf /etc/nscd.conf mkdir -pv /var/cache/nscd
Если вы собираетесь использовать systemd , установите соответствующие файлы для демона nscd :
install -v -Dm644 ../nscd/nscd.tmpfiles /usr/lib/tmpfiles.d/nscd.conf install -v -Dm644 ../nscd/nscd.service /lib/systemd/system/nscd.service
Установка локали⚓︎
Разные страны и культуры имеют различные соглашения для коммуникаций. Эти соглашения состоят как из очень простых, таких как форматы даты и времени, так и из более сложных, таких как разговорный язык. «Интернационализация» программ GNU работает с помощью локалей (locales).
Чтобы установить локали, выполните:
mkdir -pv /usr/lib/locale localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true localedef -i en_US -f UTF-8 en_US.UTF-8
Чтобы установить локаль для языка, на котором вы планируете использовать систему, выберите из списка необходимую и выполните команду:
localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8 localedef -i de_DE -f ISO-8859-1 de_DE localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro localedef -i de_DE -f UTF-8 de_DE.UTF-8 localedef -i el_GR -f ISO-8859-7 el_GR localedef -i en_GB -f ISO-8859-1 en_GB localedef -i en_GB -f UTF-8 en_GB.UTF-8 localedef -i en_HK -f ISO-8859-1 en_HK localedef -i en_PH -f ISO-8859-1 en_PH localedef -i en_US -f ISO-8859-1 en_US localedef -i en_US -f UTF-8 en_US.UTF-8 localedef -i es_ES -f ISO-8859-15 es_ES@euro localedef -i es_MX -f ISO-8859-1 es_MX localedef -i fa_IR -f UTF-8 fa_IR localedef -i fr_FR -f ISO-8859-1 fr_FR localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro localedef -i fr_FR -f UTF-8 fr_FR.UTF-8 localedef -i is_IS -f ISO-8859-1 is_IS localedef -i is_IS -f UTF-8 is_IS.UTF-8 localedef -i it_IT -f ISO-8859-1 it_IT localedef -i it_IT -f ISO-8859-15 it_IT@euro localedef -i it_IT -f UTF-8 it_IT.UTF-8 localedef -i ja_JP -f EUC-JP ja_JP localedef -i ja_JP -f SHIFT_JIS ja_JP.SIJS 2> /dev/null || true localedef -i ja_JP -f UTF-8 ja_JP.UTF-8 localedef -i nl_NL@euro -f ISO-8859-15 nl_NL@euro localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R localedef -i ru_RU -f UTF-8 ru_RU.UTF-8 localedef -i se_NO -f UTF-8 se_NO.UTF-8 localedef -i ta_IN -f UTF-8 ta_IN.UTF-8 localedef -i tr_TR -f UTF-8 tr_TR.UTF-8 localedef -i zh_CN -f GB18030 zh_CN.GB18030 localedef -i zh_HK -f BIG5-HKSCS zh_HK.BIG5-HKSCS localedef -i zh_TW -f UTF-8 zh_TW.UTF-8
вы можете установить все локали, которые содержатся в файле localedata/SUPPORTED . Выполните следующую команду:
make localedata/install-locales
Настройка⚓︎
nsswitch.conf⚓︎
cat > /etc/nsswitch.conf "EOF" # Begin /etc/nsswitch.conf passwd: files group: files shadow: files hosts: files dns networks: files protocols: files services: files ethers: files rpc: files # End /etc/nsswitch.conf EOF
Установка tzdata⚓︎
Установите информацию о часовых поясах:
tar -xf ../../tzdata2021d.tar.gz ZONEINFO=/usr/share/zoneinfo mkdir -pv $ZONEINFO/posix,right> for tz in etcetera southamerica northamerica europe africa antarctica \ asia australasia backward; do zic -L /dev/null -d $ZONEINFO $tz> zic -L /dev/null -d $ZONEINFO/posix $tz> zic -L leapseconds -d $ZONEINFO/right $tz> done cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO zic -d $ZONEINFO -p America/New_York unset ZONEINFO
Для выбора часового пояса запустите скрипт:
Для сохранения выбранного часового пояса выполните:
ln -sfv /usr/share/zoneinfo/ < xxx>/etc/localtime
Где < xxx>— путь к вашему часовому поясу.
ld.so.conf⚓︎
Создайте файл /etc/ld.so.conf :
cat > /etc/ld.so.conf "EOF" # Begin /etc/ld.so.conf /usr/local/lib /opt/lib include /etc/ld.so.conf.d/*.conf EOF mkdir -pv /etc/ld.so.conf.d
Для multilib⚓︎
Подготовка⚓︎
Для multilib требуется установить 32-битную версию glibc. Удалите оставшиеся от 64-битной сборки glibc файлы:
rm -rf ./* find .. -name "*.a" -delete
Настройка⚓︎
CC="gcc -m32" CXX="g++ -m32" \ ../configure \ --prefix=/usr \ --host=i686-pc-linux-gnu \ --build=$(../scripts/config.guess) \ --enable-kernel=3.2 \ --with-headers=/usr/include \ --enable-multi-arch \ --libdir=/usr/lib32 \ --libexecdir=/usr/lib32 \ libc_cv_slibdir=/usr/lib32
Сборка⚓︎
Установка⚓︎
make DESTDIR=$PWD/DESTDIR install cp -a DESTDIR/lib32/* /lib32/ cp -a DESTDIR/usr/lib32/* /usr/lib32/ install -vm644 DESTDIR/usr/include/gnu/lib-names,stubs>-32.h \ /usr/include/gnu/ ln -svf ../lib32/ld-linux.so.2 /lib/ld-linux.so.2
Добавьте запись в ld.so.conf :
echo "/usr/lib32" >> /etc/ld.so.conf
Установленные файлы⚓︎
Программы: catchsegv, gencat, getconf, getent, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, makedb, mtrace, nscd, pcprofiledump, pldd, sln, sotruss, sprof, tzselect, xtrace, zdump, zic
Библиотеки: ld-2.33.so, libBrokenLocale., libSegFault.so, libanl., libc., libc_nonshared.a, libcrypt., libdl., libg.a, libm., libmcheck.a, libmemusage.so, libmvec., libnsl., libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libpcprofile.so, libpthread., libpthread_nonshared.a, libresolv., librt., libthread_db.so, libutil.
Директории: /usr/include/arpa, /usr/include/bits, /usr/include/gnu, /usr/include/net, /usr/include/netash, /usr/include/netatalk, /usr/include/netax25, /usr/include/neteconet, /usr/include/netinet, /usr/include/netipx, /usr/include/netiucv, /usr/include/netpacket, /usr/include/netrom, /usr/include/netrose, /usr/include/nfs, /usr/include/protocols, /usr/include/rpc, /usr/include/sys, /usr/lib/audit, /usr/lib/gconv, /usr/lib/locale, /usr/libexec/getconf, /usr/share/i18n, /usr/share/zoneinfo, /var/cache/nscd, /var/lib/nss_db
Краткое описание⚓︎
catchsegv — Может использоваться для создания трассировки стека, когда программа завершается с ошибкой сегментации.
gencat — Создаёт каталоги сообщений.
getconf — Отображает значения конфигурации системы для специфичных переменных файловой системы.
getent — Получает записи из административной базы данных.
iconv — Выполняет преобразование набора символов в другую кодировку.
iconvconfig — Создает ускоренную загрузку iconv модулей файлов конфигурации.
ldconfig — Настраивает привязки динамического компоновщика.
ldd — помогает определить список разделяемых библиотек (shared libraries), от которых зависит программа.
lddlibc4 — Помогает ldd с объектными файлами.
locale — Отображает всевозможную информацию о текущей локали.
localedef — Компилирует спецификации локали.
makedb — Создает простую базу данных из текстового ввода.
mtrace — Читает и интерпретирует файл трассировки памяти и отображает сводку в удобочитаемом формате.
nscd — Служба (демон), которая предоставляет кэш для наиболее общих запросов службы имен.
pldd — Список динамических общих объектов, используемых запущенными процессами.
sln — Статически слинкованная программа ln .
sotruss — Выполняет трассировку вызовов процедуры разделяемой библиотеки для указанной команды.
sprof — Считывает и отображает данные профилирования общих объектов.
tzselect — Выясняет у пользователя его текущее местоположение и выводит описание часового пояса на устройство стандартного вывода.
xtrace — Трассировка выполняемой программы, и выводит в реальном времени на устройство стандартного вывода выполняемые функции.
zdump Распечатывает текущее время для каждого часового пояса, указанного в командной строке.
zic — Компилятор часовых поясов.
ld.so — Программа выполняет поиск и загружает динамические библиотеки, необходимые программам, а также подготавливает программы к запуску и запускают их.
libBrokenLocale — Используется внутри Glibc как грубый хак, чтобы обработать запущенную сломанную программу (например некоторые приложения Motif). Изучите комментарии в файле locale/broken_cur_max.c для получения более подробной информации.
libSegFault — Обработчик сигнала ошибки сегментации, используемый catchsegv.
libanl — Асинхронная библиотека поиска имен.
libc — Стандартная библиотека языка Си.
libcrypt — Криптографическая библиотека.
libdl — Интерфейс библиотеки динамической линковки.
libg — библиотека-заглушка, не содержащая функций. Раньше была библиотекой выполнения для g++.
libm — Математическая библиотека.
libmcheck — включает проверку распределения памяти при линковке.
libmemusage — Используется программой memusage чтобы помочь собрать информацию об использовании памяти в программе.
libnsl — библиотека сетевых сервисов.
libnss — Библиотеки коммутаторов имен, содержащие функции для разрешение имен хостов, имен пользователей, имен групп, псевдонимов, служб, протоколов и т.д.
libpthread — POSIX библиотека потоков.
libresolv — Содержит функции для создания, отправки и интерпретации пакетов на серверы доменных имен в Интернете.
librt — Содержит функции, обеспечивающие большую часть указанных интерфейсов в POSIX.1b расширении.
libthread_db — Содержит функции, полезные для построения отладчиков для многопоточных программ.
libutil — Содержит ключи для «стандартных» функций, используемых в большинстве различных утилит Unix.