Инструменты пользователя

Инструменты сайта

  • Показать страницу
  • История страницы
  • Ссылки сюда
  • Оставить на чай
  • Экспорт в PDF
  • Наверх

  • software:linux_server:lfs:chapter08

    Различия

    Показаны различия между двумя версиями страницы.

    Ссылка на это сравнение

    Предыдущая версия справа и слеваПредыдущая версия
    Следующая версия
    Предыдущая версия
    software:linux_server:lfs:chapter08 [2024/07/02 14:18] – [IV. Сборка системы LFS. Глава 8. Установка базового системного программного обеспечения] vladpolskiysoftware:linux_server:lfs:chapter08 [2024/07/02 20:30] (текущий) – [8.13.1. Установка пакета Bc] vladpolskiy
    Строка 223: Строка 223:
      
     =====8.5. Glibc-2.39===== =====8.5. Glibc-2.39=====
     +
     +|Пакет Glibc содержит основную библиотеку C. Эта библиотека предоставляет основные процедуры для выделения памяти, поиска в каталогах, открытия и закрытия файлов, чтения и записи файлов, обработки строк, сопоставления с образцом, арифметики и так далее||
     +|Приблизительное время сборки:|1.2 SBU|
     +|Требуемое дисковое пространство:|3.1 GB|
     +
     +====8.5.1. Установка пакета Glibc====
     +
     +Некоторые программы Glibc используют не совместимый с FHS каталог /var/db для хранения своих данных во время выполнения. Примените следующий патч, чтобы эти программы хранили свои данные в каталогах, совместимых с FHS:
     +
     +<code>
     +patch -Np1 -i ../glibc-2.39-fhs-1.patch
     +</code>
     +
     +Документация Glibc рекомендует выполнять компиляцию в отдельном каталоге:
     +
     +<code>
     +mkdir -v build
     +cd       build
     +</code>
     +
     +Убедитесь, что утилиты ldconfig и sln будут установлены в /usr/sbin:
     +
     +<code>
     +echo "rootsbindir=/usr/sbin" > configparms
     +</code>
     +
     +Подготовьте Glibc к компиляции:
     +
     +<code>
     +../configure --prefix=/usr                            \
     +             --disable-werror                         \
     +             --enable-kernel=4.19                     \
     +             --enable-stack-protector=strong          \
     +             --disable-nscd                           \
     +             libc_cv_slibdir=/usr/lib
     +</code>
     +
     +===Значение параметров настройки:===
     +
     +  * **--disable-werror**
     +Отключает параметр -Werror, передаваемый GCC. Это необходимо для запуска набора тестов.
     +
     +  * **--enable-kernel=4.19**
     +Этот параметр сообщает системе сборки, что Glibc может использоваться с ядрами старше 4.19. Это значение используется для создание обходных путей на случай, если системный вызов, представленный в более поздней версии, нельзя будет использовать.
     +
     +  * **--enable-stack-protector=strong**
     +Этот параметр повышает безопасность системы за счет добавления дополнительного кода для проверки переполнения буфера. Обратите внимание, что Glibc всегда явно переопределяет параметры GCC по умолчанию, поэтому необходимо всегда указывать эту опцию, несмотря на то, что мы уже указали --enable-default-ssp для GCC.
     +
     +  * **--disable-nscd**
     +Параметр отключает сборку демона кэша службы имен, который больше не используется.
     +
     +  * **libc_cv_slibdir=/usr/lib**
     +Эта переменная устанавливает правильную библиотеку для всей системы. Мы не хотим, чтобы использовалась lib64
     +
     +Скомпилируйте пакет:
     +
     +<code>
     +make
     +</code>
     +
     +<WRAP left round alert 100%>
     +**Важно** \\  
     +В этом разделе набор тестов для Glibc считается критически важным. Ни в коем случае не пропускайте его.
     +</WRAP>
     +
     +Как правило, несколько тестов не проходят. Ошибки тестирования, перечисленные ниже, можно игнорировать.
     +
     +<code>
     +make check
     +</code>
     +
     +Вы можете увидеть, что ряд тестов завершились неудачей. Набор тестов Glibc в некоторой степени зависит от хост-системы. Несколько ошибок из более чем 5000 тестов можно игнорировать. Список наиболее распространенных проблем последних версий LFS:
     +
     +  * Известно, что **io/tst-lchmod** не работает в среде **chroot LFS**.
     +  * Известно, что некоторые тесты, например **nss/tst-nss-files-hosts-multi и nptl/tst-thread-affinity** завершаются неудачей из-за тайм-аута (особенно когда система работает относительно медленно и/или набор тестов запущен в несколько потоков). Эти тесты могут быть идентифицированы с помощью следующей команды:
     +
     +<code>
     +grep "Timed out" -l $(find -name \*.out)
     +</code>
     +
     +Можно повторно запустить отдельный тест, увеличив таймаут с помощью команды **TIMEOUTFACTOR=<factor> make test t=<test name>**. Например, **TIMEOUTFACTOR=10 make test t=nss/tst-nss-files-hosts-multi** перезапустит **nss/tst-nss-files-hosts-multi**, увеличив начальный таймаут в 10 раз.
     +
     +  * Кроме того, некоторые тесты могут завершиться неудачно при использовании относительно старой модели процессора (например, **elf/tst-cpu-features-cpuinfo**) или версии ядра хоста (например, **stdlib/tst-arc4random-thread**).
     +
     +На этапе установки **Glibc** будет жаловаться на отсутствие файла **/etc/ld.so.conf**, хотя это безобидное сообщение, предотвратить его появление можно с помощью команды:
     +
     +<code>
     +touch /etc/ld.so.conf
     +</code>
     +
     +Исправьте Makefile, чтобы пропустить устаревшую проверку работоспособности, которая завершается неудачей в современной конфигурации Glibc:
     +
     +<code>
     +sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
     +</code>
     +
     +<WRAP left round alert 100%>
     +**Важно** \\  
     +При обновлении Glibc до новой минорной версии (например, с Glibc-2.36 до Glibc-2.39) в работающей системе LFS вам необходимо принять некоторые дополнительные меры предосторожности, чтобы избежать поломки системы:
     +
     +  * Обновление Glibc в системе LFS до версии 11.0 не поддерживается. Пересоберите LFS, если вы используете такую старую систему, но вам нужна более новая Glibc.
     +  * При обновлении системы LFS до версии 12.0 установите Libxcrypt следуя инструкции Раздел 8.26, «Libxcrypt-4.4.36.». В дополнение к обычной установке Libxcrypt, **вы ДОЛЖНЫ следовать примечанию со страницы Libxcrypt, чтобы установить libcrypt.so.1* (заменив libcrypt.so.1 из предыдущей установки Glibc).**
     +  * При обновлении системы LFS до версии 12.1 удалите программу nscd:
     +<code>
     +rm -f /usr/sbin/nscd
     +</code>
     +Если система (до LFS 12.1) основана на Systemd, необходимо также отключить и остановить службу nscd прямо сейчас:
     +<code>
     +systemctl disable --now nscd
     +</code>
     +  * Обновите ядро и перезагрузитесь, если оно старше 4.19 (проверьте текущую версию с помощью uname -r) или, если вы хотите обновить имеющееся ядро, выполните действия из Раздел 10.3, «Linux-6.7.4.»
     +  * Обновите заголовочные файлы API ядра, если они старше 4.19 (проверьте текущую версию с помощью cat /usr/include/linux/version.h) или, если вы просто хотите обновить их, следуйте Раздел 5.4, «Заголовочные файлы Linux-6.7.4 API» (но удалив $LFS из команды cp).
     +  * Выполните установку DESTDIR и обновите общие библиотеки Glibc в системе с помощью одной команды install:
     +<code>
     +make DESTDIR=$PWD/dest install
     +install -vm755 dest/usr/lib/*.so.* /usr/lib
     +</code>
     +Крайне важно строго следовать описанным выше шагам, если вы не совсем понимаете, что делаете. **Любое неожиданное отклонение может сделать систему полностью непригодной для использования. ВЫ ПРЕДУПРЕЖДЕНЫ.**
     +Затем продолжайте выполнять команды **make install, sed** для **/usr/bin/ldd** и команды для установки локалей. Как только они будут выполнены, перезагрузите систему.
     +</WRAP>
     +
     +Установите пакет:
     +
     +<code>
     +make install
     +</code>
     +
     +Исправьте жестко заданный путь к исполняемому загрузчику в скрипте ldd:
     +
     +<code>
     +sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd
     +</code>
     +
     +Затем установите локали, которые дадут возможность системе отвечать на разных языках. Ни одна из локалей не требуется системе, но если некоторые из них отсутствуют, то наборы тестов ряда пакетов будут пропускать важные тестовые сценарии.
     +
     +Отдельные локали можно установить с помощью программы **localedef**. Например, вторая команда **localedef** приведенная ниже, объединяет определение независимой от набора символов локали **/usr/share/i18n/locales/cs_CZ** с набором символов **/usr/share/i18n/charmaps/UTF-8.gz** и добавляет результат в файл **/usr/lib/locale/locale-archive**. Следующие инструкции установят минимальный набор локалей, необходимый для оптимального охвата тестов
     +
     +<code>
     +mkdir -pv /usr/lib/locale
     +localedef -i C -f UTF-8 C.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.SJIS 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
     +</code>
     +
     +Кроме того, установите локаль для вашей страны, языка и набора символов.
     +
     +В качестве альтернативы, установите сразу все локали перечисленные в файле **glibc-2.39/localedata/SUPPORTED** (он включает все локали из списка выше и многие другие), выполнив команду:
     +
     +<code>
     +make localedata/install-locales
     +</code>
     +
     +Затем используйте команду **localedef** для создания и установки локалей, не перечисленных в файле **glibc-2.39/localedata/SUPPORTED**, когда они вам понадобятся. Например, для некоторых тестов в этой главе потребуются следующие две локали:
     +
     +<code>
     +localedef -i C -f UTF-8 C.UTF-8
     +localedef -i ja_JP -f SHIFT_JIS ja_JP.SJIS 2> /dev/null || true
     +</code>
     +
     +<WRAP left round info 100%>
     +**Примечание** \\  
     +Glibc теперь использует libidn2 для разрешения интернационализированных доменных имен. Если такая функция необходима, то инструкцию по установке libidn2 можно найти на странице [[https://mirror.linuxfromscratch.ru/blfs/view/stable-systemd/general/libidn2.html|BLFS libidn2]].
     +</WRAP>
     +
     +====8.5.2. Настройка Glibc====
     +===8.5.2.1. Добавление nsswitch.conf===
     +
     +Необходимо создать файл **/etc/nsswitch.conf**, потому что настроенный по умолчанию Glibc плохо работает в сетевой среде.
     +
     +Создайте новый фай **/etc/nsswitch.conf**, выполнив следующие действия:
     +
     +<code>
     +cat > /etc/nsswitch.conf << "EOF"
     +# Begin /etc/nsswitch.conf
     +
     +passwd: files systemd
     +group: files systemd
     +shadow: files systemd
     +
     +hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns
     +networks: files
     +
     +protocols: files
     +services: files
     +ethers: files
     +rpc: files
     +
     +# End /etc/nsswitch.conf
     +EOF
     +</code>
     +
     +====8.5.2.2. Добавление данных о часовом поясе====
     +
     +Установите и настройте часовой пояс следующим образом:
     +
     +<code>
     +tar -xf ../../tzdata2024a.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
     +</code>
     +
     +===Значение команд zic:===
     +
     +  * **zic -L /dev/null ...**
     +Создаёт часовые пояса posix без секунд координации. Обычно их помещают как в zoneinfo так и в zoneinfo/posix. Часовые пояса POSIX должны быть прописаны в zoneinfo, иначе различные тесты будут сообщать об ошибках. На встраиваемых системах с небольшим диском, где часовые пояса никогда не будут обновляться, можно сэкономить примерно 1.9 MB не используя каталог posix, однако некоторые приложения или наборы тестов могут вызывать сбои.
     +
     +  * **zic -L leapseconds ...**
     +Создаёт правильные часовые пояса с секундами координации. На встраиваемых системах с небольшим диском, где часовые пояса никогда не будут обновляться, а правильность времени неважна, можно выиграть примерно 1.9 MB, исключив каталог right.
     +
     +  * **zic ... -p ...**
     +Создаёт файл posixrules. Используется New York, потому что POSIX требует, чтобы правила перехода на летнее время соответствовали правилам США.
     +
     +Один из способов определить местный часовой пояс — запустить следующий скрипт:
     +
     +<code>
     +tzselect
     +</code>
     +
     +После нескольких вопросов о местоположении скрипт выдаст наименование часового пояса (например **America/Edmonton**). В файле **/usr/share/zoneinfo** перечислены и другие возможные часовые пояса, такие как **Canada/Eastern** или **EST5EDT**, которые не распознаются скриптом, но могут быть использованы.
     +
     +Создайте файл **/etc/localtime** выполнив:
     +
     +<code>
     +ln -sfv /usr/share/zoneinfo/<xxx> /etc/localtime
     +</code>
     +
     +Замените <xxx> на имя выбранного часового пояса (например, Europe/Moscow).
     +
     +====8.5.2.3. Настройка динамического загрузчика====
     +
     +По умолчанию, динамический загрузчик (**/lib/ld-linux.so.2**) ищет в каталоге **/usr/lib**, нужные для работы программ библиотеки. Однако, если библиотеки находятся в другом каталоге, то его необходимо указать в файле **/etc/ld.so.conf**, чтобы динамический загрузчик мог их найти. Два каталога - **/usr/local/lib** и **/opt/lib** часто используются для дополнительных библиотек, поэтому добавьте их в пути поиска для динамического загрузчика.
     +
     +Создайте новый файл **/etc/ld.so.conf** выполнив:
     +
     +<code>
     +cat > /etc/ld.so.conf << "EOF"
     +# Begin /etc/ld.so.conf
     +/usr/local/lib
     +/opt/lib
     +
     +EOF
     +</code>
     +
     +Динамический загрузчик может выполнить поиск в каталоге и включить содержимое найденных там файлов. Обычно такие файлы состоят из одной строки и содержат путь к библиотеке. Чтобы добавить эту возможность, выполните следующие команды:
     +
     +<code>
     +cat >> /etc/ld.so.conf << "EOF"
     +# Add an include directory
     +include /etc/ld.so.conf.d/*.conf
     +
     +EOF
     +mkdir -pv /etc/ld.so.conf.d
     +</code>
     +
     +====8.5.3. Содержимое пакета Glibc====
     +
     +|Установленные файлы:|gencat, getconf, getent, iconv, iconvconfig, ldconfig, ldd, lddlibc4, ld.so (symlink to ld-linux-x86-64.so.2 or ld-linux.so.2), locale, localedef, makedb, mtrace, pcprofiledump, pldd, sln, sotruss, sprof, tzselect, xtrace, zdump и zic|
     +|Установленные библиотеки:|ld-linux-x86-64.so.2, ld-linux.so.2, libBrokenLocale.{a,so}, libanl.{a,so}, libc.{a,so}, libc_nonshared.a, libc_malloc_debug.so, libdl.{a,so.2}, libg.a, libm.{a,so}, libmcheck.a, libmemusage.so, libmvec.{a,so}, libnsl.so.1, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libpcprofile.so, libpthread.{a,so.0}, libresolv.{a,so}, librt.{a,so.1}, libthread_db.so и libutil.{a,so.1}|
     +|Созданные каталоги:|/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/lib/nss_db|
     +
     +Краткое описание
     +
     +|gencat|Создает каталоги сообщений|
     +|getconf|Отображает настройки системы для специфичных переменных файловой системы|
     +|getent|Получает записи из административной базы данных|
     +|iconv|Выполняет преобразование набора символов|
     +|iconvconfig|Создает быстрозагружаемые файлы настроек модуля iconv|
     +|ldconfig|Настраивает привязки времени выполнения динамического компоновщика|
     +|ldd|Сообщает, какие общие библиотеки требуются каждой программе или общей библиотеке|
     +|lddlibc4|Помогает ldd работать с объектными файлами. Он не существует на более новых архитектурах, таких как x86_64|
     +|locale|Выводит различную информацию о текущей локали|
     +|localedef|Компилирует спецификации локали|
     +|makedb|Создает простую базу данных на основе текстового ввода|
     +|mtrace|Читает и интерпретирует файл трассировки памяти; отображает сводку в удобочитаемом формате|
     +|pcprofiledump|Создает дамп информации, генерируемой при профилировании ПК|
     +|pldd|Перечисляет динамические общие объекты, используемые запущенными процессами.|
     +|sln|Статически скомпонованная программа ln|
     +|sotruss|Отслеживает вызовы процедур общей библиотеки указанной команды|
     +|sprof|Читает и отображает данные профилирования общих объектов.|
     +|tzselect|Запрашивает у пользователя информацию о текущем местоположении системы и выводит описание соответствующего часового пояса.|
     +|xtrace|Отслеживает выполнение программы, отображая выполняемую в данный момент функцию|
     +|zdump|Выдает дамп часового пояса|
     +|zic|Компилятор часовых поясов|
     +|ld-*.so|Вспомогательная программа для исполняемых файлов общей библиотеки|
     +|libBrokenLocale|Используется внутри Glibc как грубый хак для запуска сломанных программ (например, некоторые приложения Motif). Прочитайте комментарии в glibc-2.39/locale/broken_cur_max.c для получения дополнительной информации|
     +|libanl|Библиотека-заглушка, не содержащая функций. Ранее это была библиотека асинхронного поиска имен, функции которой теперь находятся в libc|
     +|libc|Основная библиотека C|
     +|libc_malloc_debug|Включает проверку выделения памяти при предварительной загрузке|
     +|libdl|Библиотека-заглушка, не содержащая функций. Ранее была библиотекой интерфейса динамической компоновки, функции которой теперь находятся в libc|
     +|libg|Библиотека-заглушка без функций. Раньше была библиотекой среды выполнения для g++|
     +|libm|Математическая библиотека|
     +|libmvec|Библиотека векторных математических вычислений, подключаемая по мере необходимости при использовании libm|
     +|libmcheck|Включает проверку выделения памяти при подключении к|
     +|libmemusage|Используется memusage для сбора информации об использовании памяти программой|
     +|libnsl|Библиотека сетевых служб, которая в настоящее время устарела|
     +|libnss_*|Модули Name Service Switch, содержащие функции для разрешения имен хостов, имен пользователей, имен групп, псевдонимов, служб, протоколов и т. д. Загружаются libc в соответствии с конфигурацией в /etc/nsswitch.conf|
     +|libpcprofile|Содержит функции профилирования, используемые для отслеживания времени, потраченного процессором в конкретных строках исходного кода|
     +|libpthread|Библиотека-заглушка, не содержащая функций. Ранее содержала функции, обеспечивающие большинство интерфейсов, заданных POSIX.1c Threads Extensions (расширения реализации потоков) и интерфейсы семафоров, указанных в POSIX.1b Real-time Extension (расширения реального времени), теперь эти функции находятся в libc|
     +|libresolv|Содержит функции создания, пересылки и интерпретации пакетов, используемых на серверах доменных имен в сети интернет|
     +|librt|Содержит функции, реализующие большую часть интерфейсов, определяемых в POSIX.1b Real-time Extension (расширения реального времени)|
     +|libthread_db|Содержит функции, полезные для сборки отладчиков для многопоточных программ|
     +|libutil|Библиотека-заглушка, не содержащая функций. Ранее содержал код для «стандартных» функций, используемых во многих утилитах Unix. Эти функции теперь находятся в libc|
     +
     +=====8.6. Zlib-1.3.1=====
     +
     +|Пакет Zlib содержит подпрограммы сжатия и распаковки, используемые некоторыми программами.||
     +|Приблизительное время сборки:|менее 0.1 SBU|
     +|Требуемое дисковое пространство:|6.4 MB|
     +
     +====8.6.1. Установка пакета Zlib====
     +
     +Подготовьте Zlib к компиляции:
     +
     +<code>
     +./configure --prefix=/usr
     +</code>
     +
     +Скомпилируйте пакет:
     +
     +<code>
     +make
     +</code>
     +
     +Чтобы протестировать пакет, выполните:
     +
     +<code>
     +make check
     +</code>
     +
     +Удалите бесполезную статическую библиотеку:
     +
     +<code>
     +rm -fv /usr/lib/libz.a
     +</code>
     +
     +====8.6.2. Содержимое пакета Zlib====
     +
     +|Установленные файлы:|libz.so|
     +
     +Краткое описание
     +
     +|libz|Содержит функции сжатия и распаковки, используемые некоторыми программами.|
     +
     +=====8.7. Bzip2-1.0.8=====
     +
     +|Пакет Bzip2 содержит программы для сжатия и распаковки файлов. Сжатие текстовых файлов с помощью bzip2 даёт больший процент сжатия, чем традиционный gzip.||
     +|Приблизительное время сборки:|менее 0.1 SBU|
     +|Требуемое дисковое пространство:|7.2 MB|
     +
     +====8.7.1. Установка пакета Bzip2====
     +
     +Примените патч, который установит документацию для этого пакета:
     +
     +<code>
     +patch -Np1 -i ../bzip2-1.0.8-install_docs-1.patch
     +</code>
     +
     +Следующая команда гарантирует установку символических ссылок с относительным путём:
     +
     +<code>
     +sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
     +</code>
     +
     +Убедитесь, что справочные страницы установлены в правильном месте:
     +
     +<code>
     +sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile
     +</code>
     +
     +Подготовьте Bzip2 к компиляции:
     +
     +<code>
     +make -f Makefile-libbz2_so
     +make clean
     +</code>
     +
     +Значение параметра make:
     +
     +  * **-f Makefile-libbz2_so**
     +Этот параметр позволяет выполнить сборку, с использованием другого **Makefile**, в данном случае **Makefile-libbz2_so**, который создает динамическую библиотеку **libbz2.so** и связывает с ней **Bzip2**.
     +
     +Скомпилируйте и протестируйте пакет:
     +
     +<code>
     +make
     +</code>
     +
     +Установите пакет:
     +
     +<code>
     +make PREFIX=/usr install
     +</code>
     +
     +Установите библиотеку:
     +
     +<code>
     +cp -av libbz2.so.* /usr/lib
     +ln -sv libbz2.so.1.0.8 /usr/lib/libbz2.so
     +</code>
     +
     +Установите общий бинарный файл bzip2 в каталог /usr/bin, и замените две копии bzip2 символическими ссылками:
     +
     +<code>
     +cp -v bzip2-shared /usr/bin/bzip2
     +for i in /usr/bin/{bzcat,bunzip2}; do
     +  ln -sfv bzip2 $i
     +done
     +</code>
     +
     +Удалите ненужную статическую библиотеку:
     +
     +<code>
     +rm -fv /usr/lib/libbz2.a
     +</code>
     +
     +====8.7.2. Содержимое пакета Bzip2====
     +
     +|Установленные программы:|bunzip2 (ссылка на bzip2), bzcat (ссылка на bzip2), bzcmp (ссылка на bzdiff), bzdiff, bzegrep (ссылка на bzgrep), bzfgrep (ссылка на bzgrep), bzgrep, bzip2, bzip2recover, bzless (ссылка на bzmore) и bzmore|
     +|Установленные библиотеки:|libbz2.so|
     +|Созданные каталоги:|/usr/share/doc/bzip2-1.0.8|
     +
     +Краткое описание
     +
     +|bunzip2|Распаковывает bzip-файлы|
     +|bzcat|Распаковывает в поток стандартного вывода|
     +|bzcmp|Запускает программу cmp для bzip файлов|
     +|bzdiff|Запускает программу diff для bzip файлов|
     +|bzegrep|Запускает программу egrep для bzip файлов|
     +|bzfgrep|Запускает программу fgrep для bzip файлов|
     +|bzgrep|Запускает программу grep для bzip файлов|
     +|bzip2|Сжимает файлы, используя алгоритм сжатия текста с блочной сортировкой Барроуза — Уилера и кодирование Хафмана; степень сжатия лучше, чем у более традиционных архиваторов, использующих алгоритмы «Lempel-Ziv», например gzip|
     +|bzip2recover|Пытается восстанавливать данные из поврежденных архивов|
     +|bzless|Запускает программу less для bzip файлов|
     +|bzmore|Запускает программу more для bzip файлов|
     +|libbz2|Библиотека, реализующая сжатие данных без потерь с использованием алгоритма Барроуза-Уилера.|
     +
     +=====8.8. Xz-5.4.6=====
     +
     +|Пакет Xz содержит программы для сжатия и распаковки файлов. Он предоставляет возможности для lzma и более новых форматов сжатия xz. Сжатие текстовых файлов с помощью xz дает лучший процент сжатия, чем с традиционные gzip или bzip2.||
     +|Приблизительное время сборки:|0.1 SBU|
     +|Требуемое дисковое пространство:|25 MB|
     +
     +====8.8.1. Установка пакета Xz====
     +
     +Подготовьте Xz к компиляции:
     +
     +<code>
     +./configure --prefix=/usr    \
     +            --disable-static \
     +            --docdir=/usr/share/doc/xz-5.4.6
     +</code>
     +
     +Скомпилируйте пакет:
     +
     +<code>
     +make
     +</code>
     +
     +Чтобы протестировать пакет, выполните:
     +
     +<code>
     +make check
     +</code>
     +
     +Установите пакет:
     +
     +<code>
     +make install
     +</code>
     +
     +====8.8.2. Содержимое пакета Xz====
     +
     +|Установленные программы:|lzcat (ссылка на xz), lzcmp (ссылка на xzdiff), lzdiff (ссылка на xzdiff), lzegrep (ссылка на xzgrep), lzfgrep (ссылка на xzgrep), lzgrep (ссылка на xzgrep), lzless (ссылка на xzless), lzma (ссылка на xz), lzmadec, lzmainfo, lzmore (ссылка на xzmore), unlzma (ссылка на xz), unxz (ссылка на xz), xz, xzcat (ссылка на xz), xzcmp (ссылка на xzdiff), xzdec, xzdiff, xzegrep (ссылка на xzgrep), xzfgrep (ссылка на xzgrep), xzgrep, xzless и xzmore|
     +|Установленные библиотеки:|liblzma.so|
     +|Созданные каталоги:|/usr/include/lzma и /usr/share/doc/xz-5.4.6|
     +
     +Краткое описание
     +
     +|lzcat|Распаковывает в стандартный поток вывода|
     +|lzcmp|Запускает cmp для файлов сжатых LZMA|
     +|lzdiff|Запускает diff для файлов сжатых LZMA|
     +|lzegrep|Запускает egrep для файлов сжатых LZMA|
     +|lzfgrep|Запускает fgrep для файлов сжатых LZMA|
     +|lzgrep|Запускает grep для файлов сжатых LZMA|
     +|lzless|Запускает less для файлов сжатых LZMA|
     +|lzma|Сжимает или распаковывает файлы в формате LZMA|
     +|lzmadec|Небольшой и быстрый декодер для файлов сжатых LZMA.|
     +|lzmainfo|Показывает информацию, хранящуюся в заголовке сжатого файла LZMA|
     +|lzmore|Запускает more для файлов сжатых LZMA|
     +|unlzma|Распаковывает файлы в формате LZMA|
     +|unxz|Распаковывает файлы в формате XZ|
     +|xz|Сжимает или распаковывает файлы в формате XZ.|
     +|xzcat|Распаковывает в стандартный поток вывода|
     +|xzcmp|Запускает cmp для сжатых XZ файлов|
     +|xzdec|Небольшой и быстрый декодер для файлов сжатых XZ|
     +|xzdiff|Запускает diff для сжатых XZ файлов|
     +|xzegrep|Запускает egrep для сжатых XZ файлов|
     +|xzfgrep|Запускает fgrep для сжатых XZ файлов|
     +|xzgrep|Запускает grep для сжатых XZ файлов|
     +|xzless|Запускает less для сжатых XZ файлов|
     +|xzmore|Запускает more для сжатых XZ файлов|
     +|liblzma|Библиотека, реализующая сжатие данных без потерь с блочной сортировкой с использованием алгоритма Lempel-Ziv-Markov|
     +
     +=====8.9. Zstd-1.5.5=====
     +
     +|Zstandard — это алгоритм сжатия в реальном времени, обеспечивающий высокую степень сжатия. Он предлагает очень широкий диапазон компромиссов между сжатием и скоростью при поддержке очень быстрого декодера.||
     +|Приблизительное время сборки:|0.5 SBU|
     +|Требуемое дисковое пространство:|77 MB|
     +
     +====8.9.1. Установка пакета Zstd====
     +
     +Скомпилируйте пакет:
     +
     +<code>
     +make prefix=/usr
     +</code>
     +
     +
     +<WRAP left round info 100%>
     +**Примечание** \\  
     +В выходных данных теста есть несколько мест, выводящих сообщение 'failed'. Они ожидаемы, и только 'FAIL' является фактическим сбоем теста. Сбоев при тестировании быть не должно.
     +</WRAP>
     +
     +Чтобы протестировать пакет, выполните:
     +
     +<code>
     +make check
     +</code>
     +
     +Установите пакет:
     +
     +<code>
     +make prefix=/usr install
     +</code>
     +
     +Удалите статическую библиотеку:
     +
     +<code>
     +rm -v /usr/lib/libzstd.a
     +</code>
     +
     +====8.9.2. Содержимое пакета Zstd====
     +
     +|Установленные программы:|zstd, zstdcat (ссылка на zstd), zstdgrep, zstdless, zstdmt (ссылка на zstd) и unzstd (ссылка на zstd)|
     +|Установленные библиотеки:|libzstd.so|
     +
     +Краткое описание
     +
     +|zstd|Сжимает или распаковывает файлы в формате ZSTD|
     +|zstdgrep|Запускает grep на сжатых ZSTD файлах|
     +|zstdless|Запускает less на сжатых ZSTD файлах|
     +|libzstd|Библиотека, реализующая сжатие данных без потерь, с использованием алгоритма ZSTD|
     +
     +=====8.10. File-5.45=====
     +
     +|Пакет File содержит утилиту для определения типа указанного файла или файлов||
     +|Приблизительное время сборки:|менее 0.1 SBU|
     +|Требуемое дисковое пространство:|17 MB|
     +
     +====8.10.1. Установка пакета File====
     +
     +Подготовьте File к компиляции:
     +
     +<code>
     +./configure --prefix=/usr
     +</code>
     +
     +Скомпилируйте пакет:
     +
     +<code>
     +make
     +</code>
     +
     +Чтобы протестировать пакет, выполните:
     +
     +<code>
     +make check
     +</code>
     +
     +Установите пакет:
     +
     +<code>
     +make install
     +</code>
     +
     +
     +====8.10.2. Содержимое пакета File====
     +
     +|Установленные программы:|file|
     +|Установленные библиотеки:|libmagic.so|
     +
     +Краткое описание
     +
     +|file|Пытается классифицировать каждый указанный файл; он делает это, выполняя серию тестов—тесты файловой системы, тесты магических чисел и языковые тесты.|
     +|libmagic|Содержит функции распознавания магических чисел используемые программой file|
     +
     +=====8.11. Readline-8.2=====
     +
     +|Пакет Readline представляет собой набор библиотек, предлагающих возможности редактирования прямо в командной строке и просмотра истории команд.||
     +|Приблизительное время сборки:|менее 0.1 SBU|
     +|Требуемое дисковое пространство:|16 MB|
     +
     +====8.11.1. Установка пакета Readline====
     +
     +Переустановка пакета Readline приводит к перемещению старых библиотек в <libraryname>.old. Обычно это не вызывает проблем, но в некоторых случаях могут возникать ошибки линковки с ldconfig. Этого можно избежать, выполнив следующие две команды sed:
     +
     +<code>
     +sed -i '/MV.*old/d' Makefile.in
     +sed -i '/{OLDSUFF}/c:' support/shlib-install
     +</code>
     +
     +Теперь устраните проблему, выявленную разработчиками:
     +
     +<code>
     +patch -Np1 -i ../readline-8.2-upstream_fixes-3.patch
     +</code>
     +
     +Подготовьте Readline к компиляции:
     +
     +<code>
     +./configure --prefix=/usr    \
     +            --disable-static \
     +            --with-curses    \
     +            --docdir=/usr/share/doc/readline-8.2
     +</code>
     +
     +===Значение нового параметра configure:===
     +
     +  * **--with-curses**
     +Этот параметр сообщает Readline, что он может найти функции библиотеки termcap в библиотеке curses, а не в отдельной библиотеке termcap. Это позволит сгенерировать корректный файл readline.pc.
     +
     +Скомпилируйте пакет:
     +
     +<code>
     +make SHLIB_LIBS="-lncursesw"
     +</code>
     +
     +===Значение параметра make:===
     +
     +  * **SHLIB_LIBS="-lncursesw"**
     +Этот параметр принудительно линкует Readline с библиотекой libncursesw.
     +
     +С этим пакетом не поставляется набор тестов.
     +
     +Установите пакет:
     +
     +<code>
     +make SHLIB_LIBS="-lncursesw" install
     +</code>
     +
     +По желанию установите документацию:
     +
     +<code>
     +install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.2
     +</code>
     +
     +====8.11.2. Содержимое пакета Readline====
     +
     +|Установленные библиотеки:|libhistory.so и libreadline.so|
     +|Созданные каталоги:|/usr/include/readline и /usr/share/doc/readline-8.2|
     +
     +Краткое описание
     +
     +|libhistory|Обеспечивает согласованный пользовательский интерфейс для вызова строк из истории|
     +|libreadline|Предоставляет набор команд для управления текстом, введенным в интерактивном сеансе программы.|
     +
     +=====8.12. M4-1.4.19=====
     +
     +|Пакет M4 содержит макропроцессор.||
     +|Приблизительное время сборки:|0.3 SBU SBU|
     +|Требуемое дисковое пространство:|49 MB|
     +
     +====8.12.1. Установка пакета M4====
     +
     +Подготовьте M4 к компиляции:
     +
     +<code>
     +./configure --prefix=/usr
     +</code>
     +
     +Скомпилируйте пакет:
     +
     +<code>
     +make
     +</code>
     +
     +Чтобы протестировать пакет, выполните:
     +
     +<code>
     +make check
     +</code>
     +
     +Установите пакет:
     +
     +<code>
     +make install
     +</code>
     +
     +====8.12.2. Содержимое пакета M4====
     +
     +|Установленные программы:|m4|
     +
     +Краткое описание
     +
     +|m4|Копирует указанные файлы, одновременно расширяя содержащиеся в них макросы. Эти макросы являются либо встроенными, либо определяемыми пользователем и могут принимать любое количество аргументов. Помимо выполнения макросов, m4 имеет встроенные функции для включения указанных файлов, выполнения команд Unix, выполнения целочисленной арифметики, манипулирования текстом, рекурсии и т.д. Программа m4 может использоваться либо как интерфейс к компилятору, либо как самостоятельный макропроцессор|
     +
     +=====8.13. Bc-6.7.5=====
     +
     +|Пакет Bc содержит язык для обработки чисел произвольной точности.||
     +|Приблизительное время сборки:|менее 0.1 SBU|
     +|Требуемое дисковое пространство:|7.8 MB|
     +
     +====8.13.1. Установка пакета Bc====
     +
     +Подготовьте Bc к компиляции:
     +
     +<code>
     +CC=gcc ./configure --prefix=/usr -G -O3 -r
     +</code>
     +
     +===Значение параметров настройки:===
     +
     +  * **CC=gcc**
     +Этот параметр определяет используемый компилятор
     +
     +  * **-G**
     +Пропускает часть тестов, которые не будут работать, пока не будет установлена программа bc.
     +
     +  * **-O3**
     +Указывает используемый уровень оптимизации.
     +
     +  * **-r**
     +Включает использование Readline для улучшения функции редактирования строк в bc.
     +
     +Скомпилируйте пакет:
     +
     +<code>
     +make
     +</code>
     +
     +Чтобы протестировать bc, запустите:
     +
     +<code>
     +make check
     +</code>
     +
     +Установите пакет:
     +
     +<code>
     +make install
     +</code>
     +
     +====8.13.2. Содержимое пакета Bc====
     +
     +|Установленные программы:|bc и dc|
     +
     +Краткое описание
     +
     +|bc|Калькулятор командной строки|
     +|dc|Калькулятор командной строки с обратной польской нотацией|
     +
     +=====8.14. Flex-2.6.4=====
     +
     +
     +
     +
     +
     +
     +
     +
      
      
    software/linux_server/lfs/chapter08.1719919109.txt.gz · Последнее изменение: 2024/07/02 14:18 — vladpolskiy