diff options
Diffstat (limited to 'lfs-12.1-sysv/LFS-BOOK.html')
-rw-r--r-- | lfs-12.1-sysv/LFS-BOOK.html | 59294 |
1 files changed, 59294 insertions, 0 deletions
diff --git a/lfs-12.1-sysv/LFS-BOOK.html b/lfs-12.1-sysv/LFS-BOOK.html new file mode 100644 index 0000000..439d3b0 --- /dev/null +++ b/lfs-12.1-sysv/LFS-BOOK.html @@ -0,0 +1,59294 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> + <title> + Линукс с нуля + </title> + <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /> + <style type="text/css"> + /*<![CDATA[*/ + /* Global settings */ + body { + font-family: verdana, tahoma, helvetica, arial, sans-serif; + text-align: left; + background: #fff; + color: #222; + margin: 1em; + padding: 0; + font-size: 1em; + line-height: 1.2em + } + + + /* Links */ + a:link { color: #22b; } + a.ulink:link { font-weight: bold; color: #55f; } + a:visited { color: #7e4988 ! important; } + a:hover, a:focus { color: #d30e08 ! important; } + a:active { color: #6b77b1 ! important;} + + + /* Book titlepage */ + .book { + margin: 0px auto; + padding: 0 1em; + } + + .book h1, .book .authorgroup, .book .copyright, .book .legalnotice .revhistory { + background: #f5f6f7; + margin: 0px auto; + padding: .1em 1em; + } + + .book hr { + background: #dbddec; + height: .3em; + border: 0px; + margin: 0; + padding: 0; + } + + div.dedication { + padding-left: 1em; + } + + + /* Sections */ + div.sect1, div.appendix { + padding-left: .3em; + } + + .package, .kernel, .installation, .commands, .testing, .configuration, .content { + padding: 0 .5em .2em 0; + margin: 0; + } + + .lfs .package { + background: #f5f6f7; + border-bottom: 0.2em solid #dbddec; + padding-top: .1em; + margin-top: 0; + } + + .lfs .configuration { + background: #fefefe; + border-top: 0.2em solid #dbddec; + } + + .lfs .content { + background: #f5f6f7; + border-top: 0.2em solid #dbddec; + border-bottom: 0.2em solid #dbddec; + padding-bottom: .1em; + margin-bottom: 0; + } + + + /* Headers */ + h1, h2, h3, h4, h5, h6, b, .strong { + color: #000; + font-weight: bold; + line-height: 1em; + } + + h1 { + font-size: 173%; + text-align: center; + } + + .book h1 { + margin: 0; + padding: 0.4em; + } + + h1.title sup { + font-size: small; + } + + h2 { + font-size: 144%; + } + + .preface h2, .part h1, .chapter h2, .appendix h2, .index h1, .sect1 h2 { + background: #f5f6f7; + border-top: .2em solid #dbddec; + border-bottom: .2em solid #dbddec; + margin-bottom: 1em; + margin-top: 1em; + padding: .4em; + text-align: center; + } + + .sect1 h2, .appendix h2 { + margin-left: -.2em; + } + + .wrap h2 { + background: #f5f6f7; + border-bottom: 0; + margin-top: 1em; + margin-bottom: 0; + padding-top: .4em; + } + + .book h2.subtitle { + text-align: center; + background: #dbddec; + margin: 0; + padding: 0.2em; + } + + h3 { + font-size: 120%; + } + + .appendix h3 { + font-size: 133%; + margin-top: .8em; + margin-bottom: 0.2em; + } + + h4 { + font-size: 110%; + } + + .package h4, h5, h6 { + font-size: 100%; + font-style: italic; + } + + + /* TOC */ + div.toc ul, div.index ul, div.navheader ul, div.navfooter ul { + list-style: none; + } + + div.toc { + padding-left: 1em; + } + + li.preface, .part li.appendix { + margin-left: 1em; + } + + div.toc h3 { + margin: 1em 0 .3em 0; + } + + li.appendix h3, li.glossary h3, li.index h3 { + margin: .5em + } + + div.toc h4 { + margin: .6em 0 .2em 0; + } + + li.chapter h4 a { + display: block; + margin-bottom: .4em + } + + .dummy { + display: block; + font-weight: bold; + font-size: 110%; + margin: .6em 0 .2em 0; + } + + + /* Index */ + .item { + float: left; + margin-right: 1em + } + + .secitem { + font-weight: normal; + float: left; + margin-right: 1em + } + + .indexref { + display: block; + } + + .item + .indexref { + margin-left: 20em; + } + + .secitem + .indexref { + margin-left: 19em; + } + + + /* Admonitions */ + div.admon h3 { + padding-left: 2.5em; + padding-top: 1em; + } + + div.admon p { + margin-left: .5em; + } + + div.admon pre { + margin: 0.5em 3em; + } + + div.note, div.tip { + background-color: #fffff6; + border: 2px solid #dbddec; + width: 90%; + margin: .5em auto; + } + + div.important, div.warning, div.caution { + background-color: #fffff6; + border: medium solid #400; + width: 90%; + margin: .5em auto; + color: #600; + } + + div.important h3, div.warning h3, div.caution h3 { + color: #900; + } + + div.important em, div.warning em, div.caution em { + color: #000; + font-weight: bold; + } + + + /* table */ + .table p.title { + text-align: center; + margin-top: 0; + margin-bottom: .3em; + } + + .table table { + margin-left: auto; + margin-right: auto; + } + + .table table th, .table table td { + padding: 0.2em 2em 0.2em 2em; + text-align: left; + } + + .revhistory { + padding-left: 1em; + } + + .revhistory th { + line-height: 2em; + text-align: left; + } + + .revhistory td { + padding-right: 1em; + } + + + /* variablelist as table */ + .variablelist table { + width: auto; + margin: 0 1em 0 1em; + } + + .variablelist td { + vertical-align: top; + } + + .variablelist td span, td p { + margin: 0.25em; + } + + .variablelist td p { + margin-top: 0; + } + + + /* variablelist as list */ + dl { + padding-left: 1em + } + + dt { + font-weight: bold; + margin-left: 1em; + } + + dd { + margin-bottom: .6em; + margin-left: 1em; + } + + dd p { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + } + + div.materials dt { + display: list-item; + } + + div.materials dd { + margin-left: 0; + padding-left: 0; + } + + + /* segmentedlist */ + .appendix .segmentedlist { + padding-left: 1em; + } + + .package .seg { + margin-bottom: 0em; + margin-top: 0em; + clear: left; + } + + .content .seg { + margin-bottom: .4em; + margin-top: .4em; + clear: left; + } + + .segtitle { + float: left; + } + + .package .segbody, .appendix .segbody { + display: block; + padding-left: 14em; + } + + .content .segbody { + display: block; + padding-left: 12em; + } + + + /* itemizedlist */ + ul { + padding-left: 1em + } + + .itemizedlist ul { + margin-left: 1em + } + + .itemizedlist li ul { + margin-bottom: 1.2em; + } + + .itemizedlist li ul li p { + margin-top: .5em; + margin-bottom: .5em; + } + + .itemizedlist li ul li:first-child p:first-child { + margin-top: -.6em; + } + + ul.compact { + list-style: none; + } + + .blfs ul.compact { + list-style: disc; + } + + ul.compact li { + margin: 0em; + padding: 0em; + } + + ul.compact li p { + padding: 0.3em; + margin: 0em; + } + + .blfs ul.compact li p { + background-color: #f0fff0; + } + + /* orderedlist */ + ol { + list-style: decimal; + } + + ol ol { + list-style: lower-alpha; + } + + ol ol ol { + list-style: lower-roman; + } + + ol.compact li { + margin: 0em; + padding: 0em; + } + + ol.compact li p { + padding: 0.3em; + margin: 0em; + } + + + /* Indented blocks */ + p, blockquote { + padding-left: 1em; + padding-right: 1em; + } + + + /* Monospaced elements */ + tt, code, kbd, pre, .command { + font-family: monospace; + } + + .systemitem { + font-style: italic; + } + + pre { + background-color: #e5e5e5; + border: 1px solid #050505; + padding: .5em 1em; + margin: 0 2em .5em 2em; + font-weight: bold; + } + + pre.userinput { + color: #101310; + } + + pre.root { + color: #101310; + border: 1px solid #11a; + } + + pre.screen { + color: #000; + background-color: #e9e9e9; + font-weight: normal; + } + + .literal, .prompt { + font-weight: normal; + } + + + /* Mixed tags */ + p.usernotes { + margin-left: -1em; + font-size: small; + font-weight: bold; + font-style: italic; + } + + .underlined { + text-decoration: underline; + } + + + /* Last edited info */ + p.updated { + font-size: small; + font-weight: bold; + font-style: italic; + } + + + /* Special colored blocks */ + /* OrangeRed4 */ + .feature-ssp { + color: #8B2500; + } + + /* RoyalBlue3 */ + .feature-aslr { + color: #3A5FCD; + } + + /* NavyBlue */ + .feature-pax { + color: #000080; + } + + /* VioletRed */ + .feature-hardened_tmp { + color: #d02090; + } + + /* PaleTurquoise4 */ + .feature-warnings { + color: #668b8b; + } + + /* RosyBrown */ + .feature-misc { + color: #bc8f8f; + } + + /* Sienna*/ + .feature-blowfish { + color: #8E6B23 + } + /*]]>*/ + </style> + </head> + <body class="lfs" id="lfs-12.1"> + <div xml:lang="ru" class="book" lang="ru"> + <div class="titlepage"> + <div> + <div> + <h1 class="title"> + <a id="idm1" name="idm1"></a>Линукс с нуля + </h1> + </div> + <div> + <h2 class="subtitle"> + Версия 12.1 + </h2> + </div> + <div> + <h2 class="subtitle"> + Дата публикации 1 марта 2024 + </h2> + </div> + <div> + <div class="authorgroup"> + <div class="author"> + <h3 class="author"> + <span class="firstname">Создатель: Gerard</span> + <span class="surname">Beekmans</span> + </h3> + </div> + <div class="author"> + <h3 class="author"> + <span class="firstname">Главный редактор: Bruce</span> + <span class="surname">Dubbs</span> + </h3> + </div> + <div class="author"> + <h3 class="author"> + <span class="firstname">Автор перевода: Владимир</span> + <span class="surname">Перцев</span> + </h3> + </div> + </div> + </div> + <div> + <p class="copyright"> + Авторские права © 1999-2024 Gerard Beekmans + </p> + </div> + <div> + <div class="legalnotice"> + <a id="idm19" name="idm19"></a> + <p> + Все права защищены. + </p> + <p> + Эта книга распространяется на условиях <a class="xref" href= + "#CC" title="F.1. Лицензия Creative Commons">Лицензия + Creative Commons</a>. + </p> + <p> + Инструкции для компьютера могут быть извлечены из книги на + условиях <a class="xref" href="#MIT" title= + "F.2. Лицензия MIT">Лицензия MIT</a>. + </p> + <p> + <span class="trademark">Linux</span>® является + зарегистрированным товарным знаком Линуса Торвальдса. + </p> + </div> + </div> + </div> + <hr /> + </div> + <div class="toc"> + <h3> + Содержание + </h3> + <ul> + <li class="preface"> + <h4> + Предисловие + </h4> + <ul> + <li class="sect1"> + <a href="#pre-foreword">Предисловие</a> + </li> + <li class="sect1"> + <a href="#pre-audience">Аудитория, на которую рассчитана эта + книга</a> + </li> + <li class="sect1"> + <a href="#pre-architecture">Целевые архитектуры LFS</a> + </li> + <li class="sect1"> + <a href="#pre-prerequisites">Предпосылки</a> + </li> + <li class="sect1"> + <a href="#pre-standards">LFS и стандарты</a> + </li> + <li class="sect1"> + <a href="#pre-why">Информация о пакетах, используемых в этой + книге</a> + </li> + <li class="sect1"> + <a href="#pre-typography">Оформление</a> + </li> + <li class="sect1"> + <a href="#pre-organization">Структура</a> + </li> + <li class="sect1"> + <a href="#pre-errata">Ошибки и рекомендации по + безопасности</a> + </li> + </ul> + </li> + <li class="part"> + <h3> + I. Введение + </h3> + <ul> + <li class="chapter"> + <h4> + 1. Введение + </h4> + <ul> + <li class="sect1"> + <a href="#ch-intro-how">Как собрать систему LFS</a> + </li> + <li class="sect1"> + <a href="#ch-intro-whatsnew">Что нового с момента + последнего релиза</a> + </li> + <li class="sect1"> + <a href="#ch-intro-changelog">Журнал изменений</a> + </li> + <li class="sect1"> + <a href="#ch-intro-resources">Ресурсы</a> + </li> + <li class="sect1"> + <a href="#ch-intro-askforhelp">Помощь</a> + </li> + </ul> + </li> + </ul> + </li> + <li class="part"> + <h3> + II. Подготовка к сборке + </h3> + <ul> + <li class="chapter"> + <h4> + 2. Подготовка хост-системы + </h4> + <ul> + <li class="sect1"> + <a href="#ch-partitioning-introduction">Введение</a> + </li> + <li class="sect1"> + <a href="#ch-partitioning-hostreqs">Требования к + хост-системе</a> + </li> + <li class="sect1"> + <a href="#ch-partitioning-stages">Этапы сборки системы + LFS</a> + </li> + <li class="sect1"> + <a href="#ch-partitioning-creatingpartition">Создание + нового раздела</a> + </li> + <li class="sect1"> + <a href="#ch-partitioning-creatingfilesystem">Создание + файловой системы на разделе</a> + </li> + <li class="sect1"> + <a href="#ch-partitioning-aboutlfs">Установка переменной + $LFS</a> + </li> + <li class="sect1"> + <a href="#ch-partitioning-mounting">Монтирование нового + раздела</a> + </li> + </ul> + </li> + <li class="chapter"> + <h4> + 3. Пакеты и патчи + </h4> + <ul> + <li class="sect1"> + <a href="#ch-materials-introduction">Введение</a> + </li> + <li class="sect1"> + <a href="#ch-materials-packages">Все пакеты</a> + </li> + <li class="sect1"> + <a href="#ch-materials-patches">Необходимые патчи</a> + </li> + </ul> + </li> + <li class="chapter"> + <h4> + 4. Заключительный этап подготовки + </h4> + <ul> + <li class="sect1"> + <a href="#ch-preps-introduction">Введение</a> + </li> + <li class="sect1"> + <a href="#ch-tools-creatingminlayout">Создание + ограниченной иерархии папок в файловой системе LFS</a> + </li> + <li class="sect1"> + <a href="#ch-preps-addinguser">Создание пользователя + LFS</a> + </li> + <li class="sect1"> + <a href="#ch-preps-settingenviron">Настройка + окружения</a> + </li> + <li class="sect1"> + <a href="#ch-preps-aboutsbus">О SBU (Стандартная единица + времени сборки)</a> + </li> + <li class="sect1"> + <a href="#ch-preps-abouttestsuites">О наборах тестов</a> + </li> + </ul> + </li> + </ul> + </li> + <li class="part"> + <h3> + III. Сборка кросс-компилятора и набора временных инструментов + </h3> + <ul> + <li class="preface"> + <h4> + Важный предварительный материал + </h4> + <ul> + <li class="sect1"> + <a href="#ch-part3intro-intro">Введение</a> + </li> + <li class="sect1"> + <a href="#ch-tools-toolchaintechnotes">Технические + примечания по сборочным инструментам</a> + </li> + <li class="sect1"> + <a href="#ch-tools-generalinstructions">Общие инструкции + по компиляции</a> + </li> + </ul> + </li> + <li class="chapter"> + <h4> + 5. Сборка кросс-тулчейна + </h4> + <ul> + <li class="sect1"> + <a href="#ch-tools-introduction">Введение</a> + </li> + <li class="sect1"> + <a href="#ch-tools-binutils-pass1">Binutils-2.42 - Проход + 1</a> + </li> + <li class="sect1"> + <a href="#ch-tools-gcc-pass1">GCC-13.2.0 - Проход 1</a> + </li> + <li class="sect1"> + <a href="#ch-tools-linux-headers">Заголовочные файлы + Linux-6.7.4 API</a> + </li> + <li class="sect1"> + <a href="#ch-tools-glibc">Glibc-2.39</a> + </li> + <li class="sect1"> + <a href="#ch-tools-libstdcpp">Libstdc++ из GCC-13.2.0</a> + </li> + </ul> + </li> + <li class="chapter"> + <h4> + 6. Кросс-Компиляция временных инструментов + </h4> + <ul> + <li class="sect1"> + <a href="#ch-tools-introduction-cross">Введение</a> + </li> + <li class="sect1"> + <a href="#ch-tools-m4">M4-1.4.19</a> + </li> + <li class="sect1"> + <a href="#ch-tools-ncurses">Ncurses-6.4-20230520</a> + </li> + <li class="sect1"> + <a href="#ch-tools-bash">Bash-5.2.21</a> + </li> + <li class="sect1"> + <a href="#ch-tools-coreutils">Coreutils-9.4</a> + </li> + <li class="sect1"> + <a href="#ch-tools-diffutils">Diffutils-3.10</a> + </li> + <li class="sect1"> + <a href="#ch-tools-file">File-5.45</a> + </li> + <li class="sect1"> + <a href="#ch-tools-findutils">Findutils-4.9.0</a> + </li> + <li class="sect1"> + <a href="#ch-tools-gawk">Gawk-5.3.0</a> + </li> + <li class="sect1"> + <a href="#ch-tools-grep">Grep-3.11</a> + </li> + <li class="sect1"> + <a href="#ch-tools-gzip">Gzip-1.13</a> + </li> + <li class="sect1"> + <a href="#ch-tools-make">Make-4.4.1</a> + </li> + <li class="sect1"> + <a href="#ch-tools-patch">Patch-2.7.6</a> + </li> + <li class="sect1"> + <a href="#ch-tools-sed">Sed-4.9</a> + </li> + <li class="sect1"> + <a href="#ch-tools-tar">Tar-1.35</a> + </li> + <li class="sect1"> + <a href="#ch-tools-xz">Xz-5.4.6</a> + </li> + <li class="sect1"> + <a href="#ch-tools-binutils-pass2">Binutils-2.42 - Проход + 2</a> + </li> + <li class="sect1"> + <a href="#ch-tools-gcc-pass2">GCC-13.2.0 - Проход 2</a> + </li> + </ul> + </li> + <li class="chapter"> + <h4> + 7. Вход в окружение Chroot и создание дополнительных + временных инструментов + </h4> + <ul> + <li class="sect1"> + <a href="#ch-tools-introduction-chroot">Введение</a> + </li> + <li class="sect1"> + <a href="#ch-tools-changingowner">Смена владельца</a> + </li> + <li class="sect1"> + <a href="#ch-tools-kernfs">Подготовка виртуальных + файловых систем ядра</a> + </li> + <li class="sect1"> + <a href="#ch-tools-chroot">Вход в окружение Chroot</a> + </li> + <li class="sect1"> + <a href="#ch-tools-creatingdirs">Создание каталогов</a> + </li> + <li class="sect1"> + <a href="#ch-tools-createfiles">Создание основных файлов + и символических ссылок</a> + </li> + <li class="sect1"> + <a href="#ch-tools-gettext">Gettext-0.22.4</a> + </li> + <li class="sect1"> + <a href="#ch-tools-bison">Bison-3.8.2</a> + </li> + <li class="sect1"> + <a href="#ch-tools-perl">Perl-5.38.2</a> + </li> + <li class="sect1"> + <a href="#ch-tools-Python">Python-3.12.2</a> + </li> + <li class="sect1"> + <a href="#ch-tools-texinfo">Texinfo-7.1</a> + </li> + <li class="sect1"> + <a href="#ch-tools-util-linux">Util-linux-2.39.3</a> + </li> + <li class="sect1"> + <a href="#ch-tools-cleanup">Очистка и сохранение + временной системы</a> + </li> + </ul> + </li> + </ul> + </li> + <li class="part"> + <h3> + IV. Сборка системы LFS + </h3> + <ul> + <li class="chapter"> + <h4> + 8. Установка базового системного программного обеспечения + </h4> + <ul> + <li class="sect1"> + <a href="#ch-system-introduction">Введение</a> + </li> + <li class="sect1"> + <a href="#ch-system-pkgmgt">Управление пакетами</a> + </li> + <li class="sect1"> + <a href="#ch-system-man-pages">Man-pages-6.06</a> + </li> + <li class="sect1"> + <a href="#ch-system-iana-etc">Iana-Etc-20240125</a> + </li> + <li class="sect1"> + <a href="#ch-system-glibc">Glibc-2.39</a> + </li> + <li class="sect1"> + <a href="#ch-system-zlib">Zlib-1.3.1</a> + </li> + <li class="sect1"> + <a href="#ch-system-bzip2">Bzip2-1.0.8</a> + </li> + <li class="sect1"> + <a href="#ch-system-xz">Xz-5.4.6</a> + </li> + <li class="sect1"> + <a href="#ch-system-zstd">Zstd-1.5.5</a> + </li> + <li class="sect1"> + <a href="#ch-system-file">File-5.45</a> + </li> + <li class="sect1"> + <a href="#ch-system-readline">Readline-8.2</a> + </li> + <li class="sect1"> + <a href="#ch-system-m4">M4-1.4.19</a> + </li> + <li class="sect1"> + <a href="#ch-system-bc">Bc-6.7.5</a> + </li> + <li class="sect1"> + <a href="#ch-system-flex">Flex-2.6.4</a> + </li> + <li class="sect1"> + <a href="#ch-system-tcl">Tcl-8.6.13</a> + </li> + <li class="sect1"> + <a href="#ch-system-expect">Expect-5.45.4</a> + </li> + <li class="sect1"> + <a href="#ch-system-dejagnu">DejaGNU-1.6.3</a> + </li> + <li class="sect1"> + <a href="#ch-system-pkgconf">Pkgconf-2.1.1</a> + </li> + <li class="sect1"> + <a href="#ch-system-binutils">Binutils-2.42</a> + </li> + <li class="sect1"> + <a href="#ch-system-gmp">GMP-6.3.0</a> + </li> + <li class="sect1"> + <a href="#ch-system-mpfr">MPFR-4.2.1</a> + </li> + <li class="sect1"> + <a href="#ch-system-mpc">MPC-1.3.1</a> + </li> + <li class="sect1"> + <a href="#ch-system-attr">Attr-2.5.2</a> + </li> + <li class="sect1"> + <a href="#ch-system-acl">Acl-2.3.2</a> + </li> + <li class="sect1"> + <a href="#ch-system-libcap">Libcap-2.69</a> + </li> + <li class="sect1"> + <a href="#ch-system-libxcrypt">Libxcrypt-4.4.36</a> + </li> + <li class="sect1"> + <a href="#ch-system-shadow">Shadow-4.14.5</a> + </li> + <li class="sect1"> + <a href="#ch-system-gcc">GCC-13.2.0</a> + </li> + <li class="sect1"> + <a href="#ch-system-ncurses">Ncurses-6.4-20230520</a> + </li> + <li class="sect1"> + <a href="#ch-system-sed">Sed-4.9</a> + </li> + <li class="sect1"> + <a href="#ch-system-psmisc">Psmisc-23.6</a> + </li> + <li class="sect1"> + <a href="#ch-system-gettext">Gettext-0.22.4</a> + </li> + <li class="sect1"> + <a href="#ch-system-bison">Bison-3.8.2</a> + </li> + <li class="sect1"> + <a href="#ch-system-grep">Grep-3.11</a> + </li> + <li class="sect1"> + <a href="#ch-system-bash">Bash-5.2.21</a> + </li> + <li class="sect1"> + <a href="#ch-system-libtool">Libtool-2.4.7</a> + </li> + <li class="sect1"> + <a href="#ch-system-gdbm">GDBM-1.23</a> + </li> + <li class="sect1"> + <a href="#ch-system-gperf">Gperf-3.1</a> + </li> + <li class="sect1"> + <a href="#ch-system-expat">Expat-2.6.0</a> + </li> + <li class="sect1"> + <a href="#ch-system-inetutils">Inetutils-2.5</a> + </li> + <li class="sect1"> + <a href="#ch-system-less">Less-643</a> + </li> + <li class="sect1"> + <a href="#ch-system-perl">Perl-5.38.2</a> + </li> + <li class="sect1"> + <a href="#ch-system-xml-parser">XML::Parser-2.47</a> + </li> + <li class="sect1"> + <a href="#ch-system-intltool">Intltool-0.51.0</a> + </li> + <li class="sect1"> + <a href="#ch-system-autoconf">Autoconf-2.72</a> + </li> + <li class="sect1"> + <a href="#ch-system-automake">Automake-1.16.5</a> + </li> + <li class="sect1"> + <a href="#ch-system-openssl">OpenSSL-3.2.1</a> + </li> + <li class="sect1"> + <a href="#ch-system-kmod">Kmod-31</a> + </li> + <li class="sect1"> + <a href="#ch-system-libelf">Libelf из Elfutils-0.190</a> + </li> + <li class="sect1"> + <a href="#ch-system-libffi">Libffi-3.4.4</a> + </li> + <li class="sect1"> + <a href="#ch-system-Python">Python-3.12.2</a> + </li> + <li class="sect1"> + <a href="#ch-system-flit-core">Flit-Core-3.9.0</a> + </li> + <li class="sect1"> + <a href="#ch-system-wheel">Wheel-0.42.0</a> + </li> + <li class="sect1"> + <a href="#ch-system-setuptools">Setuptools-69.1.0</a> + </li> + <li class="sect1"> + <a href="#ch-system-ninja">Ninja-1.11.1</a> + </li> + <li class="sect1"> + <a href="#ch-system-meson">Meson-1.3.2</a> + </li> + <li class="sect1"> + <a href="#ch-system-coreutils">Coreutils-9.4</a> + </li> + <li class="sect1"> + <a href="#ch-system-check">Check-0.15.2</a> + </li> + <li class="sect1"> + <a href="#ch-system-diffutils">Diffutils-3.10</a> + </li> + <li class="sect1"> + <a href="#ch-system-gawk">Gawk-5.3.0</a> + </li> + <li class="sect1"> + <a href="#ch-system-findutils">Findutils-4.9.0</a> + </li> + <li class="sect1"> + <a href="#ch-system-groff">Groff-1.23.0</a> + </li> + <li class="sect1"> + <a href="#ch-system-grub">GRUB-2.12</a> + </li> + <li class="sect1"> + <a href="#ch-system-gzip">Gzip-1.13</a> + </li> + <li class="sect1"> + <a href="#ch-system-iproute2">IPRoute2-6.7.0</a> + </li> + <li class="sect1"> + <a href="#ch-system-kbd">Kbd-2.6.4</a> + </li> + <li class="sect1"> + <a href="#ch-system-libpipeline">Libpipeline-1.5.7</a> + </li> + <li class="sect1"> + <a href="#ch-system-make">Make-4.4.1</a> + </li> + <li class="sect1"> + <a href="#ch-system-patch">Patch-2.7.6</a> + </li> + <li class="sect1"> + <a href="#ch-system-tar">Tar-1.35</a> + </li> + <li class="sect1"> + <a href="#ch-system-texinfo">Texinfo-7.1</a> + </li> + <li class="sect1"> + <a href="#ch-system-vim">Vim-9.1.0041</a> + </li> + <li class="sect1"> + <a href="#ch-system-markupsafe">MarkupSafe-2.1.5</a> + </li> + <li class="sect1"> + <a href="#ch-system-jinja2">Jinja2-3.1.3</a> + </li> + <li class="sect1"> + <a href="#ch-system-udev">Udev из Systemd-255</a> + </li> + <li class="sect1"> + <a href="#ch-system-man-db">Man-DB-2.12.0</a> + </li> + <li class="sect1"> + <a href="#ch-system-procps">Procps-ng-4.0.4</a> + </li> + <li class="sect1"> + <a href="#ch-system-util-linux">Util-linux-2.39.3</a> + </li> + <li class="sect1"> + <a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + </li> + <li class="sect1"> + <a href="#ch-system-sysklogd">Sysklogd-1.5.1</a> + </li> + <li class="sect1"> + <a href="#ch-system-sysvinit">Sysvinit-3.08</a> + </li> + <li class="sect1"> + <a href="#ch-system-aboutdebug">Об отладочных + символах</a> + </li> + <li class="sect1"> + <a href="#ch-system-stripping">Удаление отладочных + символов</a> + </li> + <li class="sect1"> + <a href="#ch-system-cleanup">Очистка</a> + </li> + </ul> + </li> + <li class="chapter"> + <h4> + 9. Системные настройки + </h4> + <ul> + <li class="sect1"> + <a href="#ch-config-introduction">Введение</a> + </li> + <li class="sect1"> + <a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> + </li> + <li class="sect1"> + <a href="#ch-config-udev">Взаимодействие с устройствами и + модулями</a> + </li> + <li class="sect1"> + <a href="#ch-config-symlinks">Управление устройствами</a> + </li> + <li class="sect1"> + <a href="#ch-config-network">Настройка сети</a> + </li> + <li class="sect1"> + <a href="#ch-config-usage">Настройка и использование + загрузочных скриптов System V</a> + </li> + <li class="sect1"> + <a href="#ch-config-locale">Настройка системной + локали</a> + </li> + <li class="sect1"> + <a href="#ch-config-inputrc">Создание файла + /etc/inputrc</a> + </li> + <li class="sect1"> + <a href="#ch-config-shells">Создание файла + /etc/shells</a> + </li> + </ul> + </li> + <li class="chapter"> + <h4> + 10. Делаем систему LFS загрузочной + </h4> + <ul> + <li class="sect1"> + <a href="#ch-bootable-introduction">Введение</a> + </li> + <li class="sect1"> + <a href="#ch-bootable-fstab">Создание файла + /etc/fstab</a> + </li> + <li class="sect1"> + <a href="#ch-bootable-kernel">Linux-6.7.4</a> + </li> + <li class="sect1"> + <a href="#ch-bootable-grub">Использование GRUB для + настройки процесса загрузки</a> + </li> + </ul> + </li> + <li class="chapter"> + <h4> + 11. Заключение + </h4> + <ul> + <li class="sect1"> + <a href="#ch-finish-theend">Заключение</a> + </li> + <li class="sect1"> + <a href="#ch-finish-getcounted">Вступите в ряды + пользователей LFS</a> + </li> + <li class="sect1"> + <a href="#ch-finish-reboot">Перезагрузка системы</a> + </li> + <li class="sect1"> + <a href="#ch-finish-whatnow">Дополнительные ресурсы</a> + </li> + <li class="sect1"> + <a href="#afterlfs">Начало работы после сборки LFS</a> + </li> + </ul> + </li> + </ul> + </li> + <li class="part"> + <h3> + V. Приложения + </h3> + <ul> + <li class="appendix"> + <a href="#appendixa">A. Сокращения и условные обозначения</a> + </li> + <li class="appendix"> + <a href="#appendixb">B. Благодарности</a> + </li> + <li class="appendix"> + <a href="#appendixc">C. Зависимости</a> + </li> + <li class="appendix"> + <a href="#scripts">D. Скрипты загрузки и настройки + системы-20230728</a> + <ul> + <li class="sect1"> + <a href="#rc">/etc/rc.d/init.d/rc</a> + </li> + <li class="sect1"> + <a href="#init-functions">/lib/lsb/init-functions</a> + </li> + <li class="sect1"> + <a href="#mountvirtfs">/etc/rc.d/init.d/mountvirtfs</a> + </li> + <li class="sect1"> + <a href="#modules">/etc/rc.d/init.d/modules</a> + </li> + <li class="sect1"> + <a href="#udev">/etc/rc.d/init.d/udev</a> + </li> + <li class="sect1"> + <a href="#swap">/etc/rc.d/init.d/swap</a> + </li> + <li class="sect1"> + <a href="#setclock">/etc/rc.d/init.d/setclock</a> + </li> + <li class="sect1"> + <a href="#checkfs">/etc/rc.d/init.d/checkfs</a> + </li> + <li class="sect1"> + <a href="#mountfs">/etc/rc.d/init.d/mountfs</a> + </li> + <li class="sect1"> + <a href="#udev_retry">/etc/rc.d/init.d/udev_retry</a> + </li> + <li class="sect1"> + <a href="#cleanfs">/etc/rc.d/init.d/cleanfs</a> + </li> + <li class="sect1"> + <a href="#console">/etc/rc.d/init.d/console</a> + </li> + <li class="sect1"> + <a href="#localnet">/etc/rc.d/init.d/localnet</a> + </li> + <li class="sect1"> + <a href="#sysctlscript">/etc/rc.d/init.d/sysctl</a> + </li> + <li class="sect1"> + <a href="#sysklogd">/etc/rc.d/init.d/sysklogd</a> + </li> + <li class="sect1"> + <a href="#network">/etc/rc.d/init.d/network</a> + </li> + <li class="sect1"> + <a href="#sendsignals">/etc/rc.d/init.d/sendsignals</a> + </li> + <li class="sect1"> + <a href="#rebootscript">/etc/rc.d/init.d/reboot</a> + </li> + <li class="sect1"> + <a href="#haltscript">/etc/rc.d/init.d/halt</a> + </li> + <li class="sect1"> + <a href="#template">/etc/rc.d/init.d/template</a> + </li> + <li class="sect1"> + <a href="#modulessys">/etc/sysconfig/modules</a> + </li> + <li class="sect1"> + <a href="#createfiles">/etc/sysconfig/createfiles</a> + </li> + <li class="sect1"> + <a href= + "#config-udev-retry">/etc/sysconfig/udev-retry</a> + </li> + <li class="sect1"> + <a href="#ifup">/sbin/ifup</a> + </li> + <li class="sect1"> + <a href="#ifdown">/sbin/ifdown</a> + </li> + <li class="sect1"> + <a href="#ipv4static">/lib/services/ipv4-static</a> + </li> + <li class="sect1"> + <a href="#ipv4route">/lib/services/ipv4-static-route</a> + </li> + </ul> + </li> + <li class="appendix"> + <a href="#rules">E. Правила настройки Udev</a> + <ul> + <li class="sect1"> + <a href="#lfsrules">55-lfs.rules</a> + </li> + </ul> + </li> + <li class="appendix"> + <a href="#Licenses">F. Лицензии LFS</a> + <ul> + <li class="sect1"> + <a href="#CC">Лицензия Creative Commons</a> + </li> + <li class="sect1"> + <a href="#MIT">Лицензия MIT</a> + </li> + </ul> + </li> + </ul> + </li> + <li class="index"> + <h3> + <a href="#idm20040">Предметный указатель</a> + </h3> + </li> + </ul> + </div> + <div class="titlepage"> + <div> + <div> + <h1 class="title"> + <a id="preface" name="preface"></a>Предисловие + </h1> + </div> + </div> + </div> + <div class="preface" lang="ru" xml:lang="ru"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="pre-foreword" name="pre-foreword"></a>Предисловие + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Мой путь к изучению и лучшему пониманию Linux начался еще в 1998 + году. Я только что установил свой первый дистрибутив Linux и + быстро увлекся его концепцией и философией. + </p> + <p> + У задачи может быть несколько вариантов решения. То же самое + можно сказать и о дистрибутивах Linux. Многие из них существовали + годами. Некоторые всё еще существуют, некоторые превратились во + что-то иное, а некоторые остались только в наших воспоминаниях. + Все они выполняют задачи по-разному, чтобы удовлетворить + потребности своей целевой аудитории. И я понял - раз существует + так много всевозможных способов добиться поставленной цели, мне + больше не нужно ограничивать себя какой-то одной реализацией. До + появления Linux мы просто мирились с проблемами в других + операционных системах, поскольку у нас не было выбора. Что есть, + то есть, нравилось нам это или нет. С Linux появился выбор. Если + вам что-то не понравилось, вы можете изменить это, к тому же, это + всецело поощряется. + </p> + <p> + Я попробовал разные дистрибутивы, но так и не смог ни на одном + остановиться. Oни были отличными системами сами по себе. Это + больше не было вопросом правильно или неправильно. Это стало + делом личного вкуса. При всём разнообразии выбора не было ни + одного дистрибутива, который был для меня идеален. Поэтому я + решил создать свою собственную Linux-систему, которая бы + полностью соответствовала моим личным предпочтениям. + </p> + <p> + Чтобы создать свою собственную систему, я решил скомпилировать + всё из исходного кода вместо использования предварительно + скомпилированных пакетов. Эта <span class="quote">«<span class= + "quote">идеальная</span>»</span> Linux-система должна была иметь + сильные стороны других систем без их недостатков. Сначала эта + мысль казалась пугающей. Но я придерживался идеи, что такая + система должна быть создана. + </p> + <p> + Разобравшись с такими проблемами, как циклические зависимости и + ошибки во время компиляции, я, наконец, создал собственную + систему Linux. Она была полностью работоспособна и вполне + пригодна для использования, как и любая другая Linux-система того + времени. Но это было мое собственное творение. Было очень приятно + собрать такую систему самому. Единственное, что было бы лучше, + это создавать каждую часть программного обеспечения + самостоятельно. Это было следующее, к чему я стремился + </p> + <p> + Когда я поделился своими идеями и опытом с другими членами + сообщества Linux, стал очевиден явный интерес к ним. Вскоре стало + понятно, что такие специально созданные Linux-системы служат не + только для удовлетворения специфических потребностей + пользователей, но и являются идеальной возможностью для обучения + программистов и системных администраторов, чтобы улучшить их + (существующие) навыки работы с Linux. Так родился проект + <span class="emphasis"><em>Linux From Scratch</em></span>. + </p> + <p> + Книга Linux From Scratch является ядром этого проекта. В ней + содержится информация и инструкции, необходимые для разработки и + создания собственной системы. Хотя эта книга представляет шаблон, + который позволит создать правильно работающую систему, вы можете + изменить инструкции по своему усмотрению, что отчасти является + важной частью этого проекта. Вы всё контролируете; мы просто + протягиваем руку помощи, чтобы вы начали свой собственный путь. + </p> + <p> + Я искренне надеюсь, что вы прекрасно проведете время, работая над + своей собственной системой Linux From Scratch, и оцените ее + многочисленные преимущества. + </p> + <div class="literallayout"> + <p> + --<br /> + Gerard Beekmans<br /> + gerard AT linuxfromscratch D0T org + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="pre-audience" name="pre-audience"></a>Аудитория, на + которую рассчитана эта книга + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Есть много причин, по которым вы хотели бы прочитать эту книгу. + Один из вопросов, который задают многие люди, звучит так: + <span class="quote">«<span class="quote">Зачем тратить время на + сборку Linux-системы вручную с нуля, если можно просто загрузить + и установить существующую?</span>»</span> + </p> + <p> + Одной из важных целей существования этого проекта является помощь + в изучении того, как работает система Linux изнутри. Создание + системы LFS помогает продемонстрировать, что заставляет работать + Linux, как все работает вместе и зависит друг от друга. Одна из + лучших вещей, которую может дать этот учебный опыт, — это + возможность настроить систему Linux в соответствии с вашими + уникальными потребностями. + </p> + <p> + Другое ключевое преимущество - LFS предоставляет более глубокий + контроль, не полагаясь на чью-либо реализацию Linux. С LFS вы + находитесь в кресле водителя, и <span class= + "emphasis"><em>Вы</em></span> управляете каждым аспектом системы. + </p> + <p> + LFS позволяет создавать очень компактные системы Linux. При + установке обычных дистрибутивов вам часто приходится + устанавливать очень много программ, которые, вероятно, никогда не + используются. Эти программы тратят ресурсы впустую. Вы можете + возразить, что с сегодняшними жесткими дисками и процессорами + такие ресурсы не имеют значения. Иногда, однако, вы все еще + ограничены размером. Подумайте о загрузочных компакт-дисках, + USB-накопителях и встраиваемых системах. Это области, в которых + LFS может быть полезным. + </p> + <p> + Ещё одним преимуществом собственной сборки Linux является + безопасность. При компиляции каждого компонента системы из + исходных кодов вы можете всё проверить и применить необходимые + патчи. Больше не нужно ждать, когда кто-то другой скомпилирует + пакет с требуемыми исправлениями. Если вы не изучите патч и не + примените его самостоятельно, нет гарантий, что новый пакет будет + собран корректно и устранит проблему. + </p> + <p> + Цель Linux From Scratch — создать законченную и пригодную для + использования систему базового уровня. Если вы не хотите + создавать свою собственную систему Linux с нуля, вы, тем не + менее, можете извлечь пользу из информации, содержащейся в этой + книге. + </p> + <p> + Есть много других веских причин для создания собственной системы + LFS. В конце концов, образование, безусловно, является самой + важной из них. Продолжая работать с LFS, вы откроете для себя + силу, которую действительно приносят информация и знания. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="pre-architecture" name="pre-architecture"></a>Целевые + архитектуры LFS + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Основными целевыми архитектурами LFS являются процессоры + AMD/Intel x86 (32-разрядные) и x86_64 (64-разрядные). Однако, + известно, что инструкции, приведенные в этой книге, с некоторыми + изменениями работают с процессорами Power PC и ARM. Для создания + системы, использующей один из этих процессоров, основным + предварительным условием, в дополнение к описанным на следующей + странице, является существующая система Linux, например, + собранная ранее LFS, Ubuntu, Red Hat/Fedora, SuSE или другой + дистрибутив, ориентированный на имеющуюся у вас архитектуру. + Также обратите внимание, что 32-разрядный дистрибутив можно + установить и использовать в качестве хост-системы на 64-разрядном + компьютере AMD/Intel. + </p> + <p> + При сборке LFS выигрыш от сборки на 64-битной системе по + сравнению с 32-битной системой минимален. Например, в тестовой + сборке LFS-9.1 в системе на базе процессора Core i7-4790 с + использованием 4 ядер были получены следующие статистические + данные: + </p> + <pre class="screen"><code class= + "computeroutput">Архитектура Время сборки Размер сборки +x86 239.9 минут 3.6 ГБ +x64 233.2 минут 4.4 ГБ</code></pre> + <p> + Как видите, на том же оборудовании 64-битная сборка всего на 3% + быстрее и на 22% больше, чем 32-битная. Если вы планируете + использовать LFS в качестве LAMP-сервера или брандмауэра, + 32-разрядной сборки может быть достаточно. С другой стороны, для + сборки и/или запуска некоторых пакетов в BLFS теперь требуется + более 4 ГБ ОЗУ, поэтому, если вы планируете использовать LFS в + качестве настольной ОС, авторы LFS рекомендуют собирать 64-битную + систему. + </p> + <p> + По умолчанию 64-разрядная сборка LFS, считается <span class= + "quote">«<span class="quote">чистой</span>»</span> 64-разрядной + системой. То есть она поддерживает только 64-разрядные + исполняемые файлы. Сборка <span class="quote">«<span class= + "quote">multilib</span>»</span> системы требует компиляции многих + программ дважды - один раз для 32-битной и один раз для + 64-битной. Напрямую в книге данная опция не поддерживается, + потому что это будет только мешать образовательной цели этой + книги, предлагающей инструкции, необходимые для сборки базовой + системы. Некоторые редакторы LFS/BLFS поддерживают ответвление + LFS для multilib, которое доступно по адресу <a class="ulink" + href= + "https://book.linuxfromscratch.ru/12.1-ml/systemv">https://book.linuxfromscratch.ru/12.1-ml/systemv</a>. + Но это более продвинутая тема. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="pre-prerequisites" name= + "pre-prerequisites"></a>Предпосылки + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Создание системы LFS — непростая задача. Это требует + определенного уровня знаний системного администрирования Unix для + решения проблем и правильного выполнения перечисленных команд. В + частности, как абсолютный минимум, Вы должны уметь пользоваться + командной оболочкой для копирования или перемещения файлов и + каталогов, просмотра содержимого каталогов и файлов и изменения + текущего каталога. Также ожидается, что у вас есть достаточные + знания об использовании и установке программного обеспечения в + Linux. + </p> + <p> + Поскольку книга LFS предполагает наличие <span class= + "emphasis"><em>хотя бы этого</em></span> базового уровня навыков, + различные форумы поддержки LFS вряд ли смогут предоставить вам + большую помощь в этих вопросах. Вы обнаружите, что ваши вопросы, + касающиеся таких базовых знаний, скорее всего, останутся без + ответа (или вас просто направят к списку основных материалов для + предварительного ознакомления). + </p> + <p> + Перед созданием системы LFS мы настоятельно рекомендуем прочитать + следующие статьи: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + HOWTO по сборке программного обеспечения <a class="ulink" + href= + "https://tldp.org/HOWTO/Software-Building-HOWTO.html">https://tldp.org/HOWTO/Software-Building-HOWTO.html</a> + </p> + <p> + Это исчерпывающее руководство по сборке и установке + <span class="quote">«<span class= + "quote">универсальных</span>»</span> программ Unix под + Linux. Несмотря на то что руководство написано достаточно + давно, оно по-прежнему дает хороший обзор основных методов, + применяемых для сборки и установки программного + обеспечения. + </p> + </li> + <li class="listitem"> + <p> + Руководство для начинающих по установке из исходников + <a class="ulink" href= + "https://moi.vonos.net/linux/beginners-installing-from-source/"> + https://moi.vonos.net/linux/beginners-installing-from-source/</a> + </p> + <p> + В этом руководстве содержится хороший обзор основных + навыков и методов, необходимых для сборки программ из + исходного кода + </p> + </li> + </ul> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="pre-standards" name="pre-standards"></a>LFS и + стандарты + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Структура LFS максимально соответствует стандартам Linux. + Первичными стандартами являются: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + <a class="ulink" href= + "https://pubs.opengroup.org/onlinepubs/9699919799/">POSIX.1-2008</a>. + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html"> + Filesystem Hierarchy Standard (FHS) Version 3.0</a> + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "https://refspecs.linuxfoundation.org/lsb.shtml">Linux + Standard Base (LSB) Version 5.0 (2015)</a> + </p> + <p> + LSB имеет четыре отдельных стандарта: Core, Desktop, + Runtime Languages и Imaging. Некоторые части спецификаций + Core и Desktop зависят от архитектуры. Есть также две + области не являющиеся обязательными: Gtk3 и Graphics. LFS + старается соответствовать стандартам LSB, для архитектур + IA32 (32-bit x86) или AMD64 (x86_64), рассмотренных в + предыдущем разделе. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Многие не согласны с требованиями LSB. Основные цели + стандартов - быть уверенным в том, что проприетарное ПО + будет правильно установлено и сможет корректно работать + на совместимой системе. Поскольку в LFS установка + программ идёт из исходных кодов, у пользователя имеется + полный контроль над тем, какие пакеты ему необходимы, вы + можете не устанавливать некоторые пакеты, определяемые в + LSB. + </p> + </div> + </li> + </ul> + </div> + <p> + Создать законченную систему, которая пройдет сертификационные + тесты LSB <span class="quote">«<span class="quote">с + нуля</span>»</span>, возможно, но этого нельзя сделать без + установки множества дополнительных пакетов, которые выходят за + рамки этой книги. Однако, инструкции по их установке можно найти + в книге BLFS. + </p> + <div class="variablelist"> + <h4> + <a id="idm99" name="idm99"></a>Пакеты LFS, которые необходимы + для удовлетворения требований LSB + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <span class="term"><span class="emphasis"><em>LSB + Core:</em></span></span> + </p> + </td> + <td> + <p> + Bash, Bc, Binutils, Coreutils, Diffutils, File, + Findutils, Gawk, Grep, Gzip, M4, Man-DB, Ncurses, + Procps, Psmisc, Sed, Shadow, Tar, Util-linux, Zlib + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class="emphasis"><em>LSB + Desktop:</em></span></span> + </p> + </td> + <td> + <p> + Нет + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class="emphasis"><em>LSB + Runtime Languages:</em></span></span> + </p> + </td> + <td> + <p> + Perl, Python + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class="emphasis"><em>LSB + Imaging:</em></span></span> + </p> + </td> + <td> + <p> + Нет + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class="emphasis"><em>LSB Gtk3 + и LSB Graphics (Необязательные):</em></span></span> + </p> + </td> + <td> + <p> + Нет + </p> + </td> + </tr> + </tbody> + </table> + </div> + <div class="variablelist"> + <h4> + <a id="idm126" name="idm126"></a>Пакеты, поставляемые BLFS, + необходимые для удовлетворения требований LSB + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <span class="term"><span class="emphasis"><em>LSB + Core:</em></span></span> + </p> + </td> + <td> + <p> + At, Batch (часть At), Cpio, Ed, Fcrontab, LSB-Tools, + NSPR, NSS, PAM, Pax, Sendmail (или Postfix, или Exim), + time + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class="emphasis"><em>LSB + Desktop:</em></span></span> + </p> + </td> + <td> + <p> + Alsa, ATK, Cairo, Desktop-file-utils, Freetype, + Fontconfig, Gdk-pixbuf, Glib2, GTK+2, + Icon-naming-utils, Libjpeg-turbo, Libpng, Libtiff, + Libxml2, MesaLib, Pango, Xdg-utils, Xorg + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class="emphasis"><em>LSB + Runtime Languages:</em></span></span> + </p> + </td> + <td> + <p> + Libxml2, Libxslt + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class="emphasis"><em>LSB + Imaging:</em></span></span> + </p> + </td> + <td> + <p> + CUPS, Cups-filters, Ghostscript, SANE + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class="emphasis"><em>LSB Gtk3 + и LSB Graphics (Необязательные):</em></span></span> + </p> + </td> + <td> + <p> + GTK3+ + </p> + </td> + </tr> + </tbody> + </table> + </div> + <div class="variablelist"> + <h4> + <a id="idm153" name="idm153"></a>Пакеты, не поставляемые LFS + или BLFS, необходимые для удовлетворения требований LSB + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <span class="term"><span class="emphasis"><em>LSB + Core:</em></span></span> + </p> + </td> + <td> + <p> + Нет + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class="emphasis"><em>LSB + Desktop:</em></span></span> + </p> + </td> + <td> + <p> + Qt4 (но предоставляется Qt5) + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class="emphasis"><em>LSB + Runtime Languages:</em></span></span> + </p> + </td> + <td> + <p> + Нет + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class="emphasis"><em>LSB + Imaging:</em></span></span> + </p> + </td> + <td> + <p> + Нет + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class="emphasis"><em>LSB Gtk3 + и LSB Graphics (Необязательные):</em></span></span> + </p> + </td> + <td> + <p> + Нет + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="pre-why" name="pre-why"></a>Информация о пакетах, + используемых в этой книге + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Целью LFS является создание законченной и пригодной для + использования базовой системы, которая содержит все пакеты, + необходимые для её функционирования, состоящую при этом из + относительно небольшого набора программ, и возможности которой + можно расширять в зависимости от потребностей пользователя. Это + не означает, что LFS является самой маленькой из возможных + систем. В систему включено несколько важных пакетов, которые не + являются обязательными. Приведенный ниже список объясняет почему + в книгу включен тот или иной пакет. + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Acl + </p> + <p> + Access Control List или ACL — список управления доступом, + который определяет, кто или что может получать доступ к + объекту (программе, процессу или файлу), и какие именно + операции разрешено или запрещено выполнять субъекту + (пользователю, группе пользователей).Данный пакет содержит + утилиты для администрирования списков управления доступом, + которые используются для определения дискреционных прав + доступа к файлам и каталогам. + </p> + </li> + <li class="listitem"> + <p> + Attr + </p> + <p> + Этот пакет содержит программы для управления расширенными + атрибутами объектов файловой системы. + </p> + </li> + <li class="listitem"> + <p> + Autoconf + </p> + <p> + Этот пакет содержит программы для создания сценариев + оболочки, которые могут выполнять автоматическую настройку + исходного кода из шаблона разработчика. Он часто необходим + для повторной компиляции пакета после обновления процедур + сборки. + </p> + </li> + <li class="listitem"> + <p> + Automake + </p> + <p> + Этот пакет содержит программы для создания Make-файлов из + шаблона. Он также необходим для повторной компиляции пакета + после обновления процедур сборки. + </p> + </li> + <li class="listitem"> + <p> + Bash + </p> + <p> + Этот пакет удовлетворяет требования LSB по предоставлению + интерфейса Bourne Shell для системы. Он был выбран среди + других пакетов оболочки из-за его повсеместного + использования и широких возможностей. + </p> + </li> + <li class="listitem"> + <p> + Bc + </p> + <p> + Этот пакет предоставляет язык числовой обработки + произвольной точности. Он необходимым для сборки ядра Linux + </p> + </li> + <li class="listitem"> + <p> + Binutils + </p> + <p> + Этот пакет содержит компоновщик, ассемблер и другие + инструменты для работы с объектными файлами. Программы в + этом пакете необходимы для компиляции большинства пакетов в + системе LFS. + </p> + </li> + <li class="listitem"> + <p> + Bison + </p> + <p> + Этот пакет содержит GNU-версию yacc (Yet Another Compiler + Compiler), необходимого для сборки некоторых пакетов в LFS. + </p> + </li> + <li class="listitem"> + <p> + Bzip2 + </p> + <p> + Этот пакет содержит программы для сжатия и распаковки + файлов. Используется для распаковки множества пакетов LFS. + </p> + </li> + <li class="listitem"> + <p> + Check + </p> + <p> + Этот пакет содержит тестовую обвязку для других программ. + </p> + </li> + <li class="listitem"> + <p> + Coreutils + </p> + <p> + Этот пакет содержит ряд программ для просмотра файлов и + каталогов, и управления ими. Эти программы необходимы для + управления файлами через командную строку и для сборки + каждого пакета в LFS. + </p> + </li> + <li class="listitem"> + <p> + DejaGNU + </p> + <p> + Этот пакет предоставляет фреймворк для тестирования других + программ. + </p> + </li> + <li class="listitem"> + <p> + Diffutils + </p> + <p> + Этот пакет содержит программы, которые показывают различия + между файлами или каталогами. Их можно использовать для + создания патчей, а также они применяются во многих + процедурах сборки + </p> + </li> + <li class="listitem"> + <p> + E2fsprogs + </p> + <p> + Этот пакет содержит утилиты для работы с файловыми + системами ext2, ext3 и ext4. Это наиболее распространенные + и тщательно протестированные файловые системы, + поддерживаемые Linux + </p> + </li> + <li class="listitem"> + <p> + Expat + </p> + <p> + Этот пакет содержит небольшую библиотеку разбора XML.Она + необходима для модуля Perl XML::Parser. + </p> + </li> + <li class="listitem"> + <p> + Expect + </p> + <p> + Этот пакет содержит инструменты для автоматизации и + тестирования, и является расширением к скриптовому языку + Tcl, для многих интерактивных приложений. Он обычно + используется для тестирования других пакетов. + </p> + </li> + <li class="listitem"> + <p> + File + </p> + <p> + Этот пакет содержит утилиту для определения типа файла или + файлов. Некоторым пакетам она нужна в сценариях сборки. + </p> + </li> + <li class="listitem"> + <p> + Findutils + </p> + <p> + Этот пакет предоставляет программы для поиска файлов. Он + используется во многих сценариях сборки пакетов. + </p> + </li> + <li class="listitem"> + <p> + Flex + </p> + <p> + Этот пакет содержит утилиту для генерации программ, + распознающих шаблоны в тексте. Это версия GNU программы lex + (лексический анализатор). Пакет необходим для сборки + некоторых пакетов LFS. + </p> + </li> + <li class="listitem"> + <p> + Gawk + </p> + <p> + Этот пакет содержит программы для работы с текстовыми + файлами. Это GNU версия awk (Aho-Weinberg-Kernighan). Он + используется во многих сценариях сборки пакетов. + </p> + </li> + <li class="listitem"> + <p> + GCC + </p> + <p> + Это коллекция компиляторов Gnu. Он содержит компиляторы C и + C++, а также несколько других компиляторов, поддержка + которых не предусмотрена в LFS. + </p> + </li> + <li class="listitem"> + <p> + GDBM + </p> + <p> + Этот пакет содержит библиотеку GNU Database Manager. Он + используется пакетом Man-DB + </p> + </li> + <li class="listitem"> + <p> + Gettext + </p> + <p> + Этот пакет содержит утилиты и библиотеки для + интернационализации и локализации многочисленных пакетов. + </p> + </li> + <li class="listitem"> + <p> + Glibc + </p> + <p> + Этот пакет содержит основную библиотеку C. Программы Linux + не будут работать без неё. + </p> + </li> + <li class="listitem"> + <p> + GMP + </p> + <p> + Этот пакет содержит математические библиотеки, + предоставляющие полезные функции для вычислений с плавающей + точкой. Требуется для сборки GCC. + </p> + </li> + <li class="listitem"> + <p> + Gperf + </p> + <p> + Этот пакет содержит программу, которая генерирует идеальную + хеш-функцию из набора ключей. Необходим для пакета + <span class="phrase">Udev</span> . + </p> + </li> + <li class="listitem"> + <p> + Grep + </p> + <p> + Этот пакет содержит программы для поиска по файлам. Пакет + используется в скриптах сборки большинства пакетов. + </p> + </li> + <li class="listitem"> + <p> + Groff + </p> + <p> + Этот пакет содержит программы для обработки и + форматирования текста. Одной из важнейших функций этих + программ является форматирование man страниц. + </p> + </li> + <li class="listitem"> + <p> + GRUB + </p> + <p> + Это загрузчик операционной системы (GRand Unified + Bootloader). Самый гибкий из нескольких доступных + загрузчиков. + </p> + </li> + <li class="listitem"> + <p> + Gzip + </p> + <p> + Этот пакет содержит программы для сжатия и распаковки + файлов. Он необходим для распаковки множества пакетов в + LFS. + </p> + </li> + <li class="listitem"> + <p> + Iana-etc + </p> + <p> + Этот пакет предоставляет данные для сетевых служб и + протоколов. Он необходим для обеспечения правильных сетевых + возможностей. + </p> + </li> + <li class="listitem"> + <p> + Inetutils + </p> + <p> + Этот пакет содержит программы для базового сетевого + администрирования. + </p> + </li> + <li class="listitem"> + <p> + Intltool + </p> + <p> + Этот пакет содержит инструменты для извлечения переводимых + строк из исходных файлов. + </p> + </li> + <li class="listitem"> + <p> + IProute2 + </p> + <p> + Этот пакет содержит программы для базовой и расширенной + работы в сетях IPv4 и IPv6. Он был выбран среди других + распространенных пакетов сетевых инструментов (net-tools) + из-за его поддержки IPv6. + </p> + </li> + <li class="listitem"> + <p> + Kbd + </p> + <p> + Этот пакет содержит таблицы раскладок, утилиты управления + клавиатурой для неамериканских клавиатур, кроме этого, с + ним поставляется большой набор консольных шрифтов. + </p> + </li> + <li class="listitem"> + <p> + Kmod + </p> + <p> + Этот пакет содержит программы, необходимые для + администрирования модулей ядра Linux. + </p> + </li> + <li class="listitem"> + <p> + Less + </p> + <p> + Этот пакет содержит очень хороший просмотрщик текстовых + файлов, который позволяет использовать прокрутку верх/вниз + при просмотре. Многие пакеты используют его для + постраничного вывода. + </p> + </li> + <li class="listitem"> + <p> + Libcap + </p> + <p> + Этот пакет реализует интерфейсы пользовательского + пространства для возможностей POSIX 1003.1e, доступных в + ядре Linux. + </p> + </li> + <li class="listitem"> + <p> + Libelf + </p> + <p> + Проект elfutils предоставляет библиотеки и инструменты для + файлов ELF и данных DWARF. Большинство утилит в этом пакете + доступны в других пакетах, но эта библиотека необходима для + сборки ядра Linux с использованием стандартной (и наиболее + эффективной) конфигурации. + </p> + </li> + <li class="listitem"> + <p> + Libffi + </p> + <p> + Этот пакет реализует переносимый программный интерфейс + высокого уровня для различных соглашений о вызовах. + Некоторые программы могут не знать во время компиляции, + какие аргументы должны быть переданы в функцию. Например, + интерпретатору во время выполнения может быть сообщено о + количестве и типах аргументов, используемых для вызова + данной функции. Libffi можно использовать как мост от + интерпретатора к скомпилированному коду. + </p> + </li> + <li class="listitem"> + <p> + Libpipeline + </p> + <p> + Пакет Libpipeline содержит библиотеку для гибкого и + удобного управления конвейерами подпроцессов. Она + необходима для Man-DB. + </p> + </li> + <li class="listitem"> + <p> + Libtool + </p> + <p> + Этот пакет содержит сценарий поддержки универсальной + библиотеки GNU. Он объединяет сложность использования общих + библиотек в согласованный переносимый интерфейс. Библиотека + необходима наборам тестов в других пакетах LFS. + </p> + </li> + <li class="listitem"> + <p> + Libxcrypt + </p> + <p> + Этот пакет предоставляет библиотеку <code class= + "systemitem">libcrypt</code>, необходимую различным пакетам + (в частности, Shadow) для хеширования паролей. Он заменяет + устаревшую реализацию <code class= + "systemitem">libcrypt</code> в Glibc. + </p> + </li> + <li class="listitem"> + <p> + Linux Kernel + </p> + <p> + Этот пакет является ядром операционной системой. + </p> + </li> + <li class="listitem"> + <p> + M4 + </p> + <p> + Этот пакет содержит текстовый макропроцессор, полезный в + качестве инструмента сборки для других программ. + </p> + </li> + <li class="listitem"> + <p> + Make + </p> + <p> + Этот пакет содержит программу для управления сборкой + пакетов. При сборке она необходима почти для каждого пакета + в LFS. + </p> + </li> + <li class="listitem"> + <p> + Man-DB + </p> + <p> + Этот пакет содержит программы для поиска и просмотра + справочных страниц. Он был выбран вместо пакета + <span class="application">man</span> из-за превосходных + возможностей интернационализации. Содержит man. + </p> + </li> + <li class="listitem"> + <p> + Man-pages + </p> + <p> + Этот пакет представляет собой содержимое основных + справочных страниц Linux. + </p> + </li> + <li class="listitem"> + <p> + Meson + </p> + <p> + Этот пакет предоставляет программный инструмент для + автоматизации создания программного обеспечения. Основная + цель Meson — свести к минимуму количество времени, которое + разработчики программного обеспечения должны тратить на + настройку своей системы сборки. Требуется для сборки + Systemd, а также многих пакетов BLFS. + </p> + </li> + <li class="listitem"> + <p> + MPC + </p> + <p> + Этот пакет содержит функции для арифметики комплексных + чисел. Необходим GCC. + </p> + </li> + <li class="listitem"> + <p> + MPFR + </p> + <p> + Этот пакет содержит функции для арифметики с произвольной + точностью. Необходим GCC. + </p> + </li> + <li class="listitem"> + <p> + Ninja + </p> + <p> + Этот пакет предоставляет небольшую систему сборки, + ориентированную на скорость. Он предназначен для того, + чтобы его входные файлы генерировались системой сборки + более высокого уровня, и для максимально быстрого запуска + сборок. Необходим для Meson. + </p> + </li> + <li class="listitem"> + <p> + Ncurses + </p> + <p> + Этот пакет содержит библиотеки для независимой от терминала + обработки символьных экранов. Он часто используется для + управления курсором в меню. Необходим ряду пакетов в LFS. + </p> + </li> + <li class="listitem"> + <p> + Openssl + </p> + <p> + Этот пакет содержит инструменты управления и библиотеки, + относящиеся к криптографии. Они предоставляют + криптографические функций другим пакетам, включая ядро + Linux. + </p> + </li> + <li class="listitem"> + <p> + Patch + </p> + <p> + Этот пакет содержит программу для изменения или создания + файлов путем применения файла <span class= + "emphasis"><em>patch</em></span>, обычно создаваемого + программой <span class="application">diff</span>. Он + необходим процедуре сборки для некоторых пакетов LFS. + </p> + </li> + <li class="listitem"> + <p> + Perl + </p> + <p> + Этот пакет является интерпретатором языка PERL. Он + необходим для установки и тестирования некоторых пакетов + LFS. + </p> + </li> + <li class="listitem"> + <p> + Pkgconf + </p> + <p> + Этот пакет содержит программу, которая помогает настраивать + флаги компилятора и компоновщика для библиотек разработки. + Программа может быть использована в качестве замены + <span class="command"><strong>pkg-config</strong></span>, + который необходим системе сборки многих пакетов. Он + поддерживается более активно и развивается немного быстрее, + чем оригинальный пакет Pkg-config. + </p> + </li> + <li class="listitem"> + <p> + Procps-NG + </p> + <p> + Этот пакет содержит программы для мониторинга процессов. + Набор полезен для системного администрирования, а также + используются загрузочными сценариями LFS. + </p> + </li> + <li class="listitem"> + <p> + Psmisc + </p> + <p> + Этот пакет содержит программы для отображения информации о + запущенных процессах. Этот набор программ полезен для + системного администрирования. + </p> + </li> + <li class="listitem"> + <p> + Python 3 + </p> + <p> + Этот пакет предоставляет интерпретируемый язык + программирования, философия которого делает упор на + удобочитаемость кода. + </p> + </li> + <li class="listitem"> + <p> + Readline + </p> + <p> + Этот пакет представляет собой набор библиотек, предлагающих + возможности редактирования командной строки и средства для + работы с историей команд. Используется командным + интерпретатором Bash. + </p> + </li> + <li class="listitem"> + <p> + Sed + </p> + <p> + Этот пакет позволяет редактировать текст, не открывая его в + текстовом редакторе. Он необходим сценариям настройки + многих пакетов LFS. + </p> + </li> + <li class="listitem"> + <p> + Shadow + </p> + <p> + Этот пакет содержит программы для безопасной обработки + паролей. + </p> + </li> + <li class="listitem"> + <p> + Sysklogd + </p> + <p> + Этот пакет содержит программы для регистрации системных + сообщений, которые генерируются ядром или процессами демона + при возникновении необычных событий. + </p> + </li> + <li class="listitem"> + <p> + Sysvinit + </p> + <p> + Этот пакет содержит систему инициализации <span class= + "application">init</span>, родительской элемент всех + остальных процессов в работающей системе Linux. + </p> + </li> + <li class="listitem"> + <p> + Udev + </p> + <p> + Этот пакет представляет собой диспетчер устройств. Он + контролирует разрешения, имена и символические ссылки + устройств в каталоге /dev, когда устройства добавляются или + удаляются из системы. + </p> + </li> + <li class="listitem"> + <p> + Tar + </p> + <p> + Этот пакет предоставляет возможность архивирования и + извлечения практически всех пакетов, используемых в LFS. + </p> + </li> + <li class="listitem"> + <p> + Tcl + </p> + <p> + Этот пакет содержит командный язык инструментов, + используется во многих наборах тестов. + </p> + </li> + <li class="listitem"> + <p> + Texinfo + </p> + <p> + Этот пакет предоставляет программы для чтения, записи и + преобразования информационных страниц. Используется в + процедурах установки многих пакетов LFS. + </p> + </li> + <li class="listitem"> + <p> + Util-linux + </p> + <p> + Этот пакет содержит различные служебные программы. Среди + них утилиты для работы с файловыми системами, консолями, + разделами и сообщениями. + </p> + </li> + <li class="listitem"> + <p> + Vim + </p> + <p> + Этот пакет содержит редактор. Его выбрали из-за + совместимости с классическим редактором vi и огромного + количества возможностей. Редактор является очень личным + выбором для каждого пользователя. По желанию можно заменить + любым другим редактором. + </p> + </li> + <li class="listitem"> + <p> + Wheel + </p> + <p> + Этот пакет содержит модуль Python, который представляет + собой эталонную реализацию механизма упаковки Python. + </p> + </li> + <li class="listitem"> + <p> + XML::Parser + </p> + <p> + Этот пакет представляет собой модуль Perl, который + взаимодействует с Expat. + </p> + </li> + <li class="listitem"> + <p> + XZ Utils + </p> + <p> + Этот пакет содержит программы для сжатия и распаковки + файлов. Он обеспечивает высокое сжатие и используется для + распаковки пакетов в формате XZ или LZMA. + </p> + </li> + <li class="listitem"> + <p> + Zlib + </p> + <p> + Этот пакет содержит процедуры сжатия и распаковки, + используемые некоторыми программами. + </p> + </li> + <li class="listitem"> + <p> + Zstd + </p> + <p> + Этот пакет содержит процедуры сжатия и распаковки, + используемые некоторыми программами. Он обеспечивает + высокие коэффициенты сжатия и очень широкий диапазон + компромиссов между сжатием и скоростью. + </p> + </li> + </ul> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="pre-typography" name="pre-typography"></a>Оформление + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Чтобы облегчить понимание, в этой книге используются условные + обозначения. Этот раздел содержит примеры оформления, + используемые в Linux From Scratch. + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Такое оформление предназначено для ввода именно так, как + показано, если иное не сказано в тексте рядом. Это оформление + также используется в разделах пояснений, чтобы указать, на какую + команду ссылается. + </p> + <p> + В некоторых случаях логическая строка расширяется до двух или + более физических строк с обратной косой чертой в конце строки. + </p> + <pre class="userinput"><kbd class= + "command">CC="gcc -B/usr/bin/" ../binutils-2.18/configure \ + --prefix=/tools --disable-nls --disable-werror</kbd></pre> + <p> + Обратите внимание, что за обратной косой чертой должен следовать + перевод строки. Другие символы, такие как пробелы или символы + табуляции, приведут к неправильным результатам. + </p> + <pre class="screen"><code class= + "computeroutput">install-info: unknown option '--dir-file=/mnt/lfs/usr/info/dir'</code></pre> + <p> + Такое оформление (текст фиксированной ширины) показывает вывод на + экран, как правило, в результате выполнения команд. Этот формат + также используется для отображения имен файлов, таких как + <code class="filename">/etc/ld.so.conf</code>. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Пожалуйста, настройте свой браузер для отображения текста + фиксированной ширины с хорошим моноширинным шрифтом, с помощью + которого вы сможете четко различать символы <code class= + "literal">Il1</code> или <code class="literal">O0</code>. + </p> + </div> + <p> + <span class="emphasis"><em>Акцент</em></span> + </p> + <p> + Эта форма текста используется в книге для нескольких целей. Его + основная цель — подчеркнуть важные моменты. + </p> + <p> + <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/">https://mirror.linuxfromscratch.ru/</a> + </p> + <p> + Этот формат используется для гиперссылок как на сайт сообщества + LFS, так и на внешние ресурсы. Может включать справочную + информацию, места загрузки и веб-сайты. + </p> + <pre class="userinput"><kbd class= + "command">cat > $LFS/etc/group << "EOF" +<code class="literal">root:x:0: +bin:x:1: +......</code> +EOF</kbd></pre> + <p> + Этот формат используется при создании файлов конфигурации. Первая + команда указывает системе создать файл <code class= + "filename">$LFS/etc/group</code> из всего, что введено далее, + пока не встретится последовательность End Of File (EOF). Поэтому + весь этот раздел обычно печатается как есть. + </p> + <p> + <em class="replaceable"><code><ЗАМЕНЯЕМЫЙ + ТЕКСТ></code></em> + </p> + <p> + Этот формат используется для текста, который не должен быть + напечатан так, как отображается, или для операций копирования и + вставки. + </p> + <p> + <em class="replaceable"><code>[НЕОБЯЗАТЕЛЬНЫЙ ТЕКСТ]</code></em> + </p> + <p> + Этот формат используется для текста, который является + необязательным. + </p> + <p> + <a class="ulink" href= + "https://man.archlinux.org/man/passwd.5">passwd(5)</a> + </p> + <p> + Этот формат используется для ссылки на определенную страницу + руководства (man). Число в скобках указывает на конкретный раздел + внутри руководств. Например, у <span class= + "command"><strong>passwd</strong></span> есть две справочные + страницы. В соответствии с инструкциями по установке LFS эти две + справочные страницы будут расположены в <code class= + "filename">/usr/share/man/man1/passwd.1</code> и <code class= + "filename">/usr/share/man/man5/passwd.5</code>. Когда в книге + используется <a class="ulink" href= + "https://man.archlinux.org/man//passwd.5">passwd(5)</a>, имеется + в виду конкретно <code class= + "filename">/usr/share/man/man5/passwd.5</code>. <span class= + "command"><strong>man passwd</strong></span> напечатает первую + найденную справочную страницу, совпадающую с <span class= + "quote">«<span class="quote">passwd</span>»</span> - это будет + <code class="filename">/usr/share/man/man1/passwd.1</code>. В + этом примере вам нужно будет запустить <span class= + "command"><strong>man 5 passwd</strong></span>, чтобы прочитать + указанную страницу. Обратите внимание, что большинство справочных + страниц не имеют повторяющихся страниц в разных разделах. Поэтому + обычно достаточно <span class="command"><strong>man <em class= + "replaceable"><code><имя + программы></code></em></strong></span>. В книге LFS ссылки на + справочные страницы также являются гиперссылками, поэтому нажатие + на такую ссылку откроет справочную страницу, в формате HTML, со + <a class="ulink" href="https://man.archlinux.org/">страниц + руководства Arch Linux</a>. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="pre-organization" name= + "pre-organization"></a>Структура + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Эта книга разделена на несколько частей. + </p> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + Часть I - Введение + </h3> + <p> + Эта часть содержит важные замечания о том, как выполнить + установку LFS. Также здесь представлена метаинформация о книге + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + Часть II - Подготовка к сборке + </h3> + <p> + Часть II описывает, как подготовиться к процессу сборки — + создать разделы, загрузить пакеты и выполнить компиляцию + временных инструментов. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + Часть III - Создание кросс-тулчейна LFS и временных + инструментов + </h3> + <p> + Часть III содержит инструкции по созданию инструментов, + необходимых для создания конечной системы LFS. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + Часть IV - Сборка системы LFS + </h3> + <p> + Часть IV проводит читателя через сборку системы LFS—компиляцию + и установку всех пакетов один за другим, настройку сценариев + загрузки и установку ядра. Полученная в результате система + Linux является основой, на которой можно собрать другое + программное обеспечение для расширения системы по желанию. В + конце этой книги есть простой в использовании справочник со + списком всех программ, библиотек и важных файлов, которые были + установлены. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + Часть V - Приложения + </h3> + <p> + Часть V содержит информацию о самой книге, включая акронимы и + термины, благодарности, зависимости пакетов, список загрузочных + сценариев LFS, лицензии на распространение книги и + исчерпывающий указатель пакетов, программ, библиотек и + сценариев. + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="pre-errata" name="pre-errata"></a>Ошибки и + рекомендации по безопасности + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Программное обеспечение, используемое для создания системы LFS, + постоянно обновляется и совершенствуется. Предупреждения + безопасности и исправления ошибок могут появиться после выхода + книги LFS. Чтобы проверить, нуждаются ли пакеты или инструкции в + этом выпуске LFS в каких-либо изменениях для устранения + уязвимостей в системе безопасности или исправления других ошибок, + посетите <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/lfs/errata/12.1/">https://mirror.linuxfromscratch.ru/lfs/errata/12.1/</a>, + прежде чем приступить к сборке. Вы должны внести требуемые + изменения и применить их к соответствующему разделу книги по мере + сборки системы LFS. + </p> + <p> + Кроме того, редакторы Linux From Scratch ведут список уязвимостей + безопасности, обнаруженных <span class= + "emphasis"><em>после</em></span> выхода книги. Чтобы проверить + наличие каких-либо известных уязвимостей безопасности, посетите + <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/lfs/advisories/">https://mirror.linuxfromscratch.ru/lfs/advisories/</a>, + прежде чем продолжить сборку. И, если вы будете использовать + систему LFS в качестве реальной настольной или серверной системы, + вам следует обращаться к рекомендациям и устранять любые + уязвимости в системе безопасности, даже когда система LFS + полностью собрана. + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h1 class="title"> + <a id="part1" name="part1"></a>Часть I. Введение + </h1> + </div> + </div> + </div> + <div class="part"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="chapter-intro" name="chapter-intro"></a>Глава 1. + Введение + </h2> + </div> + </div> + </div> + <div class="chapter" lang="ru" xml:lang="ru"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-intro-how" name="ch-intro-how"></a>1.1. Как + собрать систему LFS + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Система LFS будет собрана с использованием уже установленного + дистрибутива Linux (например, Debian, OpenMandriva, Fedora или + openSUSE). Существующая система Linux (хост) будет + использоваться в качестве отправной точки для предоставления + необходимых программ, включая компилятор, компоновщик и + оболочку, для создания новой системы. Выберите опцию + <span class="quote">«<span class= + "quote">разработка</span>»</span> во время установки + дистрибутива, чтобы получить доступ к этим инструментам. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Существует множество способов установки дистрибутива Linux, и + значения по умолчанию обычно не оптимальны для сборки системы + LFS. Предложения по настройке дистрибутива смотрите: + <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/hints/downloads/files/partitioning-for-lfs.txt"> + https://mirror.linuxfromscratch.ru/hints/downloads/files/partitioning-for-lfs.txt</a>. + </p> + </div> + <p> + В качестве альтернативы установке отдельного дистрибутива на + свой компьютер вы можете использовать LiveCD другого + дистрибутива. + </p> + <p> + <a class="xref" href="#chapter-partitioning" title= + "Глава 2. Подготовка хост-системы">Глава 2</a> этой книги + содержит информацию, о том, как создать новые разделы Linux и + файловую систему, где будет скомпилирована и установлена новая + система LFS. <a class="xref" href="#chapter-getting-materials" + title="Глава 3. Пакеты и патчи">Глава 3</a> содержит + информацию, о том, какие пакеты и исправления необходимо + загрузить для сборки системы LFS и как их хранить на файловой + системе. <a class="xref" href="#chapter-final-preps" title= + "Глава 4. Заключительный этап подготовки">Глава 4</a> + освещает вопросы настройки рабочего окружения. Пожалуйста, + внимательно прочитайте <a class="xref" href= + "#chapter-final-preps" title= + "Глава 4. Заключительный этап подготовки">Глава 4</a>, так + как в ней объясняется несколько важных моментов, о которых вам + необходимо знать, прежде чем вы начнёте работать со следующими + главами. + </p> + <p> + <a class="xref" href="#chapter-cross-tools" title= + "Глава 5. Сборка кросс-тулчейна">Глава 5</a> содержит + информацию об установке первоначального набора инструментов + (binutils, gcc и glibc) с использованием методов + кросс-компиляции для изоляции новых инструментов от + хост-системы. + </p> + <p> + <a class="xref" href="#chapter-temporary-tools" title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 6</a> + рассказывает, как выполнить кросс-компиляцию базовых утилит с + использованием только что собранного временного набора + инструментов. + </p> + <p> + В <a class="xref" href="#chapter-chroot-temporary-tools" title= + "Глава 7. Вход в окружение Chroot и создание дополнительных временных инструментов"> + Глава 7</a> будет осуществлен переход в среду <span class= + "command"><strong>chroot</strong></span>, где мы будет + использовать новые инструменты для сборки остальных + инструментов, необходимых для создания конечной системы. + </p> + <p> + Эта попытка изолировать новую систему от основного дистрибутива + поначалу может показаться чрезмерной. Полное техническое + обоснование того, почему это сделано именно так, приведено в + разделе <a class="xref" href="#ch-tools-toolchaintechnotes" + title= + "Технические примечания по сборочным инструментам">Технические + примечания по сборочным инструментам</a>. + </p> + <p> + В <a class="xref" href="#chapter-building-system" title= + "Глава 8. Установка базового системного программного обеспечения"> + Глава 8</a> будет собрана полноценная система LFS. Еще + одно преимущество среды chroot заключается в том, что она + позволяет вам продолжать использовать хост-систему во время + сборки LFS. Ожидая завершения компиляции пакетов, вы можете + продолжать пользоваться своим компьютером в обычном режиме. + </p> + <p> + Чтобы завершить установку, в <a class="xref" href= + "#chapter-config" title= + "Глава 9. Системные настройки">Глава 9</a> происходит + настройка базовой конфигурации системы, в <a class="xref" href= + "#chapter-bootable" title= + "Глава 10. Делаем систему LFS загрузочной">Глава 10</a> + настраиваются ядро и загрузчик. <a class="xref" href= + "#chapter-finalizing" title= + "Глава 11. Заключение">Глава 11</a> содержит информацию о + том как расширить возможности системы LFS. После выполнения + шагов, описанных в этой главе, компьютер будет готов к загрузке + в новую систему LFS. + </p> + <p> + Здесь описан процесс сборки системы в двух словах. Подробная + информация о каждом шаге обсуждается в следующих главах и + описаниях пакетов. Элементы, которые кажутся сложными сейчас, + будут разъяснены позже, и все встанет на свои места, по мере + прочтения книги. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-intro-whatsnew" name="ch-intro-whatsnew"></a>1.2. + Что нового с момента последнего релиза + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Ниже приведен список пакетов, обновленных с момента предыдущего + выпуска книги. + </p> + <div class="itemizedlist"> + <p class="title"> + <strong>Обновлены:</strong> + </p> + <ul> + <li class="listitem"> + <p> + Acl-2.3.2 + </p> + </li> + <li class="listitem"> + <p> + Attr-2.5.2 + </p> + </li> + <li class="listitem"> + <p> + Autoconf-2.72 + </p> + </li> + <li class="listitem"> + <p> + Bash-5.2.21 + </p> + </li> + <li class="listitem"> + <p> + Bc-6.7.5 + </p> + </li> + <li class="listitem"> + <p> + Binutils-2.42 + </p> + </li> + <li class="listitem"> + <p> + Coreutils-9.4 + </p> + </li> + <li class="listitem"> + <p> + Expat-2.6.0 + </p> + </li> + <li class="listitem"> + <p> + Gawk-5.3.0 + </p> + </li> + <li class="listitem"> + <p> + Gettext-0.22.4 + </p> + </li> + <li class="listitem"> + <p> + Glibc-2.39 + </p> + </li> + <li class="listitem"> + <p> + GRUB-2.12 + </p> + </li> + <li class="listitem"> + <p> + Gzip-1.13 + </p> + </li> + <li class="listitem"> + <p> + Iana-Etc-20240125 + </p> + </li> + <li class="listitem"> + <p> + Inetutils-2.5 + </p> + </li> + <li class="listitem"> + <p> + IPRoute2-6.7.0 + </p> + </li> + <li class="listitem"> + <p> + Jinja2-3.1.3 + </p> + </li> + <li class="listitem"> + <p> + Kbd-2.6.4 + </p> + </li> + <li class="listitem"> + <p> + Kmod-31 + </p> + </li> + <li class="listitem"> + <p> + Libelf из Elfutils-0.190 + </p> + </li> + <li class="listitem"> + <p> + Linux-6.7.4 + </p> + </li> + <li class="listitem"> + <p> + Man-DB-2.12.0 + </p> + </li> + <li class="listitem"> + <p> + Man-pages-6.06 + </p> + </li> + <li class="listitem"> + <p> + MarkupSafe-2.1.5 + </p> + </li> + <li class="listitem"> + <p> + Meson-1.3.2 + </p> + </li> + <li class="listitem"> + <p> + MPFR-4.2.1 + </p> + </li> + <li class="listitem"> + <p> + Ncurses-6.4-20230520 + </p> + </li> + <li class="listitem"> + <p> + OpenSSL-3.2.1 + </p> + </li> + <li class="listitem"> + <p> + Perl-5.38.2 + </p> + </li> + <li class="listitem"> + <p> + Pkgconf-2.1.1 + </p> + </li> + <li class="listitem"> + <p> + Procps-ng-4.0.4 + </p> + </li> + <li class="listitem"> + <p> + Python-3.12.2 + </p> + </li> + <li class="listitem"> + <p> + Setuptools-69.1.0 + </p> + </li> + <li class="listitem"> + <p> + Shadow-4.14.5 + </p> + </li> + <li class="listitem"> + <p> + SysVinit-3.08 + </p> + </li> + <li class="listitem"> + <p> + Texinfo-7.1 + </p> + </li> + <li class="listitem"> + <p> + Tzdata-2024a + </p> + </li> + <li class="listitem"> + <p> + Util-Linux-2.39.3 + </p> + </li> + <li class="listitem"> + <p> + Vim-9.1.0041 + </p> + </li> + <li class="listitem"> + <p> + wheel-0.42.0 + </p> + </li> + <li class="listitem"> + <p> + XML::Parser-2.47 + </p> + </li> + <li class="listitem"> + <p> + Xz-5.4.6 + </p> + </li> + <li class="listitem"> + <p> + Zlib-1.3.1 + </p> + </li> + </ul> + </div> + <div class="itemizedlist"> + <p class="title"> + <strong>Добавлены:</strong> + </p> + <ul> + <li class="listitem"> + <p> + bash-5.2.21-upstream_fixes-1.patch + </p> + </li> + <li class="listitem"> + <p> + readline-8.2-upstream_fixes-3.patch + </p> + </li> + <li class="listitem"> + <p> + setuptools-69.1.0 + </p> + </li> + <li class="listitem"> + <p> + systemd-255-upstream_fixes-1.patch + </p> + </li> + </ul> + </div> + <div class="itemizedlist"> + <p class="title"> + <strong>Удалены:</strong> + </p> + <ul> + <li class="listitem"> + <p> + glibc-2.38-memalign_fix-1.patch + </p> + </li> + <li class="listitem"> + <p> + grub-2.06-upstream_fixes-1.patch + </p> + </li> + <li class="listitem"> + <p> + readline-8.2-upstream_fix-1.patch + </p> + </li> + </ul> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-intro-changelog" name= + "ch-intro-changelog"></a>1.3. Журнал изменений + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Это версия 12.1 книги Linux From Scratch от 1 марта 2024. Если + этой книге больше шести месяцев, возможно, уже доступна более + новая, улучшенная версия. Чтобы узнать это, проверьте одно из + зеркал <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/mirrors.html">https://mirror.linuxfromscratch.ru/mirrors.html</a>. + </p> + <p> + Ниже приведен список изменений, внесенных с момента предыдущего + выпуска книги. + </p> + <div class="itemizedlist"> + <p class="title"> + <strong>Список изменений:</strong> + </p> + <ul> + <li class="listitem"> + <p> + 2024-02-14 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [bdubbs] - Update to meson-1.3.2. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5442"> + #5442</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2024-02-12 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [bdubbs] - Update to shadow-4.14.5. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5437"> + #5437</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to setuptools-69.1.0 (Python + module). Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5439"> + #5439</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to python-3.12.2. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5434"> + #5434</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to pkgconf-2.1.1. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5432"> + #5432</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to MarkupSafe-2.1.5 (Python + module). Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5431"> + #5431</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to man-pages-6.06. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5438"> + #5438</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to expat-2.6.0. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5435"> + #5435</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to linux-6.7.4. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5433"> + #5433</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2024-02-02 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [xry111] - Update to tzdata-2024a. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5428"> + #5428</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to glibc-2.39 (security fix). + Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5426"> + #5426</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to linux-6.7.3. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5427"> + #5427</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2024-02-01 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [bdubbs] - Update to openssl-3.2.1 (security fix). + Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5425"> + #5425</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to zlib-1.3.1. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5419"> + #5419</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to xz-5.4.6. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5423"> + #5423</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to linux-6.7.2. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5422"> + #5422</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to iana-etc-20240125. Addresses + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5006"> + #5006</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to binutils-2.42. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5424"> + #5424</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to acl-2.3.2. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5421"> + #5421</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update upstream fixes for readline-8.2. + Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5420"> + #5420</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Apply upstream fix for bash-5.2.21. + Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5420"> + #5420</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2024-01-21 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [xry111] - Apply upstream fix for pkgconf-2.1.0 + regression. Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5414"> + #5414</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to jinja2-3.1.3 (security fix). + Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5411"> + #5411</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to bc-6.7.5. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5408"> + #5408</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to attr-2.5.2. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5412"> + #5412</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to ncurses-6.4-20230520 (security + fix). Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5416"> + #5416</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to markupsafe-2.1.4. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5418"> + #5418</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to linux-6.7.1. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5406"> + #5406</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to iproute2-6.7.0. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5410"> + #5410</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to vim-9.1.0041. Addresses + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/4500"> + #4500</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to iana-etc-20240117. Addresses + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5006"> + #5006</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to shadow-4.14.3. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5413"> + #5413</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Fix CVE-2024-0684 for coreutils-9.4. + Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5417"> + #5417</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2024-01-18 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [xry111] - Edit a ncurses header to always use the + wide-character ABI compatible with libncursesw.so + because we are faking the 8-bit libncurses.so with + it. Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5415"> + #5415</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2024-01-09 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [renodr] - Fix the definition of the C.UTF-8 + locale. Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5409"> + #5409</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-12-31 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [xry111] - Add --enable-default-hash-style=gnu + configuring binutils. Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5401"> + #5401</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Fix CVE-2023-7008 for systemd-255. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5405"> + #5405</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to iana-etc-20231205. Addresses + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5006"> + #5006</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to tzdata-2023d. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5399"> + #5399</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to linux-6.6.8. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5397"> + #5397</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to meson-1.3.1. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5402"> + #5402</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to grub-2.12. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5396"> + #5396</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to inetutils-2.5. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5404"> + #5404</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to setuptools-69.0.3. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5400"> + #5400</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to xml-parser-2.47. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5403"> + #5403</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to vim-9.0.2189. Addresses + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/4500"> + #4500</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to autoconf-2.72. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5398"> + #5398</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-12-16 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [xry111] - Update to <span class="phrase">udev + from</span> systemd-255. Fixes <a class="ulink" + href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5390"> + #5390</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-12-14 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [bdubbs] - Update to util-linux v2.39.3. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5388"> + #5388</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to python3-3.12.1. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5392"> + #5392</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to linux-6.6.7. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5387"> + #5387</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to kbd-2.6.4. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5393"> + #5393</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to bc-6.7.4. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5389"> + #5389</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Reformat util-linux configure + parameters. Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5395"> + #5395</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-12-04 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [thomas] - Modify commands for install Python docs + to avoid too restrictive permissions on the files + and dirs. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-12-01 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [xry111] - Restore NIC naming based on physical + system characteristics. Fixes <a class="ulink" + href="https://wiki.linuxfromscratch.org/lfs/ticket/5386"> + #5386</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-11-30 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [bdubbs] - Update to vim-9.0.2136. Addresses + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/4500"> + #4500</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to iana-etc-20231117. Addresses + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5006"> + #5006</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to bc-6.7.3. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5385"> + #5385</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to wheel-0.42.0 (Python Module). + Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5384"> + #5384</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to perl-5.38.2. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5383"> + #5383</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to pkgconf-2.1.0. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5382"> + #5382</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to readline patches 002 through + 007. Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5381"> + #5381</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to openssl-3.2.0. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5380"> + #5380</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to setuptools-69.0.2. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5379"> + #5379</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to linux-6.6.3. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5378"> + #5378</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to meson-1.3.0. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5377"> + #5377</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to gettext-0.22.4. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5376"> + #5376</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-11-13 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [xry111] - Update to elfutils-0.190. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5373"> + #5373</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to vim-9.0.2103. Addresses + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/4500"> + #4500</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to linux-6.6.1. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5369"> + #5369</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to xz-5.4.5. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5371"> + #5371</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to iana-etc-20231107. Addresses + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5006"> + #5006</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to gawk-5.3.0. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5372"> + #5372</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to bash-5.2.21. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5375"> + #5375</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to iproute2-6.6.0. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5374"> + #5374</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-11-01 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [bdubbs] - Update to iana-etc-20231019. Addresses + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5006"> + #5006</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to wheel-0.41.3. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5370"> + #5370</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to shadow-4.14.2. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5368"> + #5368</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to openssl-3.1.4. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5367"> + #5367</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to texinfo-7.1. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5364"> + #5364</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to meson-1.2.3. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5366"> + #5366</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to bc-6.7.2. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5363"> + #5363</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to linux-6.5.9. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5365"> + #5365</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to Python-3.12.0. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5357"> + #5357</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Add setuptools-68.2.2. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5358"> + #5358</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-10-15 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [bdubbs] - Update to linux-6.5.7. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5362"> + #5362</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to shadow-4.14.1. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5361"> + #5361</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to gettext-0.22.3. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5359"> + #5359</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-10-03 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [xry111] - Update Glibc upstream fixes patch to fix + CVE-2023-4911. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-10-01 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [bdubbs] - Disable building nscd in glibc. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5349"> + #5349</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to iana-etc-20230929. Addresses + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5006"> + #5006</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to vim-9.0.1968. Addresses + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/4500"> + #4500</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to openssl-3.1.3. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5350"> + #5350</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to meson-1.2.2. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5356"> + #5356</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to man-db-2.12.0. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5354"> + #5354</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to linux-6.5.5. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5352"> + #5352</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to kmod-31. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5355"> + #5355</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to kbd-2.6.3. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5351"> + #5361</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to gettext-0.22.2. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5348"> + #5348</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to bc-6.7.0. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5353"> + #5353</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-09-24 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [xry111] - Update Glibc upstream fixes patch to + plug a memory leak introduced by the security fix. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-09-17 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [xry111] - Update to linux-6.5.3. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5343"> + #5343</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to iana-etc-20230912. Addresses + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5006"> + #5006</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to iproute2-6.5.0. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5342"> + #5342</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-09-13 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [xry111] - Fix CVE-2023-4806 for Glibc-2.38. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5347"> + #5347</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-09-12 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [xry111] - Fix CVE-2023-4527 for Glibc-2.38. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5346"> + #5346</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-09-07 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [xry111] - Fix an issue in pkgconf-2.0.3 causing + BLFS packages fail to build. Fixes <a class="ulink" + href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5341"> + #5341</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-09-05 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [xry111] - Move pkgconf before binutils for + binutils building system to detect zstd properly. + Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5340"> + #5340</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to linux-6.5.1. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5332"> + #5332</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to pkgconf-2.0.3. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5339"> + #5339</a>. + </p> + </li> + <li class="listitem"> + <p> + [xry111] - Update to dbus-1.14.10. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5337"> + #5337</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-09-04 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [bdubbs] - Move caution regarding building by + mixing different version of LFS to General + Compilation Instructions. Fixes <a class="ulink" + href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5338"> + #5338</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-09-02 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [xry111] - Add --no-cache-dir option for pip3 wheel + commands. Addresses <a class="ulink" href= + "https://wiki.linuxfromscratch.org/blfs/ticket/18466"> + BLFS #18466</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to vim-9.0.1837. Addresses + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/4500"> + #4500</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to zlib-1.3. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5324"> + #5324</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to wheel-0.41.2 (Python Module). + Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5328"> + #5328</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to util-linux-2.39.2. Fixes + <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5322"> + #5322</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to sysvinit-3.08. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5321"> + #5321</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to shadow-4.14.0. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5319"> + #5319</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to Python-3.11.5. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5330"> + #5330</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to procps-ng-4.0.4 (security fix + for 32-bit systems). Fixes <a class="ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5335"> + #5335</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to pkgconf-2.0.2. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5323"> + #5323</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to mpfr-4.2.1. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5326"> + #5326</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to kbd-2.6.2. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5318"> + #5318</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to gzip-1.13. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5325"> + #5325</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Update to coreutils-9.4. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5334"> + #5334</a>. + </p> + </li> + <li class="listitem"> + <p> + [bdubbs] - Remove unused usb group. Fixes <a class= + "ulink" href= + "https://wiki.linuxfromscratch.org/lfs/ticket/5331"> + #5331</a>. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + 2023-09-01 + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + [bdubbs] - LFS-12.0 released. + </p> + </li> + </ul> + </div> + </li> + </ul> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-intro-resources" name= + "ch-intro-resources"></a>1.4. Ресурсы + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="ch-intro-faq" name="ch-intro-faq"></a>1.4.1. Часто + задаваемые вопросы + </h3> + <p> + Если во время создания системы LFS вы столкнетесь с + какими-либо ошибками, у вас возникнут какие-либо вопросы или + вам кажется, что в книге допущена опечатка, пожалуйста, для + начала ознакомьтесь со списком часто задаваемых вопросов + (FAQ), расположенным по адресу <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/faq/">https://mirror.linuxfromscratch.ru/faq/</a>. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="ch-intro-maillists" name= + "ch-intro-maillists"></a>1.4.2. Списки рассылки + </h3> + <p> + На сервере <code class= + "systemitem">linuxfromscratch.org</code> размещен ряд списков + рассылки, используемых для разработки проекта LFS. Эти списки + включают, среди прочего, основные списки разработки и + поддержки. Если вы не можете найти ответ на странице часто + задаваемых вопросов, следующим шагом будет поиск решения в + списках рассылки по адресу <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/search.html">https://mirror.linuxfromscratch.ru/search.html</a>. + </p> + <p> + Для получения информации о списках рассылки, способах + подписки, архивах и дополнительной информации посетите + <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/mail.html">https://mirror.linuxfromscratch.ru/mail.html</a>. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="ch-intro-irc" name="ch-intro-irc"></a>1.4.3. IRC + </h3> + <p> + Некоторые члены сообщества LFS предлагают помощь в Internet + Relay Chat (IRC). Прежде чем воспользоваться этим способом, + убедитесь, что на ваш вопрос еще нет ответа в разделе часто + задаваемых вопросов LFS или в архивах списков рассылки. Вы + можете найти нас в <code class= + "systemitem">irc.libera.chat</code>. Канал поддержки + называется #lfs-support. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="ch-intro-mirrors" name="ch-intro-mirrors"></a>1.4.4. + Зеркала проекта + </h3> + <p> + Проект LFS имеет несколько зеркал по всему миру, чтобы + сделать доступ к веб-сайту и загрузку необходимых пакетов + более удобными. Пожалуйста, посетите веб-сайт LFS по адресу + <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/mirrors.html">https://mirror.linuxfromscratch.ru/mirrors.html</a> + для получения списка текущих зеркал. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="ch-intro-contactinfo" name= + "ch-intro-contactinfo"></a>1.4.5. Контактная информация + </h3> + <p> + Пожалуйста, направляйте все свои вопросы и комментарии в один + из списков рассылки LFS (см. выше). + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-intro-askforhelp" name= + "ch-intro-askforhelp"></a>1.5. Помощь + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Если вы столкнулись с проблемой при сборки одного пакета с + помощью инструкцией из LFS, мы настоятельно не рекомендуем + публиковать проблему непосредственно в канале поддержки + разработчиков пакета до обсуждения через канал поддержки LFS, + указанный в <a class="xref" href="#ch-intro-resources" title= + "1.4. Ресурсы">Раздел 1.4, «Ресурсы»</a>. Часто это + неэффективно, потому что разработчики редко знакомы с + процедурой сборки LFS. Даже если вы действительно столкнулись + с проблемой в пакете, сообщество LFS все равно может помочь + выделить информацию, необходимую специалистам по поддержке + пакета, и составить соответствующий отчет. + </p> + <p> + Если вам нужно задать вопрос напрямую через канал поддержки + пакета, вы должны, по крайней мере, понимать, что многие + проекты имеют каналы поддержки, отделенные от системы + отслеживания ошибок. Отчеты об <span class= + "quote">«<span class="quote">ошибках</span>»</span> при + отправке вопросов считаются недействительными и могут + раздражать разработчиков этих проектов. + </p> + </div> + <p> + Если при работе с этой книгой у вас возникнут проблемы или + вопросы, посетите страницу часто задаваемых вопросов по адресу + <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/faq/#generalfaq">https://mirror.linuxfromscratch.ru/faq/#generalfaq</a>. + Часто там уже есть ответы на большинство вопросов. Если на этой + странице нет ответа на ваш вопрос, попробуйте самостоятельно + найти источник проблемы. Следующий документ даст вам некоторые + рекомендации по устранению неполадок: <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/hints/downloads/files/errors.txt"> + https://mirror.linuxfromscratch.ru/hints/downloads/files/errors.txt</a>. + </p> + <p> + Если вы не можете найти решение своей проблемы в разделе часто + задаваемых вопросов, выполните поиск в списках рассылки по + адресу <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/search.html">https://mirror.linuxfromscratch.ru/search.html</a>. + </p> + <p> + У нас также есть замечательное сообщество LFS, которое готово + предложить помощь через списки рассылки и IRC (см. <a class= + "xref" href="#ch-intro-resources" title= + "1.4. Ресурсы">Раздел 1.4, «Ресурсы»</a> этой книги). Мы + получаем много вопросов в службу поддержки каждый день, и на + многие из них можно легко ответить, зайдя в раздел часто + задаваемых вопросов и предварительно выполнив поиск в списках + рассылки. Чтобы мы могли оказать помощь, вам необходимо сначала + провести самостоятельное исследование. Это позволяет нам + сосредоточиться на более сложных вопросах в поддержке. Если + ваши поиски не привели к решению проблемы, включите всю + необходимую информацию (упомянутую ниже) в свой запрос о + помощи. + </p> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 1.5.1. Что следует упомянуть + </h3> + <p> + Помимо краткого объяснения возникшей проблемы, в любой запрос + о помощи необходимо включить следующую важную информацию: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Используемая версия книги (в данном случае 12.1) + </p> + </li> + <li class="listitem"> + <p> + Информацию о дистрибутиве и его версия, используемые + для сборки LFS + </p> + </li> + <li class="listitem"> + <p> + Вывод сценария <a class="xref" href= + "#version-check">Системные требования к хостовой + машине</a> + </p> + </li> + <li class="listitem"> + <p> + Пакет или раздел где возникла проблема + </p> + </li> + <li class="listitem"> + <p> + Точное сообщение об ошибке или четкое описание проблемы + </p> + </li> + <li class="listitem"> + <p> + Обратите внимание, отклонялись ли вы от книги + </p> + </li> + </ul> + </div> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Отклонение от этой книги <span class= + "emphasis"><em>не</em></span> означает, что мы не поможем + вам. В конце концов, LFS зависит от личных предпочтений. + Заблаговременное информирование о любых изменениях в + процессе сборки помогает нам оценить и определить возможные + причины вашей проблемы + </p> + </div> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 1.5.2. Проблемы со скриптом configure + </h3> + <p> + Если что-то пойдет не так во время выполнения скрипта + <span class="command"><strong>configure</strong></span>, + просмотрите файл <code class="filename">config.log</code>. + Этот файл может содержать ошибки, обнаруженные во время + настройки, которые не были выведены на экран. Включите + <span class="emphasis"><em>соответствующие</em></span> + строки, если вам нужно обратиться за помощью. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 1.5.3. Проблемы компиляции + </h3> + <p> + Как вывод на экран, так и содержимое различных файлов полезны + для определения причины проблем компиляции. Вывод экрана из + скрипта <span class= + "command"><strong>configure</strong></span> и запуска + <span class="command"><strong>make</strong></span> может быть + полезен. Необязательно включать весь вывод целиком, но + обязательно включите всю необходимую информацию. Ниже + приведен пример информации, которая должна быть включена в + экранный вывод <span class= + "command"><strong>make</strong></span>: + </p> + <pre class="screen"><code class= + "computeroutput">gcc -DALIASPATH=\"/mnt/lfs/usr/share/locale:.\" +-DLOCALEDIR=\"/mnt/lfs/usr/share/locale\" +-DLIBDIR=\"/mnt/lfs/usr/lib\" +-DINCLUDEDIR=\"/mnt/lfs/usr/include\" -DHAVE_CONFIG_H -I. -I. +-g -O2 -c getopt1.c +gcc -g -O2 -static -o make ar.o arscan.o commands.o dir.o +expand.o file.o function.o getopt.o implicit.o job.o main.o +misc.o read.o remake.o rule.o signame.o variable.o vpath.o +default.o remote-stub.o version.o opt1.o +-lutil job.o: In function `load_too_high': +/lfs/tmp/make-3.79.1/job.c:1565: undefined reference +to `getloadavg' +collect2: ld returned 1 exit status +make[2]: *** [make] Error 1 +make[2]: Leaving directory `/lfs/tmp/make-3.79.1' +make[1]: *** [all-recursive] Error 1 +make[1]: Leaving directory `/lfs/tmp/make-3.79.1' +make: *** [all-recursive-am] Error 2</code></pre> + <p> + В этом случае многие люди просто включили бы только нижнюю + часть: + </p> + <pre class="screen"><code class= + "computeroutput">make [2]: *** [make] Error 1</code></pre> + <p> + Этой информации недостаточно, чтобы правильно диагностировать + проблему, потому что она только указывает на то, что что-то + пошло не так, а не на то, <span class= + "emphasis"><em>что</em></span> пошло не так. Весь раздел, как + в приведенном выше примере, должен быть сохранен, так как он + включает в себя выполненную команду и все связанные с ней + сообщения об ошибках. + </p> + <p> + Отличная статья о том, как обращаться за помощью в Интернете, + доступна по адресу <a class="ulink" href= + "http://catb.org/~esr/faqs/smart-questions.html">http://catb.org/~esr/faqs/smart-questions.html</a>. + Прочтите этот документ и следуйте советам, чтобы повысить + вероятность получения помощи в которой вы нуждаетесь. + </p> + </div> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h1 class="title"> + <a id="part2" name="part2"></a>Часть II. Подготовка к + сборке + </h1> + </div> + </div> + </div> + <div class="part"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="chapter-partitioning" name= + "chapter-partitioning"></a>Глава 2. Подготовка хост-системы + </h2> + </div> + </div> + </div> + <div class="chapter" lang="ru" xml:lang="ru"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-partitioning-introduction" name= + "ch-partitioning-introduction"></a>2.1. Введение + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + В этой главе проверяются и при необходимости устанавливаются + основные инструменты, необходимые для построения LFS. Затем + подготавливается раздел, в котором будет размещаться система + LFS. Мы создадим сам раздел, создадим на нем файловую систему и + смонтируем его. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-partitioning-hostreqs" name= + "ch-partitioning-hostreqs"></a>2.2. Требования к + хост-системе + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 2.2.1. Аппаратное обеспечение + </h3> + <p> + Редакторы LFS рекомендуют, чтобы процессор имел не менее + четырех ядер и не менее 8 ГБ памяти. Старые системы, не + отвечающие этим требованиям, будут по-прежнему работать, но + время сборки пакетов будет значительно больше, чем указано в + документации. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 2.2.2. Программное обеспечение + </h3> + <p> + Ваша хост-система должна иметь следующее программное + обеспечение с указанными минимальными версиями. Это не должно + быть проблемой для большинства современных дистрибутивов + Linux. Также обратите внимание на то, что многие дистрибутивы + помещают заголовочные файлы в отдельные пакеты, как правило в + формате <code class="literal"><em class= + "replaceable"><code><package-name></code></em>-devel</code> + или <code class="literal"><em class= + "replaceable"><code><package-name></code></em>-dev</code>. + Обязательно установите эти пакеты, если ваш дистрибутив их + предоставляет. + </p> + <p> + Более ранние версии перечисленных ниже пакетов могут + работать, но это не проверялось. + </p> + <div class="itemizedlist"> + <ul class="compact"> + <li class="listitem"> + <p> + <span class="strong"><strong>Bash-3.2</strong></span> + (/bin/sh должен быть символической или жесткой ссылкой + на bash) + </p> + </li> + <li class="listitem"> + <p> + <span class= + "strong"><strong>Binutils-2.13.1</strong></span> + (Версия выше 2.42 не рекомендуется, так как она не + тестировалась) + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Bison-2.7</strong></span> + (/usr/bin/yacc должен быть ссылкой на bison или + небольшой скрипт, запускающий bison) + </p> + </li> + <li class="listitem"> + <p> + <span class= + "strong"><strong>Coreutils-8.1</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class= + "strong"><strong>Diffutils-2.8.1</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class= + "strong"><strong>Findutils-4.2.31</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Gawk-4.0.1</strong></span> + (/usr/bin/awk должен быть ссылкой на gawk) + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>GCC-5.2</strong></span>, + включая компилятор C++, <span class= + "command"><strong>g++</strong></span> (версии выше + 13.2.0 не рекомендуются, поскольку они не + тестировались). Также должны присутствовать стандартные + библиотеки C и C++ (с заголовочными файлами), чтобы + компилятор C++ мог осуществлять сборку программ. + </p> + </li> + <li class="listitem"> + <p> + <span class= + "strong"><strong>Grep-2.5.1a</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class= + "strong"><strong>Gzip-1.3.12</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Linux + Kernel-4.19</strong></span> + </p> + <p> + Причиной, по которой указаны минимальные требования к + версии ядра, является то, что мы указываем эту версию + при сборке <span class="application">glibc</span> в + <a class="xref" href="#chapter-cross-tools" title= + "Глава 5. Сборка кросс-тулчейна">Глава 5</a> и + <a class="xref" href="#chapter-building-system" title= + "Глава 8. Установка базового системного программного обеспечения"> + Глава 8</a>. Так как более старые ядра не + поддерживаются, скомпилированный пакет <span class= + "application">glibc</span> немного меньше и быстрее. По + состоянию на февраль 2024 г. 4.19 является самой старой + версией ядра, поддерживаемой разработчиками ядра. + Некоторые версии ядра, более старые, чем 4.19, могут + по-прежнему поддерживаться сторонними командами, но они + не считаются официальными выпусками ядра; подробности + читайте на странице <a class="ulink" href= + "https://kernel.org/category/releases.html">https://kernel.org/category/releases.html</a> + </p> + <p> + Если версия ядра хоста более ранняя, чем 4.19, вам + необходимо обновить ядро на более современную версию. + Есть два способа сделать это. Во-первых, посмотрите, + предоставляет ли ваш дистрибутив Linux пакет ядра 4.19 + или более позднюю версию. Если это так, установите его. + Если ваш дистрибутив не предлагает приемлемый пакет + ядра или вы предпочитаете не устанавливать его, вы + можете скомпилировать ядро самостоятельно. Инструкции + по компиляции ядра и настройке загрузчика (при условии, + что хост использует GRUB) находятся в <a class="xref" + href="#chapter-bootable" title= + "Глава 10. Делаем систему LFS загрузочной">Глава 10</a>. + </p> + <p> + Для сборки LFS необходимо, чтобы ядро хоста + поддерживало псевдотерминал UNIX 98 (PTY). Обычно он + включен на всех настольных или серверных дистрибутивах, + поставляющих Linux 4.19 или более новое ядро. Если на + хосте вы используете самостоятельно собранное ядро, + убедитесь, что для параметра <code class= + "option">CONFIG_UNIX98_PTYS</code> установлено значение + <code class="literal">y</code> в конфигурационном файле + ядра. + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>M4-1.4.10</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Make-4.0</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class= + "strong"><strong>Patch-2.5.4</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Perl-5.8.8</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Python-3.4</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Sed-4.1.5</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Tar-1.22</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class= + "strong"><strong>Texinfo-5.0</strong></span> + </p> + </li> + <li class="listitem"> + <p> + <span class="strong"><strong>Xz-5.0.0</strong></span> + </p> + </li> + </ul> + </div> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + Обратите внимание, что упомянутые выше символические ссылки + необходимы для создания системы LFS с использованием + инструкций, содержащихся в этой книге. Симлинки, + указывающие на другое программное обеспечение (например, + dash, mawk и т. д.), могут работать, но не тестируются и не + поддерживаются командой разработчиков LFS, и могут + потребовать либо отклонения от инструкций, либо + дополнительных исправлений для некоторых пакетов. + </p> + </div> + <h3> + <a id="version-check" name="version-check"></a> + </h3> + <p> + Чтобы узнать, есть ли в вашей хост-системе все необходимые + пакеты и возможность компилировать программы, выполните + следующий скрипт: + </p> + <pre class="userinput"><kbd class= + "command">cat > version-check.sh << "EOF" +<code class="literal">#!/bin/bash +# A script to list version numbers of critical development tools + +# If you have tools installed in other directories, adjust PATH here AND +# in ~lfs/.bashrc (section 4.4) as well. + +LC_ALL=C +PATH=/usr/bin:/bin + +bail() { echo "FATAL: $1"; exit 1; } +grep --version > /dev/null 2> /dev/null || bail "grep does not work" +sed '' /dev/null || bail "sed does not work" +sort /dev/null || bail "sort does not work" + +ver_check() +{ + if ! type -p $2 &>/dev/null + then + echo "ERROR: Cannot find $2 ($1)"; return 1; + fi + v=$($2 --version 2>&1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1) + if printf '%s\n' $3 $v | sort --version-sort --check &>/dev/null + then + printf "OK: %-9s %-6s >= $3\n" "$1" "$v"; return 0; + else + printf "ERROR: %-9s is TOO OLD ($3 or later required)\n" "$1"; + return 1; + fi +} + +ver_kernel() +{ + kver=$(uname -r | grep -E -o '^[0-9\.]+') + if printf '%s\n' $1 $kver | sort --version-sort --check &>/dev/null + then + printf "OK: Linux Kernel $kver >= $1\n"; return 0; + else + printf "ERROR: Linux Kernel ($kver) is TOO OLD ($1 or later required)\n" "$kver"; + return 1; + fi +} + +# Coreutils first because --version-sort needs Coreutils >= 7.0 +ver_check Coreutils sort 8.1 || bail "Coreutils too old, stop" +ver_check Bash bash 3.2 +ver_check Binutils ld 2.13.1 +ver_check Bison bison 2.7 +ver_check Diffutils diff 2.8.1 +ver_check Findutils find 4.2.31 +ver_check Gawk gawk 4.0.1 +ver_check GCC gcc 5.2 +ver_check "GCC (C++)" g++ 5.2 +ver_check Grep grep 2.5.1a +ver_check Gzip gzip 1.3.12 +ver_check M4 m4 1.4.10 +ver_check Make make 4.0 +ver_check Patch patch 2.5.4 +ver_check Perl perl 5.8.8 +ver_check Python python3 3.4 +ver_check Sed sed 4.1.5 +ver_check Tar tar 1.22 +ver_check Texinfo texi2any 5.0 +ver_check Xz xz 5.0.0 +ver_kernel 4.19 + +if mount | grep -q 'devpts on /dev/pts' && [ -e /dev/ptmx ] +then echo "OK: Linux Kernel supports UNIX 98 PTY"; +else echo "ERROR: Linux Kernel does NOT support UNIX 98 PTY"; fi + +alias_check() { + if $1 --version 2>&1 | grep -qi $2 + then printf "OK: %-4s is $2\n" "$1"; + else printf "ERROR: %-4s is NOT $2\n" "$1"; fi +} +echo "Aliases:" +alias_check awk GNU +alias_check yacc Bison +alias_check sh Bash + +echo "Compiler check:" +if printf "int main(){}" | g++ -x c++ - +then echo "OK: g++ works"; +else echo "ERROR: g++ does NOT work"; fi +rm -f a.out + +if [ "$(nproc)" = "" ]; then + echo "ERROR: nproc is not available or it produces empty output" +else + echo "OK: nproc reports $(nproc) logical cores are available" +fi</code> +EOF + +bash version-check.sh</kbd></pre> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-partitioning-stages" name= + "ch-partitioning-stages"></a>2.3. Этапы сборки системы LFS + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + LFS разработан для сборки за один сеанс. То есть инструкция + предполагает, что система не будет выключаться в процессе. Это + не означает, что система должна быть собрана за один присест. + Для возобновления сборки в точке предыдущей остановки (после + перезагрузки/выключения), необходимо выполнить некоторые + процедуры повторно. + </p> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 2.3.1. Главы 1–4 + </h3> + <p> + Эти главы выполняются на хост-системе. После перезагрузки + обратите внимание на следующее: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + При выполнении операций, от имени пользователя + <code class="systemitem">root</code> после Раздела 2.4, + <span class="emphasis"><em>ДЛЯ ПОЛЬЗОВАТЕЛЯ</em></span> + <code class="systemitem">root</code> должна быть + установлена переменная окружения LFS. + </p> + </li> + </ul> + </div> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 2.3.2. Главы 5–6 + </h3> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Раздел /mnt/lfs должен быть смонтирован. + </p> + </li> + <li class="listitem"> + <p> + Эти две главы <span class= + "emphasis"><em>должны</em></span> быть выполнены из-под + пользователя <code class="systemitem">lfs</code>. Перед + выполнением любой задачи в этих главах необходимо + выполнить команду <span class="command"><strong>su - + lfs</strong></span>. В противном случае вы рискуете + установить пакеты на хост и сделать его непригодным для + использования. + </p> + </li> + <li class="listitem"> + <p> + Выполнение процедур из <a class="xref" href= + "#ch-tools-generalinstructions" title= + "Общие инструкции по компиляции">Общие инструкции по + компиляции</a> имеет решающее значение. Если есть + какие-либо сомнения по поводу установки пакета, + убедитесь, что все ранее распакованные tar-архивы + удалены, затем повторно извлеките файлы и выполните все + инструкции, приведенные в этом разделе. + </p> + </li> + </ul> + </div> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 2.3.3. Главы 7–10 + </h3> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Раздел /mnt/lfs должен быть смонтирован. + </p> + </li> + <li class="listitem"> + <p> + Некоторые операции, такие как <span class= + "quote">«<span class="quote">Смена + владельца</span>»</span> или <span class= + "quote">«<span class="quote">Вход в среду + Chroot</span>»</span>, должны быть выполнены от имени + пользователя <code class="systemitem">root</code> с + переменной окружения $LFS, установленной для + пользователя <code class="systemitem">root</code>. + </p> + </li> + <li class="listitem"> + <p> + При входе в chroot переменная среды LFS должна быть + установлена для пользователя <code class= + "systemitem">root</code>. Переменная LFS не + используется после входа в среду chroot. + </p> + </li> + <li class="listitem"> + <p> + Виртуальные файловые системы должны быть смонтированы. + Это можно сделать до или после входа в chroot, + переключившись на виртуальный терминал хоста и от имени + пользователя <code class="systemitem">root</code> + выполнив команды, описанные в <a class="xref" href= + "#ch-tools-bindmount" title= + "7.3.1. Монтирование и заполнение /dev">Раздел 7.3.1, + «Монтирование и заполнение /dev»</a> и <a class="xref" + href="#ch-tools-kernfsmount" title= + "7.3.2. Монтирование виртуальных файловых систем ядра">Раздел 7.3.2, + «Монтирование виртуальных файловых систем ядра»</a>. + </p> + </li> + </ul> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-partitioning-creatingpartition" name= + "ch-partitioning-creatingpartition"></a>2.4. Создание + нового раздела + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Как и большинство других операционных систем, LFS обычно + устанавливается на выделенный раздел. Рекомендуемый подход к + построению системы LFS состоит в том, чтобы использовать + доступный пустой раздел или, если у вас достаточно + неразмеченного пространства, использовать его + </p> + <p> + Минимальная система требует раздел размером около 10 гигабайт + (ГБ). Этого достаточно для хранения всех архивов с исходным + кодом и компиляции пакетов. Однако, если система LFS + предназначена для использования в качестве основной системы + Linux, вероятно, будет установлено дополнительное программное + обеспечение, для которого потребуется дополнительное + пространство. Раздел размером 30 ГБ является разумным размером + для расширения. Сама система LFS не займет столько места. + Большая часть этого требования заключается в предоставлении + достаточного временного хранилища, а также в добавлении + дополнительных возможностей после сборки LFS. Кроме того, для + компиляции пакетов может потребоваться много места на диске, + которое будет освобождено после установки пакета. + </p> + <p> + Поскольку для компиляции не всегда достаточно оперативной + памяти (ОЗУ), рекомендуется использовать небольшой раздел диска + в качестве <code class="systemitem">раздела подкачки</code>. Он + используется ядром для хранения редко используемых данных и + оставляет больше памяти для активных процессов. <code class= + "systemitem">Раздел подкачки</code> для системы LFS может + совпадать с разделом, используемым хост-системой, и в этом + случае нет необходимости создавать еще один. + </p> + <p> + Запустите программу создания разделов диска, такую как + <span class="command"><strong>cfdisk</strong></span> или + <span class="command"><strong>fdisk</strong></span>, с + параметром командной строки, указав имя жесткого диска, на + котором будет создан новый раздел, например, <code class= + "filename">/dev/sda</code> для основного диска. Создайте раздел + Linux и <code class="systemitem">раздел подкачки</code>, если + это необходимо. Пожалуйста, обратитесь к справке <a class= + "ulink" href= + "https://man.archlinux.org/man/cfdisk.8">cfdisk(8)</a> или + <a class="ulink" href= + "https://man.archlinux.org/man/fdisk.8">fdisk(8)</a>, если вы + еще не знаете, как пользоваться этими программами. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Для опытных пользователей возможны и другие схемы разбиения. + Система LFS может располагаться на программном <a class= + "ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/raid.html"> + RAID-массиве</a> или логическом томе <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/aboutlvm.html"> + LVM</a>. Однако для некоторых опций требуется <a class= + "ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/initramfs.html"> + initramfs</a>, что является сложной темой. Эти методы + разбиения не рекомендуются начинающим пользователям LFS. + </p> + </div> + <p> + Запомните обозначение созданного раздела (например, + <code class="filename">sda5</code>). В этой книге он будет + называться разделом LFS. Также запомните обозначение + <code class="systemitem">раздела подкачки</code>. Эти имена + понадобятся позже для файла <code class= + "filename">/etc/fstab</code>. + </p> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 2.4.1. Другие вопросы по созданию разделов + </h3> + <p> + Рекомендации по созданию разделов системы часто публикуются в + списках рассылки LFS. Это очень субъективная тема. По + умолчанию для большинства дистрибутивов используется весь + диск, за исключением небольшого раздела подкачки. Это не + оптимально для LFS по нескольким причинам. Это снижает + гибкость, затрудняет совместное использование данных между + несколькими дистрибутивами или сборками LFS, делает резервное + копирование более трудоемким и может тратить дисковое + пространство из-за неэффективно распределенной файловой + системы. + </p> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm1357" name="idm1357"></a>2.4.1.1. Корневой + раздел + </h4> + </div> + </div> + </div> + <p> + Корневой раздел LFS (не путать с каталогом <code class= + "filename">/root</code>) размером в 20 гигабайт является + хорошим компромиссом для большинства систем. Он + обеспечивает достаточно места для построения LFS и большей + части BLFS, но достаточно мал, чтобы можно было легко + создать несколько разделов для экспериментов. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm1361" name="idm1361"></a>2.4.1.2. Раздел + подкачки + </h4> + </div> + </div> + </div> + <p> + Большинство дистрибутивов автоматически создают раздел + подкачки. Обычно рекомендуемый размер раздела подкачки + примерно в два раза превышает объем физической памяти, + однако это требуется редко. Если дисковое пространство + ограничено, установите размер раздела подкачки в два + гигабайта и контролируйте его объемом. + </p> + <p> + Если вы хотите использовать режим гибернации + (suspend-to-disk) Linux, которая записывает содержимое ОЗУ + в раздел подкачки перед выключением машины. Установите + размер раздела подкачки не меньше объема установленной + оперативной памяти. + </p> + <p> + Использование файла подкачки - это не очень хорошо. Для + механических жестких дисков вы можете определить, что + система использует раздел подкачки, просто слыша активность + диска и наблюдая, как система реагирует на команды. Для + SSD-накопителя вы не сможете услышать, что используется + раздел подкачки, но сможете оценить, сколько места на + разделе подкачки занято, используя команды <span class= + "command"><strong>top</strong></span> или <span class= + "command"><strong>free</strong></span>. По возможности + следует избегать использования SSD-накопителя для раздела + подкачки. Первой реакцией на активность раздела подкачки + должна быть проверка на необоснованное применение + какой-либо команды, например, попытка редактирования + пятигигабайтного файла. Если использование раздела подкачки + становится обычным явлением, лучшее решение — приобретение + большего объема оперативной памяти для вашей системы. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm1368" name="idm1368"></a>2.4.1.3. Раздел + GRUB + </h4> + </div> + </div> + </div> + <p> + Если <span class="emphasis"><em>загрузочный + диск</em></span> размечен с помощью таблицы разделов GUID + (GPT), необходимо создать небольшой раздел, обычно размером + 1 МБ, если он еще не существует. Этот раздел не + форматируется, но должен быть доступен для использования + GRUB во время установки загрузчика. Обычно он помечен как + 'BIOS Boot' при использовании <span class= + "command"><strong>fdisk</strong></span> или имеет код + <span class="emphasis"><em>EF02</em></span> при + использовании <span class= + "command"><strong>gdisk</strong></span>. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Раздел Grub Bios должен находиться на диске, который BIOS + использует для загрузки системы. Это не обязательно тот + же диск, на котором расположен корневой раздел LFS. Диски + в системе могут использовать разные типы таблиц разделов. + Наличие раздела Grub Bios зависит только от типа таблицы + разделов на загрузочном диске. + </p> + </div> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm1377" name="idm1377"></a>2.4.1.4. Разделы, + используемые для удобства + </h4> + </div> + </div> + </div> + <p> + Есть несколько других разделов, которые не являются + обязательными, но их следует учитывать при разработке схемы + диска. Следующий список не является исчерпывающим, а + представлен в качестве справочного руководства. + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + /boot – Настоятельно рекомендуется. Используйте этот + раздел для хранения ядер и другой загрузочной + информации. Чтобы свести к минимуму возможные + проблемы с загрузкой дисков большого размера, + сделайте этот раздел первым физическим разделом на + первом диске. Размер раздела в 200 мегабайт вполне + достаточен. + </p> + </li> + <li class="listitem"> + <p> + /boot/efi – Системный раздел EFI, используемый для + загрузки системы с помощью UEFI. Подробнее читайте на + <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/grub-setup.html"> + странице BLFS</a>. + </p> + </li> + <li class="listitem"> + <p> + /home – Настоятельно рекомендуется. Предоставьте + общий доступ к своему домашнему каталогу и + пользовательским настройкам нескольким дистрибутивам + или сборкам LFS. Размер, как правило, довольно + большой и зависит от доступного места на диске. + </p> + </li> + <li class="listitem"> + <p> + /usr – в LFS, <code class="filename">/bin</code>, + <code class="filename">/lib</code>, и <code class= + "filename">/sbin</code> являются символическими + ссылками на их аналоги в <code class= + "filename">/usr</code>. Таким образом <code class= + "filename">/usr</code> содержит все двоичные файлы, + необходимые для работы системы. Для LFS отдельный + раздел <code class="filename">/usr</code> не + требуется. Если он вам необходим, вы должны сделать + раздел достаточно большим, чтобы поместить туда все + программы и библиотеки в системе. В этой + конфигурации, корневой раздел может быть очень + маленьким (возможно, всего один гигабайт), поэтому он + подходит для тонкого клиента или бездисковой рабочей + станции (где <code class="filename">/usr</code> + монтируется с удаленного сервера). Однако вы должны + знать, что для загрузки системы с отдельного раздела + <code class="filename">/usr</code> потребуется + initramfs (не включенный в LFS). + </p> + </li> + <li class="listitem"> + <p> + /opt – Этот каталог наиболее полезен для BLFS, в него + можно установить некоторые большие пакеты, такие как + KDE или Texlive, без использования иерархии /usr. Для + /opt достаточно размера от 5 до 10 гигабайт. + </p> + </li> + <li class="listitem"> + <p> + /tmp – Отдельный раздел /tmp используется редко, он + полезен при настройке тонкого клиента. Обычно, его + размер не должен превышать пару гигабайт. Если у вас + достаточно оперативной памяти, вы можете смонтировать + /tmp как <code class="systemitem">tmpfs</code>, чтобы + ускорить доступ к временным файлам. + </p> + </li> + <li class="listitem"> + <p> + /usr/src – Этот раздел очень удобен для хранения + исходников BLFS и совместного использования их в + сборках LFS. Его также можно использовать в качестве + места для сборки пакетов BLFS. Размера в 30-50 + гигабайт вполне достаточно. + </p> + </li> + </ul> + </div> + <p> + Любой отдельный раздел, который вы хотите автоматически + монтировать при загрузке, должен быть указан в файле + <code class="filename">/etc/fstab</code>. Подробности о + том, как указать разделы, будут обсуждаться в <a class= + "xref" href="#ch-bootable-fstab" title= + "10.2. Создание файла /etc/fstab">Раздел 10.2, + «Создание файла /etc/fstab»</a>. + </p> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-partitioning-creatingfilesystem" name= + "ch-partitioning-creatingfilesystem"></a>2.5. Создание + файловой системы на разделе + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Раздел - это всего лишь диапазон секторов на диске, указанный в + таблице разделов. Прежде чем операционная система сможет + использовать раздел для хранения каких-либо файлов, он должен + быть отформатирован, чтобы содержать файловую систему, обычно + состоящую из метки, блоков каталогов, блоков данных и схемы + индексации для поиска конкретного файла по запросу. Файловая + система также помогает операционной системе отслеживать + свободное пространство на разделе, резервировать необходимые + секторы при создании нового файла или расширении существующего + и повторно использует свободные сегменты данных, полученные в + результате удаления файлов. Она также может обеспечивать + поддержку избыточности данных и восстановления после ошибок. + </p> + <p> + LFS может использовать любую файловую систему, распознаваемую + ядром Linux, но наиболее распространенными типами являются ext3 + и ext4. Выбор правильной файловой системы может быть сложным; + это зависит от характеристик файлов и размера раздела. + Например: + </p> + <div class="variablelist"> + <dl class="variablelist"> + <dt> + <span class="term">ext2</span> + </dt> + <dd> + <p> + подходит для небольших разделов, которые редко + обновляются, например /boot. + </p> + </dd> + <dt> + <span class="term">ext3</span> + </dt> + <dd> + <p> + это обновленная файловая система ext2, которая включает в + себя журнал, помогающий восстановить состояние раздела в + случае некорректного завершения работы. Обычно + используется в качестве файловой системы общего + назначения. + </p> + </dd> + <dt> + <span class="term">ext4</span> + </dt> + <dd> + <p> + является последней версией файловых систем семейства ext. + Она предоставляет несколько новых возможностей, включая + временные метки с точностью до наносекунды, создание и + использование очень больших файлов (16 ТБ) и повышение + скорости работы. + </p> + </dd> + </dl> + </div> + <p> + Другие файловые системы, включая FAT32, NTFS, ReiserFS, JFS и + XFS, полезны для конкретных задач. Более подробную информацию + об этих файловых системах и многих других можно найти по адресу + <a class="ulink" href= + "https://en.wikipedia.org/wiki/Comparison_of_file_systems">https://en.wikipedia.org/wiki/Comparison_of_file_systems</a>. + </p> + <p> + LFS предполагает, что корневая файловая система (/) имеет тип + ext4. Чтобы создать файловую систему <code class= + "systemitem">ext4</code> на разделе LFS, выполните следующую + команду: + </p> + <pre class="userinput"><kbd class= + "command">mkfs -v -t ext4 /dev/<em class= + "replaceable"><code><xxx></code></em></kbd></pre> + <p> + Замените <em class="replaceable"><code><xxx></code></em> + именем раздела LFS + </p> + <p> + Если вы используете существующий <code class= + "systemitem">раздел подкачки</code>, нет необходимости его + форматировать. Если был создан новый <code class= + "systemitem">раздел подкачки</code>, его нужно будет + инициализировать с помощью этой команды: + </p> + <pre class="userinput"><kbd class="command">mkswap /dev/<em class= + "replaceable"><code><yyy></code></em></kbd></pre> + <p> + Замените <em class="replaceable"><code><yyy></code></em> + именем <code class="systemitem">раздела подкачки</code>. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-partitioning-aboutlfs" name= + "ch-partitioning-aboutlfs"></a>2.6. Установка переменной + $LFS + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + В этой книге переменная окружения <code class= + "envar">LFS</code> будет использоваться несколько раз. Вы + должны убедиться, что эта переменная всегда определена в + процессе сборки LFS. Она должна быть установлена на каталог, в + котором вы будете создавать свою систему LFS — мы, для примера, + будем использовать <code class="filename">/mnt/lfs</code>, но + вы можете выбрать любой другой. Если вы собираете LFS на + отдельном разделе, этот каталог будет точкой монтирования для + раздела. Выберите расположение каталога и установите переменную + с помощью следующей команды: + </p> + <pre class="userinput"><kbd class="command">export LFS=<em class= + "replaceable"><code>/mnt/lfs</code></em></kbd></pre> + <p> + Установка этой переменной полезна тем, что такие команды, как + <span class="command"><strong>mkdir -v + $LFS/tools</strong></span>, можно вводить буквально. Оболочка + автоматически заменит <span class="quote">«<span class= + "quote">$LFS</span>»</span> на <span class= + "quote">«<span class="quote">/mnt/lfs</span>»</span> (или любое + другое значение переменной) при обработке команды. + </p> + <div class="admon caution"> + <h3> + Внимание + </h3> + <p> + Не забывайте проверять, что переменная <code class= + "envar">LFS</code> установлена, всякий раз, когда вы + покидаете и снова входите в текущую рабочую среду (например, + когда выполняете <span class= + "command"><strong>su</strong></span> для <code class= + "systemitem">root</code> или другого пользователя). + Убедитесь, что переменная <code class="envar">LFS</code> + настроена правильно: + </p> + <pre class="userinput"><kbd class= + "command">echo $LFS</kbd></pre> + <p> + Убедитесь, что в выходных данных указан путь к местоположению + сборки вашей системы LFS, то есть <code class= + "filename">/mnt/lfs</code>, если вы следовали примеру. Если + вывод неверен, используйте команду, указанную ранее, чтобы + установить <code class="envar">$LFS</code> в правильное + значение каталога LFS. + </p> + </div> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Один из способов гарантировать, что переменная <code class= + "envar">LFS</code> всегда установлена, — отредактировать файл + <code class="filename">.bash_profile</code> как в вашем + личном домашнем каталоге, так и в <code class= + "filename">/root/.bash_profile</code> и добавить приведенную + выше команду экспорта. Кроме того, оболочка, указанная в + файле <code class="filename">/etc/passwd</code> для всех + пользователей, которым нужна переменная <code class= + "envar">LFS</code>, должна быть bash, чтобы гарантировать, + что файл <code class="filename">/root/.bash_profile</code> + используется как часть процесса входа в систему. + </p> + <p> + Еще один способ, который используется для входа в + хост-систему. При входе в систему через диспетчер + графического дисплея пользовательский <code class= + "filename">.bash_profile</code> не используется при запуске + виртуального терминала. В этом случае добавьте команду + экспорта в файл <code class="filename">.bashrc</code> для + своего пользователя и <code class="systemitem">root</code>. + Кроме того, некоторые дистрибутивы используют тест "if" и не + запускают оставшиеся инструкции <code class= + "filename">.bashrc</code> для не интерактивного вызова bash. + Обязательно разместите команду экспорта перед тестом для не + интерактивного использования. + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-partitioning-mounting" name= + "ch-partitioning-mounting"></a>2.7. Монтирование нового + раздела + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Теперь, когда файловая система создана, раздел должен быть + смонтирован, чтобы хост-система могла получить доступ к нему. В + книге предполагается, что файловая система монтируется в + каталог, указанный в переменной <code class="envar">LFS</code>, + описанной в предыдущем разделе. + </p> + <p> + Строго говоря, нельзя <span class="quote">«<span class= + "quote">смонтировать раздел</span>»</span>. Монтируется + <span class="emphasis"><em>файловая система</em></span> на этом + разделе. Но так как один раздел не может содержать несколько + файловых систем, люди часто говорят о разделе и связанной с ним + файловой системе так, как если бы они были одним и тем же. + </p> + <p> + Создайте точку монтирования и смонтируйте файловую систему LFS + с помощью этих команд: + </p> + <pre class="userinput"><kbd class="command">mkdir -pv $LFS +mount -v -t ext4 /dev/<em class= +"replaceable"><code><xxx></code></em> $LFS</kbd></pre> + <p> + Замените <em class="replaceable"><code><xxx></code></em> + на имя раздела LFS. + </p> + <p> + Если вы используете несколько разделов для LFS (например, один + для <code class="filename">/</code>, а другой для <code class= + "filename">/home</code>), смонтируйте их вот так: + </p> + <pre class="userinput"><kbd class="command">mkdir -pv $LFS +mount -v -t ext4 /dev/<em class= +"replaceable"><code><xxx></code></em> $LFS +mkdir -v $LFS/home +mount -v -t ext4 /dev/<em class= +"replaceable"><code><yyy></code></em> $LFS/home</kbd></pre> + <p> + Замените <em class="replaceable"><code><xxx></code></em> + и <em class="replaceable"><code><yyy></code></em> + соответствующими именами разделов. + </p> + <p> + Убедитесь, что этот новый раздел не смонтирован со слишком + строгими разрешениями (такими как параметры <code class= + "option">nosuid</code> или <code class="option">nodev</code>). + Запустите команду <span class= + "command"><strong>mount</strong></span> без каких-либо + параметров, чтобы увидеть, какие параметры установлены для + смонтированного раздела LFS. Если установлены <code class= + "option">nosuid</code> и/или <code class="option">nodev</code>, + раздел должен быть размонтирован и смонтирован повторно. + </p> + <div class="admon warning"> + <h3> + Предупреждение + </h3> + <p> + Приведенные выше инструкции предполагают, что вы не будете + перезагружать компьютер в процессе сборки LFS. Если вы + выключите свою систему, вам придется либо перемонтировать + раздел LFS каждый раз, когда вы перезапускаете процесс + сборки, либо изменить файл <code class= + "filename">/etc/fstab</code> вашей хост-системы, чтобы он + автоматически монтировал его при загрузке. Например, вы + можете добавить эту строку в свой <code class= + "filename">/etc/fstab</code>: + </p> + <pre class="screen">/dev/<em class= + "replaceable"><code><xxx></code></em> /mnt/lfs ext4 defaults 1 1</pre> + <p> + Если вы используете дополнительные разделы, обязательно + добавьте их. + </p> + </div> + <p> + Если вы используете <code class="systemitem">раздел + подкачки</code>, убедитесь, что он включен с помощью команды + <span class="command"><strong>swapon</strong></span>: + </p> + <pre class="userinput"><kbd class= + "command">/sbin/swapon -v /dev/<em class= + "replaceable"><code><zzz></code></em></kbd></pre> + <p> + Замените <em class="replaceable"><code><zzz></code></em> + именем <code class="systemitem">раздела подкачки</code>. + </p> + <p> + Теперь, когда новый раздел LFS готов к работе, пришло время + загрузить пакеты. + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="chapter-getting-materials" name= + "chapter-getting-materials"></a>Глава 3. Пакеты и патчи + </h2> + </div> + </div> + </div> + <div class="chapter" lang="ru" xml:lang="ru"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-materials-introduction" name= + "ch-materials-introduction"></a>3.1. Введение + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Эта глава содержит список пакетов, которые необходимо загрузить + для сборки базовой системы Linux. Перечисленные версии + программного обеспечения, соответствуют версиям, которые, + проверены и работают, книга основана на их использовании. Мы + настоятельно рекомендуем не использовать другие версии пакетов, + потому что команды сборки для одной версии могут не работать с + другой, если только другая версия не указана в сообщениях об + ошибках LFS или рекомендациях по безопасности. В новейших + версиях пакетов также могут быть проблемы, требующие обходных + путей. Эти обходные пути будут стабилизированы в + разрабатываемой версии книги. + </p> + <p> + Для некоторых пакетов архив релиза и архив снимка репозитория + (Git или SVN) для этого выпуска могут быть опубликованы с + одинаковыми именами файлов. Релиз содержит сгенерированные + файлы (например, скрипт <span class= + "command"><strong>configure</strong></span>, сгенерированный + пакетом <span class="command"><strong>autoconf</strong></span>) + в дополнение к содержимому соответствующего моментального + снимка репозитория. В книге везде, где это возможно, + используются релизные архивы. Использование моментального + снимка вместо tar-архива, указанного в книге, может вызвать + проблемы. + </p> + <p> + Источники загрузки могут быть недоступны. Если источник + изменился с момента публикации этой книги, Google (<a class= + "ulink" href= + "https://www.google.com/">https://www.google.com/</a>) + предоставляет удобную поисковую систему для поиска большинства + пакетов. Если поиск не увенчался успехом, попробуйте один из + альтернативных способов загрузки, расположенных по адресу + <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/lfs/mirrors.html#files">https://mirror.linuxfromscratch.ru/lfs/mirrors.html#files</a>. + </p> + <p> + Загруженные пакеты и патчи необходимо где-нибудь хранить, чтобы + они были доступны на протяжении всей сборки. Рабочий каталог + также необходим для распаковки исходников и их сборки. + <code class="filename">$LFS/sources</code> можно использовать и + как место для хранения архивов и патчей, и как рабочий каталог. + При использовании этого каталога необходимые элементы будут + расположены в разделе LFS и будут доступны на всех этапах + процесса сборки. + </p> + <p> + Чтобы создать этот каталог, выполните следующую команду от + имени пользователя <code class="systemitem">root</code> перед + началом загрузки: + </p> + <pre class="userinput"><kbd class= + "command">mkdir -v $LFS/sources</kbd></pre> + <p> + Сделайте этот каталог доступным для записи и установите липкий + бит. <span class="quote">«<span class="quote">Липкий + бит</span>»</span> означает, что даже если несколько + пользователей имеют право на запись в каталог, только владелец + файла может удалить файл в таком каталоге. Следующая команда + активирует режимы записи и липкий бит: + </p> + <pre class="userinput"><kbd class= + "command">chmod -v a+wt $LFS/sources</kbd></pre> + <p> + Есть несколько способов получить все необходимые пакеты и патчи + для сборки LFS: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Файлы можно загрузить по отдельности, как описано в + следующих двух разделах. + </p> + </li> + <li class="listitem"> + <p> + Для стабильных версий книги архив со всеми необходимыми + файлами можно загрузить с одного из зеркал LFS, + перечисленных на странице <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/mirrors.html#files">https://mirror.linuxfromscratch.ru/mirrors.html#files</a>. + </p> + </li> + <li class="listitem"> + <p> + Файлы можно загрузить с помощью <span class= + "command"><strong>wget</strong></span> и wget-list. + </p> + </li> + </ul> + </div> + <p> + Чтобы загрузить все пакеты и патчи, используя <a class="ulink" + href="wget-list-sysv">wget-list-sysv</a> в качестве входных + данных для команды wget, наберите команду: + </p> + <pre class="userinput"><kbd class= + "command">wget --input-file=wget-list-sysv --continue --directory-prefix=$LFS/sources</kbd></pre> + <p> + Начиная с LFS-7.0, существует отдельный файл <a class="ulink" + href="md5sums">md5sums</a>, который можно использовать для + проверки всех пакетов. Поместите этот файл в <code class= + "filename">$LFS/sources</code> и выполните: + </p> + <pre class="userinput"><kbd class="command">pushd $LFS/sources + md5sum -c md5sums +popd</kbd></pre> + <p> + Эту проверку можно использовать после загрузки файлов любым из + перечисленных выше способов. + </p> + <p> + Если пакеты и исправления загружаются от имени пользователя, + без привилегий <code class="systemitem">root</code>, то файлы + будут принадлежать этому пользователю. Файловая система + записывает владельца по его UID, а UID обычного пользователя в + хост-дистрибутиве не будет присвоен в LFS. Таким образом, файлы + останутся принадлежащими безымянному UID в конечной системе + LFS. Если вы не назначили тот же UID для своего пользователя в + системе LFS, измените владельца этих файлов на <code class= + "systemitem">root</code> сейчас, чтобы избежать этой проблемы: + </p> + <pre class="userinput"><kbd class= + "command">chown root:root $LFS/sources/*</kbd></pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-materials-packages" name= + "ch-materials-packages"></a>3.2. Все пакеты + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Ознакомьтесь с <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/lfs/advisories/">рекомендациями + по безопасности</a> перед загрузкой пакетов, чтобы узнать, + следует ли использовать более новую версию пакета, чтобы + избежать проблем безопасности. + </p> + <p> + При выходе новых версий, старые версии пакетов могут быть + удалены, особенно, если они содержали уязвимости. Если одна + или несколько ссылок ниже недоступны, сначала ознакомьтесь с + рекомендациями по безопасности, чтобы понять следует ли + использовать более новую версию (с исправленной уязвимостью). + Если нет, попробуйте скачать удаленный пакет с зеркала. Хотя + старый релиз можно скачать с зеркала (даже если он был удален + из-за уязвимости), для сборки системы не рекомендуется + использовать версию, которая уязвима. + </p> + </div> + <p> + Загрузите или иным образом получите следующие пакеты: + </p> + <div class="materials"> + <div class="variablelist"> + <dl class="variablelist"> + <dt> + <span class="term">Acl (2.3.2) - <span class="token">363 + KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://savannah.nongnu.org/projects/acl">https://savannah.nongnu.org/projects/acl</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://download.savannah.gnu.org/releases/acl/acl-2.3.2.tar.xz"> + https://download.savannah.gnu.org/releases/acl/acl-2.3.2.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">590765dee95907dbc3c856f7255bd669</code> + </p> + </dd> + <dt> + <span class="term">Attr (2.5.2) - <span class="token">484 + KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://savannah.nongnu.org/projects/attr">https://savannah.nongnu.org/projects/attr</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://download.savannah.gnu.org/releases/attr/attr-2.5.2.tar.gz"> + https://download.savannah.gnu.org/releases/attr/attr-2.5.2.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">227043ec2f6ca03c0948df5517f9c927</code> + </p> + </dd> + <dt> + <span class="term">Autoconf (2.72) - <span class= + "token">1,360 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/autoconf/">https://www.gnu.org/software/autoconf/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/autoconf/autoconf-2.72.tar.xz"> + https://ftp.gnu.org/gnu/autoconf/autoconf-2.72.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">1be79f7106ab6767f18391c5e22be701</code> + </p> + </dd> + <dt> + <span class="term">Automake (1.16.5) - <span class= + "token">1,565 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/automake/">https://www.gnu.org/software/automake/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.xz"> + https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">4017e96f89fca45ca946f1c5db6be714</code> + </p> + </dd> + <dt> + <span class="term">Bash (5.2.21) - <span class= + "token">10,696 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/bash/">https://www.gnu.org/software/bash/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/bash/bash-5.2.21.tar.gz">https://ftp.gnu.org/gnu/bash/bash-5.2.21.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">ad5b38410e3bf0e9bcc20e2765f5e3f9</code> + </p> + </dd> + <dt> + <span class="term">Bc (6.7.5) - <span class="token">460 + KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://git.gavinhoward.com/gavin/bc">https://git.gavinhoward.com/gavin/bc</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://github.com/gavinhoward/bc/releases/download/6.7.5/bc-6.7.5.tar.xz"> + https://github.com/gavinhoward/bc/releases/download/6.7.5/bc-6.7.5.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">e249b1f86f886d6fb71c15f72b65dd3d</code> + </p> + </dd> + <dt> + <span class="term">Binutils (2.42) - <span class= + "token">26,922 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/binutils/">https://www.gnu.org/software/binutils/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://sourceware.org/pub/binutils/releases/binutils-2.42.tar.xz"> + https://sourceware.org/pub/binutils/releases/binutils-2.42.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">a075178a9646551379bfb64040487715</code> + </p> + </dd> + <dt> + <span class="term">Bison (3.8.2) - <span class= + "token">2,752 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/bison/">https://www.gnu.org/software/bison/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz">https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">c28f119f405a2304ff0a7ccdcc629713</code> + </p> + </dd> + <dt> + <span class="term">Bzip2 (1.0.8) - <span class= + "token">792 KB</span>:</span> + </dt> + <dd> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://www.sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz"> + https://www.sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">67e051268d0c475ea773822f7500d0e5</code> + </p> + </dd> + <dt> + <span class="term">Check (0.15.2) - <span class= + "token">760 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://libcheck.github.io/check">https://libcheck.github.io/check</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://github.com/libcheck/check/releases/download/0.15.2/check-0.15.2.tar.gz"> + https://github.com/libcheck/check/releases/download/0.15.2/check-0.15.2.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">50fcafcecde5a380415b12e9c574e0b2</code> + </p> + </dd> + <dt> + <span class="term">Coreutils (9.4) - <span class= + "token">5,840 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/coreutils/">https://www.gnu.org/software/coreutils/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/coreutils/coreutils-9.4.tar.xz"> + https://ftp.gnu.org/gnu/coreutils/coreutils-9.4.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">459e9546074db2834eefe5421f250025</code> + </p> + </dd> + <dt> + <span class="term">DejaGNU (1.6.3) - <span class= + "token">608 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/dejagnu/">https://www.gnu.org/software/dejagnu/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.3.tar.gz">https://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.3.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">68c5208c58236eba447d7d6d1326b821</code> + </p> + </dd> + <dt> + <span class="term">Diffutils (3.10) - <span class= + "token">1,587 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/diffutils/">https://www.gnu.org/software/diffutils/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/diffutils/diffutils-3.10.tar.xz"> + https://ftp.gnu.org/gnu/diffutils/diffutils-3.10.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">2745c50f6f4e395e7b7d52f902d075bf</code> + </p> + </dd> + <dt> + <span class="term">E2fsprogs (1.47.0) - <span class= + "token">9,412 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "http://e2fsprogs.sourceforge.net/">http://e2fsprogs.sourceforge.net/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.47.0/e2fsprogs-1.47.0.tar.gz"> + https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.47.0/e2fsprogs-1.47.0.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">6b4f18a33873623041857b4963641ee9</code> + </p> + </dd> + <dt> + <span class="term">Elfutils (0.190) - <span class= + "token">8,949 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://sourceware.org/elfutils/">https://sourceware.org/elfutils/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://sourceware.org/ftp/elfutils/0.190/elfutils-0.190.tar.bz2"> + https://sourceware.org/ftp/elfutils/0.190/elfutils-0.190.tar.bz2</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">79ad698e61a052bea79e77df6a08bc4b</code> + </p> + </dd> + <dt> + <span class="term">Expat (2.6.0) - <span class= + "token">473 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://libexpat.github.io/">https://libexpat.github.io/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://prdownloads.sourceforge.net/expat/expat-2.6.0.tar.xz"> + https://prdownloads.sourceforge.net/expat/expat-2.6.0.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">bd169cb11f4b9bdfddadf9e88a5c4d4b</code> + </p> + </dd> + <dt> + <span class="term">Expect (5.45.4) - <span class= + "token">618 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://core.tcl.tk/expect/">https://core.tcl.tk/expect/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://prdownloads.sourceforge.net/expect/expect5.45.4.tar.gz"> + https://prdownloads.sourceforge.net/expect/expect5.45.4.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">00fce8de158422f5ccd2666512329bd2</code> + </p> + </dd> + <dt> + <span class="term">File (5.45) - <span class= + "token">1,218 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.darwinsys.com/file/">https://www.darwinsys.com/file/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://astron.com/pub/file/file-5.45.tar.gz">https://astron.com/pub/file/file-5.45.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">26b2a96d4e3a8938827a1e572afd527a</code> + </p> + </dd> + <dt> + <span class="term">Findutils (4.9.0) - <span class= + "token">1,999 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/findutils/">https://www.gnu.org/software/findutils/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/findutils/findutils-4.9.0.tar.xz"> + https://ftp.gnu.org/gnu/findutils/findutils-4.9.0.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">4a4a547e888a944b2f3af31d789a1137</code> + </p> + </dd> + <dt> + <span class="term">Flex (2.6.4) - <span class= + "token">1,386 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://github.com/westes/flex">https://github.com/westes/flex</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz"> + https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">2882e3179748cc9f9c23ec593d6adc8d</code> + </p> + </dd> + <dt> + <span class="term">Flit-core (3.9.0) - <span class= + "token">41 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://pypi.org/project/flit-core/">https://pypi.org/project/flit-core/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://pypi.org/packages/source/f/flit-core/flit_core-3.9.0.tar.gz"> + https://pypi.org/packages/source/f/flit-core/flit_core-3.9.0.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">3bc52f1952b9a78361114147da63c35b</code> + </p> + </dd> + <dt> + <span class="term">Gawk (5.3.0) - <span class= + "token">3,356 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/gawk/">https://www.gnu.org/software/gawk/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/gawk/gawk-5.3.0.tar.xz">https://ftp.gnu.org/gnu/gawk/gawk-5.3.0.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">97c5a7d83f91a7e1b2035ebbe6ac7abd</code> + </p> + </dd> + <dt> + <span class="term">GCC (13.2.0) - <span class= + "token">85,800 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://gcc.gnu.org/">https://gcc.gnu.org/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz"> + https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">e0e48554cc6e4f261d55ddee9ab69075</code> + </p> + </dd> + <dt> + <span class="term">GDBM (1.23) - <span class= + "token">1,092 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/gdbm/">https://www.gnu.org/software/gdbm/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/gdbm/gdbm-1.23.tar.gz">https://ftp.gnu.org/gnu/gdbm/gdbm-1.23.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">8551961e36bf8c70b7500d255d3658ec</code> + </p> + </dd> + <dt> + <span class="term">Gettext (0.22.4) - <span class= + "token">10,016 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/gettext/">https://www.gnu.org/software/gettext/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/gettext/gettext-0.22.4.tar.xz"> + https://ftp.gnu.org/gnu/gettext/gettext-0.22.4.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">2d8507d003ef3ddd1c172707ffa97ed8</code> + </p> + </dd> + <dt> + <span class="term">Glibc (2.39) - <span class= + "token">18,092 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/libc/">https://www.gnu.org/software/libc/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/glibc/glibc-2.39.tar.xz">https://ftp.gnu.org/gnu/glibc/glibc-2.39.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">be81e87f72b5ea2c0ffe2bedfeb680c6</code> + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Разработчики Glibc поддерживают <a class="ulink" + href="https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/release/2.39/master"> + Git ветку</a> содержащую исправления, которые + заслуживают внимания для Glibc-2.39 но, к сожалению, + выпущенные после релиза Glibc-2.39. Редакторы LFS + публикуют рекомендации по безопасности, если в ветку + добавлено какое-либо исправление безопасности, но для + других недавно добавленных патчей не будет + предпринято никаких действий. Вы можете + самостоятельно просмотреть патчи и включить некоторые + из них, если посчитаете их важными. + </p> + </div> + </dd> + <dt> + <span class="term">GMP (6.3.0) - <span class= + "token">2,046 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/gmp/">https://www.gnu.org/software/gmp/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz">https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">956dc04e864001a9c22429f761f2c283</code> + </p> + </dd> + <dt> + <span class="term">Gperf (3.1) - <span class= + "token">1,188 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/gperf/">https://www.gnu.org/software/gperf/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz">https://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">9e251c0a618ad0824b51117d5d9db87e</code> + </p> + </dd> + <dt> + <span class="term">Grep (3.11) - <span class= + "token">1,664 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/grep/">https://www.gnu.org/software/grep/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/grep/grep-3.11.tar.xz">https://ftp.gnu.org/gnu/grep/grep-3.11.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">7c9bbd74492131245f7cdb291fa142c0</code> + </p> + </dd> + <dt> + <span class="term">Groff (1.23.0) - <span class= + "token">7,259 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/groff/">https://www.gnu.org/software/groff/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz">https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">5e4f40315a22bb8a158748e7d5094c7d</code> + </p> + </dd> + <dt> + <span class="term">GRUB (2.12) - <span class= + "token">6,524 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/grub/">https://www.gnu.org/software/grub/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz">https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">60c564b1bdc39d8e43b3aab4bc0fb140</code> + </p> + </dd> + <dt> + <span class="term">Gzip (1.13) - <span class="token">819 + KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/gzip/">https://www.gnu.org/software/gzip/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/gzip/gzip-1.13.tar.xz">https://ftp.gnu.org/gnu/gzip/gzip-1.13.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">d5c9fc9441288817a4a0be2da0249e29</code> + </p> + </dd> + <dt> + <span class="term">Iana-Etc (20240125) - <span class= + "token">589 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.iana.org/protocols">https://www.iana.org/protocols</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://github.com/Mic92/iana-etc/releases/download/20240125/iana-etc-20240125.tar.gz"> + https://github.com/Mic92/iana-etc/releases/download/20240125/iana-etc-20240125.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">aed66d04de615d76c70890233081e584</code> + </p> + </dd> + <dt> + <span class="term">Inetutils (2.5) - <span class= + "token">1,632 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/inetutils/">https://www.gnu.org/software/inetutils/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/inetutils/inetutils-2.5.tar.xz"> + https://ftp.gnu.org/gnu/inetutils/inetutils-2.5.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">9e5a6dfd2d794dc056a770e8ad4a9263</code> + </p> + </dd> + <dt> + <span class="term">Intltool (0.51.0) - <span class= + "token">159 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://freedesktop.org/wiki/Software/intltool">https://freedesktop.org/wiki/Software/intltool</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz"> + https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">12e517cac2b57a0121cda351570f1e63</code> + </p> + </dd> + <dt> + <span class="term">IPRoute2 (6.7.0) - <span class= + "token">900 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.kernel.org/pub/linux/utils/net/iproute2/">https://www.kernel.org/pub/linux/utils/net/iproute2/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-6.7.0.tar.xz"> + https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-6.7.0.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">35d8277d1469596b7edc07a51470a033</code> + </p> + </dd> + <dt> + <span class="term">Jinja2 (3.1.3) - <span class= + "token">264 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://jinja.palletsprojects.com/en/3.1.x/">https://jinja.palletsprojects.com/en/3.1.x/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://pypi.org/packages/source/J/Jinja2/Jinja2-3.1.3.tar.gz"> + https://pypi.org/packages/source/J/Jinja2/Jinja2-3.1.3.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">caf5418c851eac59e70a78d9730d4cea</code> + </p> + </dd> + <dt> + <span class="term">Kbd (2.6.4) - <span class= + "token">1,470 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://kbd-project.org/">https://kbd-project.org/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://www.kernel.org/pub/linux/utils/kbd/kbd-2.6.4.tar.xz"> + https://www.kernel.org/pub/linux/utils/kbd/kbd-2.6.4.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">e2fd7adccf6b1e98eb1ae8d5a1ce5762</code> + </p> + </dd> + <dt> + <span class="term">Kmod (31) - <span class="token">558 + KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://github.com/kmod-project/kmod">https://github.com/kmod-project/kmod</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-31.tar.xz"> + https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-31.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">6165867e1836d51795a11ea4762ff66a</code> + </p> + </dd> + <dt> + <span class="term">Less (643) - <span class="token">579 + KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.greenwoodsoftware.com/less/">https://www.greenwoodsoftware.com/less/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://www.greenwoodsoftware.com/less/less-643.tar.gz"> + https://www.greenwoodsoftware.com/less/less-643.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">cf05e2546a3729492b944b4874dd43dd</code> + </p> + </dd> + <dt> + <span class="term">LFS-Bootscripts (20230728) - + <span class="token">33 KB</span>:</span> + </dt> + <dd> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/lfs/downloads/12.1/lfs-bootscripts-20230728.tar.xz"> + https://mirror.linuxfromscratch.ru/lfs/downloads/12.1/lfs-bootscripts-20230728.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">c37ac1c5dbb57fb326d9c32c8f8b49c7</code> + </p> + </dd> + <dt> + <span class="term">Libcap (2.69) - <span class= + "token">185 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://sites.google.com/site/fullycapable/">https://sites.google.com/site/fullycapable/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.69.tar.xz"> + https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.69.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">4667bacb837f9ac4adb4a1a0266f4b65</code> + </p> + </dd> + <dt> + <span class="term">Libffi (3.4.4) - <span class= + "token">1,331 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://sourceware.org/libffi/">https://sourceware.org/libffi/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://github.com/libffi/libffi/releases/download/v3.4.4/libffi-3.4.4.tar.gz"> + https://github.com/libffi/libffi/releases/download/v3.4.4/libffi-3.4.4.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">0da1a5ed7786ac12dcbaf0d499d8a049</code> + </p> + </dd> + <dt> + <span class="term">Libpipeline (1.5.7) - <span class= + "token">956 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://libpipeline.nongnu.org/">https://libpipeline.nongnu.org/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.7.tar.gz"> + https://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.7.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">1a48b5771b9f6c790fb4efdb1ac71342</code> + </p> + </dd> + <dt> + <span class="term">Libtool (2.4.7) - <span class= + "token">996 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/libtool/">https://www.gnu.org/software/libtool/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/libtool/libtool-2.4.7.tar.xz">https://ftp.gnu.org/gnu/libtool/libtool-2.4.7.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">2fc0b6ddcd66a89ed6e45db28fa44232</code> + </p> + </dd> + <dt> + <span class="term">Libxcrypt (4.4.36) - <span class= + "token">610 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://github.com/besser82/libxcrypt/">https://github.com/besser82/libxcrypt/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://github.com/besser82/libxcrypt/releases/download/v4.4.36/libxcrypt-4.4.36.tar.xz"> + https://github.com/besser82/libxcrypt/releases/download/v4.4.36/libxcrypt-4.4.36.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">b84cd4104e08c975063ec6c4d0372446</code> + </p> + </dd> + <dt> + <span class="term">Linux (6.7.4) - <span class= + "token">138,130 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.kernel.org/">https://www.kernel.org/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.7.4.tar.xz"> + https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.7.4.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">370e1b6155ae63133380e421146619e0</code> + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Ядро Linux обновляется достаточно часто из-за + обнаружения уязвимостей в системе безопасности. Можно + использовать последнюю стабильную версию ядра, если + на странице с ошибками и рекомендациями по + безопасности не указано иное. + </p> + <p> + Для пользователей, у которых ограниченный или + тарифицируемый выход в интернет, и которые хотят + обновить ядро Linux, можно скачать базовую версию + ядра, а затем применить к ней патчи, которые могут + быть загружены отдельно. Это может сэкономить немного + времени или стоимость при обновлению до следующих + версий. + </p> + </div> + </dd> + <dt> + <span class="term">M4 (1.4.19) - <span class= + "token">1,617 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/m4/">https://www.gnu.org/software/m4/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz">https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">0d90823e1426f1da2fd872df0311298d</code> + </p> + </dd> + <dt> + <span class="term">Make (4.4.1) - <span class= + "token">2,300 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/make/">https://www.gnu.org/software/make/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz">https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">c8469a3713cbbe04d955d4ae4be23eeb</code> + </p> + </dd> + <dt> + <span class="term">Man-DB (2.12.0) - <span class= + "token">1,941 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.nongnu.org/man-db/">https://www.nongnu.org/man-db/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://download.savannah.gnu.org/releases/man-db/man-db-2.12.0.tar.xz"> + https://download.savannah.gnu.org/releases/man-db/man-db-2.12.0.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">67e0052fa200901b314fad7b68c9db27</code> + </p> + </dd> + <dt> + <span class="term">Man-pages (6.06) - <span class= + "token">2,116 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.kernel.org/doc/man-pages/">https://www.kernel.org/doc/man-pages/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://www.kernel.org/pub/linux/docs/man-pages/man-pages-6.06.tar.xz"> + https://www.kernel.org/pub/linux/docs/man-pages/man-pages-6.06.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">26b39e38248144156d437e1e10cb20bf</code> + </p> + </dd> + <dt> + <span class="term">MarkupSafe (2.1.5) - <span class= + "token">19 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://palletsprojects.com/p/markupsafe/">https://palletsprojects.com/p/markupsafe/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://pypi.org/packages/source/M/MarkupSafe/MarkupSafe-2.1.5.tar.gz"> + https://pypi.org/packages/source/M/MarkupSafe/MarkupSafe-2.1.5.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">8fe7227653f2fb9b1ffe7f9f2058998a</code> + </p> + </dd> + <dt> + <span class="term">Meson (1.3.2) - <span class= + "token">2,172 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://mesonbuild.com">https://mesonbuild.com</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://github.com/mesonbuild/meson/releases/download/1.3.2/meson-1.3.2.tar.gz"> + https://github.com/mesonbuild/meson/releases/download/1.3.2/meson-1.3.2.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">2d0ebd3a24249617b1c4d30026380cf8</code> + </p> + </dd> + <dt> + <span class="term">MPC (1.3.1) - <span class="token">756 + KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.multiprecision.org/">https://www.multiprecision.org/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz">https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">5c9bc658c9fd0f940e8e3e0f09530c62</code> + </p> + </dd> + <dt> + <span class="term">MPFR (4.2.1) - <span class= + "token">1,459 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.mpfr.org/">https://www.mpfr.org/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.1.tar.xz">https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.1.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">523c50c6318dde6f9dc523bc0244690a</code> + </p> + </dd> + <dt> + <span class="term">Ncurses (6.4-20230520) - <span class= + "token">2,156 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/ncurses/">https://www.gnu.org/software/ncurses/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://anduin.linuxfromscratch.org/LFS/ncurses-6.4-20230520.tar.xz"> + https://anduin.linuxfromscratch.org/LFS/ncurses-6.4-20230520.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">c5367e829b6d9f3f97b280bb3e6bfbc3</code> + </p> + </dd> + <dt> + <span class="term">Ninja (1.11.1) - <span class= + "token">225 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://ninja-build.org/">https://ninja-build.org/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://github.com/ninja-build/ninja/archive/v1.11.1/ninja-1.11.1.tar.gz"> + https://github.com/ninja-build/ninja/archive/v1.11.1/ninja-1.11.1.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">32151c08211d7ca3c1d832064f6939b0</code> + </p> + </dd> + <dt> + <span class="term">OpenSSL (3.2.1) - <span class= + "token">17,318 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.openssl.org/">https://www.openssl.org/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://www.openssl.org/source/openssl-3.2.1.tar.gz">https://www.openssl.org/source/openssl-3.2.1.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">c239213887804ba00654884918b37441</code> + </p> + </dd> + <dt> + <span class="term">Patch (2.7.6) - <span class= + "token">766 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://savannah.gnu.org/projects/patch/">https://savannah.gnu.org/projects/patch/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz">https://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">78ad9937e4caadcba1526ef1853730d5</code> + </p> + </dd> + <dt> + <span class="term">Perl (5.38.2) - <span class= + "token">13,359 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.perl.org/">https://www.perl.org/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://www.cpan.org/src/5.0/perl-5.38.2.tar.xz">https://www.cpan.org/src/5.0/perl-5.38.2.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">d3957d75042918a23ec0abac4a2b7e0a</code> + </p> + </dd> + <dt> + <span class="term">Pkgconf (2.1.1) - <span class= + "token">305 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "http://pkgconf.org/">http://pkgconf.org/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://distfiles.ariadne.space/pkgconf/pkgconf-2.1.1.tar.xz"> + https://distfiles.ariadne.space/pkgconf/pkgconf-2.1.1.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">bc29d74c2483197deb9f1f3b414b7918</code> + </p> + </dd> + <dt> + <span class="term">Procps (4.0.4) - <span class= + "token">1,369 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://gitlab.com/procps-ng/procps/">https://gitlab.com/procps-ng/procps/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-4.0.4.tar.xz"> + https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-4.0.4.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">2f747fc7df8ccf402d03e375c565cf96</code> + </p> + </dd> + <dt> + <span class="term">Psmisc (23.6) - <span class= + "token">415 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://gitlab.com/psmisc/psmisc">https://gitlab.com/psmisc/psmisc</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.6.tar.xz"> + https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.6.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">ed3206da1184ce9e82d607dc56c52633</code> + </p> + </dd> + <dt> + <span class="term">Python (3.12.2) - <span class= + "token">20,109 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.python.org/">https://www.python.org/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz"> + https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">e7c178b97bf8f7ccd677b94d614f7b3c</code> + </p> + </dd> + <dt> + <span class="term">Python Documentation (3.12.2) - + <span class="token">8,065 KB</span>:</span> + </dt> + <dd> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://www.python.org/ftp/python/doc/3.12.2/python-3.12.2-docs-html.tar.bz2"> + https://www.python.org/ftp/python/doc/3.12.2/python-3.12.2-docs-html.tar.bz2</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">8a6310f6288e7f60c3565277ec3b5279</code> + </p> + </dd> + <dt> + <span class="term">Readline (8.2) - <span class= + "token">2,973 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://tiswww.case.edu/php/chet/readline/rltop.html">https://tiswww.case.edu/php/chet/readline/rltop.html</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/readline/readline-8.2.tar.gz">https://ftp.gnu.org/gnu/readline/readline-8.2.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">4aa1b31be779e6b84f9a96cb66bc50f6</code> + </p> + </dd> + <dt> + <span class="term">Sed (4.9) - <span class="token">1,365 + KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/sed/">https://www.gnu.org/software/sed/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/sed/sed-4.9.tar.xz">https://ftp.gnu.org/gnu/sed/sed-4.9.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">6aac9b2dbafcd5b7a67a8a9bcb8036c3</code> + </p> + </dd> + <dt> + <span class="term">Setuptools (69.1.0) - <span class= + "token">2,168 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://pypi.org/project/setuptools/">https://pypi.org/project/setuptools/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://pypi.org/packages/source/s/setuptools/setuptools-69.1.0.tar.gz"> + https://pypi.org/packages/source/s/setuptools/setuptools-69.1.0.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">6f6eb780ce12c90d81ce243747ed7ab0</code> + </p> + </dd> + <dt> + <span class="term">Shadow (4.14.5) - <span class= + "token">1,765 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://github.com/shadow-maint/shadow/">https://github.com/shadow-maint/shadow/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://github.com/shadow-maint/shadow/releases/download/4.14.5/shadow-4.14.5.tar.xz"> + https://github.com/shadow-maint/shadow/releases/download/4.14.5/shadow-4.14.5.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">452b0e59f08bf618482228ba3732d0ae</code> + </p> + </dd> + <dt> + <span class="term">Sysklogd (1.5.1) - <span class= + "token">88 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.infodrom.org/projects/sysklogd/">https://www.infodrom.org/projects/sysklogd/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.1.tar.gz"> + https://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.1.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">c70599ab0d037fde724f7210c2c8d7f8</code> + </p> + </dd> + <dt> + <span class="term">Systemd (255) - <span class= + "token">14,516 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.freedesktop.org/wiki/Software/systemd/">https://www.freedesktop.org/wiki/Software/systemd/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://github.com/systemd/systemd/archive/v255/systemd-255.tar.gz"> + https://github.com/systemd/systemd/archive/v255/systemd-255.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">521cda27409a9edf0370c128fae3e690</code> + </p> + </dd> + <dt> + <span class="term">Systemd Man Pages(255) - <span class= + "token">652 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.freedesktop.org/wiki/Software/systemd/">https://www.freedesktop.org/wiki/Software/systemd/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://anduin.linuxfromscratch.org/LFS/systemd-man-pages-255.tar.xz"> + https://anduin.linuxfromscratch.org/LFS/systemd-man-pages-255.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">1ebe54d7a80f9abf8f2d14ddfeb2432d</code> + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Команда Linux From Scratch генерирует собственный + архив справочных страниц, используя исходный код + systemd. Это делается для того, чтобы избежать + ненужных зависимостей. + </p> + </div> + </dd> + <dt> + <span class="term">Sysvinit (3.08) - <span class= + "token">263 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://savannah.nongnu.org/projects/sysvinit">https://savannah.nongnu.org/projects/sysvinit</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://github.com/slicer69/sysvinit/releases/download/3.08/sysvinit-3.08.tar.xz"> + https://github.com/slicer69/sysvinit/releases/download/3.08/sysvinit-3.08.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">81a05f28d7b67533cfc778fcadea168c</code> + </p> + </dd> + <dt> + <span class="term">Tar (1.35) - <span class="token">2,263 + KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/tar/">https://www.gnu.org/software/tar/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/tar/tar-1.35.tar.xz">https://ftp.gnu.org/gnu/tar/tar-1.35.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">a2d8042658cfd8ea939e6d911eaf4152</code> + </p> + </dd> + <dt> + <span class="term">Tcl (8.6.13) - <span class= + "token">10,581 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "http://tcl.sourceforge.net/">http://tcl.sourceforge.net/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://downloads.sourceforge.net/tcl/tcl8.6.13-src.tar.gz"> + https://downloads.sourceforge.net/tcl/tcl8.6.13-src.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">0e4358aade2f5db8a8b6f2f6d9481ec2</code> + </p> + </dd> + <dt> + <span class="term">Tcl Documentation (8.6.13) - + <span class="token">1,165 KB</span>:</span> + </dt> + <dd> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://downloads.sourceforge.net/tcl/tcl8.6.13-html.tar.gz"> + https://downloads.sourceforge.net/tcl/tcl8.6.13-html.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">4452f2f6d557f5598cca17b786d6eb68</code> + </p> + </dd> + <dt> + <span class="term">Texinfo (7.1) - <span class= + "token">5,416 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.gnu.org/software/texinfo/">https://www.gnu.org/software/texinfo/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://ftp.gnu.org/gnu/texinfo/texinfo-7.1.tar.xz">https://ftp.gnu.org/gnu/texinfo/texinfo-7.1.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">edd9928b4a3f82674bcc3551616eef3b</code> + </p> + </dd> + <dt> + <span class="term">Time Zone Data (2024a) - <span class= + "token">444 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.iana.org/time-zones">https://www.iana.org/time-zones</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://www.iana.org/time-zones/repository/releases/tzdata2024a.tar.gz"> + https://www.iana.org/time-zones/repository/releases/tzdata2024a.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">2349edd8335245525cc082f2755d5bf4</code> + </p> + </dd> + <dt> + <span class="term">Udev-lfs Tarball (udev-lfs-20230818) - + <span class="token">10 KB</span>:</span> + </dt> + <dd> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://anduin.linuxfromscratch.org/LFS/udev-lfs-20230818.tar.xz"> + https://anduin.linuxfromscratch.org/LFS/udev-lfs-20230818.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">acd4360d8a5c3ef320b9db88d275dae6</code> + </p> + </dd> + <dt> + <span class="term">Util-linux (2.39.3) - <span class= + "token">8,327 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/"> + https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://www.kernel.org/pub/linux/utils/util-linux/v2.39/util-linux-2.39.3.tar.xz"> + https://www.kernel.org/pub/linux/utils/util-linux/v2.39/util-linux-2.39.3.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">f3591e6970c017bb4bcd24ae762a98f5</code> + </p> + </dd> + <dt> + <span class="term">Vim (9.1.0041) - <span class= + "token">17,224 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://www.vim.org">https://www.vim.org</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://github.com/vim/vim/archive/v9.1.0041/vim-9.1.0041.tar.gz"> + https://github.com/vim/vim/archive/v9.1.0041/vim-9.1.0041.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">79dfe62be5d347b1325cbd5ce2a1f9b3</code> + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Версия vim меняется ежедневно. Чтобы получить + последнюю версию, перейдите на <a class="ulink" href= + "https://github.com/vim/vim/tags">https://github.com/vim/vim/tags</a>. + </p> + </div> + </dd> + <dt> + <span class="term">Wheel (0.42.0) - <span class= + "token">97 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://pypi.org/project/wheel/">https://pypi.org/project/wheel/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://pypi.org/packages/source/w/wheel/wheel-0.42.0.tar.gz"> + https://pypi.org/packages/source/w/wheel/wheel-0.42.0.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">802ad6e5f9336fcb1c76b7593f0cd22d</code> + </p> + </dd> + <dt> + <span class="term">XML::Parser (2.47) - <span class= + "token">276 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://github.com/chorny/XML-Parser">https://github.com/chorny/XML-Parser</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.47.tar.gz"> + https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.47.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">89a8e82cfd2ad948b349c0a69c494463</code> + </p> + </dd> + <dt> + <span class="term">Xz Utils (5.4.6) - <span class= + "token">1,645 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://tukaani.org/xz">https://tukaani.org/xz</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://github.com/tukaani-project/xz/releases/download/v5.4.6/xz-5.4.6.tar.xz"> + https://github.com/tukaani-project/xz/releases/download/v5.4.6/xz-5.4.6.tar.xz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">7ade7bd1181a731328f875bec62a9377</code> + </p> + </dd> + <dt> + <span class="term">Zlib (1.3.1) - <span class= + "token">1,478 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://zlib.net/">https://zlib.net/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://zlib.net/fossils/zlib-1.3.1.tar.gz">https://zlib.net/fossils/zlib-1.3.1.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">9855b6d802d7fe5b7bd5b196a2271655</code> + </p> + </dd> + <dt> + <span class="term">Zstd (1.5.5) - <span class= + "token">2,314 KB</span>:</span> + </dt> + <dd> + <p> + Домашняя страница: <a class="ulink" href= + "https://facebook.github.io/zstd/">https://facebook.github.io/zstd/</a> + </p> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz"> + https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">63251602329a106220e0a5ad26ba656f</code> + </p> + </dd> + </dl> + </div> + </div> + <p> + Общий размер пакетов: примерно 504 MB + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-materials-patches" name= + "ch-materials-patches"></a>3.3. Необходимые патчи + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + В дополнение к пакетам требуется несколько патчей. Эти патчи + исправляют ошибки в пакетах, которые должны быть исправлены + сопровождающим. Патчи также вносят небольшие изменения, + облегчающие работу с пакетами. Для создания системы LFS + потребуются следующие исправления: + </p> + <div class="materials"> + <div class="variablelist"> + <dl class="variablelist"> + <dt> + <span class="term">Bash Upstream Fixes Patch - + <span class="token">5.9 KB</span>:</span> + </dt> + <dd> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/patches/lfs/12.1/bash-5.2.21-upstream_fixes-1.patch"> + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/bash-5.2.21-upstream_fixes-1.patch</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">2d1691a629c558e894dbb78ee6bf34ef</code> + </p> + </dd> + <dt> + <span class="term">Bzip2 Documentation Patch - + <span class="token">1.6 KB</span>:</span> + </dt> + <dd> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/patches/lfs/12.1/bzip2-1.0.8-install_docs-1.patch"> + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/bzip2-1.0.8-install_docs-1.patch</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">6a5ac7e89b791aae556de0f745916f7f</code> + </p> + </dd> + <dt> + <span class="term">Coreutils Internationalization Fixes + Patch - <span class="token">166 KB</span>:</span> + </dt> + <dd> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/patches/lfs/12.1/coreutils-9.4-i18n-1.patch"> + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/coreutils-9.4-i18n-1.patch</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">cca7dc8c73147444e77bc45d210229bb</code> + </p> + </dd> + <dt> + <span class="term">Glibc FHS Patch - <span class= + "token">2.8 KB</span>:</span> + </dt> + <dd> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/patches/lfs/12.1/glibc-2.39-fhs-1.patch"> + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/glibc-2.39-fhs-1.patch</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">9a5997c3452909b1769918c759eff8a2</code> + </p> + </dd> + <dt> + <span class="term">Kbd Backspace/Delete Fix Patch - + <span class="token">12 KB</span>:</span> + </dt> + <dd> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/patches/lfs/12.1/kbd-2.6.4-backspace-1.patch"> + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/kbd-2.6.4-backspace-1.patch</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">f75cca16a38da6caa7d52151f7136895</code> + </p> + </dd> + <dt> + <span class="term">Readline Upstream Fix Patch - + <span class="token">13 KB</span>:</span> + </dt> + <dd> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/patches/lfs/12.1/readline-8.2-upstream_fixes-3.patch"> + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/readline-8.2-upstream_fixes-3.patch</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">9ed497b6cb8adcb8dbda9dee9ebce791</code> + </p> + </dd> + <dt> + <span class="term">Sysvinit Consolidated Patch - + <span class="token">2.5 KB</span>:</span> + </dt> + <dd> + <p> + Ссылка на загрузку: <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/patches/lfs/12.1/sysvinit-3.08-consolidated-1.patch"> + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/sysvinit-3.08-consolidated-1.patch</a> + </p> + <p> + Контрольная сумма MD5: <code class= + "literal">17ffccbb8e18c39e8cedc32046f3a475</code> + </p> + </dd> + </dl> + </div> + </div> + <p> + Общий размер этих патчей: примерно 203.8 KB + </p> + <p> + Помимо указанных выше обязательных исправлений, существует ряд + необязательных патчей, созданных сообществом LFS. Эти + необязательные исправления решают незначительные проблемы или + включают функции, которые не включены по умолчанию. Не + стесняйтесь просматривать базу данных исправлений, + расположенную по адресу <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/patches/downloads/">https://mirror.linuxfromscratch.ru/patches/downloads/</a>, + и применять патчи, необходимые вашей системе. + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="chapter-final-preps" name= + "chapter-final-preps"></a>Глава 4. Заключительный этап + подготовки + </h2> + </div> + </div> + </div> + <div class="chapter" lang="ru" xml:lang="ru"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-preps-introduction" name= + "ch-preps-introduction"></a>4.1. Введение + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + В этой главе мы выполним несколько дополнительных настроек для + подготовки к сборке временной системы. Мы создадим несколько + каталогов в <code class="filename">$LFS</code> (в котором + установим временные инструменты), добавим непривилегированного + пользователя и настроим окружение для этого пользователя. Кроме + этого, будут даны пояснения по стандартной единице времени + сборки, или <span class="quote">«<span class= + "quote">SBU</span>»</span>, которую мы используем для измерения + времени необходимого для сборки пакетов LFS, и предоставим + некоторую информацию о наборах тестов. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-creatingminlayout" name= + "ch-tools-creatingminlayout"></a>4.2. Создание ограниченной + иерархии папок в файловой системе LFS + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + В этом разделе мы начинаем заполнять файловую систему LFS + элементами, которые будут основой конечной системы Linux. + Первым шагом является создание ограниченной иерархии каталогов, + чтобы программы, скомпилированные в <a class="xref" href= + "#chapter-temporary-tools" title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 6</a> + (а также glibc и libstdc++ в <a class="xref" href= + "#chapter-cross-tools" title= + "Глава 5. Сборка кросс-тулчейна">Глава 5</a>), могли быть + установлены в их конечном расположении. Это необходимо для + того, чтобы эти временные программы были перезаписаны при + сборке окончательных версий в <a class="xref" href= + "#chapter-building-system" title= + "Глава 8. Установка базового системного программного обеспечения"> + Глава 8</a>. + </p> + <p> + Создайте необходимую иерархию каталогов, выполнив следующую + команду от имени <code class="systemitem">root</code>: + </p> + <pre class="userinput"><kbd class= + "command">mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin} + +for i in bin lib sbin; do + ln -sv usr/$i $LFS/$i +done + +case $(uname -m) in + x86_64) mkdir -pv $LFS/lib64 ;; +esac</kbd></pre> + <p> + Программы в <a class="xref" href="#chapter-temporary-tools" + title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 6</a> + будут скомпилированы с помощью кросс-компилятора (более + подробная информация приведена в разделе <a class="xref" href= + "#ch-tools-toolchaintechnotes" title= + "Технические примечания по сборочным инструментам">Технические + примечания по сборочным инструментам</a>). Чтобы отделить + кросс-компилятор от других программ, он будет установлен в + специальный каталог. Создайте этот каталог с помощью следующей + команды: + </p> + <pre class="userinput"><kbd class= + "command">mkdir -pv $LFS/tools</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Редакторы LFS намеренно решили не использовать каталог + <code class="filename">/usr/lib64</code>. В процессе сборки + предпринимается ряд шагов, чтобы убедиться, что набор + инструментов не будет его использовать. Если по какой-либо + причине этот каталог появится (это может произойти, если вы + допустили ошибку, следуя инструкциям, или потому что вы + установили бинарный пакет, создавший его после сборки LFS), + это может привести к поломке вашей системы. Вы должны быть + уверены, что этого каталога не существует. + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-preps-addinguser" name= + "ch-preps-addinguser"></a>4.3. Создание пользователя LFS + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + При входе в систему под учетной записью <code class= + "systemitem">root</code> допущение одной ошибки может привести + к повреждению или разрушению системы. Поэтому пакеты в + следующих двух главах собираются из-под учетной записи + непривилегированного пользователя. Вы можете использовать свое + собственное имя пользователя, но чтобы упростить настройку + рабочей среды, создайте нового пользователя с именем + <code class="systemitem">lfs</code>, который является членом + одноименной группы и выполняйте команды из-под этой учетной + записи в процессе установки. От имени пользователя <code class= + "systemitem">root</code> выполните следующие команды, чтобы + добавить нового пользователя: + </p> + <pre class="userinput"><kbd class="command">groupadd lfs +useradd -s /bin/bash -g lfs -m -k /dev/null lfs</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров командной строки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class="parameter"><code>-s + /bin/bash</code></em></span> + </dt> + <dd> + <p> + Устанавливает <span class= + "command"><strong>bash</strong></span> оболочкой по + умолчанию для пользователя <code class= + "systemitem">lfs</code>. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>-g + lfs</code></em></span> + </dt> + <dd> + <p> + Эта опция добавляет пользователя <code class= + "systemitem">lfs</code> в группу <code class= + "systemitem">lfs</code>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>-m</code></em></span> + </dt> + <dd> + <p> + Создает домашний каталог для пользователя <code class= + "systemitem">lfs</code>. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>-k + /dev/null</code></em></span> + </dt> + <dd> + <p> + Этот параметр предотвращает возможное копирование файлов + из предустановленного набора каталогов (по умолчанию + <code class="filename">/etc/skel</code>) путем изменения + местоположения ввода на специальное null-устройство. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>lfs</code></em></span> + </dt> + <dd> + <p> + Это имя нового пользователя. + </p> + </dd> + </dl> + </div> + <p> + Если вы хотите войти в систему как <code class= + "systemitem">lfs</code> или переключиться на <code class= + "systemitem">lfs</code> из учетной записи непривилегированного + пользователя (в отличие от переключения на пользователя + <code class="systemitem">lfs</code> при входе в систему как + <code class="systemitem">root</code>, для которого не требуется + пароль пользователя <code class="systemitem">lfs</code>), вам + необходимо установить пароль для <code class= + "systemitem">lfs</code>. Выполните следующую команду от имени + пользователя <code class="systemitem">root</code>, чтобы + установить пароль: + </p> + <pre class="userinput"><kbd class= + "command">passwd lfs</kbd></pre> + <p> + Предоставьте пользователю <code class="systemitem">lfs</code> + полный доступ ко всем каталогам в папке <code class= + "filename">$LFS</code>, назначив <code class= + "systemitem">lfs</code> владельцем: + </p> + <pre class="userinput"><kbd class= + "command">chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools} +case $(uname -m) in + x86_64) chown -v lfs $LFS/lib64 ;; +esac</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + В некоторых хост-системах следующая команда не выполняется + должным образом и приостанавливает вход пользователя + <code class="systemitem">lfs</code> в фоновом режиме. Если + подсказка "lfs:~$" не появляется сразу, ввод команды + <span class="command"><strong>fg</strong></span> устранит + проблему. + </p> + </div> + <p> + Затем запустите оболочку, работающую от имени пользователя + <code class="systemitem">lfs</code>. Это можно сделать, войдя в + систему как <code class="systemitem">lfs</code> на виртуальной + консоли или с помощью следующей команды замены/переключения + пользователя: + </p> + <pre class="userinput"><kbd class="command">su - lfs</kbd></pre> + <p> + Аргумент <span class="quote">«<span class="quote"><em class= + "parameter"><code>-</code></em></span>»</span> передает + значение команде <span class= + "command"><strong>su</strong></span> для запуска оболочки входа + в систему, а не обычной оболочки. Разница между этими двумя + типами оболочек подробно описана в <a class="ulink" href= + "https://man.archlinux.org/man/bash.1">bash(1)</a> и + <span class="command"><strong>info bash</strong></span>. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-preps-settingenviron" name= + "ch-preps-settingenviron"></a>4.4. Настройка окружения + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Настроим хорошо работающее окружение, создав два новых файла + запуска для оболочки <span class= + "command"><strong>bash</strong></span>. Войдя в систему как + пользователь <code class="systemitem">lfs</code>, введите + следующую команду, чтобы создать новый <code class= + "filename">.bash_profile</code>: + </p> + <pre class="userinput"><kbd class= + "command">cat > ~/.bash_profile << "EOF" +<code class= +"literal">exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash</code> +EOF</kbd></pre> + <p> + При входе в систему под учетной записью пользователя + <code class="systemitem">lfs</code> или при переключении на + <code class="systemitem">lfs</code>, используя команду + <span class="command"><strong>su</strong></span> с опцией + <span class="quote">«<span class="quote"><em class= + "parameter"><code>-</code></em></span>»</span>, начальная + оболочка представляет собой оболочку <span class= + "emphasis"><em>login</em></span>, которая читает данные из + <code class="filename">/etc/profile</code> хоста (который, + вероятно, содержит некоторые настройки и переменные среды), а + затем <code class="filename">.bash_profile</code>. Команда + <span class="command"><strong>exec env + -i.../bin/bash</strong></span> в файле <code class= + "filename">.bash_profile</code> заменяет запущенную оболочку + новой, не содержащей переменные среды, за исключением + переменных <code class="envar">HOME</code>, <code class= + "envar">TERM</code>, и <code class="envar">PS1</code>. Это + гарантирует, что никакие нежелательные и потенциально опасные + переменные среды из хост-системы не попадут в среду сборки. + </p> + <p> + Новый экземпляр оболочки представляет собой <span class= + "emphasis"><em>non-login</em></span> оболочку, которая не + считывает и не выполняет содержимое файлов <code class= + "filename">/etc/profile</code> и <code class= + "filename">.bash_profile</code>, а вместо этого выполняет + чтение из файла <code class="filename">.bashrc</code>. Создайте + файл <code class="filename">.bashrc</code>: + </p> + <pre class="userinput"><kbd class= + "command">cat > ~/.bashrc << "EOF" +<code class="literal">set +h +umask 022 +LFS=/mnt/lfs +LC_ALL=POSIX +LFS_TGT=$(uname -m)-lfs-linux-gnu +PATH=/usr/bin +if [ ! -L /bin ]; then PATH=/bin:$PATH; fi +PATH=$LFS/tools/bin:$PATH +CONFIG_SITE=$LFS/usr/share/config.site +export LFS LC_ALL LFS_TGT PATH CONFIG_SITE</code> +EOF</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение настроек в <code class= + "filename">.bashrc</code></strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class="parameter"><code>set + +h</code></em></span> + </dt> + <dd> + <p> + Команда <span class="command"><strong>set + +h</strong></span> отключает хэш-функцию <span class= + "command"><strong>bash</strong></span>. Хеширование + является полезной функцией —<span class= + "command"><strong>bash</strong></span> использует + хеш-таблицу для запоминания полного пути к исполняемому + файлу, чтобы избежать многократного поиска одного и того + же исполняемого файла в переменной окружения <code class= + "envar">PATH</code>. Однако новые инструменты требуется + использовать сразу же после их установки. Отключение + хэш-функции, заставляет оболочку искать переменную + окружения <code class="envar">PATH</code>, всякий раз, + когда программу необходимо запустить. Таким образом, + оболочка найдет вновь скомпилированные инструменты в + <code class="filename">$LFS/tools/bin</code>, как только + они станут доступны, не запоминая предыдущую версию той + же программы, предоставленную хост-дистрибутивом, в + <code class="filename">/usr/bin</code> или <code class= + "filename">/bin</code>. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>umask + 022</code></em></span> + </dt> + <dd> + <p> + Установка значения пользовательской маски создания файлов + (umask) 022 гарантирует, что вновь созданные файлы и + каталоги доступны для записи только их владельцу, но + будут доступны для чтения и выполнения остальным + пользователям (при условии, что системный вызов <a class= + "ulink" href= + "https://man.archlinux.org/man/open.2">open(2)</a> + использует режимы по умолчанию, новые файлы получат + разрешения 644, а каталоги 755). + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>LFS=/mnt/lfs</code></em></span> + </dt> + <dd> + <p> + Переменная окружения <code class="envar">LFS</code> + должна указывать на выбранную точку монтирования. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>LC_ALL=POSIX</code></em></span> + </dt> + <dd> + <p> + Переменная <code class="envar">LC_ALL</code> управляет + локализацией определенных программ, и формирует сообщения + в соответствии с локализацией указанной страны. Установка + в <code class="envar">LC_ALL</code> значения <span class= + "quote">«<span class="quote">POSIX</span>»</span> или + <span class="quote">«<span class="quote">C</span>»</span> + (они эквивалентны) гарантирует, что все будет работать + должным образом в среде кросс-компиляции. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>LFS_TGT=$(uname + -m)-lfs-linux-gnu</code></em></span> + </dt> + <dd> + <p> + Переменная <code class="envar">LFS_TGT</code> + устанавливает нестандартное, но совместимое описание + компьютера для использования при создании + кросс-компилятора и компоновщика, а также при + кросс-компиляции временного набора инструментов. + Дополнительная информация об этом представлена в + <a class="xref" href="#ch-tools-toolchaintechnotes" + title="Технические примечания по сборочным инструментам">Технические + примечания по сборочным инструментам</a>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>PATH=/usr/bin</code></em></span> + </dt> + <dd> + <p> + Многие современные дистрибутивы Linux объединили + <code class="filename">/bin</code> и <code class= + "filename">/usr/bin</code>. В этом случае стандартной + переменной <code class="envar">PATH</code> необходимо + установить значение <code class= + "filename">/usr/bin/</code> для окружения из <a class= + "xref" href="#chapter-temporary-tools" title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 6</a>. + Когда это не так, следующая строка добавит <code class= + "filename">/bin</code> к пути. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>if [ ! -L + /bin ]; then PATH=/bin:$PATH; fi</code></em></span> + </dt> + <dd> + <p> + Если <code class="filename">/bin</code> не является + символической ссылкой, то его необходимо добавить в + переменную <code class="envar">PATH</code>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>PATH=$LFS/tools/bin:$PATH</code></em></span> + </dt> + <dd> + <p> + Поместив <code class="filename">$LFS/tools/bin</code> + перед стандартным <code class="envar">PATH</code>, + кросс-компилятор, установленный в начале <a class="xref" + href="#chapter-cross-tools" title= + "Глава 5. Сборка кросс-тулчейна">Глава 5</a>, будет + обнаружен оболочкой сразу после его установки. Это, в + сочетании с отключением хеширования, ограничивает риск + использования компилятора хоста вместо кросс-компилятора. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>CONFIG_SITE=$LFS/usr/share/config.site</code></em></span> + </dt> + <dd> + <p> + В <a class="xref" href="#chapter-cross-tools" title= + "Глава 5. Сборка кросс-тулчейна">Глава 5</a> и + <a class="xref" href="#chapter-temporary-tools" title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 6</a>, + если эта переменная не задана, сценарии <span class= + "command"><strong>configure</strong></span> могут + попытаться загрузить элементы конфигурации, специфичные + для некоторых дистрибутивов, из <code class= + "filename">/usr/share/config.site</code> в хост-системе. + Переопределите её, чтобы предотвратить потенциальное + влияние хоста. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>export + ...</code></em></span> + </dt> + <dd> + <p> + Приведенные выше команды установили некоторые переменные, + чтобы сделать их видимыми в любых вложенных оболочках, мы + экспортируем их. + </p> + </dd> + </dl> + </div> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + Некоторые коммерческие дистрибутивы добавляют + недокументированный экземпляр <code class= + "filename">/etc/bash.bashrc</code> для инициализации + <span class="command"><strong>bash</strong></span>. Этот файл + потенциально может изменить среду пользователя <code class= + "systemitem">lfs</code> таким образом, что это может повлиять + на сборку важных пакетов LFS. Чтобы убедиться, что + пользовательская среда <code class="systemitem">lfs</code> + чиста, проверьте наличие файла <code class= + "filename">/etc/bash.bashrc</code> и, если он есть, + переименуйте его. От имени пользователя <code class= + "systemitem">root</code>, запустите: + </p> + <pre class="userinput"><kbd class= + "command">[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE</kbd></pre> + <p> + Когда пользователь <code class="systemitem">lfs</code> больше + не нужен (в начале <a class="xref" href= + "#chapter-chroot-temporary-tools" title= + "Глава 7. Вход в окружение Chroot и создание дополнительных временных инструментов"> + Глава 7</a> ) вы можете безопасно восстановить + <code class="filename">/etc/bash.bashrc</code> (по желанию). + </p> + <p> + Обратите внимание, что пакет LFS Bash, который мы создадим в + <a class="xref" href="#ch-system-bash" title= + "8.35. Bash-5.2.21">Раздел 8.35, «Bash-5.2.21»</a>, не + настроен на загрузку или выполнение <code class= + "filename">/etc/bash.bashrc</code>, поэтому этот файл + бесполезен в готовой системе LFS. + </p> + </div> + <p> + Для многих современных систем с несколькими процессорами (или + ядрами) время компиляции пакета можно сократить, выполнив + <span class="quote">«<span class="quote">параллельную + сборку</span>»</span>, либо установив переменную среды, либо + сообщив программе <span class= + "command"><strong>make</strong></span>, сколько ядер + задействовать для сборки. Например, процессор Intel Core + i9-13900K имеет 8 ядер P (производительность) и 16 ядер E + (энергоэффективность), ядро P может одновременно запускать два + потока, поэтому каждое ядро P моделируется ядром Linux как два + логических ядра. В результате получается 32 логических ядра. + Очевидный способ задействовать все эти логические ядра - + разрешить <span class="command"><strong>make</strong></span> + создавать до 32 заданий сборки. Это можно сделать, передав + параметр <em class="parameter"><code>-j32</code></em> команде + <span class="command"><strong>make</strong></span>: + </p> + <pre class="userinput"><kbd class="command">make -j32</kbd></pre> + <p> + Или установите переменную окружения <code class= + "envar">MAKEFLAGS</code>, и ее содержимое будет автоматически + использоваться <span class= + "command"><strong>make</strong></span> в качестве параметров + командной строки: + </p> + <pre class="userinput"><kbd class= + "command">export MAKEFLAGS=-j32</kbd></pre> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + Никогда не передавайте параметр <em class= + "parameter"><code>-j</code></em> без номера в <span class= + "command"><strong>make</strong></span> и не устанавливайте + такой параметр в <code class="envar">MAKEFLAGS</code>. Иначе + <span class="command"><strong>make</strong></span> будет + создавать бесконечные задания сборки, что вызовет проблемы со + стабильностью системы. + </p> + </div> + <p> + Чтобы использовать все логические ядра, доступные для сборки + пакетов в <a class="xref" href="#chapter-cross-tools" title= + "Глава 5. Сборка кросс-тулчейна">Глава 5</a> и <a class= + "xref" href="#chapter-temporary-tools" title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 6</a>, + укажите параметр <code class="envar">MAKEFLAGS</code> в + <code class="filename">.bashrc сейчас</code>: + </p> + <pre class="userinput"><kbd class= + "command">cat >> ~/.bashrc << "EOF" +<code class="literal">export MAKEFLAGS=-j<em class= +"replaceable"><code>$(nproc)</code></em></code> +EOF</kbd></pre> + <p> + Замените <em class="replaceable"><code>$(nproc)</code></em> + количеством логических ядер, которые вы хотите использовать, + если вы планируете использовать не все логические ядра. + </p> + <p> + Наконец, чтобы убедиться, что среда полностью подготовлена для + сборки временных инструментов, перечитайте только что созданный + профиль пользователя: + </p> + <pre class="userinput"><kbd class= + "command">source ~/.bash_profile</kbd></pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-preps-aboutsbus" name= + "ch-preps-aboutsbus"></a>4.5. О SBU (Стандартная единица + времени сборки) + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Многие люди хотели бы знать заранее, сколько примерно времени + потребуется для компиляции и установки каждого пакета. + Поскольку Linux From Scratch может быть собран на различных + системах, невозможно дать точную оценку времени. Сборка самого + большого пакета (gcc) займет около 5 минут на быстрых системах, + но может занять несколько дней на более медленных компьютерах! + Вместо фактического времени в книге используется показатель + "стандартная единица времени сборки" (SBU). + </p> + <p> + Показатель SBU рассчитывается следующим образом. Первым + пакетом, который нужно скомпилировать, является binutils в + <a class="xref" href="#chapter-cross-tools" title= + "Глава 5. Сборка кросс-тулчейна">Глава 5</a>. Время, + необходимое для компиляции этого пакета с использованием одного + ядра, будет называться стандартной единицей времени сборки или + SBU. Время компиляции остальных пакетов будет рассчитано + относительно этого времени. + </p> + <p> + Например, рассмотрим пакет, время компиляции которого + составляет 4,5 SBU. Это означает, что если вашей системе + потребовалось 10 минут для компиляции и сборки первого прохода + binutils, то для сборки этого пакета потребуется <span class= + "emphasis"><em>примерно</em></span> 45 минут. К счастью, в + большинстве случаев, время сборки меньше, чем у binutils. + </p> + <p> + В целом, величина SBU не совсем точна, поскольку она зависит от + многих факторов, включая версию GCC хост-системы. Она приведены + здесь, чтобы дать оценку того, сколько времени может + потребоваться для сборки пакета, но в некоторых случаях цифры + могут отличаться на десятки минут. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Когда используется несколько ядер, единицы измерения SBU + будут различаться еще больше, чем обычно. В некоторых случаях + make просто завершится ошибкой. Анализ выходных данных + процесса сборки также будет более сложным, поскольку строки + разных потоков будут чередоваться. Если вы столкнулись с + проблемой на этапе сборки, вернитесь к сборке на одном ядре, + чтобы проанализировать сообщения об ошибках. + </p> + <p> + Представленные здесь значения времени основаны на замерах при + использовании четырех ядер (-j4). Время, указанное в главе 8, + также включает время выполнения регрессионных тестов для + пакета, если не указано иное. + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-preps-abouttestsuites" name= + "ch-preps-abouttestsuites"></a>4.6. О наборах тестов + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Большинство пакетов предоставляют набор тестов. Запуск набора + тестов для только что собранного пакета — хорошая идея, потому + что он может обеспечить <span class="quote">«<span class= + "quote">проверку работоспособности</span>»</span>, указывающую, + что все скомпилировано правильно. Набор тестов, который + проходит свой набор проверок, обычно доказывает, что пакет + работает так, как задумал разработчик. Однако это не + гарантирует, что пакет полностью без ошибок. + </p> + <p> + Некоторые наборы тестов более важны, чем другие. Например, + наборы тестов для основных инструментов — GCC, binutils и glibc + — имеют первостепенное значение из-за их центральной роли в + правильно функционирующей системе. Выполнение наборов тестов + для GCC и glibc может занять очень много времени, особенно на + медленном оборудовании, но их выполнение настоятельно + рекомендуется. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Запуск наборов тестов, описанных в <a class="xref" href= + "#chapter-cross-tools" title= + "Глава 5. Сборка кросс-тулчейна">Глава 5</a> и <a class= + "xref" href="#chapter-temporary-tools" title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 6</a>, + не имеет смысла, поскольку программы компилируются с помощью + кросс-компилятора, они, вероятно, не могут работать на хосте + сборки. + </p> + </div> + <p> + Распространенной проблемой при запуске наборов тестов для + binutils и GCC является нехватка псевдотерминалов (PTY). Это + может привести к большому количеству неудачных тестов. Причин + может быть несколько, но наиболее вероятная причина заключается + в том, что в хост-системе неправильно настроена файловая + система <code class="systemitem">devpts</code>. Этот вопрос + более подробно обсуждается на странице <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/lfs/faq.html#no-ptys">https://mirror.linuxfromscratch.ru/lfs/faq.html#no-ptys</a>. + </p> + <p> + Иногда наборы тестов не работают, по причинам, о которых знают + разработчики и которые они считают некритичными. Просмотрите + журналы, расположенные по адресу <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/lfs/build-logs/12.1/">https://mirror.linuxfromscratch.ru/lfs/build-logs/12.1/</a>, + чтобы проверить, ожидаются ли сбои. Этот сайт актуален для всех + наборов тестов, описанных в книге. + </p> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h1 class="title"> + <a id="part3" name="part3"></a>Часть III. Сборка + кросс-компилятора и набора временных инструментов + </h1> + </div> + </div> + </div> + <div class="part"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="partintro-cross-temp" name= + "partintro-cross-temp"></a>Важный предварительный материал + </h2> + </div> + </div> + </div> + <div class="preface" lang="ru" xml:lang="ru"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-part3intro-intro" name= + "ch-part3intro-intro"></a>Введение + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Эта часть разделена на три этапа: во-первых, сборка + кросс-компилятора и связанных с ним библиотек; во-вторых, + использование этого набора инструментов для сборки нескольких + утилит таким образом, чтобы изолировать их от основного + дистрибутива; в-третьих, вход в среду chroot (что ещё больше + улучшает изоляцию от хоста), и сборка оставшихся инструментов, + необходимых для создания конечной системы. + </p> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + Именно здесь начинается настоящая работа по сборке новой + системы. Требуется очень тщательно следить за тем, чтобы + инструкции выполнялись точно так, как они приведены в книге. + Вы должны попытаться понять, что они делают, и каким бы ни + было ваше желание скорее закончить сборку, вам следует + воздержаться от слепого набора команд. Читайте документацию, + если вы что-то не понимаете. Кроме того, следите за + результатом выполнения команд, отправляя лог в файл с помощью + утилиты <span class="command"><strong>tee</strong></span>. + Это упрощает отладку, если что-то пойдет не так. + </p> + </div> + <p> + Следующий раздел представляет собой техническое введение в + процесс сборки, а следующий за ним, содержит <span class= + "strong"><strong>очень важные</strong></span> общие инструкции + по компиляции. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-toolchaintechnotes" name= + "ch-tools-toolchaintechnotes"></a>Технические примечания по + сборочным инструментам + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + В этом разделе объясняются причины и некоторые технические + детали, лежащие в основе сборки пакетов. Не обязательно сразу + понимать все, что содержится в этом разделе. Большая часть этой + информации станет более понятной после выполнения фактической + сборки. Возвращайтесь и перечитывайте этот раздел в любое время + по ходу сборки. + </p> + <p> + Основная задача <a class="xref" href="#chapter-cross-tools" + title="Глава 5. Сборка кросс-тулчейна">Глава 5</a> и + <a class="xref" href="#chapter-temporary-tools" title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 6</a> + состоит в том, чтобы создать временную область, содержащую + заведомо исправный набор инструментов, которые можно + изолировать от хост-системы. Использовании команды <span class= + "command"><strong>chroot</strong></span> в последующих главах, + обеспечит чистую и безотказную сборку целевой системы LFS. + Процесс сборки разработан таким образом, чтобы свести к + минимуму риски для новых читателей и в то же время обеспечить + наибольшую образовательную ценность. + </p> + <p> + Сборка инструментария основана на процессе <span class= + "emphasis"><em>кросс-компиляции</em></span>. Кросс-компиляция + обычно используется для сборки компилятора и его инструментов + для машины, отличной от той, которая используется для сборки. + Строго говоря, это не требуется для LFS, так как машина, на + которой будет работать новая система, та же, что и используемая + для сборки. Но у кросс-компиляции есть большое преимущество, + заключающееся в том, что все, что подвергается + кросс-компиляции, не будет зависеть от окружения хоста. + </p> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="cross-compile" name="cross-compile"></a>О + кросс-компиляции + </h3> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Книга LFS не является руководством и не содержит общего + руководства по созданию кросс (или собственного) тулчейна. + Не используйте команды из книги для кросс-тулчейна, который + планируете использовать для каких-либо других целей, кроме + создания LFS, если у вас нет полного понимания, что вы + делаете. + </p> + </div> + <p> + Кросс-компиляция включает в себя некоторые концепции, которые + сами по себе заслуживают отдельного раздела. Хотя этот раздел + можно пропустить при первом чтении, возвращение к нему позже + будет полезно для полного понимания процесса. + </p> + <p> + Давайте определим некоторые термины, используемые в этом + контексте. + </p> + <div class="variablelist"> + <dl class="variablelist"> + <dt> + <span class="term">сборщик</span> + </dt> + <dd> + <p> + это машина, на которой мы собираем программы. Обратите + внимание, что этот компьютер упоминается как + <span class="quote">«<span class= + "quote">хост</span>»</span> в других разделах. + </p> + </dd> + <dt> + <span class="term">хост</span> + </dt> + <dd> + <p> + это машина/система, на которой будут выполняться + встроенные программы. Обратите внимание, что + используемое здесь значение слова <span class= + "quote">«<span class="quote">хост</span>»</span> + отличается от того, которое применяется в других + разделах. + </p> + </dd> + <dt> + <span class="term">цель</span> + </dt> + <dd> + <p> + используется только для компиляторов. Это машина, для + которой компилятор создает код. Он может отличаться как + от <span class="quote">«<span class= + "quote">сборщика</span>»</span>, так и от <span class= + "quote">«<span class="quote">хоста</span>»</span>. + </p> + </dd> + </dl> + </div> + <p> + В качестве примера представим следующий сценарий (иногда + называемый <span class="quote">«<span class="quote">канадским + крестом</span>»</span>): у нас есть компилятор на медленной + машине, назовем ее машиной A и компилятор ccA. У нас также + есть быстрая машина (B), но без компилятора, и мы хотим + создать код для другой медленной машины (C). Чтобы собрать + компилятор для машины C, у нас будет три этапа: + </p> + <div class="informaltable"> + <table class="informaltable" border="1"> + <colgroup> + <col width="50pt" align="center" /> + <col width="50pt" align="center" /> + <col width="50pt" align="center" /> + <col width="50pt" align="center" /> + <col width="300pt" align="left" /> + </colgroup> + <thead> + <tr> + <th align="center"> + Этап + </th> + <th align="center"> + Сборщик + </th> + <th align="center"> + Хост + </th> + <th align="center"> + Цель + </th> + <th align="left"> + Действие + </th> + </tr> + </thead> + <tbody> + <tr> + <td align="center"> + 1 + </td> + <td align="center"> + A + </td> + <td align="center"> + A + </td> + <td align="center"> + B + </td> + <td align="left"> + Сборка кросс-компилятора cc1 с использованием ccA на + машине A + </td> + </tr> + <tr> + <td align="center"> + 2 + </td> + <td align="center"> + A + </td> + <td align="center"> + B + </td> + <td align="center"> + C + </td> + <td align="left"> + Сборка кросс-компилятора cc2 с использованием cc1 на + машине A + </td> + </tr> + <tr> + <td align="center"> + 3 + </td> + <td align="center"> + B + </td> + <td align="center"> + C + </td> + <td align="center"> + C + </td> + <td align="left"> + Сборка компилятора ccC с использованием cc2 на машине + B + </td> + </tr> + </tbody> + </table> + </div> + <p> + Затем все другие программы, необходимые для машины C, могут + быть скомпилированы с помощью cc2 на быстрой машине B. + Обратите внимание, что до тех пор, пока B не может запускать + программы, собранные для C, нет способа протестировать + программы, пока не будет запущена сама машина C. Например, + чтобы запустить набор тестов на ccC мы можем добавить + четвертый этап: + </p> + <div class="informaltable"> + <table class="informaltable" border="1"> + <colgroup> + <col width="50pt" align="center" /> + <col width="50pt" align="center" /> + <col width="50pt" align="center" /> + <col width="50pt" align="center" /> + <col width="300pt" align="left" /> + </colgroup> + <thead> + <tr> + <th align="center"> + Этап + </th> + <th align="center"> + Сборщик + </th> + <th align="center"> + Хост + </th> + <th align="center"> + Цель + </th> + <th align="left"> + Действие + </th> + </tr> + </thead> + <tbody> + <tr> + <td align="center"> + 4 + </td> + <td align="center"> + C + </td> + <td align="center"> + C + </td> + <td align="center"> + C + </td> + <td align="left"> + Пересобрать и протестировать ccC, используя ccC на + машине C + </td> + </tr> + </tbody> + </table> + </div> + <p> + В приведенном выше примере только cc1 и cc2 являются + кросс-компиляторами, то есть они создают код для машины, + отличной от той, на которой они выполняются. Компиляторы ccA + и ccC создают код для машины, на которой они выполняются. + Такие компиляторы называются <span class= + "emphasis"><em>нативными</em></span> компиляторами. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="lfs-cross" name="lfs-cross"></a>Реализация + кросс-компиляции для LFS + </h3> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Все кросс-компилируемые пакеты в этой книге используют + систему сборки на основе autoconf. Система сборки на основе + autoconf принимает типы систем вида cpu-vendor-kernel-os, + называемые системным триплетом. Поскольку поле vendor часто + не содержит значения, autoconf позволяет вам опустить его. + </p> + <p> + Проницательный читатель может задаться вопросом, почему + название <span class="quote">«<span class= + "quote">триплет</span>»</span> применяется к имени из + четырех компонентов. Поле kernel и поле os ранее + применялись как единый элемент: <span class= + "quote">«<span class="quote">system</span>»</span>. Такая + форма с тремя полями все еще актуальна для некоторых + систем, например, <code class= + "literal">x86_64-unknown-freebsd</code>. Но две системы + могут использовать одно и то же ядро и все же быть слишком + разными, чтобы использовать одинаковый триплет для их + описания. Например, Android, работающий на мобильном + телефоне полностью отличается от Ubuntu, работающей на + ARM64 сервере, хотя они оба работают на одном и том же типе + процессора (ARM64) и с одним ядром (Linux). + </p> + <p> + Без слоя эмуляции вы не сможете запустить исполняемый файл + c сервера на мобильном телефоне и наоборот. Итак, поле + <span class="quote">«<span class= + "quote">system</span>»</span> было разделено на поля kernel + и os, чтобы однозначно их интерпретировать. В нашем примере + Android обозначается как <code class= + "literal">aarch64-unknown-linux-android</code>, а Ubuntu + <code class="literal">aarch64-unknown-linux-gnu</code>. + </p> + <p> + Слово <span class="quote">«<span class= + "quote">триплет</span>»</span> сохранилось в лексиконе. + Простой способ определить триплет вашей машины — запустить + скрипт <span class= + "command"><strong>config.guess</strong></span>, который + входит в исходный код многих пакетов. Распакуйте исходники + binutils и запустите скрипт: <strong class= + "userinput"><code>./config.guess</code></strong>, обратите + внимание на вывод. Например, для 32-разрядного процессора + Intel вывод будет <span class= + "emphasis"><em>i686-pc-linux-gnu</em></span>. В 64-битной + системе это будет <span class= + "emphasis"><em>x86_64-pc-linux-gnu</em></span>. В + большинстве систем Linux используют еще более простую + команду <span class="command"><strong>gcc + -dumpmachine</strong></span>, которая предоставит вам + аналогичную информацию. + </p> + <p> + Вы также должны знать имя динамического компоновщика + платформы, часто называемого динамическим загрузчиком (не + путать со стандартным компоновщиком <span class= + "command"><strong>ld</strong></span>, который является + частью binutils). Динамический компоновщик, предоставляемый + glibc, находит и загружает общие библиотеки, необходимые + программе, подготавливает программу к запуску, а затем + запускает ее. Имя динамического компоновщика для + 32-разрядной машины Intel — <code class= + "filename">ld-linux.so.2</code>, а для 64-разрядных систем + — <code class="filename">ld-linux-x86-64.so.2</code>. + Надежный способ определить имя динамического компоновщика — + проверить случайный двоичный файл из хост-системы, выполнив + следующую команду: <strong class="userinput"><code>readelf + -l <имя исполняемого файла> | grep + interpreter</code></strong> и зафиксировать результат. + Официальный источник, охватывающий все платформы, находится + в файле <code class="filename">shlib-versions</code> в + корне дерева исходного кода glibc. + </p> + </div> + <p> + Чтобы сымитировать кросс-компиляцию в LFS, имя триплета хоста + немного подкорректировали, изменив поле "vendor" в переменной + <code class="envar">LFS_TGT</code> таким образом, чтобы оно + указывало "lfs". Мы также используем параметр <em class= + "parameter"><code>--with-sysroot</code></em> при сборке + кросс-компоновщика и кросс-компилятора, чтобы сообщить им, + где найти необходимые файлы хоста. Это гарантирует, что ни + одна из программ, входящих в <a class="xref" href= + "#chapter-temporary-tools" title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 6</a>, + не сможет ссылаться на библиотеки на машине сборки. Для + корректной работы, обязательны всего два этапа, еще один + рекомендуется для тестирования: + </p> + <div class="informaltable"> + <table class="informaltable" border="1"> + <colgroup> + <col width="50pt" align="center" /> + <col width="50pt" align="center" /> + <col width="50pt" align="center" /> + <col width="50pt" align="center" /> + <col width="300pt" align="left" /> + </colgroup> + <thead> + <tr> + <th align="center"> + Этап + </th> + <th align="center"> + Сборщик + </th> + <th align="center"> + Хост + </th> + <th align="center"> + Цель + </th> + <th align="left"> + Действие + </th> + </tr> + </thead> + <tbody> + <tr> + <td align="center"> + 1 + </td> + <td align="center"> + ПК + </td> + <td align="center"> + ПК + </td> + <td align="center"> + LFS + </td> + <td align="left"> + Сборка кросс-компилятора cc1 с использованием cc-pc + на ПК + </td> + </tr> + <tr> + <td align="center"> + 2 + </td> + <td align="center"> + ПК + </td> + <td align="center"> + LFS + </td> + <td align="center"> + LFS + </td> + <td align="left"> + Сборка компилятора cc-lfs с использованием cc1 на ПК + </td> + </tr> + <tr> + <td align="center"> + 3 + </td> + <td align="center"> + LFS + </td> + <td align="center"> + LFS + </td> + <td align="center"> + LFS + </td> + <td align="left"> + Пересборка и тестирование cc-lfs, используя cc-lfs в + lfs + </td> + </tr> + </tbody> + </table> + </div> + <p> + В приведенной выше таблице <span class="quote">«<span class= + "quote">ПК</span>»</span> означает, что команды выполняются + на компьютере с использованием уже установленного + дистрибутива. <span class="quote">«<span class="quote">В + lfs</span>»</span> означает, что команды выполняются в + chroot-окружении. + </p> + <p> + Это еще не конец истории. Язык С - это не просто компилятор; + также он определяет стандартную библиотеку. В этой книге + используется библиотека GNU C под названием glibc (есть + альтернативный вариант - "musl"). Эта библиотека должна быть + скомпилирована для машины lfs, то есть с использованием + кросс-компилятора cc1. Но сам компилятор использует + внутреннюю библиотеку, реализующую сложные инструкции, + недоступные в наборе инструкций ассемблера. Эта внутренняя + библиотека называется libgcc, и для полноценной работы ее + необходимо связать с библиотекой glibc! Кроме того, + стандартная библиотека для C++ (libstdc++) также должна быть + связана с glibc. Решение этой проблемы курицы и яйца состоит + в том, чтобы сначала собрать деградированную libgcc на основе + cc1, в которой отсутствуют некоторые функциональные + возможности, такие как потоки и обработка исключений, затем + собрать glibc с использованием этого деградированного + компилятора (сама glibc не деградирована), а затем собрать + libstdc++. В этой последней библиотеке будет не хватать + некоторых функциональных возможностей libgcc. + </p> + <p> + Выводом из предыдущего абзаца является то, что cc1 не может + собрать полнофункциональную libstdc++ с деградированной + libgcc, но это единственный компилятор, доступный для сборки + библиотек C/C++ на этапе 2. Есть две причины, по которым мы + не используем сразу компилятор cc-lfs, собранный на этапе 2, + для сборки этих библиотек. + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Вообще говоря, cc-lfs не может работать на ПК + (хост-системе). Хотя триплеты для ПК и LFS совместимы + друг с другом, исполняемый файл для lfs должен зависеть + от glibc-2.39; хост-дистрибутив может использовать либо + другую реализацию libc (например, musl), либо + предыдущий выпуск glibc (например, glibc-2.13). + </p> + </li> + <li class="listitem"> + <p> + Даже если cc-lfs может работать на ПК, его + использование на ПК сопряжено с риском привязки к + библиотекам ПК, так как cc-lfs является родным + компилятором. + </p> + </li> + </ul> + </div> + <p> + Поэтому, когда мы собираем gcc этап 2, мы даем указание + системе сборки пересобрать libgcc и libstdc++ с помощью cc1, + но мы связываем libstdc++ с новой пересобранной libgcc вместо + старой, деградированной. Это делает пересобранную библиотеку + libstdc++ полностью функциональной. + </p> + <p> + В <a class="xref" href="#chapter-building-system" title= + "Глава 8. Установка базового системного программного обеспечения"> + Глава 8</a> (или <span class="quote">«<span class= + "quote">этап 3</span>»</span>) собраны все пакеты, + необходимые для системы LFS. Даже если пакет уже был + установлен в системе LFS в предыдущей главе, мы все равно + пересобираем пакет. Основная причина пересборки этих пакетов + состоит в том, чтобы сделать их стабильными: если мы + переустанавливаем пакет LFS в готовой системе LFS, содержимое + пакета должно совпадать с содержимым того же пакета при + первой установке в <a class="xref" href= + "#chapter-building-system" title= + "Глава 8. Установка базового системного программного обеспечения"> + Глава 8</a>. Временные пакеты, установленные в <a class= + "xref" href="#chapter-temporary-tools" title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 6</a> + или <a class="xref" href="#chapter-chroot-temporary-tools" + title= + "Глава 7. Вход в окружение Chroot и создание дополнительных временных инструментов"> + Глава 7</a> не могут удовлетворять этому требованию, + потому что некоторые из них собраны без необязательных + зависимостей и autoconf не может выполнить некоторые проверки + функций в <a class="xref" href="#chapter-temporary-tools" + title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 6</a> + из-за кросс-компиляции, в результате чего во временных + пакетах отсутствуют дополнительные функции или используются + не оптимальные процедуры кода. Кроме того, второстепенной + причиной для пересборки пакетов является выполнение тестов. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="other-details" name="other-details"></a>Другие детали + процесса + </h3> + <p> + Кросс-компилятор будет установлен в отдельный каталог + <code class="filename">$LFS/tools</code>, так как он не будет + частью конечной системы. + </p> + <p> + Сначала устанавливается Binutils, потому что во время + выполнения команды <span class= + "command"><strong>configure</strong></span> gcc и glibc + выполняются различные тесты функций на ассемблере и + компоновщике, чтобы определить, какие программные функции + следует включить или отключить. Это важнее, чем может + показаться на первый взгляд. Неправильно настроенный gcc или + glibc может привести к незначительной поломке сборочных + инструментов, где последствия такой поломки могут проявиться + ближе к концу сборки всего дистрибутива. Сбой тестов обычно + выявляет эту ошибку до того, как будет выполнено много + дополнительной работы. + </p> + <p> + Binutils устанавливает свой ассемблер и компоновщик в двух + местах: <code class="filename">$LFS/tools/bin</code> и + <code class="filename">$LFS/tools/$LFS_TGT/bin</code>. + Инструменты в одном месте жестко связаны с другими. Важным + аспектом компоновщика является порядок поиска в библиотеке. + Подробную информацию можно получить от <span class= + "command"><strong>ld</strong></span>, передав ей флаг + <em class="parameter"><code>--verbose</code></em>. Например, + <span class="command"><strong>$LFS_TGT-ld --verbose | grep + SEARCH</strong></span> покажет текущие пути поиска и их + порядок. Он показывает, какие файлы связаны с помощью + <span class="command"><strong>ld</strong></span>, путем + компиляции фиктивной программы и передачи параметра + <em class="parameter"><code>--verbose</code></em> + компоновщику. Например, <span class= + "command"><strong>$LFS_TGT-gcc dummy.c -Wl,--verbose + 2>&1 | grep succeeded</strong></span> покажет все + файлы, успешно открытые во время компоновки. + </p> + <p> + Следующий устанавливаемый пакет — gcc. Пример того, что можно + увидеть во время запуска <span class= + "command"><strong>configure</strong></span>: + </p> + <pre class="screen"><code class= + "computeroutput">checking what assembler to use... /mnt/lfs/tools/i686-lfs-linux-gnu/bin/as +checking what linker to use... /mnt/lfs/tools/i686-lfs-linux-gnu/bin/ld</code></pre> + <p> + Это важно по причинам, упомянутым выше. Также здесь + демонстрируется, что сценарий настройки gcc не просматривает + значения переменной PATH, чтобы найти, какие инструменты + использовать. Однако во время фактической работы самого + <span class="command"><strong>gcc</strong></span> не + обязательно используются одни и те же пути поиска. Чтобы + узнать, какой стандартный компоновщик будет использовать + <span class="command"><strong>gcc</strong></span>, запустите: + <span class="command"><strong>$LFS_TGT-gcc + -print-prog-name=ld</strong></span>. + </p> + <p> + Подробную информацию можно получить из <span class= + "command"><strong>gcc</strong></span>, передав ему параметр + <em class="parameter"><code>-v</code></em> при компиляции + фиктивной программы. Например, <span class= + "command"><strong>gcc -v dummy.c</strong></span> покажет + подробную информацию об этапах препроцессора, компиляции и + сборки, включая указанные в <span class= + "command"><strong>gcc</strong></span> пути поиска и их + порядок. + </p> + <p> + Далее устанавливаются очищенные заголовочные файлы Linux API. + Они позволяют стандартной библиотеке C (Glibc) + взаимодействовать с функциями, предоставляемыми ядром Linux. + </p> + <p> + Следующий устанавливаемый пакет — glibc. Наиболее важными при + сборке glibc являются компилятор, бинарные инструменты и + заголовочные файлы ядра. С компилятором, как правило, не + бывает проблем, поскольку glibc всегда будет использовать + компилятор, указанный в параметре <em class= + "parameter"><code>--host</code></em>, переданный скрипту + configure; например, в нашем случае компилятором будет + <span class="command"><strong>$LFS_TGT-gcc</strong></span>. С + бинарными инструментами и заголовки ядра может быть немного + сложнее. Поэтому мы не рискуем и используем доступные + параметры конфигурации, чтобы обеспечить правильный выбор. + После запуска <span class= + "command"><strong>configure</strong></span> проверьте + содержимое файла <code class="filename">config.make</code> в + каталоге <code class="filename">сборки</code> на наличие всех + важных деталей. Обратите внимание на использование опции + <em class="parameter"><code>CC="$LFS_TGT-gcc"</code></em> (с + переменной <code class="envar">$LFS_TGT</code>) для + управления используемыми бинарными инструментами и + использование флагов <em class= + "parameter"><code>-nostdinc</code></em> и <em class= + "parameter"><code>-isystem</code></em> для управления + включаемым путем поиска компилятора. Эти пункты подчеркивают + важный аспект пакета glibc — он очень самодостаточен с точки + зрения своего механизма сборки и, как правило, не полагается + на значения по умолчанию. + </p> + <p> + Как было сказано выше, затем компилируется стандартная + библиотека C++, а затем в <a class="xref" href= + "#chapter-temporary-tools" title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 6</a> + все остальные программы, которым необходимо разрешить + проблему циклических зависимостей во время сборки. На этапе + установки всех этих пакетов используется переменная DESTDIR, + для принудительной установки в файловую систему LFS. + </p> + <p> + В конце <a class="xref" href="#chapter-temporary-tools" + title="Глава 6. Кросс-Компиляция временных инструментов">Глава 6</a> + устанавливается собственный компилятор lfs. Сначала + собирается binutils с той же переменной <code class= + "envar">DESTDIR</code>, что и другие программы, затем + повторно собирается gcc, без сборки некоторых некритических + библиотек. Из-за какой-то странной логики в сценарии + настройки GCC <code class="envar">CC_FOR_TARGET</code> + заканчивается как <span class= + "command"><strong>cc</strong></span>, когда хост совпадает с + целью, но отличается от системы сборки. Поэтому значение + <em class= + "parameter"><code>CC_FOR_TARGET=$LFS_TGT-gcc</code></em> явно + указывается в параметрах конфигурации. + </p> + <p> + После входа в среду chroot в <a class="xref" href= + "#chapter-chroot-temporary-tools" title= + "Глава 7. Вход в окружение Chroot и создание дополнительных временных инструментов"> + Глава 7</a> первой задачей является установка libstdc++. + Затем выполняется установка временных программ, необходимых + для правильной работы тулчейна. С этого момента основной + набор инструментов является самодостаточным и автономным. В + <a class="xref" href="#chapter-building-system" title= + "Глава 8. Установка базового системного программного обеспечения"> + Глава 8</a> собираются, тестируются и устанавливаются + окончательные версии всех пакетов, необходимых для + полнофункциональной системы. + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-generalinstructions" name= + "ch-tools-generalinstructions"></a>Общие инструкции по + компиляции + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <div class="admon caution"> + <h3> + Внимание + </h3> + <p> + В процессе разработки LFS инструкции в книге часто + изменяются, чтобы адаптироваться к обновлению пакета или + использовать преимущества новых функций из обновленных + пакетов. Смешение инструкций разных версий книги LFS может + привести к незначительным поломкам. Такого рода проблемы + обычно являются результатом повторного использования + некоторых скриптов, созданных для предыдущей версии LFS. + Такое повторное использование настоятельно не рекомендуется. + Если вы по какой-либо причине повторно используете скрипты из + предыдущей версии LFS, вам нужно быть очень осторожным при + обновлении скриптов, чтобы они соответствовали текущей версии + книги LFS. + </p> + </div> + <p> + При сборке пакетов в инструкциях делается несколько допущений: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + На некоторые пакеты необходимо наложить патчи перед + компиляцией, метод используется тогда, когда исправление + необходимо для решения проблем сборки. Патчи часто + требуются как в этой, так и в следующих главах, но + иногда, когда один и тот же пакет собирается более одного + раза, патч требуется не сразу. Поэтому не беспокойтесь, + если инструкции для скачанного патча отсутствуют. + Предупреждающие сообщения о <span class= + "emphasis"><em>смещении (offset)</em></span> или + <span class="emphasis"><em>размытии (fuzz)</em></span> + также могут появляться при применении патча. Не обращайте + внимания на эти предупреждения, патч все равно успешно + применен. + </p> + </li> + <li class="listitem"> + <p> + Во время компиляции большинства пакетов на экране будут + отображаться предупреждения. Это нормально, и их можно + смело игнорировать. Предупреждения появляются, например, + когда используется устаревший, недопустимый синтаксис C + или C++. Стандарты C меняются довольно часто, и некоторые + пакеты все еще используют более старый стандарт. Это не + является серьезной проблемой, но вызывает появление + предупреждений. + </p> + </li> + <li class="listitem"> + <p> + Проверьте в последний раз, что переменная среды + <code class="envar">LFS</code> настроена правильно: + </p> + <pre class="userinput"><kbd class= + "command">echo $LFS</kbd></pre> + <p> + Убедитесь, что в выводе указан путь к точке монтирования + раздела LFS, то есть <code class= + "filename">/mnt/lfs</code>, как в примере из этой книги. + </p> + </li> + <li class="listitem"> + <p> + Наконец, необходимо подчеркнуть два важных момента: + </p> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + Инструкции по сборке предполагают, что все <a class= + "xref" href="#ch-partitioning-hostreqs" title= + "2.2. Требования к хост-системе">Требования к + хост-системе</a>, включая символические ссылки, + установлены правильно: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + <span class= + "command"><strong>bash</strong></span> это + используемая оболочка. + </p> + </li> + <li class="listitem"> + <p> + <span class="command"><strong>sh</strong></span> + это символическая ссылка на <span class= + "command"><strong>bash</strong></span>. + </p> + </li> + <li class="listitem"> + <p> + <span class= + "command"><strong>/usr/bin/awk</strong></span> + это символическая ссылка на <span class= + "command"><strong>gawk</strong></span>. + </p> + </li> + <li class="listitem"> + <p> + <span class= + "command"><strong>/usr/bin/yacc</strong></span> + это символическая ссылка на <span class= + "command"><strong>bison</strong></span> или + небольшой скрипт, который выполняет bison + </p> + </li> + </ul> + </div> + </div> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + Вот краткое описание процесса сборки: + </p> + <div class="orderedlist"> + <ol class="compact"> + <li class="listitem"> + <p> + Поместите все исходники и патчи в каталог, + который будет доступен из среды chroot, например, + <code class="filename">/mnt/lfs/sources/</code>. + </p> + </li> + <li class="listitem"> + <p> + Перейдите в каталог <code class= + "filename">/mnt/lfs/sources/</code>. + </p> + </li> + <li class="listitem"> + <p> + <a id="buildinstr" name="buildinstr"></a>Для + каждого пакета: + </p> + <div class="orderedlist"> + <ol class="compact"> + <li class="listitem"> + <p> + С помощью программы <span class= + "command"><strong>tar</strong></span> + извлеките пакет для сборки. В <a class= + "xref" href="#chapter-cross-tools" title= + "Глава 5. Сборка кросс-тулчейна">Глава 5</a> + и <a class="xref" href= + "#chapter-temporary-tools" title= + "Глава 6. Кросс-Компиляция временных инструментов"> + Глава 6</a> убедитесь, что при + извлечении пакета вы залогинены под + пользователем lfs. + </p> + <p> + Не используйте никаких методов, кроме + команды <span class= + "command"><strong>tar</strong></span>, для + извлечения исходного кода. Примечательно, + что использование команды <span class= + "command"><strong>cp -R</strong></span> для + копирования дерева исходного кода в другое + место может привести к уничтожению ссылок и + меток времени в дереве исходного кода и + привести к сбою сборки. + </p> + </li> + <li class="listitem"> + <p> + Перейдите в каталог, созданный при + извлечении пакета. + </p> + </li> + <li class="listitem"> + <p> + Следуйте инструкциям по сборке пакета. + </p> + </li> + <li class="listitem"> + <p> + Вернитесь в исходный каталог, когда сборка + будет завершена. + </p> + </li> + <li class="listitem"> + <p> + Удалите извлеченный каталог, если не + указано иное. + </p> + </li> + </ol> + </div> + </li> + </ol> + </div> + </div> + </li> + </ul> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="chapter-cross-tools" name= + "chapter-cross-tools"></a>Глава 5. Сборка кросс-тулчейна + </h2> + </div> + </div> + </div> + <div class="chapter" lang="ru" xml:lang="ru"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-introduction" name= + "ch-tools-introduction"></a>5.1. Введение + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + В этой главе дано описание, как создать кросс-компилятор и + связанные с ним инструменты. Несмотря на то, что на данном + этапе кросс-компиляция имитируется, принципы его работы те же, + что и для настоящего кросс-тулчейна. + </p> + <p> + Программы, скомпилированные в этой главе, будут установлены в + каталог <code class="filename">$LFS/tools</code>, чтобы они + были отделены от файлов, установленных в следующих главах. + Библиотеки, же, устанавливаются на свое постоянное место, + поскольку они относятся к системе, которую мы хотим создать. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-binutils-pass1" name= + "ch-tools-binutils-pass1"></a>5.2. Binutils-2.42 - Проход 1 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Binutils содержит компоновщик, ассемблер и другие + инструменты для работы с объектными файлами. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">663 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 5.2.1. Установка кросс-пакета Binutils + </h3> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Вернитесь назад и перечитайте примечания в разделе + <a class="xref" href="#ch-tools-generalinstructions" title= + "Общие инструкции по компиляции">Общие инструкции по + компиляции</a>. Понимание информации, помеченной как + важная, может впоследствии избавить вас от многих проблем. + </p> + </div> + <p> + Очень важно, чтобы Binutils был скомпилированным первым, + потому что и Glibc, и GCC выполняют различные тесты на + доступных компоновщике и ассемблере, чтобы определить, какие + из их функций следует включить. + </p> + <p> + В документации пакета Binutils рекомендуется выполнять сборку + в отдельном каталоге, создадим его: + </p> + <pre class="userinput"><kbd class="command">mkdir -v build +cd build</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Для того, чтобы значения SBU, перечисленные в остальной + части книги, были вам полезны, измерьте время, необходимое + для сборки этого пакета, начиная с настройки и заканчивая + установкой. Чтобы добиться этого, оберните команды сборки + командой <span class= + "command"><strong>time</strong></span>: <strong class= + "userinput"><code>time { ../configure ... && make + && make install; }</code></strong>. + </p> + </div> + <p> + Теперь подготовьте Binutils к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">../configure --prefix=$LFS/tools \ + --with-sysroot=$LFS \ + --target=$LFS_TGT \ + --disable-nls \ + --enable-gprofng=no \ + --disable-werror \ + --enable-default-hash-style=gnu</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--prefix=$LFS/tools</code></em></span> + </dt> + <dd> + <p> + Указывает сценарию configure подготовить к установке + пакет Binutils в каталог <code class= + "filename">$LFS/tools</code>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--with-sysroot=$LFS</code></em></span> + </dt> + <dd> + <p> + Для кросс-компляции указывает системе сборки искать в + $LFS библиотеки целевой системы, если необходимо. + </p> + </dd> + <dt> + <span class="term"><code class= + "envar">--target=$LFS_TGT</code></span> + </dt> + <dd> + <p> + Поскольку название машины в значении переменной + <code class="envar">LFS_TGT</code> может отличаться от + значения, которое возвращает сценарий <span class= + "command"><strong>config.guess</strong></span>, этот + аргумент укажет сценарию <span class= + "command"><strong>configure</strong></span> как + настроить систему сборки пакета Binutils для создания + кросс-компоновщика. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-nls</code></em></span> + </dt> + <dd> + <p> + Этот параметр отключает интернационализацию, так как + i18n не требуется для временных инструментов. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-gprofng=no</code></em></span> + </dt> + <dd> + <p> + Этот параметр отключает сборку gprofng, который не + нужен для временного инструментария. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-werror</code></em></span> + </dt> + <dd> + <p> + Этот параметр предотвращает остановку сборки в случае + появления предупреждений от компилятора хоста. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-default-hash-style=gnu</code></em></span> + </dt> + <dd> + <p> + По умолчанию компоновщик генерирует как хеш-таблицу в + стиле GNU, так и классическую хеш-таблицу ELF для общих + библиотек и динамически связанных исполняемых файлов. + Хеш-таблицы необходимы только для динамического + компоновщика, выполняющего поиск символов. В LFS + динамический компоновщик (предоставляемый пакетом + Glibc) всегда будет использовать хеш-таблицу в стиле + GNU, к которой запросы выполняются быстрее. Так что + классическая хеш-таблица ELF совершенно бесполезна. + Этот параметр указывает компоновщику по умолчанию + генерировать только хеш-таблицу в стиле GNU, поэтому мы + можем избежать траты времени на создание классической + хеш-таблицы ELF при сборке пакетов или не тратить + дисковое пространство для ее хранения. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-binutils" title= + "8.19.2. Содержимое пакета Binutils">Раздел 8.19.2, + «Содержимое пакета Binutils.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-gcc-pass1" name= + "ch-tools-gcc-pass1"></a>5.3. GCC-13.2.0 - Проход 1 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет GCC содержит коллекцию компиляторов GNU, которая + включает компиляторы C и C++. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">3.8 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">4.1 + GB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 5.3.1. Установка кросс-пакета GCC + </h3> + <p> + Для GCC требуются пакеты GMP, MPFR и MPC. Поскольку эти + пакеты могут отсутствовать в дистрибутиве вашего хоста, они + будут собраны с помощью GCC. Распакуйте каждый пакет в + исходный каталог GCC и переименуйте получившиеся каталоги, + чтобы процедуры сборки GCC использовали их автоматически: + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + В этой главе часто возникают недоразумения, хотя + применяются те же процедуры, что и в любой другой главе, + следуйте инструкции которую получили ранее (<a class="xref" + href="#buildinstr">Инструкции по сборке пакетов</a>). + Сначала распакуйте пакет gcc-13.2.0 из архива, а затем + перейдите в созданный каталог. Только после этого следует + приступить к приведенным ниже инструкциям. + </p> + </div> + <pre class="userinput"><kbd class= + "command">tar -xf ../mpfr-4.2.1.tar.xz +mv -v mpfr-4.2.1 mpfr +tar -xf ../gmp-6.3.0.tar.xz +mv -v gmp-6.3.0 gmp +tar -xf ../mpc-1.3.1.tar.gz +mv -v mpc-1.3.1 mpc</kbd></pre> + <p> + На хостах x86_64 измените имя каталога по умолчанию для + 64-битных библиотек на <span class="quote">«<span class= + "quote">lib</span>»</span>: + </p> + <pre class="userinput"><kbd class="command">case $(uname -m) in + x86_64) + sed -e '/m64=/s/lib64/lib/' \ + -i.orig gcc/config/i386/t-linux64 + ;; +esac</kbd></pre> + <p> + В документации к GCC рекомендуется собирать GCC в отдельном + каталоге: + </p> + <pre class="userinput"><kbd class="command">mkdir -v build +cd build</kbd></pre> + <p> + Подготовьте GCC к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">../configure \ + --target=$LFS_TGT \ + --prefix=$LFS/tools \ + --with-glibc-version=2.39 \ + --with-sysroot=$LFS \ + --with-newlib \ + --without-headers \ + --enable-default-pie \ + --enable-default-ssp \ + --disable-nls \ + --disable-shared \ + --disable-multilib \ + --disable-threads \ + --disable-libatomic \ + --disable-libgomp \ + --disable-libquadmath \ + --disable-libssp \ + --disable-libvtv \ + --disable-libstdcxx \ + --enable-languages=c,c++</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--with-glibc-version=2.39</code></em></span> + </dt> + <dd> + <p> + Этот параметр указывает версию Glibc, которая будет + использоваться на целевой системе. Он не имеет + отношения к libc хост-дистрибутива, потому что все, + скомпилированное в этом разделе, будет выполняться в + среде chroot, которая изолирована от libc + хост-дистрибутива. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--with-newlib</code></em></span> + </dt> + <dd> + <p> + Поскольку работающая библиотека C еще недоступна, это + гарантирует, что константа inhibit_libc будет + определена при сборке libgcc. Это предотвращает + компиляцию любого кода, требующего поддержки libc. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--without-headers</code></em></span> + </dt> + <dd> + <p> + При создании полного кросс-компилятора GCC требует + наличия стандартных заголовков, совместимых с целевой + системой. Для наших целей эти заголовки не понадобятся. + Этот параметр предотвращает их поиск GCC. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-default-pie и + --enable-default-ssp</code></em></span> + </dt> + <dd> + <p> + Эти параметры позволяют GCC по умолчанию компилировать + программы с некоторые функциями усиливающими + безопасность (более подробная информация о них + приведена в <a class="xref" href= + "#pie-ssp-info">примечание о PIE и SSP</a> в Главе 8). + На данном этапе это не является строго обязательным, + поскольку компилятор будет создавать только временные + исполняемые файлы. Но лучше, чтобы временные пакеты + были максимально приближены к тем, что будут в готовой + системе LFS. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-shared</code></em></span> + </dt> + <dd> + <p> + Этот параметр заставляет GCC статически связывать свои + внутренние библиотеки. Он необходим потому что общие + библиотеки требуют Glibc, который еще не установлен в + целевой системе. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-multilib</code></em></span> + </dt> + <dd> + <p> + На x86_64, LFS не поддерживает конфигурацию multilib. + Этот аргумент никак не влияет на работу с архитектурой + x86. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-threads, --disable-libatomic, + --disable-libgomp, --disable-libquadmath, + --disable-libssp, --disable-libvtv, + --disable-libstdcxx</code></em></span> + </dt> + <dd> + <p> + Эти аргументы отключают поддержку расширений для работы + с многопоточностью, libatomic, libgomp, libquadmath, + libssp, libvtv и стандартной библиотеки C++ + соответственно. Эти функции могут не скомпилироваться + при сборке кросс-компилятора и не нужны для задач + кросс-компиляции временной libc + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-languages=c,c++</code></em></span> + </dt> + <dd> + <p> + Этот параметр обеспечивает сборку только компиляторов C + и C++. Это единственные языки, которые нужны сейчас. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте GCC, выполнив: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + Во время сборки GCC установил пару внутренних системных + заголовочных файлов. Обычно один из файлов <code class= + "filename">limits.h</code>, включает соответствующие + системные ограничения <code class="filename">limits.h</code>, + в данном случае <code class= + "filename">$LFS/usr/include/limits.h</code>. Однако во время + сборки GCC <code class= + "filename">$LFS/usr/include/limits.h</code> не существует, + поэтому только что установленный внутренний заголовочный файл + является частичным, автономным файлом и не включает + расширенные функции системного файла. Этого достаточно для + сборки Glibc, но полный внутренний заголовочный файл + понадобится позже. Создайте полную версию внутреннего + заголовочного файла с помощью команды, идентичной той, что + система сборки GCC использует обычно: + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + В приведенной ниже команде показан пример подстановки + вложенных команд, используя два метода: обратные кавычки и + конструкцию <code class="literal">$()</code>. Его можно + было бы переписать, используя один и тот же метод для обеих + замен, но сделано так, чтобы продемонстрировать, как их + можно использовать одновременно. В целом метод <code class= + "literal">$()</code> предпочтительнее. + </p> + </div> + <pre class="userinput"><kbd class="command">cd .. +cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \ + `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include/limits.h</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-gcc" title= + "8.28.2. Содержимое пакета GCC">Раздел 8.28.2, + «Содержимое пакета GCC.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-linux-headers" name= + "ch-tools-linux-headers"></a>5.4. Заголовочные файлы + Linux-6.7.4 API + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Заголовочные файлы Linux API (в linux-6.7.4.tar.xz) + предоставляют API ядра для использования Glibc. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">1.5 + GB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 5.4.1. Установка заголовочных файлов + </h3> + <p> + Ядро Linux должно предоставлять интерфейс прикладного + программирования (API) для использования системной + библиотекой C (Glibc в LFS). Это делается путем установки + заголовочных файлов C, которые поставляются в архиве с + исходным кодом ядра Linux. + </p> + <p> + Убедитесь, что в пакете нет устаревших файлов: + </p> + <pre class="userinput"><kbd class= + "command">make mrproper</kbd></pre> + <p> + Теперь извлеките видимые пользователю заголовочные файлы ядра + из исходного кода. Рекомендуемый способ make <span class= + "quote">«<span class="quote">headers_install</span>»</span> + использовать нельзя, так как для этого требуется <span class= + "application">rsync</span>, который может быть недоступен. + Заголовочные файлы сначала помещаются в <code class= + "filename">/usr</code>, а затем копируются в нужное место. + </p> + <pre class="userinput"><kbd class="command">make headers +find usr/include -type f ! -name '*.h' -delete +</kbd><kbd class="command">cp -rv usr/include $LFS/usr</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-linux-headers" name= + "contents-linux-headers"></a>5.4.2. Содержимое заголовочных + файлов Linux API + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные заголовочные + файлы::</strong> <span class= + "segbody">/usr/include/asm/*.h, + /usr/include/asm-generic/*.h, /usr/include/drm/*.h, + /usr/include/linux/*.h, /usr/include/misc/*.h, + /usr/include/mtd/*.h, /usr/include/rdma/*.h, + /usr/include/scsi/*.h, /usr/include/sound/*.h, + /usr/include/video/*.h, and /usr/include/xen/*.h</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги::</strong> + <span class="segbody">/usr/include/asm, + /usr/include/asm-generic, /usr/include/drm, + /usr/include/linux, /usr/include/misc, /usr/include/mtd, + /usr/include/rdma, /usr/include/scsi, /usr/include/sound, + /usr/include/video, and /usr/include/xen</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm3316" name="idm3316"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="asm" name="asm"></a><span class= + "term"><code class= + "filename">/usr/include/asm/*.h</code></span> + </p> + </td> + <td> + <p> + Заголовочные файлы Linux API ASM + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="asm-generic" name= + "asm-generic"></a><span class="term"><code class= + "filename">/usr/include/asm-generic/*.h</code></span> + </p> + </td> + <td> + <p> + Заголовочные файлы Linux API ASM Generic + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="drm" name="drm"></a><span class= + "term"><code class= + "filename">/usr/include/drm/*.h</code></span> + </p> + </td> + <td> + <p> + Заголовочные файлы Linux API DRM + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="linux" name="linux"></a><span class= + "term"><code class= + "filename">/usr/include/linux/*.h</code></span> + </p> + </td> + <td> + <p> + Заголовочные файлы Linux API Linux + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="misc" name="misc"></a><span class= + "term"><code class= + "filename">/usr/include/misc/*.h</code></span> + </p> + </td> + <td> + <p> + Заголовочные файлы Linux API Miscellaneous + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mtd" name="mtd"></a><span class= + "term"><code class= + "filename">/usr/include/mtd/*.h</code></span> + </p> + </td> + <td> + <p> + Заголовочные файлы API MTD + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="rdma" name="rdma"></a><span class= + "term"><code class= + "filename">/usr/include/rdma/*.h</code></span> + </p> + </td> + <td> + <p> + Заголовочные файлы Linux API RDMA + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="scsi" name="scsi"></a><span class= + "term"><code class= + "filename">/usr/include/scsi/*.h</code></span> + </p> + </td> + <td> + <p> + Заголовочные файлы Linux API SCSI + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sound" name="sound"></a><span class= + "term"><code class= + "filename">/usr/include/sound/*.h</code></span> + </p> + </td> + <td> + <p> + Заголовочные файлы Linux API Sound + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="video" name="video"></a><span class= + "term"><code class= + "filename">/usr/include/video/*.h</code></span> + </p> + </td> + <td> + <p> + Заголовочные файлы Linux API Video + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xen" name="xen"></a><span class= + "term"><code class= + "filename">/usr/include/xen/*.h</code></span> + </p> + </td> + <td> + <p> + Заголовочные файлы Linux API Xen + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-glibc" name="ch-tools-glibc"></a>5.5. + Glibc-2.39 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Glibc содержит основную библиотеку C. Эта библиотека + предоставляет основные процедуры для выделения памяти, поиска + в каталогах, открытия и закрытия файлов, чтения и записи + файлов, обработки строк, сопоставления с образцом, арифметики + и так далее + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">1.5 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">846 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 5.5.1. Установка пакета Glibc + </h3> + <p> + Во-первых, создайте символическую ссылку для соответствия + требованиям LSB. Кроме того, для совместимости с x86_64 + создайте символическую ссылку, необходимую для правильной + работы загрузчика динамической библиотеки: + </p> + <pre class="userinput"><kbd class="command">case $(uname -m) in + i?86) ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3 + ;; + x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64 + ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3 + ;; +esac</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Приведенная выше команда верна. Команда <span class= + "command"><strong>ln</strong></span> имеет несколько + вариантов синтаксиса, поэтому обязательно ознакомьтесь с + <span class="command"><strong>info coreutils + ln</strong></span> и <a class="ulink" href= + "https://man.archlinux.org/man/ln.1">ln(1)</a>, прежде чем + сообщать об ошибке. + </p> + </div> + <p> + Некоторые программы, использующие Glibc, применяют + несовместимый с FHS каталог <code class= + "filename">/var/db</code> для хранения своих данных времени + выполнения. Установите следующий патч, чтобы такие программы + хранили свои данные в местах, совместимых с FHS: + </p> + <pre class="userinput"><kbd class= + "command">patch -Np1 -i ../glibc-2.39-fhs-1.patch</kbd></pre> + <p> + В документации к Glibc рекомендуется собирать Glibc в + отдельном каталоге: + </p> + <pre class="userinput"><kbd class="command">mkdir -v build +cd build</kbd></pre> + <p> + Убедитесь, что утилиты <span class= + "command"><strong>ldconfig</strong></span> and <span class= + "command"><strong>sln</strong></span> установлены в + <code class="filename">/usr/sbin</code>: + </p> + <pre class="userinput"><kbd class= + "command">echo "rootsbindir=/usr/sbin" > configparms</kbd></pre> + <p> + Затем подготовьте Glibc к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">../configure \ + --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(../scripts/config.guess) \ + --enable-kernel=4.19 \ + --with-headers=$LFS/usr/include \ + --disable-nscd \ + libc_cv_slibdir=/usr/lib</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--host=$LFS_TGT, + --build=$(../scripts/config.guess)</code></em></span> + </dt> + <dd> + <p> + Комбинация этих опций указывает на то, что система + сборки Glibc настраивается на кросс-компиляцию с + использованием кросс-компоновщика и кросс-компилятора в + <code class="filename">$LFS/tools</code>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-kernel=4.19</code></em></span> + </dt> + <dd> + <p> + Этот параметр позволяет Glibc выполнять компиляцию + библиотеки с поддержкой ядра 4.19 и более поздних + версий. Поддержка более старых ядер не включена. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--with-headers=$LFS/usr/include</code></em></span> + </dt> + <dd> + <p> + Этот аргумент позволяет скомпилировать библиотеку с + заголовочными файлами, недавно установленными в + каталоге $LFS/usr/include, таким образом, пакету будет + известно, какие функции есть у ядра, чтобы + оптимизировать себя. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>libc_cv_slibdir=/usr/lib</code></em></span> + </dt> + <dd> + <p> + Этот аргумент гарантирует, что библиотека будет + установлена в /usr/lib вместо стандартного /lib64 на + 64-битных машинах. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-nscd</code></em></span> + </dt> + <dd> + <p> + Параметр отключает сборку демона кэша службы имен, + который больше не используется. + </p> + </dd> + </dl> + </div> + <p> + На этом этапе может появиться следующее предупреждение: + </p> + <div class="blockquote"> + <blockquote class="blockquote"> + <pre class="screen"><code class= + "computeroutput">configure: WARNING: +*** These auxiliary programs are missing or +*** incompatible versions: msgfmt +*** some features will be disabled. +*** Check the INSTALL file for required versions.</code></pre> + </blockquote> + </div> + <p> + Отсутствующая или несовместимая программа <span class= + "command"><strong>msgfmt</strong></span>, как правило, + безвредна. <span class= + "command"><strong>msgfmt</strong></span> является частью + пакета Gettext, который должен предоставлять + хост-дистрибутив. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Поступали сообщения о том, что этот пакет может не + компилироваться при <span class="quote">«<span class= + "quote">параллельной сборке</span>»</span>. Если это + произойдет, повторно запустите команду make с параметром + <code class="option">-j1</code>. + </p> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <div class="admon warning"> + <h3> + Предупреждение + </h3> + <p> + Если переменная <code class="envar">LFS</code> настроена + неправильно, и, несмотря на рекомендации, вы выполняете + сборку от имени пользователя <code class= + "systemitem">root</code>, следующая команда установит + только что собранный Glibc в вашу хост-систему, что, скорее + всего, сделает её непригодной для использования. Поэтому + дважды проверьте, правильность настройки среды и что вы + вошли в систему не под учетной записью <code class= + "systemitem">root</code>, прежде чем запускать следующую + команду. + </p> + </div> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение опции <span class="command"><strong>make + install</strong></span>:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>DESTDIR=$LFS</code></em></span> + </dt> + <dd> + <p> + Переменная make <code class="envar">DESTDIR</code> + используется почти всеми пакетами для определения места + установки пакета. Если она не задана, по умолчанию для + установки используется корневой каталог (<code class= + "filename">/</code>). Здесь мы указываем, что пакет + должен быть установлен в $LFS, который станет корневым + каталогом в <a class="xref" href="#ch-tools-chroot" + title="7.4. Вход в окружение Chroot">Раздел 7.4, + «Вход в окружение Chroot»</a>. + </p> + </dd> + </dl> + </div> + <p> + Исправьте жестко запрограммированный путь к исполняемому + загрузчику в <span class= + "command"><strong>ldd</strong></span>: + </p> + <pre class="userinput"><kbd class= + "command">sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd</kbd></pre> + <div class="admon caution"> + <h3> + Внимание + </h3> + <p> + На этом этапе необходимо остановиться и убедиться, что + основные функции (компиляция и компоновка) нового + кросс-тулчейна работают должным образом. Чтобы выполнить + проверку работоспособности, выполните следующие команды: + </p> + <pre class="userinput"><kbd class= + "command">echo 'int main(){}' | $LFS_TGT-gcc -xc - +readelf -l a.out | grep ld-linux</kbd></pre> + <p> + Если все работает правильно, ошибок быть не должно и вывод + последней команды будет иметь вид: + </p> + <pre class="screen"><code class= + "computeroutput">[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</code></pre> + <p> + Обратите внимание, что для 32-разрядных машин имя + интерпретатора будет <code class= + "filename">/lib/ld-linux.so.2</code>. + </p> + <p> + Если выходные данные отображаются не так, как указано выше, + или их вообще нет, значит, что-то сделано неправильно. + Разберитесь с проблемой и повторите шаги выше, чтобы + исправить ее. Эта проблема должна быть решена, прежде чем + вы продолжите. + </p> + <p> + Как только все будет хорошо, удалите тестовый файл: + </p> + <pre class="userinput"><kbd class= + "command">rm -v a.out</kbd></pre> + </div> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Сборка пакетов в следующей главе послужит дополнительной + проверкой правильности сборки временного кросс-тулчейна. + Если какой-либо пакет, особенно Binutils или GCC, не + удается собрать, это указывает на то, что что-то пошло не + так с установленными ранее Binutils, GCC, или Glibc. + </p> + </div> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-glibc" title= + "8.5.3. Содержимое пакета Glibc">Раздел 8.5.3, + «Содержимое пакета Glibc.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-libstdcpp" name= + "ch-tools-libstdcpp"></a>5.6. Libstdc++ из GCC-13.2.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Libstdc++ — это стандартная библиотека C++. Она нужна для + компиляции кода C++ (часть GCC написана на C++), когда мы + собирали <a class="xref" href="#ch-tools-gcc-pass1" title= + "5.3. GCC-13.2.0 - Проход 1">GCC-Проход 1</a>, нам пришлось + отложить её установку, потому что она зависит от библиотеки + Glibc, которой еще не было в целевом каталоге. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.2 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">1.1 + GB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 5.6.1. Установка библиотеки Libstdc++ + </h3> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + <span class="application">Libstdc++</span> является частью + исходников GCC. Сначала вы должны распаковать архив GCC и + перейти в каталог <code class="filename">gcc-13.2.0</code>. + </p> + </div> + <p> + Создайте отдельный каталог сборки для libstdc++ и перейдите в + него: + </p> + <pre class="userinput"><kbd class="command">mkdir -v build +cd build</kbd></pre> + <p> + Подготовьте libstdc++ к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">../libstdc++-v3/configure \ + --host=$LFS_TGT \ + --build=$(../config.guess) \ + --prefix=/usr \ + --disable-multilib \ + --disable-nls \ + --disable-libstdcxx-pch \ + --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/13.2.0</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--host=...</code></em></span> + </dt> + <dd> + <p> + Указывает, что должен использоваться кросс-компилятор, + который мы только что собрали, вместо того, который + находится в <code class="filename">/usr/bin</code>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-libstdcxx-pch</code></em></span> + </dt> + <dd> + <p> + Этот аргумент предотвращает установку предварительно + скомпилированных include-файлов, которые на данном + этапе не нужны. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/13.2.0</code></em></span> + </dt> + <dd> + <p> + Указывает каталог установки для include-файлов. + Поскольку libstdc++ является стандартной библиотекой + C++ для LFS, этот каталог должен соответствовать + местоположению, в котором компилятор C++ (<span class= + "command"><strong>$LFS_TGT-g++</strong></span>) будет + искать стандартные включаемые файлы C++. При обычной + сборке эта информация автоматически передается в + Libstdc++ при выполнении <span class= + "command"><strong>configure</strong></span> из каталога + верхнего уровня. В нашем случае эта информация должна + быть указана явно. Компилятор C++ добавит путь sysroot + <code class="filename">$LFS</code> (указанный при + сборке GCC Проход 1) к пути поиска include-файлов, + поэтому фактически он будет искать в <code class= + "filename">$LFS/tools/$LFS_TGT/include/c++/13.2.0</code>. + Комбинация переменной <em class= + "parameter"><code>DESTDIR</code></em> (в приведенной + ниже команде <span class="command"><strong>make + install</strong></span>) и этого аргумента обеспечивает + установку заголовочных файлов туда. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте Libstdc++, выполнив: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите библиотеку: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + <p> + Удалите архивные файлы libtool, поскольку они потенциально + опасны при кросс-компиляции: + </p> + <pre class="userinput"><kbd class= + "command">rm -v $LFS/usr/lib/lib{stdc++{,exp,fs},supc++}.la</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете приведена в <a class= + "xref" href="#contents-gcc" title= + "8.28.2. Содержимое пакета GCC">Раздел 8.28.2, + «Содержимое пакета GCC.»</a> + </p> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="chapter-temporary-tools" name= + "chapter-temporary-tools"></a>Глава 6. Кросс-Компиляция + временных инструментов + </h2> + </div> + </div> + </div> + <div class="chapter" lang="ru" xml:lang="ru"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-introduction-cross" name= + "ch-tools-introduction-cross"></a>6.1. Введение + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + В этой главе рассказывается, как выполнить кросс-компиляцию + базовых утилит с использованием только что собранного + кросс-тулчейна. Эти утилиты установлены в свое конечное + местоположение, но пока не могут быть использованы. Выполняемые + инструкции по-прежнему зависят от инструментария хоста. Тем не + менее, установленные библиотеки используются при компоновке. + </p> + <p> + Использование утилит станет возможным в следующей главе после + входа в среду <span class="quote">«<span class= + "quote">chroot</span>»</span>. Все пакеты из этой главы, должны + быть собраны до того, как мы это сделаем. Поэтому пока наша + система зависима от хост-системы. + </p> + <p> + Еще раз напомним, что неправильная настройка <code class= + "envar">LFS</code> вместе со сборкой от <code class= + "systemitem">root</code> может сделать ваш компьютер + непригодным для использования. Всю эту главу нужно выполнить от + имени пользователя <code class="systemitem">lfs</code>, в его + рабочем окружении, как описано в <a class="xref" href= + "#ch-preps-settingenviron" title= + "4.4. Настройка окружения">Раздел 4.4, «Настройка + окружения»</a>. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-m4" name="ch-tools-m4"></a>6.2. M4-1.4.19 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет M4 содержит макропроцессор. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">31 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.2.1. Установка пакета M4 + </h3> + <p> + Подготовьте пакет M4 к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess)</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-m4" title= + "8.12.2. Содержимое пакета M4">Раздел 8.12.2, + «Содержимое пакета M4.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-ncurses" name="ch-tools-ncurses"></a>6.3. + Ncurses-6.4-20230520 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Ncurses содержит библиотеки для независимой от + терминала обработки ввода/вывода + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.3 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">51 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.3.1. Установка пакета Ncurses + </h3> + <p> + Во-первых, убедитесь, что <span class= + "command"><strong>gawk</strong></span> найден первым во время + настройки: + </p> + <pre class="userinput"><kbd class= + "command">sed -i s/mawk// configure</kbd></pre> + <p> + Затем выполните следующие команды, чтобы собрать программу + <span class="quote">«<span class="quote">tic</span>»</span> + на хосте сборки: + </p> + <pre class="userinput"><kbd class="command">mkdir build +pushd build + ../configure + make -C include + make -C progs tic +popd</kbd></pre> + <p> + Подготовьте Ncurses к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(./config.guess) \ + --mandir=/usr/share/man \ + --with-manpage-format=normal \ + --with-shared \ + --without-normal \ + --with-cxx-shared \ + --without-debug \ + --without-ada \ + --disable-stripping \ + --enable-widec</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение новых параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--with-manpage-format=normal</code></em></span> + </dt> + <dd> + <p> + Этот аргумент предотвращает установку Ncurses сжатых + страниц руководства, это может произойти, если сам + дистрибутив хоста содержит сжатые страницы руководства. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--with-shared</code></em></span> + </dt> + <dd> + <p> + Этот аргумент позволяет Ncurses собирать и + устанавливать разделяемые библиотеки C. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--without-normal</code></em></span> + </dt> + <dd> + <p> + Этот аргумент предотвращает сборку и установку + статических библиотек C. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--without-debug</code></em></span> + </dt> + <dd> + <p> + Этот аргумент предотвращает сборку и установку + отладочных библиотек. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--with-cxx-shared</code></em></span> + </dt> + <dd> + <p> + Это аргумент позволяет Ncurses собирать и устанавливать + общие привязки C++. А также предотвращает сборку и + установку статических привязок C++. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--without-ada</code></em></span> + </dt> + <dd> + <p> + Этот аргумент гарантирует, что Ncurses будет собран без + поддержки компилятора Ada, который может присутствовать + на хосте, но будет недоступен, как только мы войдем в + среду <span class= + "command"><strong>chroot</strong></span>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-stripping</code></em></span> + </dt> + <dd> + <p> + Этот аргумент не позволяет системе сборки использовать + программу <span class= + "command"><strong>strip</strong></span> с хоста. + Использование инструментов хоста в кросс-компилируемой + программе может привести к сбою. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-widec</code></em></span> + </dt> + <dd> + <p> + Этот аргумент указывает, что необходимо скомпилировать + библиотеки расширенных символов (такие как, + <code class="filename">libncursesw.so.6.4-20230520</code>) + вместо обычных (таких как, <code class= + "filename">libncurses.so.6.4-20230520</code>). Эти + библиотеки расширенных символов можно использовать как + в многобайтовой, так и традиционной 8-битной локали, в + то время как обычные библиотеки корректно работают + только в 8-битных локалях. Библиотеки расширенных + символов и обычные совместимы на уровне исходного кода, + но не совместимы в двоичном. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install +ln -sv libncursesw.so $LFS/usr/lib/libncurses.so +sed -e 's/^#if.*XOPEN.*$/#if 1/' \ + -i $LFS/usr/include/curses.h</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров установки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>TIC_PATH=$(pwd)/build/progs/tic</code></em></span> + </dt> + <dd> + <p> + Нам нужно передать путь до только что собранной + программы <span class= + "command"><strong>tic</strong></span>, которая работает + на сборочной машине, чтобы база данных терминала была + создана без ошибок. + </p> + </dd> + <dt> + <span class="term"><span class="command"><strong>ln -sv + libncursesw.so + $LFS/usr/lib/libncurses.so</strong></span></span> + </dt> + <dd> + <p> + Библиотека <code class="filename">libncurses.so</code> + необходима для нескольких пакетов, которые мы скоро + соберем. Мы создаем эту символическую ссылку, чтобы + использовать <code class= + "filename">libncursesw.so</code> в качестве замены. + </p> + </dd> + <dt> + <span class="term"><span class="command"><strong>sed -e + 's/^#if.*XOPEN.*$/#if 1/' ...</strong></span></span> + </dt> + <dd> + <p> + Заголовочный файл <code class= + "filename">curses.h</code> содержит определения + различных структур данных Ncurses. С разными + определениями макросов препроцессора могут + использоваться два разных набора определений структуры + данных: 8-битное определение совместимо с <code class= + "filename">libncurses.so</code>, а определение + расширенного набора символов совместимо с <code class= + "filename">libncursesw.so</code> . Поскольку мы + используем <code class="filename">libncursesw.so</code> + вместо <code class="filename">libncurses.so</code>, + отредактируйте заголовочный файл, чтобы он всегда + использовал определение структуры данных расширенного + набора символов, совместимое с <code class="filename">. + libncursesw.so</code>. + </p> + </dd> + </dl> + </div> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-ncurses" title= + "8.29.2. Содержимое пакета Ncurses">Раздел 8.29.2, + «Содержимое пакета Ncurses.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-bash" name="ch-tools-bash"></a>6.4. + Bash-5.2.21 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Bash содержит Bourne-Again Shell. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.2 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">67 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.4.1. Установка пакета Bash + </h3> + <p> + Подготовьте Bash к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --build=$(sh support/config.guess) \ + --host=$LFS_TGT \ + --without-bash-malloc</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--without-bash-malloc</code></em></span> + </dt> + <dd> + <p> + Этот параметр отключает использование функции + распределения памяти (<code class= + "function">malloc</code>) Bash, которая, как известно, + вызывает ошибки сегментации. Если опция отключена, Bash + будет использовать функции <code class= + "function">malloc</code> из Glibc, которые более + стабильны. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + <p> + Создайте символическую ссылку для программ, которые + используют <span class="command"><strong>sh</strong></span> + как оболочку: + </p> + <pre class="userinput"><kbd class= + "command">ln -sv bash $LFS/bin/sh</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-bash" title= + "8.35.2. Содержимое пакета Bash">Раздел 8.35.2, + «Содержимое пакета Bash.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-coreutils" name= + "ch-tools-coreutils"></a>6.5. Coreutils-9.4 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Coreutils содержит основные утилиты, необходимые каждой + операционной системе. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.3 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">173 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.5.1. Установка пакета Coreutils + </h3> + <p> + Подготовьте Coreutils к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) \ + --enable-install-program=hostname \ + --enable-no-install-program=kill,uptime</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><code class= + "envar">--enable-install-program=hostname</code></span> + </dt> + <dd> + <p> + Этот параметр позволяет создать и установить двоичный + файл <span class= + "command"><strong>hostname</strong></span> – по + умолчанию он отключен, но требуется для набора тестов + Perl. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + <p> + Переместите программы в их конечное местоположение. Хотя во + временной среде в этом нет необходимости, мы должны это + сделать, потому что некоторые программы жестко прописывают + местоположение исполняемых файлов: + </p> + <pre class="userinput"><kbd class= + "command">mv -v $LFS/usr/bin/chroot $LFS/usr/sbin +mkdir -pv $LFS/usr/share/man/man8 +mv -v $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8 +sed -i 's/"1"/"8"/' $LFS/usr/share/man/man8/chroot.8</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-coreutils" title= + "8.57.2. Содержимое пакета Coreutils">Раздел 8.57.2, + «Содержимое пакета Coreutils.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-diffutils" name= + "ch-tools-diffutils"></a>6.6. Diffutils-3.10 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Diffutils содержит программы, которые показывают + различия между файлами или каталогами. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">29 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.6.1. Установка пакета Diffutils + </h3> + <p> + Подготовьте Diffutils для компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(./build-aux/config.guess)</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-diffutils" title= + "8.59.2. Содержимое пакета Diffutils">Раздел 8.59.2, + «Содержимое пакета Diffutils.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-file" name="ch-tools-file"></a>6.7. + File-5.45 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет File содержит утилиту для определения типа указанного + файла или файлов + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">37 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.7.1. Установка пакета File + </h3> + <p> + Команда <span class="command"><strong>file</strong></span> на + хосте сборки должна быть той же версии, что и собираемая, + чтобы создать файл подписи. Выполните следующие команды, + чтобы создать временную копию команды <span class= + "command"><strong>file</strong></span>. + </p> + <pre class="userinput"><kbd class="command">mkdir build +pushd build + ../configure --disable-bzlib \ + --disable-libseccomp \ + --disable-xzlib \ + --disable-zlib + make +popd</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение новой опции настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-*</code></em></span> + </dt> + <dd> + <p> + Сценарий конфигурации пытается использовать некоторые + пакеты из основного дистрибутива, если существуют + соответствующие файлы библиотек. Это может привести к + сбою компиляции, если файлы библиотек существует, но + отсутствуют соответствующие заголовочные файлы. Эти + параметры предотвращают использование ненужных + возможностей хоста. + </p> + </dd> + </dl> + </div> + <p> + Подготовьте файл для компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr --host=$LFS_TGT --build=$(./config.guess)</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class= + "command">make FILE_COMPILE=$(pwd)/build/src/file</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + <p> + Удалите архивный файл libtool, поскольку он потенциально + опасен при кросс-компиляции: + </p> + <pre class="userinput"><kbd class= + "command">rm -v $LFS/usr/lib/libmagic.la</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-file" title= + "8.10.2. Содержимое пакета File">Раздел 8.10.2, + «Содержимое пакета File.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-findutils" name= + "ch-tools-findutils"></a>6.8. Findutils-4.9.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Findutils содержит программы для поиска файлов. Эти + программы предназначены для поиска по всем файлам в дереве + каталогов, а также для создания, обслуживания и поиска в базе + данных (часто быстрее, чем рекурсивный поиск, но ненадежно, + если база данных давно не обновлялась).Findutils также + предоставляет программу <span class= + "command"><strong>xargs</strong></span>, которую можно + использовать для запуска указанной команды для каждого файла, + выбранного при поиске. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">42 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.8.1. Установка пакета Findutils + </h3> + <p> + Подготовьте Findutils к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --localstatedir=/var/lib/locate \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess)</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-findutils" title= + "8.61.2. Содержимое пакета Findutils">Раздел 8.61.2, + «Содержимое пакета Findutils.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-gawk" name="ch-tools-gawk"></a>6.9. + Gawk-5.3.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Gawk содержит программы для работы с текстовыми + файлами. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">47 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.9.1. Установка пакета Gawk + </h3> + <p> + Во-первых, убедитесь, что некоторые ненужные файлы не будут + установлены: + </p> + <pre class="userinput"><kbd class= + "command">sed -i 's/extras//' Makefile.in</kbd></pre> + <p> + Подготовьте Gawk к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess)</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-gawk" title= + "8.60.2. Содержимое пакета Gawk">Раздел 8.60.2, + «Содержимое пакета Gawk.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-grep" name="ch-tools-grep"></a>6.10. + Grep-3.11 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Grep содержит программы для поиска по содержимому + файлов. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">27 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.10.1. Установка пакета Grep + </h3> + <p> + Подготовьте Grep к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(./build-aux/config.guess)</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-grep" title= + "8.34.2. Содержимое пакета Grep">Раздел 8.34.2, + «Содержимое пакета Grep.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-gzip" name="ch-tools-gzip"></a>6.11. + Gzip-1.13 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Gzip содержит программы для сжатия и распаковки файлов. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">11 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.11.1. Установка пакета Gzip + </h3> + <p> + Подготовьте Gzip к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr --host=$LFS_TGT</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-gzip" title= + "8.64.2. Содержимое пакета Gzip">Раздел 8.64.2, + «Содержимое пакета Gzip.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-make" name="ch-tools-make"></a>6.12. + Make-4.4.1 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Make содержит программу, управляющую генерацией + исполняемых и других файлов, из исходного кода. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">15 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.12.1. Установка пакета Make + </h3> + <p> + Подготовьте Make к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --without-guile \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess)</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение новой опции настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--without-guile</code></em></span> + </dt> + <dd> + <p> + Несмотря на то, что мы выполняем кросс-компиляцию, + configure пытается использовать guile с узла сборки, + если он его находит. Это приводит к сбою компиляции, + этот аргумент предотвращает его использование. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-make" title= + "8.68.2. Содержимое пакета Make">Раздел 8.68.2, + «Содержимое пакета Make.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-patch" name="ch-tools-patch"></a>6.13. + Patch-2.7.6 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Patch содержит программу для изменения или создания + файлов путём наложение <span class="quote">«<span class= + "quote">патча</span>»</span>, обычно, создаваемого программой + <span class="command"><strong>diff</strong></span>. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">12 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.13.1. Установка пакета Patch + </h3> + <p> + Подготовьте Patch к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess)</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-patch" title= + "8.69.2. Содержимое пакета Patch">Раздел 8.69.2, + «Содержимое пакета Patch.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-sed" name="ch-tools-sed"></a>6.14. Sed-4.9 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Sed содержит потоковый редактор текста + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">21 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.14.1. Установка пакета Sed + </h3> + <p> + Подготовьте Sed к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(./build-aux/config.guess)</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-sed" title= + "8.30.2. Содержимое пакета Sed">Раздел 8.30.2, + «Содержимое пакета Sed.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-tar" name="ch-tools-tar"></a>6.15. Tar-1.35 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Tar предоставляет возможность создавать tar архивы, а + также производить с ними различные манипуляции. Tar может + распаковать предварительно созданный архив, добавить или + обновить файлы в нём, вернуть список файлов в архиве. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">42 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.15.1. Установка пакета Tar + </h3> + <p> + Подготовьте Tar к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess)</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-tar" title= + "8.70.2. Содержимое пакета Tar">Раздел 8.70.2, + «Содержимое пакета Tar.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-xz" name="ch-tools-xz"></a>6.16. Xz-5.4.6 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Xz содержит программы для сжатия и распаковки файлов. + Он предоставляет возможности для lzma и более новых форматов + сжатия xz. Сжатие текстовых файлов с помощью <span class= + "command"><strong>xz</strong></span> дает лучший процент + сжатия, чем с традиционные <span class= + "command"><strong>gzip</strong></span> или <span class= + "command"><strong>bzip2</strong></span>. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">22 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.16.1. Установка пакета Xz + </h3> + <p> + Подготовьте Xz к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --host=$LFS_TGT \ + --build=$(build-aux/config.guess) \ + --disable-static \ + --docdir=/usr/share/doc/xz-5.4.6</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + <p> + Удалите архивный файл libtool, поскольку он потенциально + опасен при кросс-компиляции: + </p> + <pre class="userinput"><kbd class= + "command">rm -v $LFS/usr/lib/liblzma.la</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-xz" title= + "8.8.2. Содержимое пакета Xz">Раздел 8.8.2, «Содержимое + пакета Xz.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-binutils-pass2" name= + "ch-tools-binutils-pass2"></a>6.17. Binutils-2.42 - Проход + 2 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Binutils содержит компоновщик, ассемблер и другие + инструменты для работы с объектными файлами. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.5 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">537 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.17.1. Установка пакета Binutils + </h3> + <p> + Система сборки Binutils использует содержащуюся в пакете + копию libtool для линковки с внутренними статическими + библиотеками, но копии libiberty и zlib, поставляемые с + пакетом, не используют libtool. Это несоответствие может + привести к тому, что созданные двоичные файлы будут ошибочно + связаны с библиотеками из основного дистрибутива. Решение + этой проблемы: + </p> + <pre class="userinput"><kbd class= + "command">sed '6009s/$add_dir//' -i ltmain.sh</kbd></pre> + <p> + Создайте отдельный каталог для сборки: + </p> + <pre class="userinput"><kbd class="command">mkdir -v build +cd build</kbd></pre> + <p> + Подготовьте Binutils к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">../configure \ + --prefix=/usr \ + --build=$(../config.guess) \ + --host=$LFS_TGT \ + --disable-nls \ + --enable-shared \ + --enable-gprofng=no \ + --disable-werror \ + --enable-64-bit-bfd \ + --enable-default-hash-style=gnu</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение новых параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-shared</code></em></span> + </dt> + <dd> + <p> + Собирает <code class="filename">libbfd</code> как + разделяемую библиотеку + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-64-bit-bfd</code></em></span> + </dt> + <dd> + <p> + Включает 64-разрядную поддержку (на хостах с меньшим + размером слова). В 64-разрядных системах это может и не + понадобиться, но вреда от этого не будет + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + <p> + Удалите архивные файлы libtool, поскольку они потенциально + опасны при кросс-компиляции, также удалите ненужные + статические библиотеки + </p> + <pre class="userinput"><kbd class= + "command">rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la}</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-binutils" title= + "8.19.2. Содержимое пакета Binutils">Раздел 8.19.2, + «Содержимое пакета Binutils.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-gcc-pass2" name= + "ch-tools-gcc-pass2"></a>6.18. GCC-13.2.0 - Проход 2 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет GCC содержит коллекцию компиляторов GNU, которая + включает компиляторы C и C++. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">4.4 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">4.8 + GB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 6.18.1. Установка пакета GCC + </h3> + <p> + Как и при первой сборке GCC, требуются пакеты GMP, MPFR и + MPC. Распакуйте архивы и переименуйте каталоги: + </p> + <pre class="userinput"><kbd class= + "command">tar -xf ../mpfr-4.2.1.tar.xz +mv -v mpfr-4.2.1 mpfr +tar -xf ../gmp-6.3.0.tar.xz +mv -v gmp-6.3.0 gmp +tar -xf ../mpc-1.3.1.tar.gz +mv -v mpc-1.3.1 mpc</kbd></pre> + <p> + При сборке на x86_64 измените имя каталога по умолчанию для + 64-разрядных библиотек на <span class="quote">«<span class= + "quote">lib</span>»</span>: + </p> + <pre class="userinput"><kbd class="command">case $(uname -m) in + x86_64) + sed -e '/m64=/s/lib64/lib/' \ + -i.orig gcc/config/i386/t-linux64 + ;; +esac</kbd></pre> + <p> + Переопределите правила сборки заголовочных файлов libgcc и + libstdc++, чтобы разрешить создание этих библиотек с + поддержкой потоков POSIX: + </p> + <pre class="userinput"><kbd class= + "command">sed '/thread_header =/s/@.*@/gthr-posix.h/' \ + -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in</kbd></pre> + <p> + Снова создайте отдельный каталог сборки: + </p> + <pre class="userinput"><kbd class="command">mkdir -v build +cd build</kbd></pre> + <p> + Перед началом сборки GCC не забудьте отключить все переменные + среды, которые переопределяют флаги оптимизации по умолчанию. + </p> + <p> + Теперь подготовьте GCC к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">../configure \ + --build=$(../config.guess) \ + --host=$LFS_TGT \ + --target=$LFS_TGT \ + LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc \ + --prefix=/usr \ + --with-build-sysroot=$LFS \ + --enable-default-pie \ + --enable-default-ssp \ + --disable-nls \ + --disable-multilib \ + --disable-libatomic \ + --disable-libgomp \ + --disable-libquadmath \ + --disable-libsanitizer \ + --disable-libssp \ + --disable-libvtv \ + --enable-languages=c,c++</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение новых параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--with-build-sysroot=$LFS</code></em></span> + </dt> + <dd> + <p> + Обычно, использование <em class= + "parameter"><code>--host</code></em> гарантирует, что + для сборки GCC используется кросс-компилятор, и этот + компилятор знает, что он должен искать заголовочные + файлы и библиотеки в <code class= + "filename">$LFS</code>. Но сборочная система GCC + использует другие инструменты, которые не знают об этом + местоположении. Этот параметр необходим для того, чтобы + они могли найти нужные файлы в <code class= + "filename">$LFS</code>, а не на хосте. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--target=$LFS_TGT</code></em></span> + </dt> + <dd> + <p> + Поскольку мы выполняем кросс-компиляцию GCC, невозможно + создать целевые библиотеки (<code class= + "filename">libgcc</code> и <code class= + "filename">libstdc++</code>) с ранее скомпилированными + двоичными файлами GCC, потому что эти двоичные файлы не + будут работать на хост-дистрибутиве. Система сборки GCC + по умолчанию попытается использовать компиляторы C и + C++ хоста в качестве обходного пути. Сейчас не + поддерживается создание целевых библиотек GCC с помощью + другой версии GCC, поэтому использование компиляторов + хоста может привести к сбою сборки. Этот параметр + гарантирует сборку библиотек с помощью GCC собранного + на первом проходе. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>LDFLAGS_FOR_TARGET=...</code></em></span> + </dt> + <dd> + <p> + Разрешить <code class="filename">libstdc++</code> + использовать общую библиотеку <code class= + "filename">libgcc</code>, собранную на этом этапе, + вместо статической версии, собранной в GCC Проход 1. + Это необходимо для поддержки обработки исключений C++ + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-libsanitizer</code></em></span> + </dt> + <dd> + <p> + Отключает библиотеки среды выполнения GCC sanitizer. + Они не нужны для временного набора инструментов. Этот + параметр необходим для сборки GCC без установки + <code class="systemitem">libcrypt</code> для целевого + объекта. В <a class="xref" href="#ch-tools-gcc-pass1" + title="5.3. GCC-13.2.0 - Проход 1">GCC-Проход 1</a> это + решалось с помощью параметра <em class= + "parameter"><code>--disable-libstdcxx</code></em>, но + теперь мы должны передать его явно. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$LFS install</kbd></pre> + <p> + В качестве завершающего штриха создайте символическую ссылку + на утилиту. Многие программы и скрипты используют + <span class="command"><strong>cc</strong></span> вместо + <span class="command"><strong>gcc</strong></span>, чтобы + сделать программы более универсальными и, следовательно, для + совместимости со всеми типами UNIX-систем, где компилятор GNU + C не всегда установлен. Наличие <span class= + "command"><strong>cc</strong></span> оставляет системному + администратору право самостоятельно решать, какой компилятор + C устанавливать: + </p> + <pre class="userinput"><kbd class= + "command">ln -sv gcc $LFS/usr/bin/cc</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-gcc" title= + "8.28.2. Содержимое пакета GCC">Раздел 8.28.2, + «Содержимое пакета GCC.»</a> + </p> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="chapter-chroot-temporary-tools" name= + "chapter-chroot-temporary-tools"></a>Глава 7. Вход в + окружение Chroot и создание дополнительных временных + инструментов + </h2> + </div> + </div> + </div> + <div class="chapter" lang="ru" xml:lang="ru"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-introduction-chroot" name= + "ch-tools-introduction-chroot"></a>7.1. Введение + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + В этой главе рассказывается, как собрать последние недостающие + части временной системы: инструменты, необходимые для сборки + различных пакетов. Теперь, когда все циклические зависимости + устранены, для сборки можно использовать среду <span class= + "quote">«<span class="quote">chroot</span>»</span>, полностью + изолированную от операционной системы хоста (за исключением + работающего ядра). + </p> + <p> + Для правильной работы изолированной среды необходимо установить + связь с работающим ядром. Это делается с помощью так называемых + <span class="emphasis"><em>виртуальных файловых систем + ядра</em></span>, которые будут смонтированы перед входом в + среду chroot. Вы можете проверить, смонтированы ли они, + выполнив команду <span class= + "command"><strong>findmnt</strong></span>. + </p> + <p> + До <a class="xref" href="#ch-tools-chroot" title= + "7.4. Вход в окружение Chroot">Раздел 7.4, «Вход в + окружение Chroot»</a> команды должны выполняться от имени + <code class="systemitem">root</code> с установленной переменной + <code class="envar">LFS</code>. После входа в chroot все + команды выполняются от имени <code class= + "systemitem">root</code>, к счастью, без доступа к операционной + системе компьютера, на котором вы собираете LFS. В любом случае + будьте осторожны, так как неверными командами легко разрушить + всю систему LFS. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-changingowner" name= + "ch-tools-changingowner"></a>7.2. Смена владельца + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Команды, приведенные в оставшейся части книги, должны + выполняться от имени пользователя <code class= + "systemitem">root</code>, а не <code class= + "systemitem">lfs</code>. Дважды проверьте, что переменная + <code class="envar">$LFS</code> установлена в переменных + окружения пользователя <code class="systemitem">root</code>. + </p> + </div> + <p> + В настоящее время вся иерархия каталогов в <code class= + "filename">$LFS</code> принадлежит пользователю <code class= + "systemitem">lfs</code>, существующему только на хост-системе. + Если права на файлы и каталоги внутри <code class= + "filename">$LFS</code> оставить как есть, то они будут + принадлежать ID пользователя без существующей учетной записи. + Это опасно, так как созданная позже учетная запись, может + получить такой же ID пользователя и стать владельцем всех + файлов в <code class="filename">$LFS</code>, тем самым делая + эти файлы уязвимыми для возможных злонамеренных манипуляций. + </p> + <p> + Для решения проблемы измените владельца каталогов <code class= + "filename">$LFS/*</code> на пользователя <code class= + "systemitem">root</code>, выполнив следующую команду: + </p> + <pre class="userinput"><kbd class= + "command">chown -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools} +case $(uname -m) in + x86_64) chown -R root:root $LFS/lib64 ;; +esac</kbd></pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-kernfs" name="ch-tools-kernfs"></a>7.3. + Подготовка виртуальных файловых систем ядра + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Приложения, работающие в пользовательском пространстве, + используют различные файловые системы, созданные ядром, для + взаимодействия с самим ядром. Эти файловые системы являются + виртуальными: для них не используется дисковое пространство. + Содержимое файловых систем находится в памяти. Эти файловые + системы должны быть смонтированы в дереве каталогов $LFS, чтобы + приложения могли найти их в среде <span class= + "command"><strong>chroot</strong></span>. + </p> + <p> + Начните с создания каталогов, в которые будут смонтированы эти + виртуальные файловые системы: + </p> + <pre class="userinput"><kbd class= + "command">mkdir -pv $LFS/{dev,proc,sys,run}</kbd></pre> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="ch-tools-bindmount" name= + "ch-tools-bindmount"></a>7.3.1. Монтирование и заполнение + /dev + </h3> + <p> + Во время обычной загрузки ядро автоматически монтирует + файловую систему <code class="systemitem">devtmpfs</code> в + каталог <code class="filename">/dev</code>; ядро создает узлы + устройств в этой виртуальной файловой системе в процессе + загрузки или при первом обнаружении устройства, или доступе к + нему. Демон udev может изменять владельца или разрешения + узлов устройств, созданных ядром, или создавать новые узлы + устройств или символические ссылки, чтобы облегчить работу + разработчиков дистрибутива или системных администраторов. + (Подробности смотрите в <a class="xref" href= + "#ch-config-udev-device-node-creation" title= + "9.3.2.2. Создание узла устройства">Раздел 9.3.2.2, + «Создание узла устройства»</a>.) Если ядро хоста поддерживает + <code class="systemitem">devtmpfs</code>, мы можем просто + смонтировать <code class="systemitem">devtmpfs</code> в + <code class="filename">$LFS/dev</code> и положиться на ядро + для его заполнения. + </p> + <p> + Но в некоторых ядрах хоста отсутствует поддержка <code class= + "systemitem">devtmpfs</code>, эти хост-дистрибутивы + используют разные методы для создания содержимого + <code class="filename">/dev</code>. Таким образом, + единственный независимый от хоста способ заполнить каталог + <code class="filename">$LFS/dev</code> - это привязка к + каталогу <code class="filename">/dev</code> хост-системы. + Связное монтирование - это особый тип монтирования, который + делает дерево каталога или файл видимым в каком-либо другом + месте. Для этого используйте следующую команду: + </p> + <pre class="userinput"><kbd class= + "command">mount -v --bind /dev $LFS/dev</kbd></pre> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="ch-tools-kernfsmount" name= + "ch-tools-kernfsmount"></a>7.3.2. Монтирование виртуальных + файловых систем ядра + </h3> + <p> + Теперь смонтируйте оставшиеся виртуальные файловые системы: + </p> + <pre class="userinput"><kbd class= + "command">mount -vt devpts devpts -o gid=5,mode=0620 $LFS/dev/pts +mount -vt proc proc $LFS/proc +mount -vt sysfs sysfs $LFS/sys +mount -vt tmpfs tmpfs $LFS/run</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров монтирования для + devpts:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>gid=5</code></em></span> + </dt> + <dd> + <p> + Этот параметр гарантирует, что все узлы устройств, + созданные devpts, принадлежат группе с идентификатором + 5. Это идентификатор, который мы будем использовать + позже для группы <code class="systemitem">tty</code>. + Мы используем идентификатор группы вместо имени, + поскольку хост-система может использовать другой + идентификатор для своей группы <code class= + "systemitem">tty</code>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>mode=0620</code></em></span> + </dt> + <dd> + <p> + Этот параметр гарантирует, что все узлы устройств, + созданные devpts, будут иметь права 0620 (доступен для + чтения и записи пользователем, доступен для записи + группе). Вместе с вышеуказанной опцией это гарантирует, + что devpts создаст узлы устройств, соответствующие + требованиям grantpt(), а это означает, что + вспомогательный файл Glibc <span class= + "command"><strong>pt_chown</strong></span> (который не + установлен по умолчанию) не требуется. + </p> + </dd> + </dl> + </div> + <p> + В некоторых хост-системах <code class= + "filename">/dev/shm</code> является символической ссылкой на + каталог <code class="filename">/run/shm</code>. /run tmpfs + был смонтирован выше, поэтому сейчас необходимо только + создать каталог с правильными разрешениями. + </p> + <p> + В других хост-системах <code class="filename">/dev/shm</code> + является точкой монтирования для tmpfs. В этом случае + монтирование /dev приведет только к созданию /dev/shm как + каталога в среде chroot. В этой ситуации мы должны явно + смонтировать tmpfs: + </p> + <pre class="userinput"><kbd class= + "command">if [ -h $LFS/dev/shm ]; then + install -v -d -m 1777 $LFS$(realpath /dev/shm) +else + mount -vt tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm +fi</kbd></pre> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-chroot" name="ch-tools-chroot"></a>7.4. + Вход в окружение Chroot + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Теперь, когда все пакеты, необходимые для сборки остальных + инструментов установлены в системе, пришло время войти в + окружение chroot и завершить установку временных инструментов. + Эта среда также будет использоваться для установки конечной + системы. От имени пользователя <code class= + "systemitem">root</code> выполните следующую команду для входа + в chroot, в которой на данный момент нет ничего, кроме + временных инструментов: + </p> + <pre class="userinput"><kbd class= + "command">chroot "$LFS" /usr/bin/env -i \ + HOME=/root \ + TERM="$TERM" \ + PS1='(lfs chroot) \u:\w\$ ' \ + PATH=/usr/bin:/usr/sbin \ + MAKEFLAGS="-j<em class="replaceable"><code>$(nproc)</code></em>" \ + TESTSUITEFLAGS="-j<em class="replaceable"><code>$(nproc)</code></em>" \ + /bin/bash --login</kbd></pre> + <p> + Если вы не хотите использовать все доступные логические ядра, + замените параметр <em class= + "replaceable"><code>$(nproc)</code></em> количеством логических + ядер, которые вы хотите использовать для сборки пакетов в этой + и последующих главах. На наборы тестов некоторых пакетов (в + частности Autoconf, Libtool и Tar) в <a class="xref" href= + "#chapter-building-system" title= + "Глава 8. Установка базового системного программного обеспечения"> + Глава 8</a> не влияет установка переменной <code class= + "envar">MAKEFLAGS</code>, вместо этого они используют + переменную среды <code class="envar">TESTSUITEFLAGS</code>. Мы + также установили её здесь для запуска тестов с поддержкой + нескольких ядер. + </p> + <p> + Параметр <em class="parameter"><code>-i</code></em> команды + <span class="command"><strong>env</strong></span>, очистит все + переменные в среде chroot. После этого переменные <code class= + "envar">HOME</code>, <code class="envar">TERM</code>, + <code class="envar">PS1</code> и <code class= + "envar">PATH</code> будут установлены заново. Конструкция + <em class="parameter"><code>TERM=$TERM</code></em> установит + переменную TERM внутри chroot в то же значение, что и вне + chroot. Эта переменная необходима для корректной работы таких + программ как <span class="command"><strong>vim</strong></span> + и <span class="command"><strong>less</strong></span>. Если + понадобятся другие переменные окружения, такие как <code class= + "envar">CFLAGS</code> или <code class="envar">CXXFLAGS</code>, + то это подходящее место для их установки. + </p> + <p> + С этого момента больше нет необходимости использовать + переменную <code class="envar">LFS</code>, поскольку вся работа + будет ограничена файловой системой LFS; команда <span class= + "command"><strong>chroot</strong></span> запускает оболочку + Bash с корневым каталогом (<code class="filename">/</code>), + установленным в <code class="filename">$LFS</code>. + </p> + <p> + Обратите внимание, что каталог <code class= + "filename">/tools/bin</code> не указан в переменной окружения + <code class="envar">PATH</code>. Это означает, что + кросс-тулчейн больше не будет использоваться. + </p> + <p> + Также обратите внимание, что в командной строке <span class= + "command"><strong>bash</strong></span> будет указано + <code class="computeroutput">I have no name!</code>. Это + нормально, поскольку файл <code class= + "filename">/etc/passwd</code> еще не создан. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Важно, чтобы все команды в оставшейся части этой главы и + следующих главах выполнялись из среды chroot. Если вы + покидаете эту среду по какой-либо причине (например, при + перезагрузке), убедитесь, что файловые системы виртуального + ядра смонтированы, как описано в <a class="xref" href= + "#ch-tools-bindmount" title= + "7.3.1. Монтирование и заполнение /dev">Раздел 7.3.1, + «Монтирование и заполнение /dev»</a> и <a class="xref" href= + "#ch-tools-kernfsmount" title= + "7.3.2. Монтирование виртуальных файловых систем ядра">Раздел 7.3.2, + «Монтирование виртуальных файловых систем ядра»</a>, а затем + войдите в среду chroot для продолжения установки. + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-creatingdirs" name= + "ch-tools-creatingdirs"></a>7.5. Создание каталогов + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Пришло время создать полную структуру каталогов в файловой + системе LFS. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Некоторые из каталогов, упомянутых в этом разделе, возможно, + уже были созданы ранее с помощью явных инструкций или при + установке некоторых пакетов. Они повторяются ниже для полноты + картины. + </p> + </div> + <p> + Создайте несколько каталогов, которые не входили в ограниченный + набор, используемый в предыдущих главах, выполнив следующую + команду: + </p> + <pre class="userinput"><kbd class= + "command">mkdir -pv /{boot,home,mnt,opt,srv}</kbd></pre> + <p> + Создайте необходимые подкаталоги, выполнив следующие команды: + </p> + <pre class="userinput"><kbd class= + "command">mkdir -pv /etc/{opt,sysconfig} +mkdir -pv /lib/firmware +mkdir -pv /media/{floppy,cdrom} +mkdir -pv /usr/{,local/}{include,src} +mkdir -pv /usr/local/{bin,lib,sbin} +mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man} +mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo} +mkdir -pv /usr/{,local/}share/man/man{1..8} +mkdir -pv /var/{cache,local,log,mail,opt,spool} +mkdir -pv /var/lib/{color,misc,locate} + +ln -sfv /run /var/run +ln -sfv /run/lock /var/lock + +install -dv -m 0750 /root +install -dv -m 1777 /tmp /var/tmp</kbd></pre> + <p> + По умолчанию каталоги создаются с правами 755, но это + нежелательно делать для всех каталогов. В приведенных выше + командах вносятся два изменения — одно в домашний каталог + пользователя <code class="systemitem">root</code>, а другое в + каталоги для временных файлов. + </p> + <p> + Первое изменение гарантирует, что никто не сможет войти в + каталог <code class="filename">/root</code> — точно так же, как + обычный пользователь сделал бы это со своим собственным + домашним каталогом. Второе изменение гарантирует, что любой + пользователь может писать в каталоги <code class= + "filename">/tmp</code> и <code class= + "filename">/var/tmp</code>, но не может удалять из них файлы + другого пользователя. Последнее запрещено так называемым + <span class="quote">«<span class="quote">sticky bit (липким + битом)</span>»</span>, старшим битом (1) в битовой маске 1777 + </p> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 7.5.1. Примечание о соответствии требованиям FHS + </h3> + <p> + Это дерево каталогов основано на стандарте иерархии файловой + системы (FHS) (доступен по адресу <a class="ulink" href= + "https://refspecs.linuxfoundation.org/fhs.shtml">https://refspecs.linuxfoundation.org/fhs.shtml</a>). + FHS также указывает, что наличие некоторых каталогов + необязательно, например, <code class= + "filename">/usr/local/games</code> и <code class= + "filename">/usr/share/games</code>. В LFS мы создаем только + те каталоги, которые действительно необходимы. Однако, не + стесняйтесь создавать дополнительные каталоги, если хотите. + </p> + <div class="admon warning"> + <h3> + Предупреждение + </h3> + <p> + FHS не требует наличия каталога <code class= + "filename">/usr/lib64</code>, и редакторы LFS решили его не + использовать. Чтобы инструкции в LFS и BLFS работали + корректно, крайне важно, чтобы этот каталог не существовал. + Время от времени вам следует проверять, что он не + существует, потому что его легко создать непреднамеренно, и + это, вероятно, приведет к поломке вашей системы. + </p> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-createfiles" name= + "ch-tools-createfiles"></a>7.6. Создание основных файлов и + символических ссылок + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Исторически сложилось, что Linux хранит список примонтированных + файловых систем в файле <code class= + "filename">/etc/mtab</code>. Современные ядра хранят этот + список внутри себя и предоставляют его пользователю через + файловую систему <code class="filename">/proc</code>. Чтобы + удовлетворять требованиям утилит, которые ожидают наличия + <code class="filename">/etc/mtab</code>, создайте следующую + символическую ссылку: + </p> + <pre class="userinput"><kbd class= + "command">ln -sv /proc/self/mounts /etc/mtab</kbd></pre> + <p> + Создайте файл <code class="filename">/etc/hosts</code>, на + который будут ссылаться некоторые наборы тестов, а также один + из файлов конфигурации Perl: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/hosts << EOF +<code class="literal">127.0.0.1 localhost $(hostname) +::1 localhost</code> +EOF</kbd></pre> + <p> + Чтобы пользователь <code class="systemitem">root</code> мог + войти в систему и распознавался системой, в файлах <code class= + "filename">/etc/passwd</code> и <code class= + "filename">/etc/group</code> должны быть соответствующие + записи. + </p> + <p> + Создайте файл <code class="filename">/etc/passwd</code> + выполнив следующую команду: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/passwd << "EOF" +<code class="literal">root:x:0:0:root:/root:/bin/bash +bin:x:1:1:bin:/dev/null:/usr/bin/false +daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false +messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false +uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false +nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false</code> +EOF</kbd></pre> + <p> + Пароль пользователя <code class="systemitem">root</code> будет + задан позднее. + </p> + <p> + Создайте файл <code class="filename">/etc/group</code>, + выполнив следующую команду: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/group << "EOF" +<code class="literal">root:x:0: +bin:x:1:daemon +sys:x:2: +kmem:x:3: +tape:x:4: +tty:x:5: +daemon:x:6: +floppy:x:7: +disk:x:8: +lp:x:9: +dialout:x:10: +audio:x:11: +video:x:12: +utmp:x:13: +cdrom:x:15: +adm:x:16: +messagebus:x:18: +input:x:24: +mail:x:34: +kvm:x:61: +uuidd:x:80: +wheel:x:97: +users:x:999: +nogroup:x:65534:</code> +EOF</kbd></pre> + <p> + Созданные группы не являются частью какого-либо стандарта — это + группы, определяемые частично требованиями конфигурации Udev в + главе 9, а частично общими соглашениями, используемыми в ряде + существующих дистрибутивов Linux. Кроме того, некоторые наборы + тестов зависят от конкретных пользователей или групп. + Спецификация LSB (доступна по адресу <a class="ulink" href= + "https://refspecs.linuxfoundation.org/lsb.shtml">https://refspecs.linuxfoundation.org/lsb.shtml</a>) + рекомендует, чтобы, помимо группы <code class= + "systemitem">root</code> с идентификатор (GID) 0 присутствовала + группа <code class="systemitem">bin</code> с GID 1. GID 5 + широко используется для группы <code class= + "systemitem">tty</code>, число 5 также используется в + <span class="phrase"><code class= + "filename">/etc/fstab</code></span> для файловой системы + <code class="systemitem">devpts</code>. Все остальные имена + групп и GID могут свободно выбираться системным + администратором, так как хорошо написанные программы не зависят + от номеров GID, а чаще используют название группы. + </p> + <p> + Идентификатор 65534 используется ядром для NFS и отдельных + пользовательских пространств имен для несопоставленных + пользователей и групп (они существуют на сервере NFS или + родительском пространстве имен пользователя, но <span class= + "quote">«<span class="quote">не существует</span>»</span> на + локальном компьютере или в отдельном пространстве имен). Мы + присваиваем <code class="systemitem">nobody</code> и + <code class="systemitem">nogroup</code> для того, чтобы + избежать несопоставленных идентификаторов. Другие дистрибутивы + могут обрабатывать этот идентификатор по-разному, поэтому любая + переносимая программа не должна зависеть от этого присвоения. + </p> + <p> + Для некоторых тестов в <a class="xref" href= + "#chapter-building-system" title= + "Глава 8. Установка базового системного программного обеспечения"> + Глава 8</a> требуется обычный пользователь. Добавим такого + пользователя здесь и удалим эту учетную запись в конце главы. + </p> + <pre class="userinput"><kbd class= + "command">echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd +echo "tester:x:101:" >> /etc/group +install -o tester -d /home/tester</kbd></pre> + <p> + Чтобы удалить приглашение <span class="quote">«<span class= + "quote">I have no name!</span>»</span>, запустите новую + оболочку. Поскольку файлы <code class= + "filename">/etc/passwd</code> и <code class= + "filename">/etc/group</code> были созданы, разрешение имен + пользователей и групп теперь будет работать: + </p> + <pre class="userinput"><kbd class= + "command">exec /usr/bin/bash --login</kbd></pre> + <p> + Программы <span class="command"><strong>login</strong></span>, + <span class="command"><strong>agetty</strong></span>, + <span class="command"><strong>init</strong></span> (и другие) + используют ряд журналов для записи такой информации, как кто и + когда входил в систему. Однако эти программы не будут + записывать данные в журналы, если они еще не существуют. + Инициализируйте журналы и предоставьте им соответствующие + разрешения: + </p> + <pre class="userinput"><kbd class= + "command">touch /var/log/{btmp,lastlog,faillog,wtmp} +chgrp -v utmp /var/log/lastlog +chmod -v 664 /var/log/lastlog +chmod -v 600 /var/log/btmp</kbd></pre> + <p> + В файл <code class="filename">/var/log/wtmp</code> записываются + все входы и выходы из системы. В файл <code class= + "filename">/var/log/lastlog</code> записывается время + последнего входа каждого пользователя в систему. В файл + <code class="filename">/var/log/faillog</code> записываются + неудачные попытки входа в систему. В файл <code class= + "filename">/var/log/btmp</code> также записываются неудачные + попытки входа в систему. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + В файл <code class="filename">/run/utmp</code> записываются + пользователи, которые в данный момент вошли в систему. Он + создаётся динамически, в процессе выполнения сценариев + загрузки. + </p> + </div> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Файлы <span class="phrase"><code class= + "filename">utmp</code>,</span> <code class= + "filename">wtmp</code>, <code class="filename">btmp</code> и + <code class="filename">lastlog</code> используют для + временных меток 32-разрядные целые числа, значения счетчика + достигнет максимума (2 147 483 647) 19 января 2038 года + ("проблема 2038 года"). Многие пакеты перестали их + использовать, другие же, собираются прекратить их + использование. Вероятно, лучше считать их устаревшими. + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-gettext" name="ch-tools-gettext"></a>7.7. + Gettext-0.22.4 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Gettext содержит утилиты для интернационализации и + локализации. Они позволяют компилировать программы с + поддержкой NLS (Native Language Support), позволяя им + выводить сообщения на родном языке пользователя. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">1.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">306 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 7.7.1. Установка пакета Gettext + </h3> + <p> + Для временного набора инструментов нам нужно установить + только три программы из пакета Gettext. + </p> + <p> + Подготовьте Gettext к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --disable-shared</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-shared</code></em></span> + </dt> + <dd> + <p> + В настоящее время нам не нужно устанавливать какие-либо + общие библиотеки Gettext, поэтому нет необходимости их + собирать. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите программы <span class= + "command"><strong>msgfmt</strong></span>, <span class= + "command"><strong>msgmerge</strong></span>, и <span class= + "command"><strong>xgettext</strong></span> programs: + </p> + <pre class="userinput"><kbd class= + "command">cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-gettext" title= + "8.32.2. Содержимое пакета Gettext">Раздел 8.32.2, + «Содержимое пакета Gettext.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-bison" name="ch-tools-bison"></a>7.8. + Bison-3.8.2 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Bison содержит генератор синтаксического анализа. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.2 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">57 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 7.8.1. Установка пакета Bison + </h3> + <p> + Подготовьте Bison к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --docdir=/usr/share/doc/bison-3.8.2</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение нового параметра конфигурации:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--docdir=/usr/share/doc/bison-3.8.2</code></em></span> + </dt> + <dd> + <p> + Этот параметр указывает системе сборки установить + документацию к bison в каталог с версией пакета. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-bison" title= + "8.33.2. Содержимое пакета Bison">Раздел 8.33.2, + «Содержимое пакета Bison.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-perl" name="ch-tools-perl"></a>7.9. + Perl-5.38.2 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Perl содержит практический язык для извлечения данных и + составления отчётов (Practical Extraction and Report + Language). + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.6 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">280 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 7.9.1. Установка пакета Perl + </h3> + <p> + Подготовьте Perl к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">sh Configure -des \ + -Dprefix=/usr \ + -Dvendorprefix=/usr \ + -Duseshrplib \ + -Dprivlib=/usr/lib/perl5/5.38/core_perl \ + -Darchlib=/usr/lib/perl5/5.38/core_perl \ + -Dsitelib=/usr/lib/perl5/5.38/site_perl \ + -Dsitearch=/usr/lib/perl5/5.38/site_perl \ + -Dvendorlib=/usr/lib/perl5/5.38/vendor_perl \ + -Dvendorarch=/usr/lib/perl5/5.38/vendor_perl</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение новых опций Configure:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>-des</code></em></span> + </dt> + <dd> + <p> + Это комбинация из трех параметров: -d использует + значения по умолчанию для всех элементов; -e + обеспечивает выполнение всех задач; -s отключает + несущественные выходные данные. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>-Dvendorprefix=/usr</code></em></span> + </dt> + <dd> + <p> + Параметр гарантирует, что <span class= + "command"><strong>perl</strong></span> знает, как + указать пакетам, где они должны устанавливать свои + модули Perl. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>-Duseshrplib</code></em></span> + </dt> + <dd> + <p> + Собрать библиотеку libperl, необходимую некоторым + модулям Perl, как общую библиотеку вместо статической. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>-Dprivlib,-Darchlib,-Dsitelib,...</code></em></span> + </dt> + <dd> + <p> + Эти настройки определяют, где Perl ищет установленные + модули. Редакторы LFS решили поместить их в структуру + каталогов, основанную на MAJOR.MINOR версии Perl + (5.38), что позволяет обновлять Perl до более новых + уровней исправлений (уровень исправления - это + последняя разделенная точками часть в строке полной + версии, например 5.38.2) без необходимости + переустанавливать все модули. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-perl" title= + "8.42.2. Содержимое пакета Perl">Раздел 8.42.2, + «Содержимое пакета Perl.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-Python" name="ch-tools-Python"></a>7.10. + Python-3.12.2 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Python 3 содержит среду разработчика Python. Его можно + использовать для объектно-ориентированного программирования, + написания скриптов, прототипирования больших программ и + разработка целых приложений. Python — это интерпретируемый + язык программирования. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.5 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">598 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 7.10.1. Установка пакета Python + </h3> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Существует два пакета, имена которых начинаются с префикса + <span class="quote">«<span class= + "quote">python</span>»</span>. Сейчас необходимо + распаковать файл <code class= + "filename">Python-3.12.2.tar.xz</code> (обратите внимание + на заглавную первую букву). + </p> + </div> + <p> + Подготовка Python к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --enable-shared \ + --without-ensurepip</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-shared</code></em></span> + </dt> + <dd> + <p> + Этот параметр отключает установку статичных библиотек. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--without-ensurepip</code></em></span> + </dt> + <dd> + <p> + Этот параметр отключает установщик пакетов Python, + который на данном этапе не нужен. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Некоторые модули Python 3 не могут быть собраны сейчас, + потому что зависимости еще не установлены. Для модуля + <code class="filename">ssl</code> выводится сообщение + <code class="computeroutput">Python требует OpenSSL 1.1.1 + или новее</code>. Сообщение следует проигнорировать. Просто + убедитесь, что команда <span class= + "command"><strong>make</strong></span> верхнего уровня не + завершилась ошибкой. Дополнительные модули сейчас не нужны, + и они будут собраны в <a class="xref" href= + "#chapter-building-system" title= + "Глава 8. Установка базового системного программного обеспечения"> + Глава 8</a>. + </p> + </div> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-python" title= + "8.51.2. Содержимое пакета Python 3">Раздел 8.51.2, + «Содержимое пакета Python 3.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-texinfo" name="ch-tools-texinfo"></a>7.11. + Texinfo-7.1 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Texinfo содержит программы для чтения, записи и + преобразования информационных страниц. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.2 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">130 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 7.11.1. Установка пакета Texinfo + </h3> + <p> + Подготовьте Texinfo к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-texinfo" title= + "8.71.2. Содержимое пакета Texinfo">Раздел 8.71.2, + «Содержимое пакета Texinfo.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-util-linux" name= + "ch-tools-util-linux"></a>7.12. Util-linux-2.39.3 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Util-linux содержит различные служебные программы. + Среди них утилиты для работы с файловыми системами, + консолями, разделами и сообщениями. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.2 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">172 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 7.12.1. Установка пакета Util-linux + </h3> + <p> + FHS рекомендует использовать каталог <code class= + "filename">/var/lib/hwclock</code> вместо каталога + <code class="filename">/etc</code> в качестве местоположения + для файла <code class="filename">adjtime</code>. Создайте + этот каталог: + </p> + <pre class="userinput"><kbd class= + "command">mkdir -pv /var/lib/hwclock</kbd></pre> + <p> + Подготовьте Util-linux к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --libdir=/usr/lib \ + --runstatedir=/run \ + --disable-chfn-chsh \ + --disable-login \ + --disable-nologin \ + --disable-su \ + --disable-setpriv \ + --disable-runuser \ + --disable-pylibmount \ + --disable-static \ + --without-python \ + ADJTIME_PATH=/var/lib/hwclock/adjtime \ + --docdir=/usr/share/doc/util-linux-2.39.3</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>ADJTIME_PATH=/var/lib/hwclock/adjtime</code></em></span> + </dt> + <dd> + <p> + Этот параметр устанавливает расположение файла для + записи информации об аппаратных часах в соответствии с + FHS. Он не обязателен для временного инструментария, но + предотвращает создание файла в другом месте, где файл + не будет перезаписан или удален при финальной сборке + пакета util-linux. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--libdir=/usr/lib</code></em></span> + </dt> + <dd> + <p> + Этот параметр гарантирует, что символические ссылки + <code class="filename">.so</code>, будут указывать на + файл общей библиотеки в том же каталоге (<code class= + "filename">/usr/lib</code>). + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-*</code></em></span> + </dt> + <dd> + <p> + Этот параметр предотвращают появление предупреждений о + сборке компонентов, для которых требуются пакеты, + отсутствующие или еще не установленные в LFS. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--without-python</code></em></span> + </dt> + <dd> + <p> + Этот параметр отключает использование <span class= + "application">Python</span>. Это позволяет избежать + попыток создания ненужных привязок. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--runstatedir=/run</code></em></span> + </dt> + <dd> + <p> + Этот параметр устанавливает расположение сокета, + используемого <span class= + "command"><strong>uuidd</strong></span> и <code class= + "filename">libuuid</code>. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <p> + Подробная информация об этом пакете находится в <a class= + "xref" href="#contents-utillinux" title= + "8.78.2. Содержимое пакета Util-linux">Раздел 8.78.2, + «Содержимое пакета Util-linux.»</a> + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-tools-cleanup" name="ch-tools-cleanup"></a>7.13. + Очистка и сохранение временной системы + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 7.13.1. Очистка + </h3> + <p> + Во-первых, удалите установленную документацию, чтобы + предотвратить ее попадание в конечную систему и сэкономить + около 35 МБ места: + </p> + <pre class="userinput"><kbd class= + "command">rm -rf /usr/share/{info,man,doc}/*</kbd></pre> + <p> + Во-вторых, в современных системах Linux файлы .la библиотеки + libtool полезны только для libltdl. Никакие библиотеки в LFS + не загружаются с помощью libltdl. Известно, что некоторые + файлы .la могут привести к сбою во время сборки пакетов BLFS. + Удалите эти файлы сейчас: + </p> + <pre class="userinput"><kbd class= + "command">find /usr/{lib,libexec} -name \*.la -delete</kbd></pre> + <p> + Сейчас размер системы составляет около 3 ГБ, однако каталог + /tools больше не понадобится. Удалите его, чтобы освободить + около 1 ГБ дискового пространства: + </p> + <pre class="userinput"><kbd class= + "command">rm -rf /tools</kbd></pre> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 7.13.2. Резервное копирование + </h3> + <p> + На данный момент основные программы и библиотеки собраны, и + ваша система LFS находится в хорошем состоянии. Можно создать + резервную копию вашей системы для последующего повторного + использования. В случае фатальных сбоев в следующих главах + часто оказывается, что удалить все и начать заново (более + осторожно) — лучший вариант восстановления. К сожалению, все + временные файлы также будут удалены. Чтобы не тратить лишнее + время на повторную сборку того, что было успешно собрано, + полезно создать резервную копию текущей системы LFS. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Все остальные шаги в этом разделе являются необязательными. + Тем не менее, как только вы начнете устанавливать пакеты в + <a class="xref" href="#chapter-building-system" title= + "Глава 8. Установка базового системного программного обеспечения"> + Глава 8</a>, временные файлы будут перезаписаны. + Поэтому рекомендуется создание резервной копии текущей + системы, как описано ниже. + </p> + </div> + <p> + Следующие шаги выполняются вне среды chroot. Это означает, + что прежде чем продолжить вы должны покинуть среду chroot. + Причиной этого является то, что необходимо получить доступ к + расположению файловой системы за пределами среды chroot для + хранения/чтения архива резервных копий, который не должен + размещаться в иерархии <code class="filename">$LFS</code>. + </p> + <p> + Если вы решили сделать резервную копию, покиньте среду + chroot: + </p> + <pre class="userinput"><kbd class="command">exit</kbd></pre> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + Все следующие инструкции выполняются пользователем + <code class="systemitem">root</code> в вашей хост-системе. + Будьте особенно внимательны к командам, которые вы + собираетесь запускать, поскольку ошибки, допущенные здесь, + могут изменить вашу хост-систему. Имейте в виду, что + переменная окружения <code class="envar">LFS</code> по + умолчанию установлена для пользователя <code class= + "systemitem">lfs</code>, но может не быть установлена для + <code class="systemitem">root</code>. + </p> + <p> + Всякий раз, когда команды должны выполняться от + <code class="systemitem">root</code>, убедитесь, что вы + установили переменную <code class="envar">LFS</code>. + </p> + <p> + Это обсуждалось в <a class="xref" href= + "#ch-partitioning-aboutlfs" title= + "2.6. Установка переменной $LFS">Раздел 2.6, + «Установка переменной $LFS»</a>. + </p> + </div> + <p> + Перед созданием резервной копии размонтируйте виртуальные + файловые системы: + </p> + <pre class="userinput"><kbd class= + "command">mountpoint -q $LFS/dev/shm && umount $LFS/dev/shm +umount $LFS/dev/pts +umount $LFS/{sys,proc,run,dev}</kbd></pre> + <p> + Убедитесь, что у вас есть как минимум 1 ГБ свободного места + на диске (исходные tar-архивы будут включены в архив + резервных копий) в файловой системе, содержащей каталог, в + котором вы создаете архив резервных копий. + </p> + <p> + Обратите внимание, что в приведенных ниже инструкциях указан + домашний каталог пользователя <code class= + "systemitem">root</code> хост-системы, который обычно + находится в корневой файловой системе. Замените <code class= + "envar">$HOME</code> каталогом на ваш выбор, если вы не + хотите, чтобы резервная копия хранилась в домашнем каталоге + пользователя <code class="systemitem">root</code>. + </p> + <p> + Создайте архив резервной копии, выполнив следующую команду: + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Поскольку архив резервной копии сжимается, процесс занимает + довольно много времени (более 10 минут) даже на достаточно + быстрой системе. + </p> + </div> + <pre class="userinput"><kbd class="command">cd $LFS +tar -cJpf $HOME/lfs-temp-tools-12.1.tar.xz .</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Если вы переходите к главе 8, не забудьте повторно войти в + среду chroot, как описано в разделе <span class= + "quote">«<span class="quote">Важно</span>»</span> ниже. + </p> + </div> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 7.13.3. Восстановление + </h3> + <p> + В случае, если были допущены какие-либо ошибки и вам нужно + начать все сначала, вы можете использовать эту резервную + копию для восстановления системы и сэкономить время на + восстановление. Поскольку исходники находятся в папке + <code class="filename">$LFS</code>, они также включены в + архив резервной копии, поэтому их не нужно загружать + повторно. Убедившись, что переменная <code class= + "envar">$LFS</code> настроена правильно, вы можете + восстановить резервную копию, выполнив следующие команды: + </p> + <div class="admon warning"> + <h3> + Предупреждение + </h3> + <p> + Следующие команды чрезвычайно опасны. Если вы запустите + команду <span class="command"><strong>rm -rf + ./*</strong></span> от имени пользователя <code class= + "systemitem">root</code> и не перейдете в каталог $LFS или + переменная окружения <code class="envar">LFS</code> не + будет установлена для пользователя <code class= + "systemitem">root</code>, это уничтожит всю вашу + хост-систему. ВЫ ПРЕДУПРЕЖДЕНЫ. + </p> + </div> + <pre class="screen"><code class="computeroutput">cd $LFS +rm -rf ./* +tar -xpf $HOME/lfs-temp-tools-12.1.tar.xz</code></pre> + <p> + Еще раз проверьте, правильно ли настроено окружение, и + продолжайте сборку остальной части системы. + </p> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + Если вы покинули среду chroot, чтобы создать резервную + копию или перезапустить сборку с помощью восстановления, не + забудьте проверить, что виртуальные файловые системы все + еще смонтированы (<span class="command"><strong>findmnt | + grep $LFS</strong></span>). Если они не смонтированы, + перемонтируйте их сейчас, как описано в <a class="xref" + href="#ch-tools-kernfs" title= + "7.3. Подготовка виртуальных файловых систем ядра">Раздел 7.3, + «Подготовка виртуальных файловых систем ядра»</a>, и + повторно войдите в среду chroot (см. <a class="xref" href= + "#ch-tools-chroot" title= + "7.4. Вход в окружение Chroot">Раздел 7.4, «Вход в + окружение Chroot»</a>), прежде чем продолжить. + </p> + </div> + </div> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h1 class="title"> + <a id="part4" name="part4"></a>Часть IV. Сборка + системы LFS + </h1> + </div> + </div> + </div> + <div class="part"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="chapter-building-system" name= + "chapter-building-system"></a>Глава 8. Установка базового + системного программного обеспечения + </h2> + </div> + </div> + </div> + <div class="chapter" lang="ru" xml:lang="ru"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-introduction" name= + "ch-system-introduction"></a>8.1. Введение + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + В этой главе мы приступаем к сборке конечной системы LFS. + </p> + <p> + Установка программного обеспечения проста. Хотя во многих + случаях инструкции по установке можно было бы сделать короче и + универсальнее, мы решили предоставить полные инструкции для + каждого пакета, чтобы свести к минимуму вероятность ошибок. + Ключом к пониманию того, что заставляет систему Linux работать, + является знание того, для чего используется каждый пакет и + зачем он вам (или системе) может понадобиться. + </p> + <p> + Мы не рекомендуем использовать оптимизации. С ними программа + может работать немного быстрее, но также они могут вызвать + сложности при компиляции и проблемы при запуске программы. Если + пакет не компилируется при использовании оптимизации, + попробуйте скомпилировать его без оптимизации и посмотрите, + решает ли это проблему. Даже если пакет компилируется при + использовании оптимизации, существует риск, что он может быть + скомпилирован неправильно из-за сложных взаимодействий между + кодом и инструментами сборки. Также обратите внимание, что + параметры <code class="option">-march</code> и <code class= + "option">-mtune</code>, не тестировались со значениями + отличными от указанных в книге. Это может вызвать проблемы с + пакетами набора инструментов (Binutils, GCC и Glibc). Небольшие + потенциальные плюсы, достигаемые за счет оптимизации, часто + перевешиваются рисками. Тем кто собирает LFS впервые + рекомендуется делать это без пользовательских оптимизаций. + </p> + <p> + С другой стороны, мы сохраняем оптимизацию включенной в + конфигурации пакетов по умолчанию. Кроме того, иногда мы явно + включаем оптимизированную конфигурацию, предоставляемую + пакетом, но не включенную по умолчанию. Сопровождающие пакета + уже протестировали эти конфигурации и считают их безопасными, + поэтому маловероятно, что они сломают сборку. Как правило, + конфигурация по умолчанию уже включает параметры <code class= + "option">-O2</code> или <code class="option">-O3</code>, + поэтому результирующая система по-прежнему будет работать очень + быстро без какой-либо пользовательской оптимизации и в то же + время будет стабильной. + </p> + <p> + Перед инструкцией по установке на каждой странице представлена + информация о пакете, включая краткое описание того, что он + содержит, примерное время, необходимое для сборки, и сколько + места на диске требуется в процессе сборки. После инструкции по + установке идет список программ и библиотек (вместе с кратким + описанием), которые устанавливает пакет. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Для всех пакетов в <a class="xref" href= + "#chapter-building-system" title= + "Глава 8. Установка базового системного программного обеспечения"> + Глава 8</a> значения SBU и требуемое дисковое + пространство указано с учетом тестов. Значения SBU были + рассчитаны с использованием четырех ядер ЦП (-j4) для всех + операций, если не указано иное. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.1.1. О библиотеках + </h3> + <p> + Как правило, редакторы LFS не рекомендуют собирать и + устанавливать статические библиотеки. Большинство статических + библиотек устарели в современной системе Linux. Кроме того, + линковка статической библиотеки с программой может быть + вредна. Если для устранения проблемы безопасности требуется + обновление библиотеки, все программы, использующие + статическую библиотеку, необходимо будет повторно + перелинковать с новой библиотекой. Поскольку использование + статических библиотек не всегда очевидно, соответствующие + программы (и процедуры, необходимые для линковки) могут быть + даже неизвестны. + </p> + <p> + В инструкциях этой главы мы удаляем или отключаем установку + большинства статических библиотек. Обычно это делается путем + передачи параметра <code class= + "option">--disable-static</code> при выполнении <span class= + "command"><strong>configure</strong></span>. Иногда + необходимо использовать альтернативные методы. В некоторых + случаях, в частности в пакетах Glibc и GCC, использование + статических библиотек остается важным элементом процесса + сборки пакетов. + </p> + <p> + Более подробное обсуждение библиотек смотрите <a class= + "ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/introduction/libraries.html"> + Библиотеки: статические или общие?</a> в книге BLFS. + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-pkgmgt" name="ch-system-pkgmgt"></a>8.2. + Управление пакетами + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Управление пакетами — часто cпрашиваемое дополнение к книге + LFS. Менеджер пакетов позволяет отслеживать установку файлов, + упрощая удаление и обновление пакетов. Хороший менеджер пакетов + также будет обрабатывать конфигурационные файлы, чтобы + сохранить пользовательские настройки при переустановке или + обновлении пакета. Прежде чем вы начнете задаваться вопросом, + НЕТ—в этом разделе не будет ни говориться, ни рекомендоваться + какой-либо конкретный менеджер пакетов. Что он действительно + предоставляет, так это обзор наиболее популярных методов и + того, как они работают. Идеальным менеджером пакетов для вас + может быть один из этих методов или комбинация двух и более + методов. В этом разделе кратко упоминаются проблемы, которые + могут возникнуть при обновлении пакетов. + </p> + <p> + Некоторые причины, по которым менеджер пакетов не упоминается в + LFS или BLFS представлены ниже: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Рассмотрение управления пакетами отвлекает внимание от + целей этих книг—обучения тому, как строится система + Linux. + </p> + </li> + <li class="listitem"> + <p> + Существует множество решений для управления пакетами, + каждое из которых имеет свои сильные и слабые стороны. + Трудно найти такое, которое удовлетворит всех. + </p> + </li> + </ul> + </div> + <p> + Есть несколько советов, написанных на тему управления пакетами. + Посетите проект <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/hints/downloads/files/">Советы</a> + возможно вы найдете решение, которое соответствует вашим + потребностям. + </p> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="pkgmgmt-upgrade-issues" name= + "pkgmgmt-upgrade-issues"></a>8.2.1. Проблемы с обновлением + </h3> + <p> + Менеджер пакетов упрощает обновление до более новых версий + после их выпуска. Как правило, инструкции в книгах LFS и BLFS + можно использовать для обновления до более новых версий. Вот + некоторые моменты, о которых следует помнить при обновлении + пакетов, особенно в работающей системе. + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Если нужно обновить ядро Linux (например, с 5.10.17 до + 5.10.18 или 5.11.1), дополнительно пересобирать ничего + не нужно. Система продолжит нормально работать + благодаря четко определенной границе между ядром и + пользовательским пространством. В частности, заголовки + Linux API не нужно обновлять вместе с ядром. Вам просто + нужно перезагрузить систему, чтобы использовать + обновленное ядро. + </p> + </li> + <li class="listitem"> + <p> + Если необходимо обновить Glibc до более новой версии + (например, с Glibc-2.36 до Glibc-2.39) необходимо + выполнить некоторые дополнительные действия, чтобы + избежать поломки системы. Подробности читайте в + <a class="xref" href="#ch-system-glibc" title= + "8.5. Glibc-2.39">Раздел 8.5, «Glibc-2.39»</a>. + </p> + </li> + <li class="listitem"> + <p> + Если пакет, содержащий общую библиотеку, обновляется и + имя библиотеки изменилось, то любые пакеты, динамически + связанные с библиотекой, необходимо перекомпилировать, + чтобы связать с более новой библиотекой. (Обратите + внимание, что между версией пакета и именем библиотеки + нет никакой связи.) Например, рассмотрим пакет + foo-1.2.3, который устанавливает общую библиотеку с + именем <code class="filename">libfoo.so.1</code>. + Предположим, вы обновили пакет до более новой версии + foo-1.2.4, которая устанавливает общую библиотеку с + именем <code class="filename">libfoo.so.2</code>, все + пакеты, которые динамически связаны с <code class= + "filename">libfoo.so.1</code>, должны быть + перекомпилированы для связи с <code class= + "filename">libfoo.so.2</code>, чтобы использовать новую + версию библиотеки. Вы не должны удалять старые + библиотеки, пока все зависимые пакеты не будут + перекомпилированы. + </p> + </li> + <li class="listitem"> + <p> + Если пакет (прямо или косвенно) связан как со старым, + так и с новым именем общей библиотеки (например, пакет + ссылается как на <code class= + "filename">libfoo.so.2</code>, так и на <code class= + "filename">libbar.so.1</code>, в то время как последний + ссылается на <code class= + "filename">libfoo.so.3</code>), пакет может работать + неправильно, поскольку разные версии общей библиотеки + содержат несовместимые определения для некоторых имен + символов. Это может быть вызвано перекомпиляцией + некоторых, но не всех, пакетов, связанных со старой + общей библиотекой, после обновления пакета, + предоставляющего общую библиотеку. Чтобы избежать этой + проблемы, пользователям необходимо как можно скорее + пересобрать каждый пакет, связанный с общей + библиотекой, с обновленной версией (например, с + libfoo.so.2 на libfoo.so.3). + </p> + </li> + <li class="listitem"> + <p> + Если пакет, содержащий общую библиотеку, обновляется, а + имя библиотеки не меняется, но уменьшается номер версии + <span class="bold"><strong>файла</strong></span> + библиотеки (например, библиотека по-прежнему называется + <code class="filename">libfoo.so.1</code>, но имя файла + библиотеки изменилось с <code class= + "filename">libfoo.so.1.25</code> на <code class= + "filename">libfoo.so.1.24</code>), следует удалить файл + библиотеки ранее установленной версии (в данном случае + <code class="filename">libfoo.so.1.25</code>). В + противном случае, команда <span class= + "command"><strong>ldconfig</strong></span> (запущенная + самостоятельно с помощью командной строки или при + установке какого-либо пакета) приведёт к сбросу + символической ссылки <code class= + "filename">libfoo.so.1</code>, которая будет указывать + на старый файл библиотеки, потому что кажется, что она + имеет <span class="quote">«<span class="quote">более + новую</span>»</span> версию, поскольку её номер версии + больше. Такая ситуация может произойти, если вам нужно + понизить версию пакета или авторы изменили схему + управления версиями файлов библиотеки. + </p> + </li> + <li class="listitem"> + <p> + Если пакет, содержащий общую библиотеку, обновляется, а + имя библиотеки не меняется, но устраняется серьезная + проблема (особенно уязвимость в системе безопасности), + необходимо перезапустить все работающие программы, + связанные с общей библиотекой. Следующая команда, + запущенная от имени пользователя <code class= + "systemitem">root</code> после завершения обновления, + выведет список программ, которые использует старые + версии этих библиотек (замените <em class= + "replaceable"><code>libfoo</code></em> именем + библиотеки): + </p> + <pre class="userinput"><kbd class= + "command">grep -l '<em class= + "replaceable"><code>libfoo</code></em>.*deleted' /proc/*/maps | tr -cd 0-9\\n | xargs -r ps u</kbd></pre> + <p> + Если для доступа к системе используется <span class= + "application">OpenSSH</span> и он связан с обновленной + библиотекой, вам необходимо перезапустить службу + <span class="command"><strong>sshd</strong></span>, + затем выйти из системы, снова войти в систему и + повторно выполнить предыдущую команду, чтобы убедиться, + что удаленные библиотеки более не используются. + </p> + </li> + <li class="listitem"> + <p> + Если исполняемая программа или библиотека перезаписаны, + процессы, использующие код или данные из них, могут + завершиться сбоем. Правильный способ обновить программу + или общую библиотеку, не вызывая сбоя процесса, - это + сначала удалить его, а затем установить новую версию. + Команда <span class= + "command"><strong>install</strong></span>, + предоставляемая <span class= + "application">Coreutils</span>, уже реализовала это, и + большинство пакетов используют ее для установки + двоичных файлов и библиотек. Это означает, что большую + часть времени вас не будет беспокоить эта проблема. + Однако процесс установки некоторых пакетов (в + частности, SpiderMonkey в BLFS) просто перезаписывает + файл, если он существует, и вызывает сбой. Поэтому + безопаснее сохранить свою работу и закрыть ненужные + запущенные программы перед обновлением пакета. + </p> + </li> + </ul> + </div> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.2.2. Методы управления пакетами + </h3> + <p> + Ниже приведены некоторые распространенные методы управления + пакетами. Прежде чем принять решение о менеджере пакетов, + проведите исследование различных методов, особенно недостатки + каждой конкретной схемы. + </p> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm4964" name="idm4964"></a>8.2.2.1. Всё у + меня в голове! + </h4> + </div> + </div> + </div> + <p> + Да, это метод управления пакетами. Некоторым людям не нужен + менеджер пакетов, потому что они хорошо знакомы с пакетами + и знают, какие файлы устанавливаются каждым пакетом. + Некоторым пользователям также не требуется какое-либо + управление пакетами, поскольку они планируют пересобирать + всю систему при каждом изменении пакета. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm4967" name="idm4967"></a>8.2.2.2. Установка + в отдельные каталоги + </h4> + </div> + </div> + </div> + <p> + Это упрощенный метод управления пакетами, для которого не + требуется специальная программа управления. Каждый пакет + устанавливается в отдельный каталог. Например, пакет + foo-1.1 устанавливается в <code class= + "filename">/opt/foo-1.1</code>, а символическая ссылка + создается из <code class="filename">/opt/foo</code> в + <code class="filename">/opt/foo-1.1</code>. Когда + появляется новая версия foo-1.2, она устанавливается в + <code class="filename">/opt/foo-1.2</code> и предыдущая + символическая ссылка заменяется символической ссылкой на + новую версию. + </p> + <p> + Переменные окружения, такие как <code class= + "envar">PATH</code>, <code class="envar">MANPATH</code>, + <code class="envar">INFOPATH</code>, <code class= + "envar">PKG_CONFIG_PATH</code>, <code class= + "envar">CPPFLAGS</code>, <code class="envar">LDFLAGS</code> + и файл конфигурации <code class= + "filename">/etc/ld.so.conf</code>, возможно, потребуется + расширить, включив соответствующие подкаталоги в + <code class="filename">/opt/foo-x.y</code>. + </p> + <p> + Этот подход используется в книге BLFS для установки + некоторых очень больших пакетов, чтобы упростить их + обновление. Если вы устанавливаете много таких пакетов, эта + схема становится неуправляемой. Некоторые пакеты (например, + заголовки Linux API и Glibc) могут плохо работать с такой + структурой. <span class="bold"><strong>Никогда не + используйте её в масштабах всей системы.</strong></span> + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm4985" name="idm4985"></a>8.2.2.3. + Управление пакетами с использованием символических + ссылок + </h4> + </div> + </div> + </div> + <p> + Это разновидность предыдущей техники.Каждый пакет + устанавливается аналогично, но вместо создания + символической ссылки на общее имя пакета, каждому файлу + создаётся символическая ссылка в иерархии каталогов + <code class="filename">/usr</code>. Это исключает + необходимость модификации значений переменных окружения. + Хотя такие ссылки могут быть созданы пользователем, многие + менеджеры пакетов используют именной такой подход. Наиболее + популярные из них - Stow, Epkg, Graft и Depot. + </p> + <p> + Установку нужно сымитировать, чтобы пакет думал, что он + установлен в <code class="filename">/usr</code>, хотя на + самом деле он установлен в иерархии <code class= + "filename">/usr/pkg</code>. Установка таким способом обычно + является нетривиальной задачей. Например, предположим, что + вы устанавливаете пакет libfoo-1.1. Следующие инструкции + могут привести к неправильной установке пакета: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr/pkg/libfoo/1.1 +make +make install</kbd></pre> + <p> + Установка будет выполнена, но зависимые пакеты не смогут + ссылаться на libfoo. Если вы скомпилируете пакет, который + ссылается на libfoo, вы заметите, что он связан с + <code class= + "filename">/usr/pkg/libfoo/1.1/lib/libfoo.so.1</code> + вместо <code class="filename">/usr/lib/libfoo.so.1</code>, + как вы ожидаете. Правильный подход заключается в + использовании переменной <code class="envar">DESTDIR</code> + для управления установкой. Этот подход работает следующим + образом: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr +make +make DESTDIR=/usr/pkg/libfoo/1.1 install</kbd></pre> + <p> + Большинство пакетов поддерживают этот подход, но есть и + такие, которые этого не делают. Для несовместимых пакетов + вам может потребоваться либо установить пакет вручную, либо + вы можете установить проблемные пакеты в <code class= + "filename">/opt</code>. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm5002" name="idm5002"></a>8.2.2.4. На основе + временной метки + </h4> + </div> + </div> + </div> + <p> + В этом методе файлу присваивается временная метка перед + установкой пакета. После установки простое использование + команды <span class="command"><strong>find</strong></span> + с соответствующими параметрами может создать журнал всех + файлов, установленных после создания файла с временной + метки. Менеджером пакетов, использующим этот подход, + является install-log. + </p> + <p> + Хотя преимущество этой схемы в том, что она проста, у нее + есть два недостатка. Если во время установки, файлы + устанавливаются с отметкой времени, отличной от текущего + времени, эти файлы не будут отслеживаться менеджером + пакетов. Кроме того, эта схема может использоваться только + при установке пакетов по одному. Журналы ненадежны, если + два пакета устанавливаются одновременно на двух разных + консолях. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm5007" name="idm5007"></a>8.2.2.5. + Отслеживание сценариев установки + </h4> + </div> + </div> + </div> + <p> + При таком подходе, записываются команды, выполняемые + сценариями установки. Есть два метода, которые можно + использовать: + </p> + <p> + Переменная среды <code class="envar">LD_PRELOAD</code> + может быть установлена так, чтобы она указывала на + библиотеку, которую нужно предварительно загрузить перед + установкой. Во время установки эта библиотека отслеживает + устанавливаемые пакеты, присоединяясь к различным + исполняемым файлам, таким как <span class= + "command"><strong>cp</strong></span>, <span class= + "command"><strong>install</strong></span>, <span class= + "command"><strong>mv</strong></span>, и отслеживая + системные вызовы, изменяющие файловую систему. Чтобы этот + подход работал, все исполняемые файлы должны быть + динамически связаны без битов suid или sgid. + Предварительная загрузка библиотеки может вызвать некоторые + нежелательные побочные эффекты во время установки. Поэтому + рекомендуется выполнить некоторые тесты, чтобы убедиться, + что менеджер пакетов ничего не сломает и что он + регистрирует все соответствующие файлы. + </p> + <p> + Другой метод заключается в использовании <span class= + "command"><strong>strace</strong></span>, который + регистрирует все системные вызовы, сделанные во время + выполнения сценариев установки. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm5017" name="idm5017"></a>8.2.2.6. Создание + архивов пакетов + </h4> + </div> + </div> + </div> + <p> + В этой схеме установка пакета имитируется в отдельном + дереве, как описано ранее в разделе управление пакетами с + использованием символических ссылок. После установки из + установленных файлов создается архив пакета. Затем этот + архив используется для установки пакета на локальный + компьютер или даже на другие компьютеры. + </p> + <p> + Этот подход используется большинством менеджеров пакетов, + имеющихся в коммерческих дистрибутивах. Примерами + менеджеров пакетов, которые следуют этому подходу, являются + RPM (который, кстати, требуется согласно спецификации + <a class="ulink" href= + "https://refspecs.linuxfoundation.org/lsb.shtml">Linux + Standard Base Specification</a>), pkg-utils, apt Debian и + система Portage Gentoo. Описание того, как использовать + этот стиль управления пакетами для систем LFS, находится по + адресу <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/hints/downloads/files/fakeroot.txt"> + https://mirror.linuxfromscratch.ru/hints/downloads/files/fakeroot.txt</a>. + </p> + <p> + Создание файлов пакетов, содержащих информацию о + зависимостях, является сложной задачей и выходит за рамки + LFS. + </p> + <p> + Slackware использует систему на основе <span class= + "command"><strong>tar</strong></span> для архивов пакетов. + Эта система намеренно не обрабатывает зависимости пакетов, + как это делают более сложные менеджеры пакетов. Подробнее + об управлении пакетами Slackware см. <a class="ulink" href= + "https://www.slackbook.org/html/package-management.html">https://www.slackbook.org/html/package-management.html</a>. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm5027" name="idm5027"></a>8.2.2.7. + Пользовательское управление пакетами + </h4> + </div> + </div> + </div> + <p> + Эта схема, уникальная для LFS, была разработана Маттиасом + Бенкманом и доступна в проекте <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/hints/downloads/files/"> + Hints</a>. В этой схеме каждый пакет устанавливается + отдельным пользователем в стандартные папки. Файлы, + принадлежащие пакету, легко идентифицируются путем проверки + идентификатора пользователя. Особенности и недостатки этого + подхода слишком сложны, чтобы описывать их в этом разделе. + Для получения более подробной информации, пожалуйста, + ознакомьтесь с советами по адресу <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/hints/downloads/files/more_control_and_pkg_man.txt"> + https://mirror.linuxfromscratch.ru/hints/downloads/files/more_control_and_pkg_man.txt</a>. + </p> + </div> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.2.3. Развертывание LFS на нескольких системах + </h3> + <p> + Одним из преимуществ системы LFS является отсутствие файлов, + зависящих от положения файлов на диске. Клонировать сборку + LFS на другой компьютер с той же архитектурой, что и у + базовой системы, так же просто, как использовать <span class= + "command"><strong>tar</strong></span> для архивации раздела + LFS, содержащем корневой каталог (около 900 МБ в несжатом + виде для базовой сборки LFS), скопировать этот файл по сети + или с помощью CD / USB носителя в новую систему и распаковать + его. После этого необходимо изменить несколько + конфигурационных файлов. Файлы, которые, возможно, + потребуется изменить представлены в списке ниже: <code class= + "filename">/etc/hosts</code>, <code class= + "filename">/etc/fstab</code>, <code class= + "filename">/etc/passwd</code>, <code class= + "filename">/etc/group</code>, <span class= + "phrase"><code class="filename">/etc/shadow</code>, + <code class="filename">/etc/ld.so.conf</code>, <code class= + "filename">/etc/sysconfig/rc.site</code>, <code class= + "filename">/etc/sysconfig/network</code>, и <code class= + "filename">/etc/sysconfig/ifconfig.eth0</code>.</span> + </p> + <p> + Возможно, потребуется собрать собственное ядро для новой + системы в зависимости от различий в системном оборудовании и + исходной конфигурации ядра. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Поступали некоторые сообщения о проблемах при копировании + между похожими, но не идентичными архитектурами. Например, + набор инструкций для Intel не идентичен набору инструкций + для процессора AMD, и более поздние версии некоторых + процессоров могут содержать инструкции, недоступные в более + ранних версиях. + </p> + </div> + <p> + Наконец, новую систему необходимо сделать загрузочной так, + как это описано в <a class="xref" href="#ch-bootable-grub" + title= + "10.4. Использование GRUB для настройки процесса загрузки">Раздел 10.4, + «Использование GRUB для настройки процесса загрузки»</a>. + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-man-pages" name= + "ch-system-man-pages"></a>8.3. Man-pages-6.06 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Man-pages содержит более 2400 справочных руководств. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">33 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.3.1. Установка пакета Man-pages + </h3> + <p> + Удалите две справочные страницы для функций хэширования + паролей. <span class="application">Libxcrypt</span> + предоставит улучшенную версию этих справочных страниц: + </p> + <pre class="userinput"><kbd class= + "command">rm -v man3/crypt*</kbd></pre> + <p> + Установите пакет Man-pages выполнив команду: + </p> + <pre class="userinput"><kbd class= + "command">make prefix=/usr install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-manpages" name="contents-manpages"></a>8.3.2. + Содержимое пакета Man-pages + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные файлы:</strong> + <span class="segbody">различные справочные + страницы</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm5080" name="idm5080"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="man-pages" name="man-pages"></a><span class= + "term"><code class="filename">man + pages</code></span> + </p> + </td> + <td> + <p> + Описывают функции языка программирования C, важные + файлы устройств и важные файлы конфигурации. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-iana-etc" name= + "ch-system-iana-etc"></a>8.4. Iana-Etc-20240125 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Iana-Etc предоставляет данные для сетевых служб и + протоколов. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">4.8 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.4.1. Установка пакета Iana-Etc + </h3> + <p> + Для этого пакета необходимо лишь скопировать нужные файлы: + </p> + <pre class="userinput"><kbd class= + "command">cp services protocols /etc</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-iana-etc" name="contents-iana-etc"></a>8.4.2. + Содержимое пакета Iana-Etc + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные файлы:</strong> + <span class="segbody">/etc/protocols и + /etc/services</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm5113" name="idm5113"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="protocols" name="protocols"></a><span class= + "term"><code class= + "filename">/etc/protocols</code></span> + </p> + </td> + <td> + <p> + Описывает различные интернет-протоколы DARPA, + которые доступны из подсистемы TCP/IP + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="services" name="services"></a><span class= + "term"><code class= + "filename">/etc/services</code></span> + </p> + </td> + <td> + <p> + Обеспечивает сопоставление понятных текстовых имен + для интернет-сервисов с назначенными им номерами + портов и типами протоколов. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-glibc" name="ch-system-glibc"></a>8.5. + Glibc-2.39 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Glibc содержит основную библиотеку C. Эта библиотека + предоставляет основные процедуры для выделения памяти, поиска + в каталогах, открытия и закрытия файлов, чтения и записи + файлов, обработки строк, сопоставления с образцом, арифметики + и так далее + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">12 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">3.1 + GB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.5.1. Установка пакета Glibc + </h3> + <p> + Некоторые программы Glibc используют не совместимый с FHS + каталог <code class="filename">/var/db</code> для хранения + своих данных во время выполнения. Примените следующий патч, + чтобы эти программы хранили свои данные в каталогах, + совместимых с FHS: + </p> + <pre class="userinput"><kbd class= + "command">patch -Np1 -i ../glibc-2.39-fhs-1.patch</kbd></pre> + <p> + Документация Glibc рекомендует выполнять компиляцию в + отдельном каталоге: + </p> + <pre class="userinput"><kbd class="command">mkdir -v build +cd build</kbd></pre> + <p> + Убедитесь, что утилиты <span class= + "command"><strong>ldconfig</strong></span> и <span class= + "command"><strong>sln</strong></span> будут установлены в + <code class="filename">/usr/sbin</code>: + </p> + <pre class="userinput"><kbd class= + "command">echo "rootsbindir=/usr/sbin" > configparms</kbd></pre> + <p> + Подготовьте Glibc к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">../configure --prefix=/usr \ + --disable-werror \ + --enable-kernel=4.19 \ + --enable-stack-protector=strong \ + --disable-nscd \ + libc_cv_slibdir=/usr/lib</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-werror</code></em></span> + </dt> + <dd> + <p> + Отключает параметр -Werror, передаваемый GCC. Это + необходимо для запуска набора тестов. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-kernel=4.19</code></em></span> + </dt> + <dd> + <p> + Этот параметр сообщает системе сборки, что Glibc может + использоваться с ядрами старше 4.19. Это значение + используется для создание обходных путей на случай, + если системный вызов, представленный в более поздней + версии, нельзя будет использовать. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-stack-protector=strong</code></em></span> + </dt> + <dd> + <p> + Этот параметр повышает безопасность системы за счет + добавления дополнительного кода для проверки + переполнения буфера. Обратите внимание, что Glibc + всегда явно переопределяет параметры GCC по умолчанию, + поэтому необходимо всегда указывать эту опцию, несмотря + на то, что мы уже указали <code class= + "option">--enable-default-ssp</code> для GCC. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-nscd</code></em></span> + </dt> + <dd> + <p> + Параметр отключает сборку демона кэша службы имен, + который больше не используется. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>libc_cv_slibdir=/usr/lib</code></em></span> + </dt> + <dd> + <p> + Эта переменная устанавливает правильную библиотеку для + всей системы. Мы не хотим, чтобы использовалась lib64 + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + В этом разделе набор тестов для Glibc считается критически + важным. Ни в коем случае не пропускайте его. + </p> + </div> + <p> + Как правило, несколько тестов не проходят. Ошибки + тестирования, перечисленные ниже, можно игнорировать. + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Вы можете увидеть, что ряд тестов завершились неудачей. Набор + тестов Glibc в некоторой степени зависит от хост-системы. + Несколько ошибок из более чем 5000 тестов можно игнорировать. + Список наиболее распространенных проблем последних версий + LFS: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Известно, что <span class= + "emphasis"><em>io/tst-lchmod</em></span> не работает в + среде chroot LFS. + </p> + </li> + <li class="listitem"> + <p> + Известно, что некоторые тесты, например <span class= + "emphasis"><em>nss/tst-nss-files-hosts-multi</em></span> + и <span class= + "emphasis"><em>nptl/tst-thread-affinity*</em></span> + завершаются неудачей из-за тайм-аута (особенно когда + система работает относительно медленно и/или набор + тестов запущен в несколько потоков). Эти тесты могут + быть идентифицированы с помощью следующей команды: + </p> + <pre class="userinput"><kbd class= + "command">grep "Timed out" -l $(find -name \*.out)</kbd></pre> + <p> + Можно повторно запустить отдельный тест, увеличив + таймаут с помощью команды <span class= + "command"><strong>TIMEOUTFACTOR=<em class= + "replaceable"><code><factor></code></em> make + test t=<em class="replaceable"><code><test + name></code></em></strong></span>. Например, + <span class="command"><strong>TIMEOUTFACTOR=10 make + test t=nss/tst-nss-files-hosts-multi</strong></span> + перезапустит <span class= + "emphasis"><em>nss/tst-nss-files-hosts-multi</em></span>, + увеличив начальный таймаут в 10 раз. + </p> + </li> + <li class="listitem"> + <p> + Кроме того, некоторые тесты могут завершиться неудачно + при использовании относительно старой модели процессора + (например, <span class= + "emphasis"><em>elf/tst-cpu-features-cpuinfo</em></span>) + или версии ядра хоста (например, <span class= + "emphasis"><em>stdlib/tst-arc4random-thread</em></span>). + </p> + </li> + </ul> + </div> + <p> + На этапе установки Glibc будет жаловаться на отсутствие файла + <code class="filename">/etc/ld.so.conf</code>, хотя это + безобидное сообщение, предотвратить его появление можно с + помощью команды: + </p> + <pre class="userinput"><kbd class= + "command">touch /etc/ld.so.conf</kbd></pre> + <p> + Исправьте Makefile, чтобы пропустить устаревшую проверку + работоспособности, которая завершается неудачей в современной + конфигурации Glibc: + </p> + <pre class="userinput"><kbd class= + "command">sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile</kbd></pre> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + При обновлении Glibc до новой минорной версии (например, с + Glibc-2.36 до Glibc-2.39) в работающей системе LFS вам + необходимо принять некоторые дополнительные меры + предосторожности, чтобы избежать поломки системы: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Обновление Glibc в системе LFS до версии 11.0 не + поддерживается. Пересоберите LFS, если вы используете + такую старую систему, но вам нужна более новая Glibc. + </p> + </li> + <li class="listitem"> + <p> + При обновлении системы LFS до версии 12.0 установите + <span class="application">Libxcrypt</span> следуя + инструкции <a class="xref" href= + "#ch-system-libxcrypt" title= + "8.26. Libxcrypt-4.4.36">Раздел 8.26, + «Libxcrypt-4.4.36.»</a>. В дополнение к обычной + установке <span class="application">Libxcrypt</span>, + <span class="bold"><strong>вы ДОЛЖНЫ следовать + примечанию со страницы Libxcrypt, чтобы установить + <code class="filename">libcrypt.so.1*</code> (заменив + <code class="filename">libcrypt.so.1</code> из + предыдущей установки Glibc)</strong></span>. + </p> + </li> + <li class="listitem"> + <p> + При обновлении системы LFS до версии 12.1 удалите + программу <span class= + "command"><strong>nscd</strong></span>: + </p> + <pre class="userinput"><kbd class= + "command">rm -f /usr/sbin/nscd</kbd></pre> + </li> + <li class="listitem"> + <p> + Обновите ядро и перезагрузитесь, если оно старше 4.19 + (проверьте текущую версию с помощью <span class= + "command"><strong>uname -r</strong></span>) или, если + вы хотите обновить имеющееся ядро, выполните действия + из <a class="xref" href="#ch-bootable-kernel" title= + "10.3. Linux-6.7.4">Раздел 10.3, + «Linux-6.7.4.»</a> + </p> + </li> + <li class="listitem"> + <p> + Обновите заголовочные файлы API ядра, если они старше + 4.19 (проверьте текущую версию с помощью <span class= + "command"><strong>cat + /usr/include/linux/version.h</strong></span>) или, + если вы просто хотите обновить их, следуйте <a class= + "xref" href="#ch-tools-linux-headers" title= + "5.4. Заголовочные файлы Linux-6.7.4 API">Раздел 5.4, + «Заголовочные файлы Linux-6.7.4 API»</a> (но удалив + <code class="envar">$LFS</code> из команды + <span class="command"><strong>cp</strong></span>). + </p> + </li> + <li class="listitem"> + <p> + Выполните установку <code class= + "envar">DESTDIR</code> и обновите общие библиотеки + Glibc в системе с помощью одной команды <span class= + "command"><strong>install</strong></span>: + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$PWD/dest install +install -vm755 dest/usr/lib/*.so.* /usr/lib</kbd></pre> + </li> + </ul> + </div> + <p> + Крайне важно строго следовать описанным выше шагам, если вы + не совсем понимаете, что делаете. <span class= + "bold"><strong>Любое неожиданное отклонение может сделать + систему полностью непригодной для использования. ВЫ + ПРЕДУПРЕЖДЕНЫ.</strong></span> + </p> + <p> + Затем продолжайте выполнять команды <span class= + "command"><strong>make install</strong></span>, + <span class="command"><strong>sed</strong></span> для + <code class="filename">/usr/bin/ldd</code> и команды для + установки локалей. Как только они будут выполнены, + перезагрузите систему. + </p> + </div> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + Исправьте жестко заданный путь к исполняемому загрузчику в + скрипте <span class="command"><strong>ldd</strong></span>: + </p> + <pre class="userinput"><kbd class= + "command">sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd</kbd></pre> + <p> + Затем установите локали, которые дадут возможность системе + отвечать на разных языках. Ни одна из локалей не требуется + системе, но если некоторые из них отсутствуют, то наборы + тестов ряда пакетов будут пропускать важные тестовые + сценарии. + </p> + <p> + Отдельные локали можно установить с помощью программы + <span class="command"><strong>localedef</strong></span>. + Например, вторая команда <span class= + "command"><strong>localedef</strong></span> приведенная ниже, + объединяет определение независимой от набора символов локали + <code class="filename">/usr/share/i18n/locales/cs_CZ</code> с + набором символов <code class= + "filename">/usr/share/i18n/charmaps/UTF-8.gz</code> и + добавляет результат в файл <code class= + "filename">/usr/lib/locale/locale-archive</code>. Следующие + инструкции установят минимальный набор локалей, необходимый + для оптимального охвата тестов + </p> + <pre class="userinput"><kbd class= + "command">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</kbd></pre> + <p> + Кроме того, установите локаль для вашей страны, языка и + набора символов. + </p> + <p> + В качестве альтернативы, установите сразу все локали + перечисленные в файле <code class= + "filename">glibc-2.39/localedata/SUPPORTED</code> (он + включает все локали из списка выше и многие другие), выполнив + команду: + </p> + <pre class="userinput"><kbd class= + "command">make localedata/install-locales</kbd></pre> + <p> + Затем используйте команду <span class= + "command"><strong>localedef</strong></span> для создания и + установки локалей, не перечисленных в файле <code class= + "filename">glibc-2.39/localedata/SUPPORTED</code>, когда они + вам понадобятся. Например, для некоторых тестов в этой главе + потребуются следующие две локали: + </p> + <pre class="userinput"><kbd class= + "command">localedef -i C -f UTF-8 C.UTF-8 +localedef -i ja_JP -f SHIFT_JIS ja_JP.SJIS 2> /dev/null || true</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Glibc теперь использует libidn2 для разрешения + интернационализированных доменных имен. Если такая функция + необходима, то инструкцию по установке libidn2 можно найти + на странице <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/libidn2.html"> + BLFS libidn2</a>. + </p> + </div> + </div> + <div class="configuration" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="conf-glibc" name="conf-glibc"></a>8.5.2. Настройка + Glibc + </h3> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm5298" name="idm5298"></a>8.5.2.1. + Добавление nsswitch.conf + </h4> + </div> + </div> + </div> + <p> + Необходимо создать файл <code class= + "filename">/etc/nsswitch.conf</code>, потому что + настроенный по умолчанию Glibc плохо работает в сетевой + среде. + </p> + <p> + Создайте новый фай <code class= + "filename">/etc/nsswitch.conf</code>, выполнив следующие + действия: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/nsswitch.conf << "EOF" +<code class="literal"># 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</code> +EOF</kbd></pre> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm5307" name="idm5307"></a>8.5.2.2. + Добавление данных о часовом поясе + </h4> + </div> + </div> + </div> + <p> + Установите и настройте часовой пояс следующим образом: + </p> + <pre class="userinput"><kbd class= + "command">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</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение команд zic:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class="parameter"><code>zic -L + /dev/null ...</code></em></span> + </dt> + <dd> + <p> + Создаёт часовые пояса posix без секунд координации. + Обычно их помещают как в <code class= + "filename">zoneinfo</code> так и в <code class= + "filename">zoneinfo/posix</code>. Часовые пояса POSIX + должны быть прописаны в <code class= + "filename">zoneinfo</code>, иначе различные тесты + будут сообщать об ошибках. На встраиваемых системах с + небольшим диском, где часовые пояса никогда не будут + обновляться, можно сэкономить примерно 1.9 MB не + используя каталог <code class= + "filename">posix</code>, однако некоторые приложения + или наборы тестов могут вызывать сбои. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>zic -L + leapseconds ...</code></em></span> + </dt> + <dd> + <p> + Создаёт правильные часовые пояса с секундами + координации. На встраиваемых системах с небольшим + диском, где часовые пояса никогда не будут + обновляться, а правильность времени неважна, можно + выиграть примерно 1.9 MB, исключив каталог + <code class="filename">right</code>. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>zic ... + -p ...</code></em></span> + </dt> + <dd> + <p> + Создаёт файл <code class= + "filename">posixrules</code>. Используется New York, + потому что POSIX требует, чтобы правила перехода на + летнее время соответствовали правилам США. + </p> + </dd> + </dl> + </div> + <p> + Один из способов определить местный часовой пояс — + запустить следующий скрипт: + </p> + <pre class="userinput"><kbd class= + "command">tzselect</kbd></pre> + <p> + После нескольких вопросов о местоположении скрипт выдаст + наименование часового пояса (например <span class= + "emphasis"><em>America/Edmonton</em></span>). В файле + <code class="filename">/usr/share/zoneinfo</code> + перечислены и другие возможные часовые пояса, такие как + <span class="emphasis"><em>Canada/Eastern</em></span> или + <span class="emphasis"><em>EST5EDT</em></span>, которые не + распознаются скриптом, но могут быть использованы. + </p> + <p> + Создайте файл <code class="filename">/etc/localtime</code> + выполнив: + </p> + <pre class="userinput"><kbd class= + "command">ln -sfv /usr/share/zoneinfo/<em class= + "replaceable"><code><xxx></code></em> /etc/localtime</kbd></pre> + <p> + Замените <em class= + "replaceable"><code><xxx></code></em> на имя + выбранного часового пояса (например, Europe/Moscow). + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="conf-ld" name="conf-ld"></a>8.5.2.3. Настройка + динамического загрузчика + </h4> + </div> + </div> + </div> + <p> + По умолчанию, динамический загрузчик (<code class= + "filename">/lib/ld-linux.so.2</code>) ищет в каталоге + <code class="filename">/usr/lib</code>, нужные для работы + программ библиотеки. Однако, если библиотеки находятся в + другом каталоге, то его необходимо указать в файле + <code class="filename">/etc/ld.so.conf</code>, чтобы + динамический загрузчик мог их найти. Два каталога - + <code class="filename">/usr/local/lib</code> и <code class= + "filename">/opt/lib</code> часто используются для + дополнительных библиотек, поэтому добавьте их в пути поиска + для динамического загрузчика. + </p> + <p> + Создайте новый файл <code class= + "filename">/etc/ld.so.conf</code> выполнив: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/ld.so.conf << "EOF" +<code class="literal"># Begin /etc/ld.so.conf +/usr/local/lib +/opt/lib +</code> +EOF</kbd></pre> + <p> + Динамический загрузчик может выполнить поиск в каталоге и + включить содержимое найденных там файлов. Обычно такие + файлы состоят из одной строки и содержат путь к библиотеке. + Чтобы добавить эту возможность, выполните следующие + команды: + </p> + <pre class="userinput"><kbd class= + "command">cat >> /etc/ld.so.conf << "EOF" +<code class="literal"># Add an include directory +include /etc/ld.so.conf.d/*.conf +</code> +EOF +mkdir -pv /etc/ld.so.conf.d</kbd></pre> + </div> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-glibc" name="contents-glibc"></a>8.5.3. + Содержимое пакета Glibc + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">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</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">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}</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/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</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm5380" name="idm5380"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="gencat" name="gencat"></a><span class= + "term"><span class= + "command"><strong>gencat</strong></span></span> + </p> + </td> + <td> + <p> + Создает каталоги сообщений + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="getconf" name="getconf"></a><span class= + "term"><span class= + "command"><strong>getconf</strong></span></span> + </p> + </td> + <td> + <p> + Отображает настройки системы для специфичных + переменных файловой системы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="getent" name="getent"></a><span class= + "term"><span class= + "command"><strong>getent</strong></span></span> + </p> + </td> + <td> + <p> + Получает записи из административной базы данных + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="iconv" name="iconv"></a><span class= + "term"><span class= + "command"><strong>iconv</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет преобразование набора символов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="iconvconfig" name= + "iconvconfig"></a><span class="term"><span class= + "command"><strong>iconvconfig</strong></span></span> + </p> + </td> + <td> + <p> + Создает быстрозагружаемые файлы настроек модуля + <span class="command"><strong>iconv</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ldconfig" name="ldconfig"></a><span class= + "term"><span class= + "command"><strong>ldconfig</strong></span></span> + </p> + </td> + <td> + <p> + Настраивает привязки времени выполнения + динамического компоновщика + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ldd" name="ldd"></a><span class= + "term"><span class= + "command"><strong>ldd</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает, какие общие библиотеки требуются каждой + программе или общей библиотеке + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lddlibc4" name="lddlibc4"></a><span class= + "term"><span class= + "command"><strong>lddlibc4</strong></span></span> + </p> + </td> + <td> + <p> + Помогает <span class= + "command"><strong>ldd</strong></span> работать с + объектными файлами. Он не существует на более новых + архитектурах, таких как x86_64 + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="locale" name="locale"></a><span class= + "term"><span class= + "command"><strong>locale</strong></span></span> + </p> + </td> + <td> + <p> + Выводит различную информацию о текущей локали + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="localedef" name="localedef"></a><span class= + "term"><span class= + "command"><strong>localedef</strong></span></span> + </p> + </td> + <td> + <p> + Компилирует спецификации локали + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="makedb" name="makedb"></a><span class= + "term"><span class= + "command"><strong>makedb</strong></span></span> + </p> + </td> + <td> + <p> + Создает простую базу данных на основе текстового + ввода + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mtrace" name="mtrace"></a><span class= + "term"><span class= + "command"><strong>mtrace</strong></span></span> + </p> + </td> + <td> + <p> + Читает и интерпретирует файл трассировки памяти; + отображает сводку в удобочитаемом формате + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pcprofiledump" name= + "pcprofiledump"></a><span class="term"><span class= + "command"><strong>pcprofiledump</strong></span></span> + </p> + </td> + <td> + <p> + Создает дамп информации, генерируемой при + профилировании ПК + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pldd" name="pldd"></a><span class= + "term"><span class= + "command"><strong>pldd</strong></span></span> + </p> + </td> + <td> + <p> + Перечисляет динамические общие объекты, + используемые запущенными процессами. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sln" name="sln"></a><span class= + "term"><span class= + "command"><strong>sln</strong></span></span> + </p> + </td> + <td> + <p> + Статически скомпонованная программа <span class= + "command"><strong>ln</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sotruss" name="sotruss"></a><span class= + "term"><span class= + "command"><strong>sotruss</strong></span></span> + </p> + </td> + <td> + <p> + Отслеживает вызовы процедур общей библиотеки + указанной команды + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sprof" name="sprof"></a><span class= + "term"><span class= + "command"><strong>sprof</strong></span></span> + </p> + </td> + <td> + <p> + Читает и отображает данные профилирования общих + объектов. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tzselect" name="tzselect"></a><span class= + "term"><span class= + "command"><strong>tzselect</strong></span></span> + </p> + </td> + <td> + <p> + Запрашивает у пользователя информацию о текущем + местоположении системы и выводит описание + соответствующего часового пояса. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xtrace" name="xtrace"></a><span class= + "term"><span class= + "command"><strong>xtrace</strong></span></span> + </p> + </td> + <td> + <p> + Отслеживает выполнение программы, отображая + выполняемую в данный момент функцию + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zdump" name="zdump"></a><span class= + "term"><span class= + "command"><strong>zdump</strong></span></span> + </p> + </td> + <td> + <p> + Выдает дамп часового пояса + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zic" name="zic"></a><span class= + "term"><span class= + "command"><strong>zic</strong></span></span> + </p> + </td> + <td> + <p> + Компилятор часовых поясов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ld.so" name="ld.so"></a><span class= + "term"><code class="filename">ld-*.so</code></span> + </p> + </td> + <td> + <p> + Вспомогательная программа для исполняемых файлов + общей библиотеки + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libBrokenLocale" name= + "libBrokenLocale"></a><span class= + "term"><code class= + "filename">libBrokenLocale</code></span> + </p> + </td> + <td> + <p> + Используется внутри Glibc как грубый хак для + запуска сломанных программ (например, некоторые + приложения Motif). Прочитайте комментарии в + <code class= + "filename">glibc-2.39/locale/broken_cur_max.c</code> + для получения дополнительной информации + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libanl" name="libanl"></a><span class= + "term"><code class="filename">libanl</code></span> + </p> + </td> + <td> + <p> + Библиотека-заглушка, не содержащая функций. Ранее + это была библиотека асинхронного поиска имен, + функции которой теперь находятся в <code class= + "filename">libc</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libc" name="libc"></a><span class= + "term"><code class="filename">libc</code></span> + </p> + </td> + <td> + <p> + Основная библиотека C + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libc_malloc_debug" name= + "libc_malloc_debug"></a><span class= + "term"><code class= + "filename">libc_malloc_debug</code></span> + </p> + </td> + <td> + <p> + Включает проверку выделения памяти при + предварительной загрузке + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libdl" name="libdl"></a><span class= + "term"><code class="filename">libdl</code></span> + </p> + </td> + <td> + <p> + Библиотека-заглушка, не содержащая функций. Ранее + была библиотекой интерфейса динамической + компоновки, функции которой теперь находятся в + <code class="filename">libc</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libg" name="libg"></a><span class= + "term"><code class="filename">libg</code></span> + </p> + </td> + <td> + <p> + Библиотека-заглушка без функций. Раньше была + библиотекой среды выполнения для <span class= + "command"><strong>g++</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libm" name="libm"></a><span class= + "term"><code class="filename">libm</code></span> + </p> + </td> + <td> + <p> + Математическая библиотека + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libmvec" name="libmvec"></a><span class= + "term"><code class="filename">libmvec</code></span> + </p> + </td> + <td> + <p> + Библиотека векторных математических вычислений, + подключаемая по мере необходимости при + использовании <code class="filename">libm</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libmcheck" name="libmcheck"></a><span class= + "term"><code class= + "filename">libmcheck</code></span> + </p> + </td> + <td> + <p> + Включает проверку выделения памяти при подключении + к + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libmemusage" name= + "libmemusage"></a><span class="term"><code class= + "filename">libmemusage</code></span> + </p> + </td> + <td> + <p> + Используется <span class= + "command"><strong>memusage</strong></span> для + сбора информации об использовании памяти программой + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libnsl" name="libnsl"></a><span class= + "term"><code class="filename">libnsl</code></span> + </p> + </td> + <td> + <p> + Библиотека сетевых служб, которая в настоящее время + устарела + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libnss" name="libnss"></a><span class= + "term"><code class= + "filename">libnss_*</code></span> + </p> + </td> + <td> + <p> + Модули Name Service Switch, содержащие функции для + разрешения имен хостов, имен пользователей, имен + групп, псевдонимов, служб, протоколов и т. д. + Загружаются <code class="filename">libc</code> в + соответствии с конфигурацией в <code class= + "filename">/etc/nsswitch.conf</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libpcprofile" name= + "libpcprofile"></a><span class="term"><code class= + "filename">libpcprofile</code></span> + </p> + </td> + <td> + <p> + Содержит функции профилирования, используемые для + отслеживания времени, потраченного процессором в + конкретных строках исходного кода + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libpthread" name= + "libpthread"></a><span class="term"><code class= + "filename">libpthread</code></span> + </p> + </td> + <td> + <p> + Библиотека-заглушка, не содержащая функций. Ранее + содержала функции, обеспечивающие большинство + интерфейсов, заданных POSIX.1c Threads Extensions + (расширения реализации потоков) и интерфейсы + семафоров, указанных в POSIX.1b Real-time Extension + (расширения реального времени), теперь эти функции + находятся в <code class="filename">libc</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libresolv" name="libresolv"></a><span class= + "term"><code class= + "filename">libresolv</code></span> + </p> + </td> + <td> + <p> + Содержит функции создания, пересылки и + интерпретации пакетов, используемых на серверах + доменных имен в сети интернет + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="librt" name="librt"></a><span class= + "term"><code class="filename">librt</code></span> + </p> + </td> + <td> + <p> + Содержит функции, реализующие большую часть + интерфейсов, определяемых в POSIX.1b Real-time + Extension (расширения реального времени) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libthread_db" name= + "libthread_db"></a><span class="term"><code class= + "filename">libthread_db</code></span> + </p> + </td> + <td> + <p> + Содержит функции, полезные для сборки отладчиков + для многопоточных программ + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libutil" name="libutil"></a><span class= + "term"><code class="filename">libutil</code></span> + </p> + </td> + <td> + <p> + Библиотека-заглушка, не содержащая функций. Ранее + содержал код для <span class="quote">«<span class= + "quote">стандартных</span>»</span> функций, + используемых во многих утилитах Unix. Эти функции + теперь находятся в <code class= + "filename">libc</code> + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-zlib" name="ch-system-zlib"></a>8.6. + Zlib-1.3.1 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Zlib содержит подпрограммы сжатия и распаковки, + используемые некоторыми программами. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">6.4 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.6.1. Установка пакета Zlib + </h3> + <p> + Подготовьте Zlib к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + Удалите бесполезную статическую библиотеку: + </p> + <pre class="userinput"><kbd class= + "command">rm -fv /usr/lib/libz.a</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-zlib" name="contents-zlib"></a>8.6.2. + Содержимое пакета Zlib + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">libz.so</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm5712" name="idm5712"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="libz" name="libz"></a><span class= + "term"><code class="filename">libz</code></span> + </p> + </td> + <td> + <p> + Содержит функции сжатия и распаковки, используемые + некоторыми программами. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-bzip2" name="ch-system-bzip2"></a>8.7. + Bzip2-1.0.8 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Bzip2 содержит программы для сжатия и распаковки + файлов. Сжатие текстовых файлов с помощью <span class= + "command"><strong>bzip2</strong></span> даёт больший процент + сжатия, чем традиционный <span class= + "command"><strong>gzip</strong></span>. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">7.2 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.7.1. Установка пакета Bzip2 + </h3> + <p> + Примените патч, который установит документацию для этого + пакета: + </p> + <pre class="userinput"><kbd class= + "command">patch -Np1 -i ../bzip2-1.0.8-install_docs-1.patch</kbd></pre> + <p> + Следующая команда гарантирует установку символических ссылок + с относительным путём: + </p> + <pre class="userinput"><kbd class= + "command">sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile</kbd></pre> + <p> + Убедитесь, что справочные страницы установлены в правильном + месте: + </p> + <pre class="userinput"><kbd class= + "command">sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile</kbd></pre> + <p> + Подготовьте Bzip2 к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">make -f Makefile-libbz2_so +make clean</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметра make:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class="parameter"><code>-f + Makefile-libbz2_so</code></em></span> + </dt> + <dd> + <p> + Этот параметр позволяет выполнить сборку, с + использованием другого <code class= + "filename">Makefile</code>, в данном случае + <code class="filename">Makefile-libbz2_so</code>, + который создает динамическую библиотеку <code class= + "filename">libbz2.so</code> и связывает с ней Bzip2. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте и протестируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make PREFIX=/usr install</kbd></pre> + <p> + Установите библиотеку: + </p> + <pre class="userinput"><kbd class= + "command">cp -av libbz2.so.* /usr/lib +ln -sv libbz2.so.1.0.8 /usr/lib/libbz2.so</kbd></pre> + <p> + Установите общий бинарный файл <span class= + "command"><strong>bzip2</strong></span> в каталог + <code class="filename">/usr/bin</code>, и замените две копии + <span class="command"><strong>bzip2</strong></span> + символическими ссылками: + </p> + <pre class="userinput"><kbd class= + "command">cp -v bzip2-shared /usr/bin/bzip2 +for i in /usr/bin/{bzcat,bunzip2}; do + ln -sfv bzip2 $i +done</kbd></pre> + <p> + Удалите ненужную статическую библиотеку: + </p> + <pre class="userinput"><kbd class= + "command">rm -fv /usr/lib/libbz2.a</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-bzip2" name="contents-bzip2"></a>8.7.2. + Содержимое пакета Bzip2 + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">bunzip2 (ссылка + на bzip2), bzcat (ссылка на bzip2), bzcmp (ссылка на + bzdiff), bzdiff, bzegrep (ссылка на bzgrep), bzfgrep + (ссылка на bzgrep), bzgrep, bzip2, bzip2recover, bzless + (ссылка на bzmore) и bzmore</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libbz2.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/doc/bzip2-1.0.8</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm5788" name="idm5788"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="bunzip2" name="bunzip2"></a><span class= + "term"><span class= + "command"><strong>bunzip2</strong></span></span> + </p> + </td> + <td> + <p> + Распаковывает bzip-файлы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="bzcat" name="bzcat"></a><span class= + "term"><span class= + "command"><strong>bzcat</strong></span></span> + </p> + </td> + <td> + <p> + Распаковывает в поток стандартного вывода + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="bzcmp" name="bzcmp"></a><span class= + "term"><span class= + "command"><strong>bzcmp</strong></span></span> + </p> + </td> + <td> + <p> + Запускает программу <span class= + "command"><strong>cmp</strong></span> для bzip + файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="bzdiff" name="bzdiff"></a><span class= + "term"><span class= + "command"><strong>bzdiff</strong></span></span> + </p> + </td> + <td> + <p> + Запускает программу <span class= + "command"><strong>diff</strong></span> для bzip + файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="bzegrep" name="bzegrep"></a><span class= + "term"><span class= + "command"><strong>bzegrep</strong></span></span> + </p> + </td> + <td> + <p> + Запускает программу <span class= + "command"><strong>egrep</strong></span> для bzip + файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="bzfgrep" name="bzfgrep"></a><span class= + "term"><span class= + "command"><strong>bzfgrep</strong></span></span> + </p> + </td> + <td> + <p> + Запускает программу <span class= + "command"><strong>fgrep</strong></span> для bzip + файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="bzgrep" name="bzgrep"></a><span class= + "term"><span class= + "command"><strong>bzgrep</strong></span></span> + </p> + </td> + <td> + <p> + Запускает программу <span class= + "command"><strong>grep</strong></span> для bzip + файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="bzip2" name="bzip2"></a><span class= + "term"><span class= + "command"><strong>bzip2</strong></span></span> + </p> + </td> + <td> + <p> + Сжимает файлы, используя алгоритм сжатия текста с + блочной сортировкой Барроуза — Уилера и кодирование + Хафмана; степень сжатия лучше, чем у более + традиционных архиваторов, использующих алгоритмы + <span class="quote">«<span class= + "quote">Lempel-Ziv</span>»</span>, например + <span class="command"><strong>gzip</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="bzip2recover" name= + "bzip2recover"></a><span class="term"><span class= + "command"><strong>bzip2recover</strong></span></span> + </p> + </td> + <td> + <p> + Пытается восстанавливать данные из поврежденных + архивов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="bzless" name="bzless"></a><span class= + "term"><span class= + "command"><strong>bzless</strong></span></span> + </p> + </td> + <td> + <p> + Запускает программу <span class= + "command"><strong>less</strong></span> для bzip + файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="bzmore" name="bzmore"></a><span class= + "term"><span class= + "command"><strong>bzmore</strong></span></span> + </p> + </td> + <td> + <p> + Запускает программу <span class= + "command"><strong>more</strong></span> для bzip + файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libbz2" name="libbz2"></a><span class= + "term"><code class="filename">libbz2</code></span> + </p> + </td> + <td> + <p> + Библиотека, реализующая сжатие данных без потерь с + использованием алгоритма Барроуза-Уилера. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-xz" name="ch-system-xz"></a>8.8. Xz-5.4.6 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Xz содержит программы для сжатия и распаковки файлов. + Он предоставляет возможности для lzma и более новых форматов + сжатия xz. Сжатие текстовых файлов с помощью <span class= + "command"><strong>xz</strong></span> дает лучший процент + сжатия, чем с традиционные <span class= + "command"><strong>gzip</strong></span> или <span class= + "command"><strong>bzip2</strong></span>. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">25 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.8.1. Установка пакета Xz + </h3> + <p> + Подготовьте Xz к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --disable-static \ + --docdir=/usr/share/doc/xz-5.4.6</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-xz" name="contents-xz"></a>8.8.2. Содержимое + пакета Xz + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">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</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">liblzma.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/include/lzma и + /usr/share/doc/xz-5.4.6</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm5923" name="idm5923"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="lzcat" name="lzcat"></a><span class= + "term"><span class= + "command"><strong>lzcat</strong></span></span> + </p> + </td> + <td> + <p> + Распаковывает в стандартный поток вывода + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lzcmp" name="lzcmp"></a><span class= + "term"><span class= + "command"><strong>lzcmp</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>cmp</strong></span> для файлов + сжатых LZMA + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lzdiff" name="lzdiff"></a><span class= + "term"><span class= + "command"><strong>lzdiff</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>diff</strong></span> для файлов + сжатых LZMA + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lzegrep" name="lzegrep"></a><span class= + "term"><span class= + "command"><strong>lzegrep</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>egrep</strong></span> для файлов + сжатых LZMA + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lzfgrep" name="lzfgrep"></a><span class= + "term"><span class= + "command"><strong>lzfgrep</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>fgrep</strong></span> для файлов + сжатых LZMA + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lzgrep" name="lzgrep"></a><span class= + "term"><span class= + "command"><strong>lzgrep</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>grep</strong></span> для файлов + сжатых LZMA + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lzless" name="lzless"></a><span class= + "term"><span class= + "command"><strong>lzless</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>less</strong></span> для файлов + сжатых LZMA + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lzma" name="lzma"></a><span class= + "term"><span class= + "command"><strong>lzma</strong></span></span> + </p> + </td> + <td> + <p> + Сжимает или распаковывает файлы в формате LZMA + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lzmadec" name="lzmadec"></a><span class= + "term"><span class= + "command"><strong>lzmadec</strong></span></span> + </p> + </td> + <td> + <p> + Небольшой и быстрый декодер для файлов сжатых LZMA. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lzmainfo" name="lzmainfo"></a><span class= + "term"><span class= + "command"><strong>lzmainfo</strong></span></span> + </p> + </td> + <td> + <p> + Показывает информацию, хранящуюся в заголовке + сжатого файла LZMA + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lzmore" name="lzmore"></a><span class= + "term"><span class= + "command"><strong>lzmore</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>more</strong></span> для файлов + сжатых LZMA + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="unlzma" name="unlzma"></a><span class= + "term"><span class= + "command"><strong>unlzma</strong></span></span> + </p> + </td> + <td> + <p> + Распаковывает файлы в формате LZMA + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="unxz" name="unxz"></a><span class= + "term"><span class= + "command"><strong>unxz</strong></span></span> + </p> + </td> + <td> + <p> + Распаковывает файлы в формате XZ + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xz" name="xz"></a><span class= + "term"><span class= + "command"><strong>xz</strong></span></span> + </p> + </td> + <td> + <p> + Сжимает или распаковывает файлы в формате XZ. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xzcat" name="xzcat"></a><span class= + "term"><span class= + "command"><strong>xzcat</strong></span></span> + </p> + </td> + <td> + <p> + Распаковывает в стандартный поток вывода + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xzcmp" name="xzcmp"></a><span class= + "term"><span class= + "command"><strong>xzcmp</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>cmp</strong></span> для сжатых XZ + файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xzdec" name="xzdec"></a><span class= + "term"><span class= + "command"><strong>xzdec</strong></span></span> + </p> + </td> + <td> + <p> + Небольшой и быстрый декодер для файлов сжатых XZ + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xzdiff" name="xzdiff"></a><span class= + "term"><span class= + "command"><strong>xzdiff</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>diff</strong></span> для сжатых + XZ файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xzegrep" name="xzegrep"></a><span class= + "term"><span class= + "command"><strong>xzegrep</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>egrep</strong></span> для сжатых + XZ файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xzfgrep" name="xzfgrep"></a><span class= + "term"><span class= + "command"><strong>xzfgrep</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>fgrep</strong></span> для сжатых + XZ файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xzgrep" name="xzgrep"></a><span class= + "term"><span class= + "command"><strong>xzgrep</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>grep</strong></span> для сжатых + XZ файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xzless" name="xzless"></a><span class= + "term"><span class= + "command"><strong>xzless</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>less</strong></span> для сжатых + XZ файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xzmore" name="xzmore"></a><span class= + "term"><span class= + "command"><strong>xzmore</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>more</strong></span> для сжатых + XZ файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="liblzma" name="liblzma"></a><span class= + "term"><code class="filename">liblzma</code></span> + </p> + </td> + <td> + <p> + Библиотека, реализующая сжатие данных без потерь с + блочной сортировкой с использованием алгоритма + Lempel-Ziv-Markov + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-zstd" name="ch-system-zstd"></a>8.9. + Zstd-1.5.5 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Zstandard — это алгоритм сжатия в реальном времени, + обеспечивающий высокую степень сжатия. Он предлагает очень + широкий диапазон компромиссов между сжатием и скоростью при + поддержке очень быстрого декодера. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.5 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">77 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.9.1. Установка пакета Zstd + </h3> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class= + "command">make prefix=/usr</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + В выходных данных теста есть несколько мест, выводящих + сообщение 'failed'. Они ожидаемы, и только 'FAIL' является + фактическим сбоем теста. Сбоев при тестировании быть не + должно. + </p> + </div> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make prefix=/usr install</kbd></pre> + <p> + Удалите статическую библиотеку: + </p> + <pre class="userinput"><kbd class= + "command">rm -v /usr/lib/libzstd.a</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-zstd" name="contents-zstd"></a>8.9.2. + Содержимое пакета Zstd + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">zstd, zstdcat + (ссылка на zstd), zstdgrep, zstdless, zstdmt (ссылка на + zstd) и unzstd (ссылка на zstd)</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libzstd.so</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm6144" name="idm6144"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="zstd" name="zstd"></a><span class= + "term"><span class= + "command"><strong>zstd</strong></span></span> + </p> + </td> + <td> + <p> + Сжимает или распаковывает файлы в формате ZSTD + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zstdgrep" name="zstdgrep"></a><span class= + "term"><span class= + "command"><strong>zstdgrep</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>grep</strong></span> на сжатых + ZSTD файлах + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zstdless" name="zstdless"></a><span class= + "term"><span class= + "command"><strong>zstdless</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>less</strong></span> на сжатых + ZSTD файлах + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libzstd" name="libzstd"></a><span class= + "term"><code class="filename">libzstd</code></span> + </p> + </td> + <td> + <p> + Библиотека, реализующая сжатие данных без потерь, с + использованием алгоритма ZSTD + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-file" name="ch-system-file"></a>8.10. + File-5.45 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет File содержит утилиту для определения типа указанного + файла или файлов + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">17 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.10.1. Установка пакета File + </h3> + <p> + Подготовьте File к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-file" name="contents-file"></a>8.10.2. + Содержимое пакета File + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">file</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libmagic.so</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm6211" name="idm6211"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="file" name="file"></a><span class= + "term"><span class= + "command"><strong>file</strong></span></span> + </p> + </td> + <td> + <p> + Пытается классифицировать каждый указанный файл; он + делает это, выполняя серию тестов—тесты файловой + системы, тесты магических чисел и языковые тесты. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libmagic" name="libmagic"></a><span class= + "term"><code class= + "filename">libmagic</code></span> + </p> + </td> + <td> + <p> + Содержит функции распознавания магических чисел + используемые программой <span class= + "command"><strong>file</strong></span> + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-readline" name= + "ch-system-readline"></a>8.11. Readline-8.2 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Readline представляет собой набор библиотек, + предлагающих возможности редактирования прямо в командной + строке и просмотра истории команд. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">16 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.11.1. Установка пакета Readline + </h3> + <p> + Переустановка пакета Readline приводит к перемещению старых + библиотек в <libraryname>.old. Обычно это не вызывает + проблем, но в некоторых случаях могут возникать ошибки + линковки с <span class= + "command"><strong>ldconfig</strong></span>. Этого можно + избежать, выполнив следующие две команды sed: + </p> + <pre class="userinput"><kbd class= + "command">sed -i '/MV.*old/d' Makefile.in +sed -i '/{OLDSUFF}/c:' support/shlib-install</kbd></pre> + <p> + Теперь устраните проблему, выявленную разработчиками: + </p> + <pre class="userinput"><kbd class= + "command">patch -Np1 -i ../readline-8.2-upstream_fixes-3.patch</kbd></pre> + <p> + Подготовьте Readline к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --disable-static \ + --with-curses \ + --docdir=/usr/share/doc/readline-8.2</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение нового параметра configure:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--with-curses</code></em></span> + </dt> + <dd> + <p> + Этот параметр сообщает Readline, что он может найти + функции библиотеки termcap в библиотеке curses, а не в + отдельной библиотеке termcap. Это позволит + сгенерировать корректный файл <code class= + "filename">readline.pc</code>. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class= + "command">make SHLIB_LIBS="-lncursesw"</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметра make:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>SHLIB_LIBS="-lncursesw"</code></em></span> + </dt> + <dd> + <p> + Этот параметр принудительно линкует Readline с + библиотекой <code class="filename">libncursesw</code>. + </p> + </dd> + </dl> + </div> + <p> + С этим пакетом не поставляется набор тестов. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make SHLIB_LIBS="-lncursesw" install</kbd></pre> + <p> + По желанию установите документацию: + </p> + <pre class="userinput"><kbd class= + "command">install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.2</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-readline" name= + "contents-readline"></a>8.11.2. Содержимое пакета Readline + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">libhistory.so + и libreadline.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/include/readline и + /usr/share/doc/readline-8.2</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm6287" name="idm6287"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="libhistory" name= + "libhistory"></a><span class="term"><code class= + "filename">libhistory</code></span> + </p> + </td> + <td> + <p> + Обеспечивает согласованный пользовательский + интерфейс для вызова строк из истории + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libreadline" name= + "libreadline"></a><span class="term"><code class= + "filename">libreadline</code></span> + </p> + </td> + <td> + <p> + Предоставляет набор команд для управления текстом, + введенным в интерактивном сеансе программы. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-m4" name="ch-system-m4"></a>8.12. + M4-1.4.19 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет M4 содержит макропроцессор. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.3 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">49 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.12.1. Установка пакета M4 + </h3> + <p> + Подготовьте M4 к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-m4" name="contents-m4"></a>8.12.2. Содержимое + пакета M4 + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">m4</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm6336" name="idm6336"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="m4" name="m4"></a><span class= + "term"><span class= + "command"><strong>m4</strong></span></span> + </p> + </td> + <td> + <p> + Копирует указанные файлы, одновременно расширяя + содержащиеся в них макросы. Эти макросы являются + либо встроенными, либо определяемыми пользователем + и могут принимать любое количество аргументов. + Помимо выполнения макросов, <span class= + "command"><strong>m4</strong></span> имеет + встроенные функции для включения указанных файлов, + выполнения команд Unix, выполнения целочисленной + арифметики, манипулирования текстом, рекурсии и + т.д. Программа <span class= + "command"><strong>m4</strong></span> может + использоваться либо как интерфейс к компилятору, + либо как самостоятельный макропроцессор + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-bc" name="ch-system-bc"></a>8.13. Bc-6.7.5 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Bc содержит язык для обработки чисел произвольной + точности. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">7.8 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.13.1. Установка пакета Bc + </h3> + <p> + Подготовьте Bc к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">CC=gcc ./configure --prefix=/usr -G -O3 -r</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>CC=gcc</code></em></span> + </dt> + <dd> + <p> + Этот параметр определяет используемый компилятор + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>-G</code></em></span> + </dt> + <dd> + <p> + Пропускает часть тестов, которые не будут работать, + пока не будет установлена программа bc. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>-O3</code></em></span> + </dt> + <dd> + <p> + Указывает используемый уровень оптимизации. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>-r</code></em></span> + </dt> + <dd> + <p> + Включает использование <span class= + "application">Readline</span> для улучшения функции + редактирования строк в bc. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать bc, запустите: + </p> + <pre class="userinput"><kbd class= + "command">make test</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-bc" name="contents-bc"></a>8.13.2. Содержимое + пакета Bc + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">bc и dc</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm6403" name="idm6403"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="bc" name="bc"></a><span class= + "term"><span class= + "command"><strong>bc</strong></span></span> + </p> + </td> + <td> + <p> + Калькулятор командной строки + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="dc" name="dc"></a><span class= + "term"><span class= + "command"><strong>dc</strong></span></span> + </p> + </td> + <td> + <p> + Калькулятор командной строки с обратной польской + нотацией + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-flex" name="ch-system-flex"></a>8.14. + Flex-2.6.4 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Flex содержит инструмент для генерации программ, + распознающих заданные шаблоны в тексте + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">33 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.14.1. Установка пакета Flex + </h3> + <p> + Подготовьте Flex к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --docdir=/usr/share/doc/flex-2.6.4 \ + --disable-static</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Для тестирования пакета (около 0,5 SBU) выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + Некоторые программы пока не знают о <span class= + "command"><strong>flex</strong></span> и пытаются запустить + его предшественника - <span class= + "command"><strong>lex</strong></span>. Чтобы обеспечить их + работоспособность, создайте символическую ссылку <span class= + "command"><strong>lex</strong></span>, которая запускает + <code class="filename">flex</code> в режиме эмуляции + <span class="command"><strong>lex</strong></span>, а также + создайте символическую ссылку на справочную страницу + <span class="command"><strong>lex</strong></span>: + </p> + <pre class="userinput"><kbd class= + "command">ln -sv flex /usr/bin/lex +ln -sv flex.1 /usr/share/man/man1/lex.1</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-flex" name="contents-flex"></a>8.14.2. + Содержимое пакета Flex + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">flex, flex++ + (ссылка на flex), и lex (ссылка на flex)</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libfl.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/doc/flex-2.6.4</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm6465" name="idm6465"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="flex" name="flex"></a><span class= + "term"><span class= + "command"><strong>flex</strong></span></span> + </p> + </td> + <td> + <p> + Инструмент для создания программ, распознающих + текст по шаблону; это позволяет гибко указывать + правила поиска паттернов, устраняя необходимость + разработки специализированной программы. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="flexpp" name="flexpp"></a><span class= + "term"><span class= + "command"><strong>flex++</strong></span></span> + </p> + </td> + <td> + <p> + Расширение flex используется для генерации кода и + классов C++. Является символической ссылкой на + <span class="command"><strong>flex</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lex" name="lex"></a><span class= + "term"><span class= + "command"><strong>lex</strong></span></span> + </p> + </td> + <td> + <p> + Символическая ссылка, запускает <span class= + "command"><strong>flex</strong></span> в режиме + эмуляции <span class= + "command"><strong>lex</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libfl" name="libfl"></a><span class= + "term"><code class="filename">libfl</code></span> + </p> + </td> + <td> + <p> + Библиотека <code class="filename">flex</code> + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-tcl" name="ch-system-tcl"></a>8.15. + Tcl-8.6.13 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет <span class="application">Tcl</span> содержит Tool + Command Language, надежный скриптовый язык общего назначения. + Пакет <span class="application">Expect</span> написан на + языке <span class="application">Tcl</span> (произносится как + "тикл"). + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">2.7 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">89 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.15.1. Установка пакета Tcl + </h3> + <p> + Этот пакет и следующие два (Expect и DejaGNU) устанавливаются + для поддержки возможности тестирования Binutils, GCC и других + пакетов. Установка трех пакетов для целей тестирования может + показаться избыточной, но вы будете чувствовать себя + увереннее, когда знаете, что наиболее важные инструменты + работают правильно. + </p> + <p> + Подготовьте Tcl к компиляции: + </p> + <pre class="userinput"><kbd class="command">SRCDIR=$(pwd) +cd unix +./configure --prefix=/usr \ + --mandir=/usr/share/man</kbd></pre> + <p> + Соберите пакет: + </p> + <pre class="userinput"><kbd class="command">make + +sed -e "s|$SRCDIR/unix|/usr/lib|" \ + -e "s|$SRCDIR|/usr/include|" \ + -i tclConfig.sh + +sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.5|/usr/lib/tdbc1.1.5|" \ + -e "s|$SRCDIR/pkgs/tdbc1.1.5/generic|/usr/include|" \ + -e "s|$SRCDIR/pkgs/tdbc1.1.5/library|/usr/lib/tcl8.6|" \ + -e "s|$SRCDIR/pkgs/tdbc1.1.5|/usr/include|" \ + -i pkgs/tdbc1.1.5/tdbcConfig.sh + +sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.3|/usr/lib/itcl4.2.3|" \ + -e "s|$SRCDIR/pkgs/itcl4.2.3/generic|/usr/include|" \ + -e "s|$SRCDIR/pkgs/itcl4.2.3|/usr/include|" \ + -i pkgs/itcl4.2.3/itclConfig.sh + +unset SRCDIR</kbd></pre> + <p> + Различные инструкции <span class="quote">«<span class= + "quote">sed</span>»</span> после команды <span class= + "quote">«<span class="quote">make</span>»</span> удаляют + ссылки на каталог сборки из файлов конфигурации и заменяют их + на созданные каталоги. Это необязательно для остальной части + LFS, но может понадобиться в случае, когда пакет, собранный + позже, использует Tcl. + </p> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make test</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + Сделайте установленную библиотеку доступной для записи, чтобы + позже можно было удалить отладочные символы: + </p> + <pre class="userinput"><kbd class= + "command">chmod -v u+w /usr/lib/libtcl8.6.so</kbd></pre> + <p> + >Установите заголовочные файлы Tcl. Они потребуются для + следующего пакета - Expect. + </p> + <pre class="userinput"><kbd class= + "command">make install-private-headers</kbd></pre> + <p> + Теперь создайте необходимую символическую ссылку: + </p> + <pre class="userinput"><kbd class= + "command">ln -sfv tclsh8.6 /usr/bin/tclsh</kbd></pre> + <p> + Переименуйте справочную страницу, которая конфликтует со + справочной страницей Perl: + </p> + <pre class="userinput"><kbd class= + "command">mv /usr/share/man/man3/{Thread,Tcl_Thread}.3</kbd></pre> + <p> + При необходимости установите документацию, выполнив следующие + команды: + </p> + <pre class="userinput"><kbd class="command">cd .. +tar -xf ../tcl8.6.13-html.tar.gz --strip-components=1 +mkdir -v -p /usr/share/doc/tcl-8.6.13 +cp -v -r ./html/* /usr/share/doc/tcl-8.6.13</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-tcl" name="contents-tcl"></a>8.15.2. + Содержимое пакета Tcl + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">tclsh (ссылка + на tclsh8.6) и tclsh8.6</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">libtcl8.6.so и + libtclstub8.6.a</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm6556" name="idm6556"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="tclsh8.6" name="tclsh8.6"></a><span class= + "term"><span class= + "command"><strong>tclsh8.6</strong></span></span> + </p> + </td> + <td> + <p> + Командная оболочка Tcl + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tclsh" name="tclsh"></a><span class= + "term"><span class= + "command"><strong>tclsh</strong></span></span> + </p> + </td> + <td> + <p> + Ссылка на tclsh8.6 + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libtcl8.6.so" name= + "libtcl8.6.so"></a><span class="term"><code class= + "filename">libtcl8.6.so</code></span> + </p> + </td> + <td> + <p> + Библиотека Tcl + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libtclstub8.6.a" name= + "libtclstub8.6.a"></a><span class= + "term"><code class= + "filename">libtclstub8.6.a</code></span> + </p> + </td> + <td> + <p> + Библиотека-заглушка Tcl + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-expect" name="ch-system-expect"></a>8.16. + Expect-5.45.4 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет <span class="application">Expect</span> содержит + инструменты для автоматизации работы интерактивных + приложений, таких как <span class= + "command"><strong>telnet</strong></span>, <span class= + "command"><strong>ftp</strong></span>, <span class= + "command"><strong>passwd</strong></span>, <span class= + "command"><strong>fsck</strong></span>, <span class= + "command"><strong>rlogin</strong></span> и <span class= + "command"><strong>tip</strong></span>, с помощью скриптовых + диалогов и макросов. Кроме того <span class= + "application">Expect</span> полезен для тестирования + перечисленных выше приложений, а также для решения сложных + задач взаимодействия с другими средствами. Фреймворк + <span class="application">DejaGnu</span> написан на языке + <span class="application">Expect</span>. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.2 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">3.9 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.16.1. Установка пакета Expect + </h3> + <p> + Expect для работы необходим псевдотерминал(PTY). Убедитесь, + что PTY работают правильно в среде chroot, выполнив простой + тест: + </p> + <pre class="userinput"><kbd class= + "command">python3 -c 'from pty import spawn; spawn(["echo", "ok"])'</kbd></pre> + <p> + Эта команда должна вывести <code class= + "computeroutput">ok</code>. Если вместо этого вывод содержит + <code class="computeroutput">OSError: out of pty + devices</code>, то среда не настроена для правильной работы + PTY. Вам необходимо выйти из среды chroot, ещё раз прочитать + <a class="xref" href="#ch-tools-kernfs" title= + "7.3. Подготовка виртуальных файловых систем ядра">Раздел 7.3, + «Подготовка виртуальных файловых систем ядра»</a> и + убедиться, что файловая система <code class= + "systemitem">devpts</code> (и другие файловые системы + виртуального ядра) смонтирована правильно. Затем повторно + войдите в среду chroot, следуя инструкции <a class="xref" + href="#ch-tools-chroot" title= + "7.4. Вход в окружение Chroot">Раздел 7.4, «Вход в + окружение Chroot»</a>. Эту проблему необходимо решить, прежде + чем вы продолжите, иначе наборы тестов, зависимые от Expect + (например, наборы тестов Bash, Binutils, GCC, GDBM и, + конечно, самого Expect), потерпят фатальный сбой, а также + могут произойти другие незначительные сбои. + </p> + <p> + Подготовьте Expect к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --with-tcl=/usr/lib \ + --enable-shared \ + --mandir=/usr/share/man \ + --with-tclinclude=/usr/include</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--with-tcl=/usr/lib</code></em></span> + </dt> + <dd> + <p> + Этот параметр необходим для указания <span class= + "command"><strong>configure</strong></span> где + находится скрипт <span class= + "command"><strong>tclConfig.sh</strong></span>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--with-tclinclude=/usr/include</code></em></span> + </dt> + <dd> + <p> + Этот параметр явно указывает Expect, где искать + внутренние заголовки Tcl. + </p> + </dd> + </dl> + </div> + <p> + Соберите пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make test</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class="command">make install +ln -svf expect5.45.4/libexpect5.45.4.so /usr/lib</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-expect" name="contents-expect"></a>8.16.2. + Содержимое пакета Expect + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">expect</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libexpect5.45.4.so</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm6654" name="idm6654"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="expect" name="expect"></a><span class= + "term"><span class= + "command"><strong>expect</strong></span></span> + </p> + </td> + <td> + <p> + Взаимодействует с другими интерактивными + программами в соответствии со сценарием + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libexpect" name="libexpect"></a><span class= + "term"><code class= + "filename">libexpect-5.45.4.so</code></span> + </p> + </td> + <td> + <p> + Содержит функции, которые позволяют использовать + Expect в качестве расширения Tcl или + непосредственно из C или C++ (без Tcl). + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-dejagnu" name= + "ch-system-dejagnu"></a>8.17. DejaGNU-1.6.3 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет <span class="application">DejaGnu</span> содержит + фреймворк для запуска наборов тестов на инструментах GNU. Он + написан на <span class= + "command"><strong>expect</strong></span>, который в свою + очередь использует <span class="application">Tcl</span> + (командный язык инструментов). + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">6.9 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.17.1. Установка пакета DejaGNU + </h3> + <p> + Разработчики рекомендуют собирать DejaGNU в отдельном + каталоге: + </p> + <pre class="userinput"><kbd class="command">mkdir -v build +cd build</kbd></pre> + <p> + Подготовьте DejaGNU к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">../configure --prefix=/usr +makeinfo --html --no-split -o doc/dejagnu.html ../doc/dejagnu.texi +makeinfo --plaintext -o doc/dejagnu.txt ../doc/dejagnu.texi</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class="command">make install +install -v -dm755 /usr/share/doc/dejagnu-1.6.3 +install -v -m644 doc/dejagnu.{html,txt} /usr/share/doc/dejagnu-1.6.3</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-dejagnu" name="contents-dejagnu"></a>8.17.2. + Содержимое пакета DejaGNU + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">dejagnu и + runtest</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm6706" name="idm6706"></a>Short Descriptions + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="dejagnu" name="dejagnu"></a><span class= + "term"><span class= + "command"><strong>dejagnu</strong></span></span> + </p> + </td> + <td> + <p> + Вспомогательная программа запуска команд DejaGNU + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="runtest" name="runtest"></a><span class= + "term"><span class= + "command"><strong>runtest</strong></span></span> + </p> + </td> + <td> + <p> + Скрипт-обертка, который находит соответствующую + оболочку <span class= + "command"><strong>expect</strong></span> и + запускает DejaGnu + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-pkgconf" name= + "ch-system-pkgconf"></a>8.18. Pkgconf-2.1.1 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет pkgconf является преемником pkg-config и содержит + инструмент, который позволяет передавать пути установки или + пути к библиотекам для инструментов сборки на этапе настройки + (configure) и сборки(make) пакетов. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">4.6 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.18.1. Установка пакета Pkgconf + </h3> + <p> + Подготовьте Pkgconf к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --disable-static \ + --docdir=/usr/share/doc/pkgconf-2.1.1</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + Для обеспечения совместимости с исходным Pkg-config, создайте + две символические ссылки: + </p> + <pre class="userinput"><kbd class= + "command">ln -sv pkgconf /usr/bin/pkg-config +ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-pkgconf" name="contents-pkgconf"></a>8.18.2. + Содержимое пакета Pkgconf + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">pkgconf, + pkg-config (ссылка на pkgconf) и bomtool</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libpkgconf.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/doc/pkgconf-2.1.1</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm6760" name="idm6760"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="pkgconf" name="pkgconf"></a><span class= + "term"><span class= + "command"><strong>pkgconf</strong></span></span> + </p> + </td> + <td> + <p> + Возвращает метаданные указанной библиотеки или + пакета + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="bomtool" name="bomtool"></a><span class= + "term"><span class= + "command"><strong>bomtool</strong></span></span> + </p> + </td> + <td> + <p> + Генерирует спецификацию программного обеспечения из + файлов pkg-config с расширением .pc + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libpkgconf" name= + "libpkgconf"></a><span class="term"><code class= + "filename">libpkgconf</code></span> + </p> + </td> + <td> + <p> + Содержит большую часть функций pkgconf, позволяя + другим инструментам, таким как IDE и компиляторы, + использовать его фреймворки + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-binutils" name= + "ch-system-binutils"></a>8.19. Binutils-2.42 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Binutils содержит компоновщик, ассемблер и другие + инструменты для работы с объектными файлами. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">2.2 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">2.7 + GB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.19.1. Установка пакета Binutils + </h3> + <p> + Документация Binutils рекомендует выполнять компиляцию в + отдельном каталоге: + </p> + <pre class="userinput"><kbd class="command">mkdir -v build +cd build</kbd></pre> + <p> + Подготовьте Binutils к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">../configure --prefix=/usr \ + --sysconfdir=/etc \ + --enable-gold \ + --enable-ld=default \ + --enable-plugins \ + --enable-shared \ + --disable-werror \ + --enable-64-bit-bfd \ + --with-system-zlib \ + --enable-default-hash-style=gnu</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение новых параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-gold</code></em></span> + </dt> + <dd> + <p> + Собирает компоновщик gold и устанавливает его как + ld.gold (вместе с компоновщиком по умолчанию). + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-ld=default</code></em></span> + </dt> + <dd> + <p> + Собирает оригинальный компоновщик bfd и устанавливает + его как ld (компоновщик по умолчанию) и как ld.bfd + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-plugins</code></em></span> + </dt> + <dd> + <p> + Включает поддержку плагинов для компоновщика. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--with-system-zlib</code></em></span> + </dt> + <dd> + <p> + Указывает, что необходимо использовать установленную + библиотеку zlib вместо сборки собственной. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class= + "command">make tooldir=/usr</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметра make:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>tooldir=/usr</code></em></span> + </dt> + <dd> + <p> + Обычно для tooldir (каталога, в котором будут + расположены исполняемые файлы) установлено значение + <code class= + "filename">$(exec_prefix)/$(target_alias)</code>. + Например, машины x86_64 преобразуют это значение в + <code class= + "filename">/usr/x86_64-unknown-linux-gnu</code>. + Поскольку это пользовательская система, то целевой + каталог в <code class="filename">/usr</code> не + требуется. Параметр <code class= + "filename">$(exec_prefix)/$(target_alias)</code> + использовался, если бы система применялась для + кросс-компиляции (например, при компиляции пакета на + компьютере Intel, который генерирует код, который может + быть выполнен на компьютерах PowerPC). + </p> + </dd> + </dl> + </div> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + Набор тестов для Binutils в этом разделе считается + критически важным. Ни в коем случае не пропускайте его. + </p> + </div> + <p> + Выполните тестирование: + </p> + <pre class="userinput"><kbd class= + "command">make -k check</kbd></pre> + <p> + Чтобы получить список неудачных тестов, запустите: + </p> + <pre class="userinput"><kbd class= + "command">grep '^FAIL:' $(find -name '*.log')</kbd></pre> + <p> + Двенадцать тестов завершаются неудачно в наборе тестов gold, + когда GCC собирается с параметрами <code class= + "option">--enable-default-pie</code> и <code class= + "option">--enable-default-ssp</code>. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make tooldir=/usr install</kbd></pre> + <p> + Удалите бесполезные статические библиотеки: + </p> + <pre class="userinput"><kbd class= + "command">rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-binutils" name= + "contents-binutils"></a>8.19.2. Содержимое пакета Binutils + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">addr2line, ar, + as, c++filt, dwp, elfedit, gprof, gprofng, ld, ld.bfd, + ld.gold, nm, objcopy, objdump, ranlib, readelf, size, + strings и strip</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">libbfd.so, + libctf.so, libctf-nobfd.so, libgprofng.so, libopcodes.so + и libsframe.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/lib/ldscripts</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm6867" name="idm6867"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="addr2line" name="addr2line"></a><span class= + "term"><span class= + "command"><strong>addr2line</strong></span></span> + </p> + </td> + <td> + <p> + Переводит адреса программ в имена файлов и номера + строк; учитывая адрес и имя исполняемого файла, + использует отладочную информацию в исполняемом + файле, для определения файла исходного кода и + номера строки, ассоциированной с адресом + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ar" name="ar"></a><span class= + "term"><span class= + "command"><strong>ar</strong></span></span> + </p> + </td> + <td> + <p> + Создаёт, изменяет и распаковывает архивы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="as" name="as"></a><span class= + "term"><span class= + "command"><strong>as</strong></span></span> + </p> + </td> + <td> + <p> + Ассемблер, который собирает результат работы + <span class="command"><strong>gcc</strong></span> в + объектные файлы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="c-filt" name="c-filt"></a><span class= + "term"><span class= + "command"><strong>c++filt</strong></span></span> + </p> + </td> + <td> + <p> + Используется компоновщиком для исправления символов + C++ и Java и предотвращения конфликтов + перегруженных функций. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="dwp" name="dwp"></a><span class= + "term"><span class= + "command"><strong>dwp</strong></span></span> + </p> + </td> + <td> + <p> + Утилита для упаковки DWARF + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="elfedit" name="elfedit"></a><span class= + "term"><span class= + "command"><strong>elfedit</strong></span></span> + </p> + </td> + <td> + <p> + Обновляет ELF заголовки в ELF файлах + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gprof" name="gprof"></a><span class= + "term"><span class= + "command"><strong>gprof</strong></span></span> + </p> + </td> + <td> + <p> + Отображает в графическом виде информацию о + профилировании + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gprofng" name="gprofng"></a><span class= + "term"><span class= + "command"><strong>gprofng</strong></span></span> + </p> + </td> + <td> + <p> + Собирает и анализирует данные о производительности + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ld" name="ld"></a><span class= + "term"><span class= + "command"><strong>ld</strong></span></span> + </p> + </td> + <td> + <p> + Компоновщик, который объединяет несколько объектных + и архивных файлов в один файл, перемещая их данные + и связывая символическими ссылками + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ld.gold" name="ld.gold"></a><span class= + "term"><span class= + "command"><strong>ld.gold</strong></span></span> + </p> + </td> + <td> + <p> + Урезанная версия ld, которая поддерживает только + формат объектных файлов elf + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ld.bfd" name="ld.bfd"></a><span class= + "term"><span class= + "command"><strong>ld.bfd</strong></span></span> + </p> + </td> + <td> + <p> + Жесткая ссылка на <span class= + "command"><strong>ld</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="nm" name="nm"></a><span class= + "term"><span class= + "command"><strong>nm</strong></span></span> + </p> + </td> + <td> + <p> + Выводит список символов, используемых в данном + объектном файле + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="objcopy" name="objcopy"></a><span class= + "term"><span class= + "command"><strong>objcopy</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует один тип объектного файла в другой + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="objdump" name="objdump"></a><span class= + "term"><span class= + "command"><strong>objdump</strong></span></span> + </p> + </td> + <td> + <p> + Отображает информацию о данном объектном файле; + можно указать параметры, определяющие, какая + конкретно информация будет отображаться. + Отображаемая информация полезна для программистов, + которые работают над инструментами, используемыми + при компиляции + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ranlib" name="ranlib"></a><span class= + "term"><span class= + "command"><strong>ranlib</strong></span></span> + </p> + </td> + <td> + <p> + Создает индекс содержимого архива и сохраняет его в + архиве; в индексе перечислены все символы, + определенные в перемещаемых объектных файлах, + содержащихся в архиве + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="readelf" name="readelf"></a><span class= + "term"><span class= + "command"><strong>readelf</strong></span></span> + </p> + </td> + <td> + <p> + Отображает информацию о двоичных файлах типа ELF + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="size" name="size"></a><span class= + "term"><span class= + "command"><strong>size</strong></span></span> + </p> + </td> + <td> + <p> + Отображает размеры секций и общий размер указанных + объектных файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="strings" name="strings"></a><span class= + "term"><span class= + "command"><strong>strings</strong></span></span> + </p> + </td> + <td> + <p> + Выводит для каждого указанного файла + последовательности печатаемых символов, которые + имеют по крайней мере указанную длину (по умолчанию + четыре); для объектных файлов по умолчанию + печатаются только строки из секций инициализации и + загрузки, в то время как для других файлов он + сканирует весь файл. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="strip" name="strip"></a><span class= + "term"><span class= + "command"><strong>strip</strong></span></span> + </p> + </td> + <td> + <p> + Удаляет символы из объектных файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libbfd" name="libbfd"></a><span class= + "term"><code class="filename">libbfd</code></span> + </p> + </td> + <td> + <p> + Библиотека дескрипторов двоичных файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libctf" name="libctf"></a><span class= + "term"><code class="filename">libctf</code></span> + </p> + </td> + <td> + <p> + Библиотека отладки формата Compat ANSI-C Type + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libctf-nobfd" name= + "libctf-nobfd"></a><span class="term"><code class= + "filename">libctf-nobfd</code></span> + </p> + </td> + <td> + <p> + Вариант libctf, не использующий функциональность + libbfd. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libgprofng" name= + "libgprofng"></a><span class="term"><code class= + "filename">libgprofng</code></span> + </p> + </td> + <td> + <p> + Библиотека, содержащая большинство подпрограмм, + используемых <span class= + "command"><strong>gprofng</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libopcodes" name= + "libopcodes"></a><span class="term"><code class= + "filename">libopcodes</code></span> + </p> + </td> + <td> + <p> + Библиотека для работы с опкодами—<span class= + "quote">«<span class= + "quote">читаемыми</span>»</span> версиями + инструкций для процессора. Используется для сборки + таких утилит как <span class= + "command"><strong>objdump</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libsframe" name="libsframe"></a><span class= + "term"><code class= + "filename">libsframe</code></span> + </p> + </td> + <td> + <p> + Библиотека для поддержки обратной + онлайн-трассировки с использованием простого + декодера разделов .sframe. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-gmp" name="ch-system-gmp"></a>8.20. + GMP-6.3.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет GMP содержит математические библиотеки. Они содержат + полезные функции для арифметики с произвольной точностью. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.3 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">54 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.20.1. Установка пакета GMP + </h3> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Если вы выполняете сборку для 32-разрядной архитектуры x86, + но ваш процессор, способен выполнять 64-разрядный код, + <span class="emphasis"><em>и</em></span> вы указали в + переменных окружения <code class="envar">CFLAGS</code>, + скрипт configure попытается выполнить настройку для + 64-разрядной системы и завершится ошибкой. Чтобы избежать + этого, необходимо вызвать команду configure с приведенным + ниже параметром + </p> + <pre class="userinput"><kbd class="command"><em class= + "parameter"><code>ABI=32</code></em> ./configure ...</kbd></pre> + </div> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Настройки GMP по умолчанию собирают библиотеки, + оптимизированные для процессора хоста. Если требуются + библиотеки, подходящие для процессоров с меньшей + производительностью, чем у процессора хоста, можно собрать + общие библиотеки, добавив параметр <code class= + "option">--host=none-linux-gnu</code> в команде + <span class="command"><strong>configure</strong></span>. + </p> + </div> + <p> + Подготовьте GMP к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --enable-cxx \ + --disable-static \ + --docdir=/usr/share/doc/gmp-6.3.0</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение новых параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-cxx</code></em></span> + </dt> + <dd> + <p> + Этот параметр включает поддержку C++ + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--docdir=/usr/share/doc/gmp-6.3.0</code></em></span> + </dt> + <dd> + <p> + Эта переменная указывает местоположение для + документации. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет и сгенерируйте HTML-документацию: + </p> + <pre class="userinput"><kbd class="command">make +make html</kbd></pre> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + Набор тестов для GMP в этом разделе считается критически + важным. Ни в коем случае не пропускайте его. + </p> + </div> + <p> + Проверьте результаты: + </p> + <pre class="userinput"><kbd class= + "command">make check 2>&1 | tee gmp-check-log</kbd></pre> + <div class="admon caution"> + <h3> + Внимание + </h3> + <p> + Код в GMP сильно оптимизирован для процессора, на котором + он собран. Иногда код, определяющий процессор, неверно + определяет возможности системы, и в тестах или других + приложениях, использующих библиотеки gmp, возникают ошибки + с сообщением <code class="computeroutput">Illegal + instruction</code>. В этом случае gmp следует + переконфигурировать с параметром <code class= + "option">--host=none-linux-gnu</code> и пересобрать. + </p> + </div> + <p> + Убедитесь, что все 199 тестов в наборе пройдены. Проверьте + результат, выполнив следующую команду: + </p> + <pre class="userinput"><kbd class= + "command">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</kbd></pre> + <p> + Установите пакет и его документацию: + </p> + <pre class="userinput"><kbd class="command">make install +make install-html</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-gmp" name="contents-gmp"></a>8.20.2. + Содержимое пакета GMP + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">libgmp.so и + libgmpxx.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/doc/gmp-6.3.0</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm7116" name="idm7116"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="libgmp" name="libgmp"></a><span class= + "term"><code class="filename">libgmp</code></span> + </p> + </td> + <td> + <p> + Содержит точные математические функции + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libgmpxx" name="libgmpxx"></a><span class= + "term"><code class= + "filename">libgmpxx</code></span> + </p> + </td> + <td> + <p> + Содержит точные математические функции C++ + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-mpfr" name="ch-system-mpfr"></a>8.21. + MPFR-4.2.1 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет MPFR содержит функции для двоичных вычислений с + плавающей запятой произвольной точности. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.3 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">44 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.21.1. Установка пакета MPFR + </h3> + <p> + Подготовьте MPFR к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --disable-static \ + --enable-thread-safe \ + --docdir=/usr/share/doc/mpfr-4.2.1</kbd></pre> + <p> + Скомпилируйте пакет и сгенерируйте HTML-документацию: + </p> + <pre class="userinput"><kbd class="command">make +make html</kbd></pre> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + Набор тестов для MPFR в этом разделе считается критически + важным. Ни в коем случае не пропускайте его. + </p> + </div> + <p> + Выполните тестирование и убедитесь, что все 198 тестов + пройдены: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет и документацию к нему: + </p> + <pre class="userinput"><kbd class="command">make install +make install-html</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-mpfr" name="contents-mpfr"></a>8.21.2. + Содержимое пакета MPFR + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libmpfr.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/doc/mpfr-4.2.1</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm7169" name="idm7169"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="libmpfr" name="libmpfr"></a><span class= + "term"><code class="filename">libmpfr</code></span> + </p> + </td> + <td> + <p> + Содержит математические функции с произвольной + точностью + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-mpc" name="ch-system-mpc"></a>8.22. + MPC-1.3.1 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет MPC содержит библиотеку для арифметики комплексных + чисел с высокой точностью и правильным округлением + результата. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">22 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.22.1. Установка пакета MPC + </h3> + <p> + Подготовьте MPC к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --disable-static \ + --docdir=/usr/share/doc/mpc-1.3.1</kbd></pre> + <p> + Скомпилируйте пакет и сгенерируйте HTML-документацию: + </p> + <pre class="userinput"><kbd class="command">make +make html</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет и документацию к нему: + </p> + <pre class="userinput"><kbd class="command">make install +make install-html</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-mpc" name="contents-mpc"></a>8.22.2. + Содержимое пакета MPC + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libmpc.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/doc/mpc-1.3.1</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm7213" name="idm7213"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="libmpc" name="libmpc"></a><span class= + "term"><code class="filename">libmpc</code></span> + </p> + </td> + <td> + <p> + Содержит сложные математические функции + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-attr" name="ch-system-attr"></a>8.23. + Attr-2.5.2 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Attr содержит утилиты для управления расширенными + атрибутами объектов файловой системы. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">4.2 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.23.1. Установка пакета Attr + </h3> + <p> + Подготовьте Attr к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --disable-static \ + --sysconfdir=/etc \ + --docdir=/usr/share/doc/attr-2.5.2</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Тесты необходимо запускать в файловой системе, которая + поддерживает расширенные атрибуты, например, ext2, ext3 или + ext4. Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-attr" name="contents-attr"></a>8.23.2. + Содержимое пакета Attr + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">attr, getfattr, + и setfattr</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libattr.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/include/attr и + /usr/share/doc/attr-2.5.2</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm7259" name="idm7259"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="attr" name="attr"></a><span class= + "term"><span class= + "command"><strong>attr</strong></span></span> + </p> + </td> + <td> + <p> + Расширяет атрибуты объектов файловой системы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="getfattr" name="getfattr"></a><span class= + "term"><span class= + "command"><strong>getfattr</strong></span></span> + </p> + </td> + <td> + <p> + Получает расширенные атрибуты объектов файловой + системы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="setfattr" name="setfattr"></a><span class= + "term"><span class= + "command"><strong>setfattr</strong></span></span> + </p> + </td> + <td> + <p> + Устанавливает расширенные атрибуты объектов + файловой системы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libattr" name="libattr"></a><span class= + "term"><code class="filename">libattr</code></span> + </p> + </td> + <td> + <p> + Содержит библиотечные функции для управления + расширенными атрибутами. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-acl" name="ch-system-acl"></a>8.24. + Acl-2.3.2 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Acl содержит утилиты для администрирования списков + контроля доступа, которые используются для определения + расширенных дискреционных прав доступа к файлам и каталогам. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">6.3 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.24.1. Установка пакета Acl + </h3> + <p> + Подготовьте Acl к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --disable-static \ + --docdir=/usr/share/doc/acl-2.3.2</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Тесты Acl необходимо запускать в файловой системе, + поддерживающей списки контроля доступа, после сборки пакета + <span class="application">Coreutils</span> с использованием + библиотек Acl. По желанию вернитесь к этому пакету и + запустите <span class="command"><strong>make + check</strong></span> после того, как будет собран пакет + <span class="application">Coreutils</span>. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-acl" name="contents-acl"></a>8.24.2. + Содержимое пакета Acl + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">chacl, getfacl, + и setfacl</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libacl.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/include/acl и + /usr/share/doc/acl-2.3.2</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm7327" name="idm7327"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="chacl" name="chacl"></a><span class= + "term"><span class= + "command"><strong>chacl</strong></span></span> + </p> + </td> + <td> + <p> + Изменяет список контроля доступа файла или каталога + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="getfacl" name="getfacl"></a><span class= + "term"><span class= + "command"><strong>getfacl</strong></span></span> + </p> + </td> + <td> + <p> + Получает списки контроля доступа файла + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="setfacl" name="setfacl"></a><span class= + "term"><span class= + "command"><strong>setfacl</strong></span></span> + </p> + </td> + <td> + <p> + Устанавливает списки контроля доступа к файлам + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libacl" name="libacl"></a><span class= + "term"><code class="filename">libacl</code></span> + </p> + </td> + <td> + <p> + Содержит библиотечные функции для управления + списками контроля доступа. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-libcap" name="ch-system-libcap"></a>8.25. + Libcap-2.69 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Libcap реализует интерфейсы пользовательского + пространства для возможностей POSIX 1003.1e, доступных в + ядрах Linux. Эти возможности разделяют полномочия + суперпользователя root на набор отдельных привилегий. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">2.9 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.25.1. Установка пакета Libcap + </h3> + <p> + Запретите установку статических библиотек: + </p> + <pre class="userinput"><kbd class= + "command">sed -i '/install -m.*STA/d' libcap/Makefile</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class= + "command">make prefix=/usr lib=lib</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение опции make:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>lib=lib</code></em></span> + </dt> + <dd> + <p> + Этот параметр устанавливает библиотеки в каталог + <code class="filename">/usr/lib</code>, а не + <code class="filename">/usr/lib64</code> на x86_64. На + x86 это никак не влияет. + </p> + </dd> + </dl> + </div> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make test</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make prefix=/usr lib=lib install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-libcap" name="contents-libcap"></a>8.25.2. + Содержимое пакета Libcap + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">capsh, getcap, + getpcaps и setcap</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">libcap.so и + libpsx.so</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm7401" name="idm7401"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="capsh" name="capsh"></a><span class= + "term"><span class= + "command"><strong>capsh</strong></span></span> + </p> + </td> + <td> + <p> + Обёртка к оболочке для исследования и ограничения + поддержки возможностей Linux + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="getcap" name="getcap"></a><span class= + "term"><span class= + "command"><strong>getcap</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет возможности файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="getpcaps" name="getpcaps"></a><span class= + "term"><span class= + "command"><strong>getpcaps</strong></span></span> + </p> + </td> + <td> + <p> + Отображает возможности запрашиваемого процесса + (процессов) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="setcap" name="setcap"></a><span class= + "term"><span class= + "command"><strong>setcap</strong></span></span> + </p> + </td> + <td> + <p> + Устанавливает возможности файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libcap" name="libcap"></a><span class= + "term"><code class="filename">libcap</code></span> + </p> + </td> + <td> + <p> + Содержит функции для управления возможностями POSIX + 1003.1e. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libpsx" name="libpsx"></a><span class= + "term"><code class="filename">libpsx</code></span> + </p> + </td> + <td> + <p> + Содержит функции для поддержки семантики POSIX для + системных вызовов, связанных с библиотекой pthread + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-libxcrypt" name= + "ch-system-libxcrypt"></a>8.26. Libxcrypt-4.4.36 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Libxcrypt содержит современную библиотеку для + одностороннего хэширования паролей. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">15 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.26.1. Установка пакета Libxcrypt + </h3> + <p> + Подготовьте Libxcrypt к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --enable-hashes=strong,glibc \ + --enable-obsolete-api=no \ + --disable-static \ + --disable-failure-tokens</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение новых параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-hashes=strong,glibc</code></em></span> + </dt> + <dd> + <p> + Создает хэши, используя надежные алгоритмы хэширования, + рекомендуемые для безопасности, и алгоритмы + хэширования, предоставляемые традиционной библиотекой + Glibc <code class="systemitem">libcrypt</code> для + совместимости. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-obsolete-api=no</code></em></span> + </dt> + <dd> + <p> + Отключает устаревшие функции API. Они не нужны для + современной системы Linux, собранной из исходного кода. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-failure-tokens</code></em></span> + </dt> + <dd> + <p> + Отключает признак токена сбоя. Он необходим для + совместимости с традиционными хэш-библиотеками + некоторых платформ, но система Linux, основанная на + Glibc, в нем не нуждается. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + С помощью приведенных выше инструкций были отключены + устаревшие функции API, поскольку ни один пакет, + установленный путем компиляции из исходных кодов, не будет + связываться с ними во время выполнения. Однако известные + двоичные приложения, которые используют эти функции, + требуют ABI версии 1. Если вам необходим этот функционал + для какого-либо приложения, предоставляемого только в + бинарном виде, или для совместимости с LSB, соберите пакет + заново с помощью следующих команд: + </p> + <pre class="userinput"><kbd class="command">make distclean +./configure --prefix=/usr \ + --enable-hashes=strong,glibc \ + --enable-obsolete-api=glibc \ + --disable-static \ + --disable-failure-tokens +make +cp -av --remove-destination .libs/libcrypt.so.1* /usr/lib</kbd></pre> + </div> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-libxcrypt" name= + "contents-libxcrypt"></a>8.26.2. Содержимое пакета Libxcrypt + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libcrypt.so</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm7500" name="idm7500"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="libcrypt" name="libcrypt"></a><span class= + "term"><code class= + "filename">libcrypt</code></span> + </p> + </td> + <td> + <p> + Содержит функции для хэширования паролей + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-shadow" name="ch-system-shadow"></a>8.27. + Shadow-4.14.5 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Shadow содержит программы для безопасной обработки + паролей. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">49 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.27.1. Установка пакета Shadow + </h3> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Если вы хотите принудительно использовать надежные пароли, + обратитесь к инструкции <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/cracklib.html"> + https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/cracklib.html</a> + для установки CrackLib перед сборкой. Затем добавьте + параметр <em class= + "parameter"><code>--with-libcrack</code></em> в приведенную + ниже команду <span class= + "command"><strong>configure</strong></span>. + </p> + </div> + <p> + Отключите установку <span class= + "command"><strong>groups</strong></span> и ее справочных + страниц, так как Coreutils предоставляет версию лучше. Кроме + того, запретите установку страниц руководств, так как они + были установлены в <a class="xref" href= + "#ch-system-man-pages" title= + "8.3. Man-pages-6.06">Раздел 8.3, «Man-pages-6.06»</a>: + </p> + <pre class="userinput"><kbd class= + "command">sed -i 's/groups$(EXEEXT) //' src/Makefile.in +find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \; +find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \; +find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</kbd></pre> + <p> + <a id="shadow-login_defs" name="shadow-login_defs"></a>Вместо + используемого по умолчанию метода <span class= + "emphasis"><em>crypt</em></span>, используйте более + безопасный метод шифрования паролей <span class= + "emphasis"><em>YESCRYPT</em></span>, который также позволяет + использовать пароли длиннее 8 символов. Также необходимо + изменить устаревшее местоположение для почтовых ящиков + пользователей <code class="filename">/var/spool/mail</code>, + которое Shadow использует по умолчанию, на используемое в + настоящее время <code class="filename">/var/mail</code>. И + удалите <code class="filename">/bin</code> и <code class= + "filename">/sbin</code> из <code class="envar">PATH</code>, + поскольку они являются просто символическими ссылками на их + аналоги в <code class="filename">/usr</code>. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Если вы по какой-либо причине хотите включить <code class= + "filename">/bin</code> и/или <code class= + "filename">/sbin</code> в <code class="envar">PATH</code>, + измените <code class="envar">PATH</code> в файле + <code class="filename">.bashrc</code> после сборки LFS. + </p> + </div> + <pre class="userinput"><kbd class= + "command">sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD YESCRYPT:' \ + -e 's:/var/spool/mail:/var/mail:' \ + -e '/PATH=/{s@/sbin:@@;s@/bin:@@}' \ + -i etc/login.defs</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Если вы решили собрать Shadow с поддержкой Cracklib, + выполните эту команду: + </p> + <pre class="userinput"><kbd class= + "command">sed -i 's:DICTPATH.*:DICTPATH\t/lib/cracklib/pw_dict:' etc/login.defs</kbd></pre> + </div> + <p> + Подготовьте Shadow к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">touch /usr/bin/passwd +./configure --sysconfdir=/etc \ + --disable-static \ + --with-{b,yes}crypt \ + --without-libbsd \ + --with-group-name-max-length=32</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение новых параметров конфигурации:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><span class="command"><strong>touch + /usr/bin/passwd</strong></span></span> + </dt> + <dd> + <p> + Файл <code class="filename">/usr/bin/passwd</code> + должен существовать, потому что его местоположение + жестко задано в некоторых программах; если он не + существует, скрипт установки создаст его не в том + месте. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--with-{b,yes}crypt</code></em></span> + </dt> + <dd> + <p> + Оболочка расширяет это значение до двух параметров: + <em class="parameter"><code>--with-bcrypt</code></em> и + <em class= + "parameter"><code>--with-yescrypt</code></em>. Они + позволяют Shadow использовать алгоритмы Bcrypt и + Yescrypt, реализованные в <span class= + "application">Libxcrypt</span>, для хеширования + паролей. Эти алгоритмы более безопасны (в частности, + гораздо более устойчивы к атакам с использованием + графических процессоров), чем традиционные алгоритмы + SHA. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--with-group-name-max-length=32</code></em></span> + </dt> + <dd> + <p> + Максимально допустимая длина имени пользователя + составляет 32 символа. Сделайте такую же длину для + названия группы. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--without-libbsd</code></em></span> + </dt> + <dd> + <p> + Не используйте функцию readpassphrase из иблиотеки + libbsd, которой нет в LFS. Вместо этого используйте + внутреннюю копию. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + С этим пакетом не поставляется набор тестов. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make exec_prefix=/usr install +make -C man install-man</kbd></pre> + </div> + <div class="configuration" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="conf-shadow" name="conf-shadow"></a>8.27.2. Настройка + Shadow + </h3> + <p> + Этот пакет содержит утилиты для добавления, изменения и + удаления пользователей и групп; установки и изменения их + паролей; и выполнения других задач администрирования. Полное + объяснение того, что означает <span class= + "emphasis"><em>password shadowing</em></span>, см. в файле + doc/HOWTO в дереве распакованных исходных текстов. При + использовании Shadow имейте в виду, что программы, которым + необходимо проверять пароли (дисплейные менеджеры, + FTP-программы, демоны pop3 и т.д.), должны быть совместимы с + Shadow. То есть они должны уметь работать с теневыми + паролями. + </p> + <p> + Чтобы включить поддержку теневых паролей, выполните следующую + команду:: + </p> + <pre class="userinput"><kbd class="command">pwconv</kbd></pre> + <p> + Чтобы включить использование теневых паролей для групп, + запустите: + </p> + <pre class="userinput"><kbd class="command">grpconv</kbd></pre> + <p> + Конфигурация Shadow по умолчанию для утилиты <span class= + "command"><strong>useradd</strong></span> имеет несколько + особенностей, требующих пояснения. Во-первых, по умолчанию + утилита <span class="command"><strong>useradd</strong></span> + создает пользователя и группу с тем же названием, что и имя + пользователя. По умолчанию, идентификатора пользователя (UID) + и идентификатора группы (GID) начинаются с 1000. Это + означает, что если вы не передадите дополнительные параметры + в <span class="command"><strong>useradd</strong></span>, + каждый пользователь будет членом уникальной группы в системе. + Если такое поведение нежелательно, вам нужно передать один из + параметров <em class="parameter"><code>-g</code></em> или + <em class="parameter"><code>-N</code></em> в <span class= + "command"><strong>useradd</strong></span> или изменить + настройку <em class= + "parameter"><code>USERGROUPS_ENAB</code></em> в файле + <code class="filename">/etc/login.defs</code>. Смотрите + справочную страницу <a class="ulink" href= + "https://man.archlinux.org/man/useradd.8">useradd(8)</a> для + получения дополнительной информации. + </p> + <p> + Во-вторых, чтобы изменить параметры по умолчанию, необходимо + создать файл <code class= + "filename">/etc/default/useradd</code> и настроить его в + соответствии с вашими потребностями. Создайте его: + </p> + <pre class="userinput"><kbd class= + "command">mkdir -p /etc/default +useradd -D --gid 999</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Пояснения к параметрам <code class= + "filename">/etc/default/useradd</code></strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>GROUP=999</code></em></span> + </dt> + <dd> + <p> + Этот параметр задает начальный номер группы, + используемых в файле <code class= + "filename">/etc/group</code>. Значение 999 берется из + приведенного выше параметра <em class= + "parameter"><code>--gid</code></em>. Вы можете + установить любое значение. Обратите внимание, что + <span class="command"><strong>useradd</strong></span> + никогда не будет повторно использовать UID или GID. + Если номер, указанный в этом параметре, уже + используется будет выбран следующий доступный номер. + Также обратите внимание, что если в вашей системе нет + группы с идентификатором, равным этому номеру, при + первом использовании <span class= + "command"><strong>useradd</strong></span> без параметра + <em class="parameter"><code>-g</code></em> — вы + получите следующее сообщение об ошибке: <code class= + "computeroutput">useradd: unknown GID 999</code>, даже + если учетная запись была создана правильно. Поэтому мы + создали группу <code class="systemitem">users</code> с + этим идентификатором в <a class="xref" href= + "#ch-tools-createfiles" title= + "7.6. Создание основных файлов и символических ссылок">Раздел 7.6, + «Создание основных файлов и символических ссылок»</a>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>CREATE_MAIL_SPOOL=yes</code></em></span> + </dt> + <dd> + <p> + Этот параметр заставит утилиту <span class= + "command"><strong>useradd</strong></span> создавать + файл почтового ящика для каждого нового пользователя. + <span class="command"><strong>useradd</strong></span> + сделает этот файл принадлежащим группе <code class= + "systemitem">mail</code> с правами доступа 0660. Если + вы предпочитаете, не создавать эти файлы, выполните + следующую команду: + </p> + <pre class="userinput"><kbd class= + "command">sed -i '/MAIL/s/yes/no/' /etc/default/useradd</kbd></pre> + </dd> + </dl> + </div> + </div> + <div class="configuration" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.27.3. Установка пароля пользователя root + </h3> + <p> + Придумайте пароль для <span class= + "emphasis"><em>root</em></span> и установите командой: + </p> + <pre class="userinput"><kbd class= + "command">passwd root</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-shadow" name="contents-shadow"></a>8.27.4. + Содержимое пакета Shadow + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">chage, chfn, + chgpasswd, chpasswd, chsh, expiry, faillog, getsubids, + gpasswd, groupadd, groupdel, groupmems, groupmod, grpck, + grpconv, grpunconv, login, logoutd, newgidmap, newgrp, + newuidmap, newusers, nologin, passwd, pwck, pwconv, + pwunconv, sg (ссылка на newgrp), su, useradd, userdel, + usermod, vigr (ссылка на vipw) и vipw</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libsubid.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/etc/default и + /usr/include/shadow</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm7661" name="idm7661"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="chage" name="chage"></a><span class= + "term"><span class= + "command"><strong>chage</strong></span></span> + </p> + </td> + <td> + <p> + Используется для изменения максимального количества + дней между обязательными сменами пароля + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="chfn" name="chfn"></a><span class= + "term"><span class= + "command"><strong>chfn</strong></span></span> + </p> + </td> + <td> + <p> + Используется для изменения полного имени + пользователя и другой информации + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="chgpasswd" name="chgpasswd"></a><span class= + "term"><span class= + "command"><strong>chgpasswd</strong></span></span> + </p> + </td> + <td> + <p> + Используется для обновления паролей групп в + пакетном режиме. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="chpasswd" name="chpasswd"></a><span class= + "term"><span class= + "command"><strong>chpasswd</strong></span></span> + </p> + </td> + <td> + <p> + Используется для обновления паролей пользователей в + пакетном режиме. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="chsh" name="chsh"></a><span class= + "term"><span class= + "command"><strong>chsh</strong></span></span> + </p> + </td> + <td> + <p> + Используется для изменения оболочки входа для + пользователя. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="expiry" name="expiry"></a><span class= + "term"><span class= + "command"><strong>expiry</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет и применяет текущую политику истечения + срока действия пароля + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="faillog" name="faillog"></a><span class= + "term"><span class= + "command"><strong>faillog</strong></span></span> + </p> + </td> + <td> + <p> + Используется для проверки журнала неудачных попыток + входа в систему, для установки максимального + количества неудачных попыток до блокировки учетной + записи и для сброса счетчика неудачных попыток. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="getsubids" name="getsubids"></a><span class= + "term"><span class= + "command"><strong>getsubids</strong></span></span> + </p> + </td> + <td> + <p> + Используется для перечисления подчиненных + диапазонов идентификаторов для пользователя + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gpasswd" name="gpasswd"></a><span class= + "term"><span class= + "command"><strong>gpasswd</strong></span></span> + </p> + </td> + <td> + <p> + Используется для добавления и удаления + пользователей и администраторов в группы. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="groupadd" name="groupadd"></a><span class= + "term"><span class= + "command"><strong>groupadd</strong></span></span> + </p> + </td> + <td> + <p> + Создает группу с указанным именем + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="groupdel" name="groupdel"></a><span class= + "term"><span class= + "command"><strong>groupdel</strong></span></span> + </p> + </td> + <td> + <p> + Удаляет группу с указанным именем + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="groupmems" name="groupmems"></a><span class= + "term"><span class= + "command"><strong>groupmems</strong></span></span> + </p> + </td> + <td> + <p> + Позволяет пользователю управлять своим собственным + списком членов группы без привилегий + суперпользователя + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="groupmod" name="groupmod"></a><span class= + "term"><span class= + "command"><strong>groupmod</strong></span></span> + </p> + </td> + <td> + <p> + Используется для изменения имени группы или GID + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grpck" name="grpck"></a><span class= + "term"><span class= + "command"><strong>grpck</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет целостность файлов групп <code class= + "filename">/etc/group</code> и <code class= + "filename">/etc/gshadow</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grpconv" name="grpconv"></a><span class= + "term"><span class= + "command"><strong>grpconv</strong></span></span> + </p> + </td> + <td> + <p> + Создает или изменяет файл теневых групп, используя + для этого обычный файл групп + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grpunconv" name="grpunconv"></a><span class= + "term"><span class= + "command"><strong>grpunconv</strong></span></span> + </p> + </td> + <td> + <p> + Обновляет <code class="filename">/etc/group</code> + из <code class="filename">/etc/gshadow</code>, а + затем удаляет последний + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="login" name="login"></a><span class= + "term"><span class= + "command"><strong>login</strong></span></span> + </p> + </td> + <td> + <p> + Используется системой для того, чтобы пользователь + мог войти в систему + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="logoutd" name="logoutd"></a><span class= + "term"><span class= + "command"><strong>logoutd</strong></span></span> + </p> + </td> + <td> + <p> + Это демон, используемый для обеспечения соблюдения + ограничений на время входа в систему и порты + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="newgidmap" name="newgidmap"></a><span class= + "term"><span class= + "command"><strong>newgidmap</strong></span></span> + </p> + </td> + <td> + <p> + Используется для сопоставления gid пространства + имен пользователя + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="newgrp" name="newgrp"></a><span class= + "term"><span class= + "command"><strong>newgrp</strong></span></span> + </p> + </td> + <td> + <p> + Используется для изменения GID во время сеанса + входа в систему + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="newuidmap" name="newuidmap"></a><span class= + "term"><span class= + "command"><strong>newuidmap</strong></span></span> + </p> + </td> + <td> + <p> + Используется для сопоставления uid пространства + имен пользователя + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="newusers" name="newusers"></a><span class= + "term"><span class= + "command"><strong>newusers</strong></span></span> + </p> + </td> + <td> + <p> + Используется для создания или изменения + последовательности учетных записей + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="nologin" name="nologin"></a><span class= + "term"><span class= + "command"><strong>nologin</strong></span></span> + </p> + </td> + <td> + <p> + Отображает сообщение о том, что учетная запись + недоступна; она предназначена для использования в + качестве оболочки по умолчанию для отключенных + учетных записей + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="passwd" name="passwd"></a><span class= + "term"><span class= + "command"><strong>passwd</strong></span></span> + </p> + </td> + <td> + <p> + Используется для изменения пароля для учетной + записи пользователя или группы. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pwck" name="pwck"></a><span class= + "term"><span class= + "command"><strong>pwck</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет целостность файлов паролей <code class= + "filename">/etc/passwd</code> и <code class= + "filename">/etc/shadow</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pwconv" name="pwconv"></a><span class= + "term"><span class= + "command"><strong>pwconv</strong></span></span> + </p> + </td> + <td> + <p> + Создает или изменяет файл теневых паролей, + используя для этого обычный файл паролей + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pwunconv" name="pwunconv"></a><span class= + "term"><span class= + "command"><strong>pwunconv</strong></span></span> + </p> + </td> + <td> + <p> + Обновляет <code class="filename">/etc/passwd</code> + из <code class="filename">/etc/shadow</code> а + затем удаляет последний + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sg" name="sg"></a><span class= + "term"><span class= + "command"><strong>sg</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет указанную команду в случае, если у + пользователя идентификатор группы GID совпадает с + идентификатором указанной группы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="su" name="su"></a><span class= + "term"><span class= + "command"><strong>su</strong></span></span> + </p> + </td> + <td> + <p> + Запускает оболочку с заменой идентификаторов + пользователя и группы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="useradd" name="useradd"></a><span class= + "term"><span class= + "command"><strong>useradd</strong></span></span> + </p> + </td> + <td> + <p> + Создает нового пользователя с указанным именем, + либо изменяет информацию, задаваемую по умолчанию + для нового пользователя + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="userdel" name="userdel"></a><span class= + "term"><span class= + "command"><strong>userdel</strong></span></span> + </p> + </td> + <td> + <p> + Удаляет учетную запись указанного пользователя + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="usermod" name="usermod"></a><span class= + "term"><span class= + "command"><strong>usermod</strong></span></span> + </p> + </td> + <td> + <p> + Используется для изменения имени пользователя, + идентификатора пользователя (UID), оболочки, + группы, домашнего каталога и т.д. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="vigr" name="vigr"></a><span class= + "term"><span class= + "command"><strong>vigr</strong></span></span> + </p> + </td> + <td> + <p> + Редактирует файлы <code class= + "filename">/etc/group</code> или <code class= + "filename">/etc/gshadow</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="vipw" name="vipw"></a><span class= + "term"><span class= + "command"><strong>vipw</strong></span></span> + </p> + </td> + <td> + <p> + Редактирует файлы <code class= + "filename">/etc/passwd</code> или <code class= + "filename">/etc/shadow</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libsubid" name="libsubid"></a><span class= + "term"><code class= + "filename">libsubid</code></span> + </p> + </td> + <td> + <p> + библиотека для обработки подчиненных диапазонов + идентификаторов пользователей и групп + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-gcc" name="ch-system-gcc"></a>8.28. + GCC-13.2.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет GCC содержит коллекцию компиляторов GNU, которая + включает компиляторы C и C++. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">42 SBU (с + тестами)</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">5.5 + GB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.28.1. Установка пакета GCC + </h3> + <p> + При сборке на x86_64 измените имя каталога по умолчанию для + 64-битных библиотек на <span class="quote">«<span class= + "quote">lib</span>»</span>: + </p> + <pre class="userinput"><kbd class="command">case $(uname -m) in + x86_64) + sed -e '/m64=/s/lib64/lib/' \ + -i.orig gcc/config/i386/t-linux64 + ;; +esac</kbd></pre> + <p> + Документация GCC рекомендует собирать GCC в отдельном + каталоге: + </p> + <pre class="userinput"><kbd class="command">mkdir -v build +cd build</kbd></pre> + <p> + Подготовьте GCC к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">../configure --prefix=/usr \ + LD=ld \ + --enable-languages=c,c++ \ + --enable-default-pie \ + --enable-default-ssp \ + --disable-multilib \ + --disable-bootstrap \ + --disable-fixincludes \ + --with-system-zlib</kbd></pre> + <p> + GCC поддерживает семь различных языков программирования, но + предварительные условия для большинства из них еще не + выполнены. См. страницу <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/gcc.html"> + BLFS Book GCC</a> для получения инструкций о том, как собрать + все языки, поддерживаемые GCC + </p> + <div class="variablelist"> + <p class="title"> + <strong>Значение новых параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>LD=ld</code></em></span> + </dt> + <dd> + <p> + Этот параметр указывает скрипту configure использовать + ld, установленный программой Binutils, собранной ранее + в этой главе, а не кросс версию, которая использовалась + бы в противном случае. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-fixincludes</code></em></span> + </dt> + <dd> + <p> + По умолчанию во время установки GCC некоторые системные + заголовки будут <span class="quote">«<span class= + "quote">исправлены</span>»</span> для использования с + GCC. Это не обязательно для современной системы Linux и + потенциально опасно, если пакет будет переустановлен + после установки GCC. Этот параметр не позволяет GCC + <span class="quote">«<span class= + "quote">исправлять</span>»</span> заголовки. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--with-system-zlib</code></em></span> + </dt> + <dd> + <p> + Этот параметр указывает GCC ссылаться на установленную + в системе копию библиотеки Zlib, а не на собственную + внутреннюю копию. + </p> + </dd> + </dl> + </div> + <div class="admon note"> + <h3> + Примечание + </h3><a id="pie-ssp-info" name="pie-ssp-info"></a> + <p> + PIE (позиционно-независимые исполняемые файлы) — это + двоичные программы, которые можно загружать в любое место + памяти. Без PIE функция безопасности под названием ASLR + (рандомизация размещения адресного пространства) может + применяться к общим библиотекам, но не к самим исполняемым + файлам. Включение PIE позволяет использовать ASLR для + исполняемых файлов в дополнение к общим библиотекам и + смягчает некоторые атаки, основанные на фиксированных + адресах конфиденциального кода или данных в исполняемых + файлах. + </p> + <p> + SSP (Stack Smashing Protection - защита от разрушения + стека) — это метод, гарантирующий, что стек параметров не + будет поврежден. Повреждение стека может, например, + изменить адрес возврата подпрограммы, тем самым передав + управление какому-то опасному коду (существующему в + программе или общих библиотеках или каким-то образом + внедренному злоумышленником). + </p> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + В этом разделе набор тестов для GCC считается важным, но + занимает много времени. Начинающим сборщикам не + рекомендуется пропускать его. Время выполнения тестов можно + значительно сократить, добавив -jx в приведенную ниже + команду <span class="command"><strong>make -k + check</strong></span>, где x - количество ядер процессора в + вашей системе. + </p> + </div> + <p> + Известно, что один набор тестов GCC переполняет стек по + умолчанию, поэтому увеличьте размер стека перед запуском + тестов: + </p> + <pre class="userinput"><kbd class= + "command">ulimit -s 32768</kbd></pre> + <p> + Выполните тестирование под непривилегированным пользователем, + но не останавливайтесь на ошибках: + </p> + <pre class="userinput"><kbd class="command">chown -R tester . +su tester -c "PATH=$PATH make -k check"</kbd></pre> + <p> + Чтобы получить сводку результатов набора тестов, выполните: + </p> + <pre class="userinput"><kbd class= + "command">../contrib/test_summary</kbd></pre> + <p> + Чтобы отфильтровать только итоговую сводку, передайте вывод + через pipe <strong class="userinput"><code>grep -A7 + Summ</code></strong>. + </p> + <p> + Результаты можно сравнить с результатами, размещенными на + <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/lfs/build-logs/12.1/">https://mirror.linuxfromscratch.ru/lfs/build-logs/12.1/</a> + и <a class="ulink" href= + "https://gcc.gnu.org/ml/gcc-testresults/">https://gcc.gnu.org/ml/gcc-testresults/</a>. + </p> + <p> + Известно, что восемь тестов gcc (из более чем 185 000): + <code class="filename">pr56837.c</code> и семь тестов из + каталога <code class="filename">analyzer</code> завершились + неудачно. Также провалился один тест libstdc++ (из более чем + 15 000) — это <code class="filename">copy.cc</code>. + Известно, что для g++ 21 тест (из примерно 250 000), 14 + тестов <span class="quote">«<span class= + "quote">AddressSanitizer*</span>»</span> и 7 тестов + <code class="filename">interception-malloc-test-1.C</code> + завершились неудачно. Кроме того, несколько тестов из + каталога <code class="filename">vect</code> завершаются + неудачно, если оборудование не поддерживает AVX. + </p> + <p> + Не всегда удается избежать неожиданных сбоев. Разработчики + GCC обычно знают об этих проблемах, но еще не решили их. Если + результаты теста не сильно отличаются от результатов по + указанному выше URL-адресу, можно продолжать. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + Каталог сборки GCC теперь принадлежит пользователю + <code class="systemitem">tester</code>, и владелец каталога + заголовочных файлов (и его содержимого) указан неверно. + Измените владельца на пользователя и группу <code class= + "systemitem">root</code>: + </p> + <pre class="userinput"><kbd class= + "command">chown -v -R root:root \ + /usr/lib/gcc/$(gcc -dumpmachine)/13.2.0/include{,-fixed}</kbd></pre> + <p> + Создайте символическую ссылку, требуемую <a class="ulink" + href= + "https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s09.html"> + FHS</a> по "историческим" причинам. + </p> + <pre class="userinput"><kbd class= + "command">ln -svr /usr/bin/cpp /usr/lib</kbd></pre> + <p> + Многие пакеты используют имя <span class= + "command"><strong>cc</strong></span> для вызова компилятора + языка Си. Мы уже создали <span class= + "command"><strong>cc</strong></span> как символическую ссылку + в <a class="xref" href="#ch-tools-gcc-pass2" title= + "6.18. GCC-13.2.0 - Проход 2">GCC-Проход 2</a>, теперь + создайте символическую ссылку на его справочную страницу: + </p> + <pre class="userinput"><kbd class= + "command">ln -sv gcc.1 /usr/share/man/man1/cc.1</kbd></pre> + <p> + Добавьте символическую ссылку совместимости, чтобы включить + сборку программ с оптимизацией времени компоновки (LTO): + </p> + <pre class="userinput"><kbd class= + "command">ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/13.2.0/liblto_plugin.so \ + /usr/lib/bfd-plugins/</kbd></pre> + <p> + Теперь, когда наш окончательный набор инструментов готов, + важно еще раз убедиться, что компиляция и компоновка будут + работать так, как ожидалось. Мы сделаем это, выполнив + проверку работоспособности: + </p> + <pre class="userinput"><kbd class= + "command">echo 'int main(){}' > dummy.c +cc dummy.c -v -Wl,--verbose &> dummy.log +readelf -l a.out | grep ': /lib'</kbd></pre> + <p> + Ошибок быть не должно, и вывод последней команды будет (с + учетом платформо-зависимых различий в имени динамического + компоновщика): + </p> + <pre class="screen"><code class= + "computeroutput">[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</code></pre> + <p> + Теперь убедитесь, что мы настроили использование правильных + стартовых файлов: + </p> + <pre class="userinput"><kbd class= + "command">grep -E -o '/usr/lib.*/S?crt[1in].*succeeded' dummy.log</kbd></pre> + <p> + Вывод последней команды должен быть: + </p> + <pre class="screen"><code class= + "computeroutput">/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/Scrt1.o succeeded +/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/crti.o succeeded +/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/crtn.o succeeded</code></pre> + <p> + В зависимости от архитектуры вашего компьютера вышеуказанные + параметры могут незначительно отличаться. Разница будет + заключаться в имени каталога после <code class= + "filename">/usr/lib/gcc</code>. Здесь важно обратить внимание + на то, что <span class="command"><strong>gcc</strong></span> + нашел все три файла <code class="filename">crt*.o</code> в + каталоге <code class="filename">/usr/lib</code>. + </p> + <p> + Убедитесь, что компилятор ищет правильные заголовочные файлы: + </p> + <pre class="userinput"><kbd class= + "command">grep -B4 '^ /usr/include' dummy.log</kbd></pre> + <p> + Эта команда должна вернуть следующий вывод: + </p> + <pre class="screen"><code class= + "computeroutput">#include <...> search starts here: + /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/include + /usr/local/include + /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/include-fixed + /usr/include</code></pre> + <p> + Опять же, имя каталога может отличаться от указанного выше, в + зависимости от архитектуры вашей системы. + </p> + <p> + Затем убедитесь, что новый компоновщик использует правильные + пути поиска: + </p> + <pre class="userinput"><kbd class= + "command">grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'</kbd></pre> + <p> + Ссылки на пути, содержащие компоненты с '-linux-gnu', следует + игнорировать, но в противном случае вывод последней команды + должен быть таким: + </p> + <pre class="screen"><code class= + "computeroutput">SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64") +SEARCH_DIR("/usr/local/lib64") +SEARCH_DIR("/lib64") +SEARCH_DIR("/usr/lib64") +SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib") +SEARCH_DIR("/usr/local/lib") +SEARCH_DIR("/lib") +SEARCH_DIR("/usr/lib");</code></pre> + <p> + 32-разрядная система может использовать несколько других + каталогов. Например, вот вывод с компьютера i686: + </p> + <pre class="screen"><code class= + "computeroutput">SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32") +SEARCH_DIR("/usr/local/lib32") +SEARCH_DIR("/lib32") +SEARCH_DIR("/usr/lib32") +SEARCH_DIR("/usr/i686-pc-linux-gnu/lib") +SEARCH_DIR("/usr/local/lib") +SEARCH_DIR("/lib") +SEARCH_DIR("/usr/lib");</code></pre> + <p> + Затем убедитесь, что мы используем правильную libc: + </p> + <pre class="userinput"><kbd class= + "command">grep "/lib.*/libc.so.6 " dummy.log</kbd></pre> + <p> + Вывод последней команды должен быть: + </p> + <pre class="screen"><code class= + "computeroutput">attempt to open /usr/lib/libc.so.6 succeeded</code></pre> + <p> + Убедитесь, что GCC использует правильный динамический + компоновщик: + </p> + <pre class="userinput"><kbd class= + "command">grep found dummy.log</kbd></pre> + <p> + Вывод последней команды должен быть (с учетом различий в + имени динамического компоновщика, зависящих от платформы): + </p> + <pre class="screen"><code class= + "computeroutput">found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2</code></pre> + <p> + Если вывод выглядит не так, как показано выше, или вообще не + получен, значит, где-то серьезная ошибка. Изучите и повторите + шаги, чтобы выяснить, в чем проблема, и исправьте ее. Любые + проблемы должны быть решены, прежде чем вы продолжите + процесс. + </p> + <p> + Как только все заработает правильно, удалите тестовые файлы: + </p> + <pre class="userinput"><kbd class= + "command">rm -v dummy.c a.out dummy.log</kbd></pre> + <p> + Наконец, переместите файл: + </p> + <pre class="userinput"><kbd class= + "command">mkdir -pv /usr/share/gdb/auto-load/usr/lib +mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-gcc" name="contents-gcc"></a>8.28.2. + Содержимое пакета GCC + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">c++, cc (link + to gcc), cpp, g++, gcc, gcc-ar, gcc-nm, gcc-ranlib, gcov, + gcov-dump, gcov-tool, и lto-dump</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libasan.{a,so}, libatomic.{a,so}, libcc1.so, + libgcc.a, libgcc_eh.a, libgcc_s.so, libgcov.a, + libgomp.{a,so}, libhwasan.{a,so}, libitm.{a,so}, + liblsan.{a,so}, liblto_plugin.so, libquadmath.{a,so}, + libssp.{a,so}, libssp_nonshared.a, libstdc++.{a,so}, + libstdc++exp.a, libstdc++fs.a, libsupc++.a, + libtsan.{a,so} и libubsan.{a,so}</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/include/c++, /usr/lib/gcc, + /usr/libexec/gcc и /usr/share/gcc-13.2.0</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm8081" name="idm8081"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="c" name="c"></a><span class= + "term"><span class= + "command"><strong>c++</strong></span></span> + </p> + </td> + <td> + <p> + Компилятор С++ + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="cc" name="cc"></a><span class= + "term"><span class= + "command"><strong>cc</strong></span></span> + </p> + </td> + <td> + <p> + Компилятор C + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="cpp" name="cpp"></a><span class= + "term"><span class= + "command"><strong>cpp</strong></span></span> + </p> + </td> + <td> + <p> + Препроцессор C; он используется компилятором для + расширения инструкций #include, #define и подобные + директивы в исходных файлах + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="g" name="g"></a><span class= + "term"><span class= + "command"><strong>g++</strong></span></span> + </p> + </td> + <td> + <p> + Компилятор C++ + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gcc" name="gcc"></a><span class= + "term"><span class= + "command"><strong>gcc</strong></span></span> + </p> + </td> + <td> + <p> + Компилятор C + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gcc-ar" name="gcc-ar"></a><span class= + "term"><span class= + "command"><strong>gcc-ar</strong></span></span> + </p> + </td> + <td> + <p> + Обертка над <span class= + "command"><strong>ar</strong></span>, добавляющая + плагин в командную строку. Эта программа + используется только для добавления "оптимизации + времени компоновки" и бесполезна с параметрами + сборки по умолчанию. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gcc-nm" name="gcc-nm"></a><span class= + "term"><span class= + "command"><strong>gcc-nm</strong></span></span> + </p> + </td> + <td> + <p> + Обертка над <span class= + "command"><strong>nm</strong></span>, добавляющая + плагин в командную строку. Эта программа + используется только для добавления "оптимизации + времени компоновки" и бесполезна с параметрами + сборки по умолчанию. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gcc-ranlib" name= + "gcc-ranlib"></a><span class="term"><span class= + "command"><strong>gcc-ranlib</strong></span></span> + </p> + </td> + <td> + <p> + Обертка над <span class= + "command"><strong>ranlib</strong></span>, + добавляющая плагин в командную строку. Эта + программа используется только для добавления + "оптимизации времени компоновки" и бесполезна с + параметрами сборки по умолчанию. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gcov" name="gcov"></a><span class= + "term"><span class= + "command"><strong>gcov</strong></span></span> + </p> + </td> + <td> + <p> + Инструмент тестирования; он используется для + анализа программ, чтобы определить, где оптимизация + будет иметь наибольший эффект. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gcov-dump" name="gcov-dump"></a><span class= + "term"><span class= + "command"><strong>gcov-dump</strong></span></span> + </p> + </td> + <td> + <p> + Автономный инструмент для дампа профилей gcda and + gcno + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gcov-tool" name="gcov-tool"></a><span class= + "term"><span class= + "command"><strong>gcov-tool</strong></span></span> + </p> + </td> + <td> + <p> + Автономный инструмент обработки профиля gcda + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lto-dump" name="lto-dump"></a><span class= + "term"><span class= + "command"><strong>lto-dump</strong></span></span> + </p> + </td> + <td> + <p> + Инструмент для создания дампа объектных файлов, + созданных GCC с включенным LTO. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libasan" name="libasan"></a><span class= + "term"><code class="filename">libasan</code></span> + </p> + </td> + <td> + <p> + Библиотека времени выполнения Address Sanitizer + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libatomic" name="libatomic"></a><span class= + "term"><code class= + "filename">libatomic</code></span> + </p> + </td> + <td> + <p> + Встроенная библиотека времени выполнения GCC atomic + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libcc1" name="libcc1"></a><span class= + "term"><code class="filename">libcc1</code></span> + </p> + </td> + <td> + <p> + Библиотека, которая позволяет GDB использовать GCC + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libgcc" name="libgcc"></a><span class= + "term"><code class="filename">libgcc</code></span> + </p> + </td> + <td> + <p> + Содержит средства поддержки времени исполнения для + <span class="command"><strong>gcc</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libgcov" name="libgcov"></a><span class= + "term"><code class="filename">libgcov</code></span> + </p> + </td> + <td> + <p> + Эта библиотека компонуется с программой, когда в + GCC включено профилирование + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libgomp" name="libgomp"></a><span class= + "term"><code class="filename">libgomp</code></span> + </p> + </td> + <td> + <p> + GNU реализация интерфейса OpenMP API + мультиплатформенного параллельного программирования + для языков C/C++ и Fortran с общим доступом к + памяти + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libhwasan" name="libhwasan"></a><span class= + "term"><code class= + "filename">libhwasan</code></span> + </p> + </td> + <td> + <p> + Библиотека времени выполнения Hardware-Assisted + Address Sanitizer (аппаратной очистки адресов) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libitm" name="libitm"></a><span class= + "term"><code class="filename">libitm</code></span> + </p> + </td> + <td> + <p> + Библиотека транзакционной памяти GNU + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="liblsan" name="liblsan"></a><span class= + "term"><code class="filename">liblsan</code></span> + </p> + </td> + <td> + <p> + Библиотека времени выполнения Leak Sanitizer + (средств защиты от утечек) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="liblto_plugin" name= + "liblto_plugin"></a><span class="term"><code class= + "filename">liblto_plugin</code></span> + </p> + </td> + <td> + <p> + Плагин GCC LTO позволяет Binutils обрабатывать + объектные файлы, созданные GCC с включенным LTO. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libquadmath" name= + "libquadmath"></a><span class="term"><code class= + "filename">libquadmath</code></span> + </p> + </td> + <td> + <p> + API математической библиотеки GCC Quad Precision + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libssp" name="libssp"></a><span class= + "term"><code class="filename">libssp</code></span> + </p> + </td> + <td> + <p> + Содержит подпрограммы, поддерживающие + функциональность защиты стека GCC. Обычно они не + используются, потому что Glibc также предоставляет + эти подпрограммы. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libstdc" name="libstdc"></a><span class= + "term"><code class= + "filename">libstdc++</code></span> + </p> + </td> + <td> + <p> + Стандартная библиотека C++ + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libstdcexp" name= + "libstdcexp"></a><span class="term"><code class= + "filename">libstdc++exp</code></span> + </p> + </td> + <td> + <p> + Экспериментальная библиотека контрактов C++ + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libstdcfs" name="libstdcfs"></a><span class= + "term"><code class= + "filename">libstdc++fs</code></span> + </p> + </td> + <td> + <p> + Библиотека файловой системы ISO/IEC TS 18822:2015 + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libsupc" name="libsupc"></a><span class= + "term"><code class= + "filename">libsupc++</code></span> + </p> + </td> + <td> + <p> + Предоставляет вспомогательные процедуры для языка + программирования C++ + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libtsan" name="libtsan"></a><span class= + "term"><code class="filename">libtsan</code></span> + </p> + </td> + <td> + <p> + Библиотека времени выполнения Thread Sanitizer + (средств очистки потоков) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libubsan" name="libubsan"></a><span class= + "term"><code class= + "filename">libubsan</code></span> + </p> + </td> + <td> + <p> + Библиотека времени выполнения Undefined Behavior + Sanitizer (средств очистки неопределенного + поведения) + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-ncurses" name= + "ch-system-ncurses"></a>8.29. Ncurses-6.4-20230520 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Ncurses содержит библиотеки для независимой от + терминала обработки ввода/вывода + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.2 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">45 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.29.1. Установка пакета Ncurses + </h3> + <p> + Подготовьте Ncurses к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --mandir=/usr/share/man \ + --with-shared \ + --without-debug \ + --without-normal \ + --with-cxx-shared \ + --enable-pc-files \ + --enable-widec \ + --with-pkg-config-libdir=/usr/lib/pkgconfig</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение новых параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--with-shared</code></em></span> + </dt> + <dd> + <p> + Этот параметр позволяет Ncurses собирать и + устанавливать общие библиотеки C. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--without-normal</code></em></span> + </dt> + <dd> + <p> + Этот параметр отключает сборку и установку большинства + статических библиотек C. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--without-debug</code></em></span> + </dt> + <dd> + <p> + Этот параметр предотвращает сборку и установку + отладочных библиотек. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--with-cxx-shared</code></em></span> + </dt> + <dd> + <p> + Это аргумент позволяет Ncurses собирать и устанавливать + общие привязки C++. А также предотвращает сборку и + установку статических привязок C++. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-pc-files</code></em></span> + </dt> + <dd> + <p> + Этот параметр генерирует и устанавливает файлы .pc для + pkg-config. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-widec</code></em></span> + </dt> + <dd> + <p> + Этот параметр указывает, что при сборке пакета вместо + обычных библиотек (например, <code class= + "filename">libncurses.so.6.4</code>) будут + использоваться библиотеки с расширенным набором + символов (например, <code class= + "filename">libncursesw.so.6.4</code>). Библиотеки с + расширенным набором символов могут использоваться как с + многобайтовыми локалями, так и с традиционными + 8-битовыми локалями, тогда как обычные библиотеки + работают только с 8-битовыми локалями. Библиотеки с + расширенным набором символов и обычные библиотеки + совместимы на уровне исходного кода, но не совместимыми + на уровне двоичного. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + У этого пакета есть набор тестов, но его можно запустить + только после того, как пакет будет установлен. Тесты + находятся в каталоге <code class="filename">test/</code>. + Дополнительные сведения смотрите в файле <code class= + "filename">README</code> в этом каталоге. + </p> + <p> + Установка этого пакета приведет к перезаписи <code class= + "filename">libncursesw.so.6.4</code>. Это может привести к + сбою процесса оболочки, который использует код и данные из + файла библиотеки. Установите пакет с помощью <code class= + "literal">DESTDIR</code> и правильно замените файл библиотеки + с помощью команды <span class= + "command"><strong>install</strong></span>(также + отредактирован заголовочный файл <code class= + "filename">curses.h</code>, чтобы обеспечить использование + ABI расширенного набора символов, как это сделано в <a class= + "xref" href="#ch-tools-ncurses" title= + "6.3. Ncurses-6.4-20230520">Раздел 6.3, + «Ncurses-6.4-20230520»</a>). + </p> + <pre class="userinput"><kbd class= + "command">make DESTDIR=$PWD/dest install +install -vm755 dest/usr/lib/libncursesw.so.6.4 /usr/lib +rm -v dest/usr/lib/libncursesw.so.6.4 +sed -e 's/^#if.*XOPEN.*$/#if 1/' \ + -i dest/usr/include/curses.h +cp -av dest/* /</kbd></pre> + <p> + Многие приложения ожидают, что компоновщик может найти + библиотеки Ncurses, не поддерживающие расширенный набор + символов. Используя трюк ниже, свяжите такие приложения с + библиотеками расширенного набора символов с помощью + символических ссылок (обратите внимание, что ссылки + <code class="filename">.so</code> безопасны только в том + случае, если <code class="filename">curses.h</code> + отредактирован так, чтобы всегда использовать ABI + расширенного набора символов): + </p> + <pre class="userinput"><kbd class= + "command">for lib in ncurses form panel menu ; do + ln -sfv lib${lib}w.so /usr/lib/lib${lib}.so + ln -sfv ${lib}w.pc /usr/lib/pkgconfig/${lib}.pc +done</kbd></pre> + <p> + Убедитесь, что старые приложения, которым нужна <code class= + "filename">-lcurses</code> для сборки, собираются правильно: + </p> + <pre class="userinput"><kbd class= + "command">ln -sfv libncursesw.so /usr/lib/libcurses.so</kbd></pre> + <p> + По желанию установите документацию Ncurses: + </p> + <pre class="userinput"><kbd class= + "command">cp -v -R doc -T /usr/share/doc/ncurses-6.4-20230520</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + С помощью приведенных выше инструкций не создаются + библиотеки Ncurses, не использующие расширенный набор + символов, поскольку ни один пакет, установленный путем + компиляции из исходного кода, не будет связан с ними во + время выполнения. Тем не менее, известно что некоторые + бинарные приложения, которые связаны с библиотекой Ncurses + и не поддерживающие расширенный набор символов, требуют + наличия версии 5. Если вам необходимо иметь такие + библиотеки из-за какого-либо приложения, имеющегося только + в бинарном виде, или для обеспечения совместимости с LSB, + соберите пакет с помощью следующих команд: + </p> + <pre class="userinput"><kbd class="command">make distclean +./configure --prefix=/usr \ + --with-shared \ + --without-normal \ + --without-debug \ + --without-cxx-binding \ + --with-abi-version=5 +make sources libs +cp -av lib/lib*.so.5* /usr/lib</kbd></pre> + </div> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-ncurses" name="contents-ncurses"></a>8.29.2. + Содержимое пакета Ncurses + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">captoinfo + (ссылка на tic), clear, infocmp, infotocap (ссылка на + tic), ncursesw6-config, reset (ссылка на tset), tabs, + tic, toe, tput и tset</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">libcurses.so + (символическая ссылка), libform.so (символическая + ссылка), libformw.so, libmenu.so (символическая ссылка), + libmenuw.so, libncurses.so (символическая ссылка), + libncursesw.so, libncurses++w.so, libpanel.so + (символическая ссылка) и libpanelw.so,</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/tabset, + /usr/share/terminfo и + /usr/share/doc/ncurses-6.4-20230520</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm8389" name="idm8389"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="captoinfo" name="captoinfo"></a><span class= + "term"><span class= + "command"><strong>captoinfo</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует описание termcap в описание terminfo + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="clear" name="clear"></a><span class= + "term"><span class= + "command"><strong>clear</strong></span></span> + </p> + </td> + <td> + <p> + Очищает экран, если это возможно + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="infocmp" name="infocmp"></a><span class= + "term"><span class= + "command"><strong>infocmp</strong></span></span> + </p> + </td> + <td> + <p> + Сравнивает или показывает описания terminfo + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="infotocap" name="infotocap"></a><span class= + "term"><span class= + "command"><strong>infotocap</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует описание terminfo в описание termcap + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ncursesw6-config" name= + "ncursesw6-config"></a><span class= + "term"><span class= + "command"><strong>ncursesw6-config</strong></span></span> + </p> + </td> + <td> + <p> + Предоставляет информацию о конфигурации пакету + ncurses + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="reset" name="reset"></a><span class= + "term"><span class= + "command"><strong>reset</strong></span></span> + </p> + </td> + <td> + <p> + Повторно инициализирует терминал со значениями по + умолчанию + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tabs" name="tabs"></a><span class= + "term"><span class= + "command"><strong>tabs</strong></span></span> + </p> + </td> + <td> + <p> + Очищает и устанавливает размеры табуляции в + терминале + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tic" name="tic"></a><span class= + "term"><span class= + "command"><strong>tic</strong></span></span> + </p> + </td> + <td> + <p> + Компилятор описания terminfo, преобразует файл + terminfo из исходного формата в двоичный, который + необходим для подпрограмм библиотеки ncurses [Файл + terminfo содержит информацию о возможностях + конкретного терминала.] + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="toe" name="toe"></a><span class= + "term"><span class= + "command"><strong>toe</strong></span></span> + </p> + </td> + <td> + <p> + Выводит список всех доступных типов терминалов, для + каждого из которых указывается его имя и приводится + описание + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tput" name="tput"></a><span class= + "term"><span class= + "command"><strong>tput</strong></span></span> + </p> + </td> + <td> + <p> + Позволяет использовать в командной оболочке + настройки, относящиеся к особенностям конкретного + терминала; может также использоваться для сброса + или инициализации терминала, либо для вывода + полного имени терминала + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tset" name="tset"></a><span class= + "term"><span class= + "command"><strong>tset</strong></span></span> + </p> + </td> + <td> + <p> + Может использоваться для инициализации терминалов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libncursesw" name= + "libncursesw"></a><span class="term"><code class= + "filename">libncursesw</code></span> + </p> + </td> + <td> + <p> + Содержит функции, отображающие различными способами + текст на экране терминала. Хорошим примером + использования этих функций является меню, + отображаемое командой <span class= + "command"><strong>make menuconfig</strong></span> + при настройке ядра + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libncurses__w" name= + "libncurses__w"></a><span class="term"><code class= + "filename">libncurses++w</code></span> + </p> + </td> + <td> + <p> + Содержит функции связывания C++ с другими + библиотеками в пакете + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libformw" name="libformw"></a><span class= + "term"><code class= + "filename">libformw</code></span> + </p> + </td> + <td> + <p> + Содержит функции, реализующие формы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libmenuw" name="libmenuw"></a><span class= + "term"><code class= + "filename">libmenuw</code></span> + </p> + </td> + <td> + <p> + Содержит функции, реализующие меню + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libpanelw" name="libpanelw"></a><span class= + "term"><code class= + "filename">libpanelw</code></span> + </p> + </td> + <td> + <p> + Содержит функции, реализующие панели + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-sed" name="ch-system-sed"></a>8.30. + Sed-4.9 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Sed содержит потоковый редактор текста + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.3 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">30 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.30.1. Установка пакета Sed + </h3> + <p> + Подготовьте Sed к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет и сгенерируйте HTML-документацию: + </p> + <pre class="userinput"><kbd class="command">make +make html</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class="command">chown -R tester . +su tester -c "PATH=$PATH make check"</kbd></pre> + <p> + Установите пакет и документацию к нему: + </p> + <pre class="userinput"><kbd class="command">make install +install -d -m755 /usr/share/doc/sed-4.9 +install -m644 doc/sed.html /usr/share/doc/sed-4.9</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-sed" name="contents-sed"></a>8.30.2. + Содержимое пакета Sed + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">sed</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/doc/sed-4.9</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm8539" name="idm8539"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="sed" name="sed"></a><span class= + "term"><span class= + "command"><strong>sed</strong></span></span> + </p> + </td> + <td> + <p> + Фильтрует и преобразует текстовые файлы за один + проход + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-psmisc" name="ch-system-psmisc"></a>8.31. + Psmisc-23.6 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Psmisc содержит программы для отображения информации о + запущенных процессах. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">6.6 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.31.1. Установка пакета Psmisc + </h3> + <p> + Подготовьте Psmisc к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-psmisc" name="contents-psmisc"></a>8.31.2. + Содержимое пакета Psmisc + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">fuser, killall, + peekfd, prtstat, pslog, pstree и pstree.x11 (ссылка на + pstree)</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm8581" name="idm8581"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="fuser" name="fuser"></a><span class= + "term"><span class= + "command"><strong>fuser</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает идентификаторы процессов (PID), которые + используют данные файлы или файловые системы. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="killall" name="killall"></a><span class= + "term"><span class= + "command"><strong>killall</strong></span></span> + </p> + </td> + <td> + <p> + Уничтожает процессы по имени; посылает сигнал всем + процессам, выполняющим любую из заданных команд + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="peekfd" name="peekfd"></a><span class= + "term"><span class= + "command"><strong>peekfd</strong></span></span> + </p> + </td> + <td> + <p> + Просмотривает файловые дескрипторы запущенного + процесса с учетом его PID + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="prtstat" name="prtstat"></a><span class= + "term"><span class= + "command"><strong>prtstat</strong></span></span> + </p> + </td> + <td> + <p> + Выводит информацию о процессе + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pslog" name="pslog"></a><span class= + "term"><span class= + "command"><strong>pslog</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает текущий путь к журналам процесса + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pstree" name="pstree"></a><span class= + "term"><span class= + "command"><strong>pstree</strong></span></span> + </p> + </td> + <td> + <p> + Отображает запущенные процессы в виде дерева + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pstree.x11" name= + "pstree.x11"></a><span class="term"><span class= + "command"><strong>pstree.x11</strong></span></span> + </p> + </td> + <td> + <p> + То же, что и <span class= + "command"><strong>pstree</strong></span>, за + исключением того, что он ожидает подтверждения + перед выходом. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-gettext" name= + "ch-system-gettext"></a>8.32. Gettext-0.22.4 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Gettext содержит утилиты для интернационализации и + локализации. Они позволяют компилировать программы с + поддержкой NLS (Native Language Support), позволяя им + выводить сообщения на родном языке пользователя. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">1.4 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">250 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.32.1. Установка пакета Gettext + </h3> + <p> + Подготовьте Gettext для компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --disable-static \ + --docdir=/usr/share/doc/gettext-0.22.4</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет (это занимает много времени, около + 3 SBU), выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class="command">make install +chmod -v 0755 /usr/lib/preloadable_libintl.so</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-gettext" name="contents-gettext"></a>8.32.2. + Содержимое пакета Gettext + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">autopoint, + envsubst, gettext, gettext.sh, gettextize, msgattrib, + msgcat, msgcmp, msgcomm, msgconv, msgen, msgexec, + msgfilter, msgfmt, msggrep, msginit, msgmerge, msgunfmt, + msguniq, ngettext, recode-sr-latin, и xgettext</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libasprintf.so, libgettextlib.so, + libgettextpo.so, libgettextsrc.so, libtextstyle.so и + preloadable_libintl.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/lib/gettext, + /usr/share/doc/gettext-0.22.4, /usr/share/gettext и + /usr/share/gettext-0.22.4</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm8670" name="idm8670"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="autopoint" name="autopoint"></a><span class= + "term"><span class= + "command"><strong>autopoint</strong></span></span> + </p> + </td> + <td> + <p> + Копирует файлы стандартной инфраструктуры Gettext в + пакет с исходным кодом + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="envsubst" name="envsubst"></a><span class= + "term"><span class= + "command"><strong>envsubst</strong></span></span> + </p> + </td> + <td> + <p> + Подставляет переменные окружения в строки, + используемые командной оболочкой + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gettext" name="gettext"></a><span class= + "term"><span class= + "command"><strong>gettext</strong></span></span> + </p> + </td> + <td> + <p> + Переводит сообщение с естественного языка на язык + пользователя, осуществляя для этого поиск уже + сделанного перевода в каталоге сообщений + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gettext.sh" name= + "gettext.sh"></a><span class="term"><span class= + "command"><strong>gettext.sh</strong></span></span> + </p> + </td> + <td> + <p> + В основном служит библиотекой функций оболочки для + gettext. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gettextize" name= + "gettextize"></a><span class="term"><span class= + "command"><strong>gettextize</strong></span></span> + </p> + </td> + <td> + <p> + Копирует все стандартные файлы Gettext в указанный + каталог верхнего уровня пакета, чтобы начать его + интернационализацию. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="msgattrib" name="msgattrib"></a><span class= + "term"><span class= + "command"><strong>msgattrib</strong></span></span> + </p> + </td> + <td> + <p> + Фильтрует сообщения каталога переводов в + соответствии с их атрибутами и управляет атрибутами + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="msgcat" name="msgcat"></a><span class= + "term"><span class= + "command"><strong>msgcat</strong></span></span> + </p> + </td> + <td> + <p> + Объединяет указанные файлы <code class= + "filename">.po</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="msgcmp" name="msgcmp"></a><span class= + "term"><span class= + "command"><strong>msgcmp</strong></span></span> + </p> + </td> + <td> + <p> + Сравнивает два файла <code class= + "filename">.po</code>, чтобы проверить, что оба + содержат один и тот же набор строк msgid + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="msgcomm" name="msgcomm"></a><span class= + "term"><span class= + "command"><strong>msgcomm</strong></span></span> + </p> + </td> + <td> + <p> + Находит сообщения, которые являются общими для + указанных файлов <code class="filename">.po</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="msgconv" name="msgconv"></a><span class= + "term"><span class= + "command"><strong>msgconv</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует каталог переводов в другую кодировку + символов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="msgen" name="msgen"></a><span class= + "term"><span class= + "command"><strong>msgen</strong></span></span> + </p> + </td> + <td> + <p> + Создает каталог переводов на английский язык + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="msgexec" name="msgexec"></a><span class= + "term"><span class= + "command"><strong>msgexec</strong></span></span> + </p> + </td> + <td> + <p> + Применяет команду ко всем переводам каталога + переводов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="msgfilter" name="msgfilter"></a><span class= + "term"><span class= + "command"><strong>msgfilter</strong></span></span> + </p> + </td> + <td> + <p> + Применяет фильтр ко всем переводам каталога + переводов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="msgfmt" name="msgfmt"></a><span class= + "term"><span class= + "command"><strong>msgfmt</strong></span></span> + </p> + </td> + <td> + <p> + Генерирует каталог двоичных сообщений из каталога + переводов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="msggrep" name="msggrep"></a><span class= + "term"><span class= + "command"><strong>msggrep</strong></span></span> + </p> + </td> + <td> + <p> + Извлекает все сообщения каталога переводов, которые + соответствуют заданному шаблону или принадлежат + нескольким указанным исходным файлам + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="msginit" name="msginit"></a><span class= + "term"><span class= + "command"><strong>msginit</strong></span></span> + </p> + </td> + <td> + <p> + Создает новый файл <code class= + "filename">.po</code>, инициализируя метаинформацию + значениями из среды пользователя. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="msgmerge" name="msgmerge"></a><span class= + "term"><span class= + "command"><strong>msgmerge</strong></span></span> + </p> + </td> + <td> + <p> + Объединяет два необработанных перевода в один файл + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="msgunfmt" name="msgunfmt"></a><span class= + "term"><span class= + "command"><strong>msgunfmt</strong></span></span> + </p> + </td> + <td> + <p> + Декомпилирует каталог двоичных сообщений в + необработанный текст перевода + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="msguniq" name="msguniq"></a><span class= + "term"><span class= + "command"><strong>msguniq</strong></span></span> + </p> + </td> + <td> + <p> + Объединяет дублирующиеся переводы в каталоге + переводов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ngettext" name="ngettext"></a><span class= + "term"><span class= + "command"><strong>ngettext</strong></span></span> + </p> + </td> + <td> + <p> + Отображает перевод текстового сообщения на родной + язык, грамматическая форма которого зависит от + числа. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="recode-sr-latin" name= + "recode-sr-latin"></a><span class= + "term"><span class= + "command"><strong>recode-sr-latin</strong></span></span> + </p> + </td> + <td> + <p> + Перекодирует сербский текст с кириллицы на + латиницу. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xgettext" name="xgettext"></a><span class= + "term"><span class= + "command"><strong>xgettext</strong></span></span> + </p> + </td> + <td> + <p> + Извлекает переводимые строки сообщений из заданных + исходных файлов для создания первого шаблона + перевода. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libasprintf" name= + "libasprintf"></a><span class="term"><code class= + "filename">libasprintf</code></span> + </p> + </td> + <td> + <p> + Определяет класс <span class= + "emphasis"><em>autosprintf</em></span>, который + делает подпрограммы вывода в формате C пригодными + для использования в программах на C++ для + использования со строками <span class= + "emphasis"><em><string></em></span> и + потоками <span class= + "emphasis"><em><iostream></em></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libgettextlib" name= + "libgettextlib"></a><span class="term"><code class= + "filename">libgettextlib</code></span> + </p> + </td> + <td> + <p> + Содержит общие подпрограммы, используемые + различными программами Gettext; они не + предназначены для общего использования + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libgettextpo" name= + "libgettextpo"></a><span class="term"><code class= + "filename">libgettextpo</code></span> + </p> + </td> + <td> + <p> + Используется для написания специализированных + программ, обрабатывающих файлы <code class= + "filename">.po</code>; эта библиотека используется, + когда стандартных приложений, поставляемых с + Gettext (таких как <span class= + "command"><strong>msgcomm</strong></span>, + <span class= + "command"><strong>msgcmp</strong></span>, + <span class= + "command"><strong>msgattrib</strong></span>, и + <span class= + "command"><strong>msgen</strong></span>), + недостаточно. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libgettextsrc" name= + "libgettextsrc"></a><span class="term"><code class= + "filename">libgettextsrc</code></span> + </p> + </td> + <td> + <p> + Предоставляет общие подпрограммы, используемые + различными программами Gettext; они не + предназначены для общего использования + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libtextstyle" name= + "libtextstyle"></a><span class="term"><code class= + "filename">libtextstyle</code></span> + </p> + </td> + <td> + <p> + Библиотека стилей текста + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="preloadable_libintl" name= + "preloadable_libintl"></a><span class= + "term"><code class= + "filename">preloadable_libintl</code></span> + </p> + </td> + <td> + <p> + Библиотека, предназначенная для использования + LD_PRELOAD, которая помогает <code class= + "filename">libintl</code> записывать в журнал + непереведённые сообщения + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-bison" name="ch-system-bison"></a>8.33. + Bison-3.8.2 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Bison содержит генератор синтаксического анализа. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">2.3 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">62 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.33.1. Установка пакета Bison + </h3> + <p> + Подготовьте Bison к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.8.2</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Для тестирования пакета (около 5,5 SBU), выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-bison" name="contents-bison"></a>8.33.2. + Содержимое пакета Bison + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">bison и + yacc</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">liby.a</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/bison</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm8918" name="idm8918"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="bison" name="bison"></a><span class= + "term"><span class= + "command"><strong>bison</strong></span></span> + </p> + </td> + <td> + <p> + Генерирует из набора правил программу для анализа + структуры текстовых файлов; Bison является заменой + Yacc (Yet Another Compiler Compiler) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="yacc" name="yacc"></a><span class= + "term"><span class= + "command"><strong>yacc</strong></span></span> + </p> + </td> + <td> + <p> + Обертка для <span class= + "command"><strong>bison</strong></span>, + предназначенная для программ, которые до сих пор + вызывают <span class= + "command"><strong>yacc</strong></span> вместо + <span class= + "command"><strong>bison</strong></span>; он + вызывает <span class= + "command"><strong>bison</strong></span> с + параметром <em class= + "parameter"><code>-y</code></em> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="liby" name="liby"></a><span class= + "term"><code class="filename">liby</code></span> + </p> + </td> + <td> + <p> + Библиотека Yacc, содержащая реализации + Yacc-совместимых функций <code class= + "function">yyerror</code> и <code class= + "function">main</code>; обычно эта библиотека не + очень нужна, но требуется POSIX + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-grep" name="ch-system-grep"></a>8.34. + Grep-3.11 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Grep содержит программы для поиска по содержимому + файлов. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.4 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">39 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.34.1. Установка пакета Grep + </h3> + <p> + Во-первых, удалите предупреждение об использовании egrep и + fgrep, которое приводит к сбою тестов некоторых пакетов: + </p> + <pre class="userinput"><kbd class= + "command">sed -i "s/echo/#echo/" src/egrep.sh</kbd></pre> + <p> + Подготовьте Grep к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-grep" name="contents-grep"></a>8.34.2. + Содержимое пакета Grep + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">egrep, fgrep, и + grep</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm8984" name="idm8984"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="egrep" name="egrep"></a><span class= + "term"><span class= + "command"><strong>egrep</strong></span></span> + </p> + </td> + <td> + <p> + Выводит строки, соответствующие расширенному + регулярному выражению. Команда устарела, вместо неё + используйте <span class="command"><strong>grep + -E</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fgrep" name="fgrep"></a><span class= + "term"><span class= + "command"><strong>fgrep</strong></span></span> + </p> + </td> + <td> + <p> + Выводит строки, соответствующие списку + фиксированных строк. Команда устарела, вместо неё + используйте <span class="command"><strong>grep + -F</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grep" name="grep"></a><span class= + "term"><span class= + "command"><strong>grep</strong></span></span> + </p> + </td> + <td> + <p> + Выводит строки, соответствующие простому + регулярному выражению + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-bash" name="ch-system-bash"></a>8.35. + Bash-5.2.21 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Bash содержит Bourne-Again Shell. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">1.2 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">52 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.35.1. Установка пакета Bash + </h3> + <p> + Во-первых, исправьте некоторые проблемы, выявленные + разработчиками: + </p> + <pre class="userinput"><kbd class= + "command">patch -Np1 -i ../bash-5.2.21-upstream_fixes-1.patch</kbd></pre> + <p> + Подготовьте Bash к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --without-bash-malloc \ + --with-installed-readline \ + --docdir=/usr/share/doc/bash-5.2.21</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение нового параметра настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--with-installed-readline</code></em></span> + </dt> + <dd> + <p> + Этот параметр указывает Bash использовать библиотеку + <code class="filename">readline</code>, которая уже + установлена в системе, а не собственную версию + readline. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Перейдите к разделу <span class="quote">«<span class= + "quote">Установка пакета</span>»</span>, если не планируете + запускать тесты. + </p> + <p> + Перед запуском тестов, убедитесь, что пользователь + <code class="systemitem">tester</code> может писать в каталог + с исходниками: + </p> + <pre class="userinput"><kbd class= + "command">chown -R tester .</kbd></pre> + <p> + Набор тестов пакета предназначен для запуска пользователем + без полномочий root, которому принадлежит терминал, + подключенный к стандартному вводу. Чтобы удовлетворить это + требование, создайте новый псевдотерминал с помощью + <span class="application">Expect</span> и запустите тесты от + имени пользователя <code class="systemitem">tester</code>: + </p> + <pre class="userinput"><kbd class= + "command">su -s /usr/bin/expect tester << "EOF" +set timeout -1 +spawn make tests +expect eof +lassign [wait] _ _ _ value +exit $value +EOF</kbd></pre> + <p> + Набор тестов использует <span class= + "command"><strong>diff</strong></span> для определения + разницы между выводом тестового сценария и ожидаемым + результатом. Любой вывод <span class= + "command"><strong>diff</strong></span> (с префиксом + <code class="computeroutput"><</code> и <code class= + "computeroutput">></code>) указывает на сбой теста, если + нет сообщение о том, что различия можно проигнорировать. + Известно, что один тест с именем <code class= + "filename">run-builtins</code> не работает на некоторых + хост-дистрибутивах, указывая на различия в первой строке + выходных данных. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + Запустите только что скомпилированную программу <span class= + "command"><strong>bash</strong></span> (заменив ту, которая + выполняется в данный момент): + </p> + <pre class="userinput"><kbd class= + "command">exec /usr/bin/bash --login</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-bash" name="contents-bash"></a>8.35.2. + Содержимое пакета Bash + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">bash, bashbug и + sh (ссылка на bash)</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/include/bash, /usr/lib/bash, + and /usr/share/doc/bash-5.2.21</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm9073" name="idm9073"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="bash" name="bash"></a><span class= + "term"><span class= + "command"><strong>bash</strong></span></span> + </p> + </td> + <td> + <p> + Широко распространенный командный интерпретатор. + Выполняет различные дополнения и подстановки в + переданной командной строке перед её выполнением, + что делает этот интерпретатор мощным инструментом + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="bashbug" name="bashbug"></a><span class= + "term"><span class= + "command"><strong>bashbug</strong></span></span> + </p> + </td> + <td> + <p> + Скрипт, помогающий пользователю составлять и + отправлять по почте отчеты об ошибках <span class= + "command"><strong>bash</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sh" name="sh"></a><span class= + "term"><span class= + "command"><strong>sh</strong></span></span> + </p> + </td> + <td> + <p> + Симлинк на программу <span class= + "command"><strong>bash</strong></span>; при вызове + <span class="command"><strong>sh</strong></span>, + <span class="command"><strong>bash</strong></span> + пытается максимально точно имитировать поведение + <span class="command"><strong>sh</strong></span>, + при этом также соответствуя стандарту POSIX. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-libtool" name= + "ch-system-libtool"></a>8.36. Libtool-2.4.7 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Libtool содержит сценарий поддержки универсальной + библиотеки GNU. Это упрощает использование общих библиотек + благодаря согласованному переносимому интерфейсу. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.6 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">45 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.36.1. Установка пакета Libtool + </h3> + <p> + Подготовьте Libtool к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make -k check</kbd></pre> + <p> + Известно, что пять тестов в среде сборки LFS завершаются + неудачно из-за циклической зависимости, но эти тесты проходят + успешно, если запустить их повторно после установки automake. + Кроме того, в grep-3.8 или более поздней версии два теста + вызовут предупреждение для регулярных выражений, + несовместимых с POSIX и завершатся ошибкой. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + Удалите ненужную статическую библиотеку: + </p> + <pre class="userinput"><kbd class= + "command">rm -fv /usr/lib/libltdl.a</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-libtool" name="contents-libtool"></a>8.36.2. + Содержимое пакета Libtool + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">libtool и + libtoolize</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libltdl.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/include/libltdl и + /usr/share/libtool</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm9142" name="idm9142"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="libtool" name="libtool"></a><span class= + "term"><span class= + "command"><strong>libtool</strong></span></span> + </p> + </td> + <td> + <p> + Обеспечивает общие услуги поддержки при сборке + библиотек + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libtoolize" name= + "libtoolize"></a><span class="term"><span class= + "command"><strong>libtoolize</strong></span></span> + </p> + </td> + <td> + <p> + Предоставляет стандартный способ добавления + поддержки <span class= + "command"><strong>libtool</strong></span> в пакет + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libltdl" name="libltdl"></a><span class= + "term"><code class="filename">libltdl</code></span> + </p> + </td> + <td> + <p> + Скрывает различные проблемы, связанные с открытием + динамически загружаемых библиотек + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-gdbm" name="ch-system-gdbm"></a>8.37. + GDBM-1.23 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет GDBM содержит менеджер баз данных GNU. Это библиотека + функций базы данных, использующая расширяемое хеширование и + работающая аналогично стандартной СУБД UNIX. Библиотека + предоставляет примитивы для хранения пар ключ/значение, + поиска и извлечения данных по его ключу и удаления ключа + вместе с его данными. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">13 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.37.1. Установка пакета GDBM + </h3> + <p> + Подготовьте GDBM к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --disable-static \ + --enable-libgdbm-compat</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметра configure:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><code class= + "envar">--enable-libgdbm-compat</code></span> + </dt> + <dd> + <p> + Этот параметр включает сборку библиотеки совместимости + libgdbm. Некоторым пакетам за пределами LFS могут + потребоваться более старые подпрограммы DBM, которые он + предоставляет. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-gdbm" name="contents-gdbm"></a>8.37.2. + Содержимое пакета GDBM + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">gdbm_dump, + gdbm_load, и gdbmtool</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">libgdbm.so и + libgdbm_compat.so</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm9208" name="idm9208"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="gdbm_dump" name="gdbm_dump"></a><span class= + "term"><span class= + "command"><strong>gdbm_dump</strong></span></span> + </p> + </td> + <td> + <p> + Сохраняет дамп базы данных GDBM в файл + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gdbm_load" name="gdbm_load"></a><span class= + "term"><span class= + "command"><strong>gdbm_load</strong></span></span> + </p> + </td> + <td> + <p> + Восстанавливает базу данных GDBM из дампа. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gdbmtool" name="gdbmtool"></a><span class= + "term"><span class= + "command"><strong>gdbmtool</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет и изменяет базу данных GDBM + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libgdbm" name="libgdbm"></a><span class= + "term"><code class="filename">libgdbm</code></span> + </p> + </td> + <td> + <p> + Содержит функции для управления хэшированной базой + данных + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libgdbm_compat" name= + "libgdbm_compat"></a><span class= + "term"><code class="filename">libgdbm_compat</code></span> + </p> + </td> + <td> + <p> + Библиотека совместимости, содержащая более старые + функции DBM + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-gperf" name="ch-system-gperf"></a>8.38. + Gperf-3.1 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Gperf генерирует идеальную хэш-функцию из набора ключей. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">6.1 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.38.1. Установка пакета Gperf + </h3> + <p> + Подготовьте Gperf к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Известно, что тесты завершаются ошибкой при одновременном + выполнении нескольких тестов (параметр -j больше 1). Для + выполнения тестов, запустите следующую команду: + </p> + <pre class="userinput"><kbd class= + "command">make -j1 check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-gperf" name="contents-gperf"></a>8.38.2. + Содержимое пакета Gperf + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">gperf</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/doc/gperf-3.1</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm9280" name="idm9280"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="gperf" name="gperf"></a><span class= + "term"><span class= + "command"><strong>gperf</strong></span></span> + </p> + </td> + <td> + <p> + Генерирует идеальный хэш из набора ключей + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-expat" name="ch-system-expat"></a>8.39. + Expat-2.6.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Expat содержит потоковую библиотеку C для + синтаксического анализа XML + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">13 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.39.1. Установка пакета Expat + </h3> + <p> + Подготовьте Expat к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --disable-static \ + --docdir=/usr/share/doc/expat-2.6.0</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + По желанию установите документацию: + </p> + <pre class="userinput"><kbd class= + "command">install -v -m644 doc/*.{html,css} /usr/share/doc/expat-2.6.0</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-expat" name="contents-expat"></a>8.39.2. + Содержимое пакета Expat + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">xmlwf</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libexpat.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/doc/expat-2.6.0</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm9329" name="idm9329"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="xmlwf" name="xmlwf"></a><span class= + "term"><span class= + "command"><strong>xmlwf</strong></span></span> + </p> + </td> + <td> + <p> + Утилита проверки правильности формирования XML + документов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libexpat" name="libexpat"></a><span class= + "term"><code class= + "filename">libexpat</code></span> + </p> + </td> + <td> + <p> + Содержит функции API для синтаксического анализа + XML + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-inetutils" name= + "ch-system-inetutils"></a>8.40. Inetutils-2.5 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Inetutils содержит базовые программы для работы с + сетью. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.2 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">35 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.40.1. Установка пакета Inetutils + </h3> + <p> + Подготовьте Inetutils к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --bindir=/usr/bin \ + --localstatedir=/var \ + --disable-logger \ + --disable-whois \ + --disable-rcp \ + --disable-rexec \ + --disable-rlogin \ + --disable-rsh \ + --disable-servers</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-logger</code></em></span> + </dt> + <dd> + <p> + Параметр запрещает установку программы <span class= + "command"><strong>logger</strong></span>, используемой + скриптами для отправки сообщений системной службе + логирования (System Log Daemon). Не устанавливайте её, + т.к. Util-linux устанавливает более свежую версию. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-whois</code></em></span> + </dt> + <dd> + <p> + Этот параметр отключает сборку <span class= + "command"><strong>whois</strong></span>-клиента + Inetutils, который устарел. Инструкции для сборки более + нового клиента <span class= + "command"><strong>whois</strong></span> находятся в + книге BLFS. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-r*</code></em></span> + </dt> + <dd> + <p> + Отключает установку устаревших программ, которые не + должны использоваться по соображениям безопасности. + Функционал этих программы можно получить установкой + пакета <span class="application">openssh</span> из + книги BLFS. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-servers</code></em></span> + </dt> + <dd> + <p> + Отключает установку различных сетевых серверов, + входящих в состав пакета Inetutils. Эти серверы + считаются неподходящими для базовой системы LFS. + Некоторые из них небезопасны по своей природе и + считаются надежными только в доверенных сетях. Обратите + внимание, что для многих из них доступны более + качественные замены. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните:: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + Переместите программу в правильное место: + </p> + <pre class="userinput"><kbd class= + "command">mv -v /usr/{,s}bin/ifconfig</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-inetutils" name= + "contents-inetutils"></a>8.40.2. Содержимое пакета Inetutils + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">dnsdomainname, + ftp, ifconfig, hostname, ping, ping6, talk, telnet, tftp + и traceroute</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm9407" name="idm9407"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="dnsdomainname" name= + "dnsdomainname"></a><span class="term"><span class= + "command"><strong>dnsdomainname</strong></span></span> + </p> + </td> + <td> + <p> + Показывает системное DNS имя + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ftp" name="ftp"></a><span class= + "term"><span class= + "command"><strong>ftp</strong></span></span> + </p> + </td> + <td> + <p> + Программа для передачи файлов по протоколу FTP + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="hostname" name="hostname"></a><span class= + "term"><span class= + "command"><strong>hostname</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает или задает имя хоста + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ifconfig" name="ifconfig"></a><span class= + "term"><span class= + "command"><strong>ifconfig</strong></span></span> + </p> + </td> + <td> + <p> + Управляет сетевыми интерфейсами + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ping" name="ping"></a><span class= + "term"><span class= + "command"><strong>ping</strong></span></span> + </p> + </td> + <td> + <p> + Отправляет пакеты эхо-запросов и сообщает, сколько + времени занимают ответы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ping6" name="ping6"></a><span class= + "term"><span class= + "command"><strong>ping6</strong></span></span> + </p> + </td> + <td> + <p> + Версия <span class= + "command"><strong>ping</strong></span> для сетей + IPv6 + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="talk" name="talk"></a><span class= + "term"><span class= + "command"><strong>talk</strong></span></span> + </p> + </td> + <td> + <p> + Используется для общения с другими пользователями + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="telnet" name="telnet"></a><span class= + "term"><span class= + "command"><strong>telnet</strong></span></span> + </p> + </td> + <td> + <p> + Интерфейс к протоколу TELNET + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tftp" name="tftp"></a><span class= + "term"><span class= + "command"><strong>tftp</strong></span></span> + </p> + </td> + <td> + <p> + Программа для передачи файлов по протоколу TFTP + (Trivial File Transfer Protocol — простой протокол + передачи файлов) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="traceroute" name= + "traceroute"></a><span class="term"><span class= + "command"><strong>traceroute</strong></span></span> + </p> + </td> + <td> + <p> + Отслеживает маршрут, по которому проходят ваши + пакеты от хоста на которым вы работаете, к другому + узлу сети, показывая все промежуточные переходы + (шлюзы) на этом пути. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-less" name="ch-system-less"></a>8.41. + Less-643 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Less содержит средство просмотра текстовых файлов + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">12 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.41.1. Установка пакета Less + </h3> + <p> + Подготовьте Less к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr --sysconfdir=/etc</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--sysconfdir=/etc</code></em></span> + </dt> + <dd> + <p> + Этот параметр указывает программам, созданным пакетом, + искать файлы конфигурации в <code class= + "filename">/etc</code>. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-less" name="contents-less"></a>8.41.2. + Содержимое пакета Less + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">less, lessecho + и lesskey</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm9521" name="idm9521"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="less" name="less"></a><span class= + "term"><span class= + "command"><strong>less</strong></span></span> + </p> + </td> + <td> + <p> + Просмотрщик файлов; отображает содержимое данного + файла, позволяя пользователю прокручивать файл, + искать строки и переходить к меткам + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lessecho" name="lessecho"></a><span class= + "term"><span class= + "command"><strong>lessecho</strong></span></span> + </p> + </td> + <td> + <p> + Требуется для расширения метасимволов, таких как + <span class="emphasis"><em>*</em></span> и + <span class="emphasis"><em>?</em></span>, в именах + файлов в системах Unix + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lesskey" name="lesskey"></a><span class= + "term"><span class= + "command"><strong>lesskey</strong></span></span> + </p> + </td> + <td> + <p> + Используется для привязки клавиш в программе + <span class="command"><strong>less</strong></span> + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-perl" name="ch-system-perl"></a>8.42. + Perl-5.38.2 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Perl содержит практический язык для извлечения данных и + составления отчётов (Practical Extraction and Report + Language). + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">1.5 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">239 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.42.1. Установка пакета Perl + </h3> + <p> + Эта версия Perl собирает модули Compress::Raw::Zlib и + Compress::Raw::BZip2. По умолчанию Perl будет использовать + внутреннюю копию исходников для сборки. Выполните следующую + команду, чтобы Perl использовал библиотеки, установленные в + системе: + </p> + <pre class="userinput"><kbd class= + "command">export BUILD_ZLIB=False +export BUILD_BZIP2=0</kbd></pre> + <p> + Чтобы иметь полный контроль над настройкой Perl, вы можете + удалить параметры <span class="quote">«<span class= + "quote">-des</span>»</span> из следующей команды и вручную + выбрать способ сборки этого пакета. В качестве альтернативы, + используйте команду точно так, как указано ниже, чтобы + использовать значения по умолчанию, которые Perl определяет + автоматически: + </p> + <pre class="userinput"><kbd class= + "command">sh Configure -des \ + -Dprefix=/usr \ + -Dvendorprefix=/usr \ + -Dprivlib=/usr/lib/perl5/5.38/core_perl \ + -Darchlib=/usr/lib/perl5/5.38/core_perl \ + -Dsitelib=/usr/lib/perl5/5.38/site_perl \ + -Dsitearch=/usr/lib/perl5/5.38/site_perl \ + -Dvendorlib=/usr/lib/perl5/5.38/vendor_perl \ + -Dvendorarch=/usr/lib/perl5/5.38/vendor_perl \ + -Dman1dir=/usr/share/man/man1 \ + -Dman3dir=/usr/share/man/man3 \ + -Dpager="/usr/bin/less -isR" \ + -Duseshrplib \ + -Dusethreads</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров Configure:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>-Dpager="/usr/bin/less + -isR"</code></em></span> + </dt> + <dd> + <p> + Параметр указывает использовать <strong class= + "userinput"><code>less</code></strong> вместо + <strong class="userinput"><code>more</code></strong>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>-Dman1dir=/usr/share/man/man1 + -Dman3dir=/usr/share/man/man3</code></em></span> + </dt> + <dd> + <p> + Так как Groff еще не установлен, <span class= + "command"><strong>Configure</strong></span> не будет + создавать man-страницы для Perl. Эти параметры + переопределяют это поведение. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>-Dusethreads</code></em></span> + </dt> + <dd> + <p> + Собрать Perl с поддержкой потоков. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет (примерно 11 SBU), выполните: + </p> + <pre class="userinput"><kbd class= + "command">TEST_JOBS=$(nproc) make test_harness</kbd></pre> + <p> + Установка пакета и очистка: + </p> + <pre class="userinput"><kbd class="command">make install +unset BUILD_ZLIB BUILD_BZIP2</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-perl" name="contents-perl"></a>8.42.2. + Содержимое пакета Perl + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">corelist, cpan, + enc2xs, encguess, h2ph, h2xs, instmodsh, json_pp, + libnetcfg, perl, perl5.38.2 (жесткая ссылка на perl), + perlbug, perldoc, perlivp, perlthanks (жесткая ссылка на + perlbug), piconv, pl2pm, pod2html, pod2man, pod2text, + pod2usage, podchecker, podselect, prove, ptar, ptardiff, + ptargrep, shasum, splain, xsubpp и zipdetails</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">Список слишком + большой для перечисления</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/lib/perl5</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm9608" name="idm9608"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="corelist" name="corelist"></a><span class= + "term"><span class= + "command"><strong>corelist</strong></span></span> + </p> + </td> + <td> + <p> + Интерфейс командной строки для Module::CoreList + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="cpan" name="cpan"></a><span class= + "term"><span class= + "command"><strong>cpan</strong></span></span> + </p> + </td> + <td> + <p> + Позволяет получать из командной строки доступ к + архиву документации и программ Perl (Comprehensive + Perl Archive Network - CPAN) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="enc2xs" name="enc2xs"></a><span class= + "term"><span class= + "command"><strong>enc2xs</strong></span></span> + </p> + </td> + <td> + <p> + Собирает расширение Perl для модуля Encode либо с + использование таблицы символов Unicode, либо с + использованием файлов кодирования Tcl + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="encguess" name="encguess"></a><span class= + "term"><span class= + "command"><strong>encguess</strong></span></span> + </p> + </td> + <td> + <p> + Определяет тип кодировки одного или нескольких + файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="h2ph" name="h2ph"></a><span class= + "term"><span class= + "command"><strong>h2ph</strong></span></span> + </p> + </td> + <td> + <p> + Конвертирует заголовочные файлы Си <code class= + "filename">.h</code> в заголовочные файлы Perl + <code class="filename">.ph</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="h2xs" name="h2xs"></a><span class= + "term"><span class= + "command"><strong>h2xs</strong></span></span> + </p> + </td> + <td> + <p> + Конвертирует заголовочные файлы Си <code class= + "filename">.h</code> в расширения Perl + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="instmodsh" name="instmodsh"></a><span class= + "term"><span class= + "command"><strong>instmodsh</strong></span></span> + </p> + </td> + <td> + <p> + Сценарий оболочки для проверки установленных + модулей Perl; он может создать архив из + установленного модуля. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="json_pp" name="json_pp"></a><span class= + "term"><span class= + "command"><strong>json_pp</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует данные между определенными входными и + выходными форматами + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libnetcfg" name="libnetcfg"></a><span class= + "term"><span class= + "command"><strong>libnetcfg</strong></span></span> + </p> + </td> + <td> + <p> + Может использоваться для настройки Perl-модуля + <code class="filename">libnet</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="perl" name="perl"></a><span class= + "term"><span class= + "command"><strong>perl</strong></span></span> + </p> + </td> + <td> + <p> + Объединяет лучшие возможности C, <span class= + "command"><strong>sed</strong></span>, <span class= + "command"><strong>awk</strong></span> и + <span class="command"><strong>sh</strong></span> в + одном языке + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="perl-version" name= + "perl-version"></a><span class="term"><span class= + "command"><strong>perl5.38.2</strong></span></span> + </p> + </td> + <td> + <p> + Жесткая ссылка на <span class= + "command"><strong>perl</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="perlbug" name="perlbug"></a><span class= + "term"><span class= + "command"><strong>perlbug</strong></span></span> + </p> + </td> + <td> + <p> + Используется для создания отчетов об ошибках в Perl + или модулях, которые поставляются с ним, и отправки + их по почте + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="perldoc" name="perldoc"></a><span class= + "term"><span class= + "command"><strong>perldoc</strong></span></span> + </p> + </td> + <td> + <p> + Отображает часть документации в формате pod, + которая встроена в дерево установки Perl или в + сценарий Perl + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="perlivp" name="perlivp"></a><span class= + "term"><span class= + "command"><strong>perlivp</strong></span></span> + </p> + </td> + <td> + <p> + Процедура проверки установки Perl; ее можно + использовать для проверки правильности установки + Perl и его библиотек + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="perlthanks" name= + "perlthanks"></a><span class="term"><span class= + "command"><strong>perlthanks</strong></span></span> + </p> + </td> + <td> + <p> + Используется для создания сообщения-благодарности, + отсылаемого разработчикам Perl + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="piconv" name="piconv"></a><span class= + "term"><span class= + "command"><strong>piconv</strong></span></span> + </p> + </td> + <td> + <p> + Perl версия конвертера <span class= + "command"><strong>iconv</strong></span>, + используемого для кодирования символов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pl2pm" name="pl2pm"></a><span class= + "term"><span class= + "command"><strong>pl2pm</strong></span></span> + </p> + </td> + <td> + <p> + Инструмент для грубого конвертирования файлов + <code class="filename">.pl</code> Perl4 в модули + <code class="filename">.pm</code> Perl5 + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pod2html" name="pod2html"></a><span class= + "term"><span class= + "command"><strong>pod2html</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует файлы из формата pod в формат HTML + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pod2man" name="pod2man"></a><span class= + "term"><span class= + "command"><strong>pod2man</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует данные pod в форматированный входной + поток для *roff + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pod2text" name="pod2text"></a><span class= + "term"><span class= + "command"><strong>pod2text</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует данные pod в форматированный текст + ASCII + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pod2usage" name="pod2usage"></a><span class= + "term"><span class= + "command"><strong>pod2usage</strong></span></span> + </p> + </td> + <td> + <p> + Печатает в файл сообщения usage из встроенных + документов pod + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="podchecker" name= + "podchecker"></a><span class="term"><span class= + "command"><strong>podchecker</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет синтаксис файлов документации формата pod + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="podselect" name="podselect"></a><span class= + "term"><span class= + "command"><strong>podselect</strong></span></span> + </p> + </td> + <td> + <p> + Отображает выбранные разделы документации pod + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="prove" name="prove"></a><span class= + "term"><span class= + "command"><strong>prove</strong></span></span> + </p> + </td> + <td> + <p> + Инструмент командной строки для выполнения тестов с + помощью модуля Test::Harness + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ptar" name="ptar"></a><span class= + "term"><span class= + "command"><strong>ptar</strong></span></span> + </p> + </td> + <td> + <p> + Программа, похожая на <span class= + "command"><strong>tar</strong></span>, написанная + на Perl + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ptardiff" name="ptardiff"></a><span class= + "term"><span class= + "command"><strong>ptardiff</strong></span></span> + </p> + </td> + <td> + <p> + Программа на Perl для сравнения распакованного и + нераспакованного архивов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ptargrep" name="ptargrep"></a><span class= + "term"><span class= + "command"><strong>ptargrep</strong></span></span> + </p> + </td> + <td> + <p> + Программа на Perl для текстового поиска по шаблону + внутри tar-архива + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="shasum" name="shasum"></a><span class= + "term"><span class= + "command"><strong>shasum</strong></span></span> + </p> + </td> + <td> + <p> + Печатает или проверяет контрольные суммы SHA + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="splain" name="splain"></a><span class= + "term"><span class= + "command"><strong>splain</strong></span></span> + </p> + </td> + <td> + <p> + Включает подробные предупреждения для диагностики в + Perl + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xsubpp" name="xsubpp"></a><span class= + "term"><span class= + "command"><strong>xsubpp</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует код Perl XS в код C + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zipdetails" name= + "zipdetails"></a><span class="term"><span class= + "command"><strong>zipdetails</strong></span></span> + </p> + </td> + <td> + <p> + Отображает сведения о внутренней структуре + Zip-файла + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-xml-parser" name= + "ch-system-xml-parser"></a>8.43. XML::Parser-2.47 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Модуль XML::Parser представляет собой Perl-интерфейс к + XML-парсеру Джеймса Кларка Expat. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">2.4 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.43.1. Установка пакета XML::Parser + </h3> + <p> + Подготовьте XML::Parser к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">perl Makefile.PL</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make test</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-xml-parser" name= + "contents-xml-parser"></a>8.43.2. Содержимое XML::Parser + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленный модуль:</strong> + <span class="segbody">Expat.so</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm9872" name="idm9872"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="Expat" name="Expat"></a><span class= + "term"><code class="filename">Expat</code></span> + </p> + </td> + <td> + <p> + предоставляет Perl интерфейс для Expat + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-intltool" name= + "ch-system-intltool"></a>8.44. Intltool-0.51.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Intltool — это инструмент интернационализации, используемый + для извлечения переводимых строк из исходных файлов. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">1.5 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.44.1. Установка пакета Intltool + </h3> + <p> + Сначала исправьте предупреждение, вызываемое perl-5.22 и + более поздними версиями: + </p> + <pre class="userinput"><kbd class= + "command">sed -i 's:\\\${:\\\$\\{:' intltool-update.in</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Приведенное выше регулярное выражение выглядит необычно + из-за множества слэшей. Что оно делает, так это добавляет + обратную косую черту перед правой фигурной скобкой в + последовательности '\${' в результате чего получается + '\$\{'. + </p> + </div> + <p> + Подготовьте Intltool к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class="command">make install +install -v -Dm644 doc/I18N-HOWTO /usr/share/doc/intltool-0.51.0/I18N-HOWTO</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-intltool" name= + "contents-intltool"></a>8.44.2. Содержимое пакета Intltool + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class= + "segbody">intltool-extract, intltool-merge, + intltool-prepare, intltool-update и intltoolize</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/doc/intltool-0.51.0 и + /usr/share/intltool</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm9921" name="idm9921"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="intltoolize" name= + "intltoolize"></a><span class="term"><span class= + "command"><strong>intltoolize</strong></span></span> + </p> + </td> + <td> + <p> + Подготавливает пакет для использования intltool + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="intltool-extract" name= + "intltool-extract"></a><span class= + "term"><span class= + "command"><strong>intltool-extract</strong></span></span> + </p> + </td> + <td> + <p> + Генерирует заголовочные файлы, которые могут быть + прочитаны с помощью <span class= + "command"><strong>gettext</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="intltool-merge" name= + "intltool-merge"></a><span class= + "term"><span class="command"><strong>intltool-merge</strong></span></span> + </p> + </td> + <td> + <p> + Объединяет переведенные строки в файлы различных + типов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="intltool-prepare" name= + "intltool-prepare"></a><span class= + "term"><span class= + "command"><strong>intltool-prepare</strong></span></span> + </p> + </td> + <td> + <p> + Обновляет файлы pot и объединяет их с файлами + перевода + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="intltool-update" name= + "intltool-update"></a><span class= + "term"><span class= + "command"><strong>intltool-update</strong></span></span> + </p> + </td> + <td> + <p> + Обновляет файлы шаблонов po и объединяет их с + переводами + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-autoconf" name= + "ch-system-autoconf"></a>8.45. Autoconf-2.72 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Autoconf содержит программы для создания сценариев + оболочки, которые могут автоматически настраивать исходный + код. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 SBU + (около 0.5 SBU с тестами)</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">25 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.45.1. Установка пакета Autoconf + </h3> + <p> + Подготовьте Autoconf к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-autoconf" name= + "contents-autoconf"></a>8.45.2. Содержимое пакета Autoconf + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">autoconf, + autoheader, autom4te, autoreconf, autoscan, autoupdate, и + ifnames</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/autoconf</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm9994" name="idm9994"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="autoconf" name="autoconf"></a><span class= + "term"><span class= + "command"><strong>autoconf</strong></span></span> + </p> + </td> + <td> + <p> + Генерирует сценарии оболочки, которые автоматически + настраивают пакеты исходного кода программного + обеспечения для адаптации ко многим типам + Unix-подобных систем; создаваемые сценарии + независимы—для их запуска не требуется программа + <span class= + "command"><strong>autoconf</strong></span>. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="autoheader" name= + "autoheader"></a><span class="term"><span class= + "command"><strong>autoheader</strong></span></span> + </p> + </td> + <td> + <p> + Инструмент для создания файлов шаблонов операторов + C <span class="emphasis"><em>#define</em></span> + для использования в configure + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="autom4te" name="autom4te"></a><span class= + "term"><span class= + "command"><strong>autom4te</strong></span></span> + </p> + </td> + <td> + <p> + Обертка для макропроцессора M4 + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="autoreconf" name= + "autoreconf"></a><span class="term"><span class= + "command"><strong>autoreconf</strong></span></span> + </p> + </td> + <td> + <p> + Автоматически запускает <span class= + "command"><strong>autoconf</strong></span>, + <span class= + "command"><strong>autoheader</strong></span>, + <span class= + "command"><strong>aclocal</strong></span>, + <span class= + "command"><strong>automake</strong></span>, + <span class= + "command"><strong>gettextize</strong></span> и + <span class= + "command"><strong>libtoolize</strong></span> в + правильном порядке, чтобы сэкономить время, при + внесении изменений в файлы шаблонов <span class= + "command"><strong>autoconf</strong></span> и + <span class= + "command"><strong>automake</strong></span>. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="autoscan" name="autoscan"></a><span class= + "term"><span class= + "command"><strong>autoscan</strong></span></span> + </p> + </td> + <td> + <p> + Помогает создать файл <code class= + "filename">configure.in</code> для пакета + программного обеспечения; проверяет исходные файлы + в дереве каталогов, ищет в них распространенные + проблемы с переносимостью и создает файл + <code class="filename">configure.scan</code>, + который является предварительным файлом + <code class="filename">configure.in</code> для + пакета. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="autoupdate" name= + "autoupdate"></a><span class="term"><span class= + "command"><strong>autoupdate</strong></span></span> + </p> + </td> + <td> + <p> + Изменяет файл <code class= + "filename">configure.in</code>, вызывающий макросы + <span class= + "command"><strong>autoconf</strong></span> по их + старым именам для использования текущих имен + макросов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ifnames" name="ifnames"></a><span class= + "term"><span class= + "command"><strong>ifnames</strong></span></span> + </p> + </td> + <td> + <p> + Помогает при написании файла <code class= + "filename">configure.in</code> для пакета; выводит + идентификаторы, которые использует пакет в условных + выражениях препроцессора C. (Если пакет уже был + настроен для некоторой переносимости, эта программа + может помочь определить, что нужно проверить + сценарию <span class= + "command"><strong>configure</strong></span>. Он + также может заполнить пробелы в файле <code class= + "filename">configure.in</code>, сгенерированном + командой <span class= + "command"><strong>autoscan</strong></span>.) + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-automake" name= + "ch-system-automake"></a>8.46. Automake-1.16.5 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Automake содержит программы генерации Makefile для + использования с Autoconf. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 SBU + (около 1.6 SBU с тестами)</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">115 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.46.1. Установка пакета Automake + </h3> + <p> + Подготовьте Automake к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.16.5</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Использование четырех параллельных заданий ускоряет + тестирование даже на системах с меньшим количеством + логических ядер из-за внутренних задержек в отдельных тестах. + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class="command">make <em class= + "replaceable"><code>-j$(($(nproc)>4?$(nproc):4))</code></em> check</kbd></pre> + <p> + Замените <em class="replaceable"><code>$((...))</code></em> + количеством логических ядер, которые вы хотите использовать, + если вы не планируете использовать все. + </p> + <p> + Известно, что тест t/subobj.sh не проходит. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-automake" name= + "contents-automake"></a>8.46.2. Содержимое пакета Automake + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">aclocal, + aclocal-1.16 (жестко связан с aclocal), automake, и + automake-1.16 (жестко связан с automake)</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/aclocal-1.16, + /usr/share/automake-1.16, и + /usr/share/doc/automake-1.16.5</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm10103" name="idm10103"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="aclocal" name="aclocal"></a><span class= + "term"><span class= + "command"><strong>aclocal</strong></span></span> + </p> + </td> + <td> + <p> + Генерирует файлы <code class= + "filename">aclocal.m4</code> на основе содержимого + файла <code class="filename">configure.in</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="aclocalversion" name= + "aclocalversion"></a><span class= + "term"><span class="command"><strong>aclocal-1.16</strong></span></span> + </p> + </td> + <td> + <p> + Жесткая ссылка на <span class= + "command"><strong>aclocal</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="automake" name="automake"></a><span class= + "term"><span class= + "command"><strong>automake</strong></span></span> + </p> + </td> + <td> + <p> + Инструмент для автоматического создания + <code class="filename">Makefile.in</code> из файлов + <code class="filename">Makefile.am</code> [Чтобы + создать все файлы <code class= + "filename">Makefile.in</code> запустите эту + программу в каталоге верхнего уровня. Сканируя файл + <code class="filename">configure.in</code>, он + автоматически находит все подходящие файлы + <code class="filename">Makefile.am</code> и создает + соответствующий <code class= + "filename">Makefile.in</code>.] + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="automake-version" name= + "automake-version"></a><span class= + "term"><span class= + "command"><strong>automake-1.16</strong></span></span> + </p> + </td> + <td> + <p> + Жесткая ссылка на <span class= + "command"><strong>automake</strong></span> + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-openssl" name= + "ch-system-openssl"></a>8.47. OpenSSL-3.2.1 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет OpenSSL содержит инструменты управления и библиотеки, + относящиеся к криптографии. Они полезны для предоставления + криптографических функций другим пакетам, таким как OpenSSH, + приложениям электронной почты и веб-браузерам (для доступа к + сайтам по HTTPS). + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">1.8 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">805 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.47.1. Установка пакета OpenSSL + </h3> + <p> + Подготовьте OpenSSL к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./config --prefix=/usr \ + --openssldir=/etc/ssl \ + --libdir=lib \ + shared \ + zlib-dynamic</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">HARNESS_JOBS=<em class= + "replaceable"><code>$(nproc)</code></em> make test</kbd></pre> + <p> + Известно, что один тест, 30-test_afalg.t, завершится ошибкой, + если в ядре хоста не включен параметр <code class= + "option">CONFIG_CRYPTO_USER_API_SKCIPHER</code> или + отсутствуют какие-либо опции, обеспечивающих реализацию AES с + CBC (например, комбинация <code class= + "option">CONFIG_CRYPTO_AES</code> и <code class= + "option">CONFIG_CRYPTO_CBC</code> или <code class= + "option">CONFIG_CRYPTO_AES_NI_INTEL</code>, если процессор + поддерживает AES-NI). В случае неудачи его можно смело + игнорировать. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile +make MANSUFFIX=ssl install</kbd></pre> + <p> + Добавьте версию к имени каталога документации, чтобы + структура соответствовала другим пакетам: + </p> + <pre class="userinput"><kbd class= + "command">mv -v /usr/share/doc/openssl /usr/share/doc/openssl-3.2.1</kbd></pre> + <p> + По желанию, установите дополнительную документацию: + </p> + <pre class="userinput"><kbd class= + "command">cp -vfr doc/* /usr/share/doc/openssl-3.2.1</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Вы должны обновить OpenSSL, когда будет выпущена новая + версия, исправляющая уязвимости. Начиная с OpenSSL 3.0.0, + схема управления версиями OpenSSL следует формату + MAJOR.MINOR.PATCH. Совместимость API/ABI гарантируется для + одной и той же ОСНОВНОЙ (MAJOR) версии. Поскольку LFS + устанавливает только общие библиотеки, нет необходимости + перекомпилировать пакеты, которые ссылаются на <code class= + "filename">libcrypto.so</code> или <code class= + "filename">libssl.so</code>, <span class="emphasis"><em>при + обновлении до версии с тем же ОСНОВНЫМ номером + версии</em></span>. + </p> + <p> + Все запущенные программы, связанные с этими библиотеками, + после обновления необходимо остановить и перезапустить. Для + получения более подробной информации ознакомьтесь с + соответствующей записью в <a class="xref" href= + "#pkgmgmt-upgrade-issues" title= + "8.2.1. Проблемы с обновлением">Раздел 8.2.1, + «Проблемы с обновлением»</a>. + </p> + </div> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-openssl" name="contents-openssl"></a>8.47.2. + Содержимое пакета OpenSSL + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">c_rehash и + openssl</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">libcrypto.so и + libssl.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/etc/ssl, /usr/include/openssl, + /usr/lib/engines и /usr/share/doc/openssl-3.2.1</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm10199" name="idm10199"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="c_rehash" name="c_rehash"></a><span class= + "term"><span class= + "command"><strong>c_rehash</strong></span></span> + </p> + </td> + <td> + <p> + это <span class="application">Perl</span> скрипт, + который сканирует все файлы в каталоге и добавляет + символические ссылки к их хеш-значениям. + Использование <span class= + "command"><strong>c_rehash</strong></span> + считается устаревшим и должно быть заменено + командой <span class="command"><strong>openssl + rehash</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="openssl-prog" name= + "openssl-prog"></a><span class="term"><span class= + "command"><strong>openssl</strong></span></span> + </p> + </td> + <td> + <p> + это инструмент командной строки для использования + различных криптографических функций библиотеки + <span class="application">OpenSSL</span> из + оболочки. Его можно использовать для различных + функций, которые задокументированы в <a class= + "ulink" href= + "https://man.archlinux.org/man/openssl.1">openssl(1)</a> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libcrypto" name="libcrypto"></a><span class= + "term"><code class= + "filename">libcrypto.so</code></span> + </p> + </td> + <td> + <p> + реализует широкий спектр криптографических + алгоритмов, используемых в различных + интернет-стандартах. Услуги, предоставляемые этой + библиотекой, используют <span class= + "application">OpenSSL</span>-реализацию SSL, TLS и + S/MIME, а также для реализации <span class= + "application">OpenSSH</span>, <span class= + "application">OpenPGP</span> и других + криптографических стандартов. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libssl" name="libssl"></a><span class= + "term"><code class= + "filename">libssl.so</code></span> + </p> + </td> + <td> + <p> + реализует протокол безопасности транспортного + уровня (TLS v1). Он предоставляет богатый API, + документацию по которому можно найти в руководстве + <a class="ulink" href= + "https://man.archlinux.org/man/ssl.7">ssl(7)</a> + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-kmod" name="ch-system-kmod"></a>8.48. + Kmod-31 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Kmod содержит библиотеки и утилиты для загрузки модулей + ядра. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">12 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.48.1. Установка пакета Kmod + </h3> + <p> + Подготовьте Kmod к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --sysconfdir=/etc \ + --with-openssl \ + --with-xz \ + --with-zstd \ + --with-zlib</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--with-openssl</code></em></span> + </dt> + <dd> + <p> + Этот параметр позволяет Kmod обрабатывать сигнатуры + PKCS7 для модулей ядра. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--with-xz</code></em>, <em class= + "parameter"><code>--with-zlib</code></em>, и <em class= + "parameter"><code>--with-zstd</code></em></span> + </dt> + <dd> + <p> + Эти параметры позволяют Kmod обрабатывать сжатые модули + ядра. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Набору тестов этого пакета необходимы необработанные + заголовочные файлы ядра (а не <span class= + "quote">«<span class="quote">очищенные</span>»</span>, + установленных ранее), это выходит за рамки LFS. + </p> + <p> + Установите пакет и создайте символические ссылки для + совместимости с Module-Init-Tools (пакетом, который ранее + обрабатывал модули ядра Linux): + </p> + <pre class="userinput"><kbd class="command">make install + +for target in depmod insmod modinfo modprobe rmmod; do + ln -sfv ../bin/kmod /usr/sbin/$target +done + +ln -sfv kmod /usr/bin/lsmod</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-kmod" name="contents-kmod"></a>8.48.2. + Содержимое пакета Kmod + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">depmod (ссылка + на kmod), insmod (ссылка на kmod), kmod, lsmod (ссылка на + kmod), modinfo (ссылка на kmod), modprobe (ссылка на + kmod) и rmmod (ссылка на kmod)</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libkmod.so</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm10286" name="idm10286"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="depmod" name="depmod"></a><span class= + "term"><span class= + "command"><strong>depmod</strong></span></span> + </p> + </td> + <td> + <p> + Создает файл зависимостей на основе символов + найденных в существующем наборе модулей; этот файл + используется программой <span class= + "command"><strong>modprobe</strong></span> для + автоматической загрузки необходимых модулей + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="insmod" name="insmod"></a><span class= + "term"><span class= + "command"><strong>insmod</strong></span></span> + </p> + </td> + <td> + <p> + Устанавливает загружаемый модуль в работающее ядро + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="kmod" name="kmod"></a><span class= + "term"><span class= + "command"><strong>kmod</strong></span></span> + </p> + </td> + <td> + <p> + Загружает и выгружает модули ядра + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lsmod" name="lsmod"></a><span class= + "term"><span class= + "command"><strong>lsmod</strong></span></span> + </p> + </td> + <td> + <p> + Список загруженных в данный момент модулей + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="modinfo" name="modinfo"></a><span class= + "term"><span class= + "command"><strong>modinfo</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет объектный файл, связанный с модулем ядра, + и отображает всю информацию, которую он смог + собрать. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="modprobe" name="modprobe"></a><span class= + "term"><span class= + "command"><strong>modprobe</strong></span></span> + </p> + </td> + <td> + <p> + Использует файл зависимостей, созданный + <span class="command"><strong>depmod</strong></span>, + для автоматической загрузки соответствующих модулей + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="rmmod" name="rmmod"></a><span class= + "term"><span class= + "command"><strong>rmmod</strong></span></span> + </p> + </td> + <td> + <p> + Выгружает модули из работающего ядра + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libkmod" name="libkmod"></a><span class= + "term"><code class="filename">libkmod</code></span> + </p> + </td> + <td> + <p> + Библиотека используемая другими программами для + загрузки и выгрузки модулей ядра + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-libelf" name="ch-system-libelf"></a>8.49. + Libelf из Elfutils-0.190 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Libelf — это библиотека для обработки файлов ELF (Executable + and Linkable Format - формат исполняемых и связываемых + файлов). + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.3 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">124 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.49.1. Установка пакета Libelf + </h3> + <p> + Libelf является частью пакета elfutils-0.190. Используйте + elfutils-0.190.tar.bz2 в качестве исходного архива. + </p> + <p> + Подготовьте Libelf к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --disable-debuginfod \ + --enable-libdebuginfod=dummy</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите только Libelf: + </p> + <pre class="userinput"><kbd class= + "command">make -C libelf install +install -vm644 config/libelf.pc /usr/lib/pkgconfig +rm /usr/lib/libelf.a</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-elfutils" name= + "contents-elfutils"></a>8.49.2. Содержимое пакета Libelf + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libelf.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/include/elfutils</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm10382" name="idm10382"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="libelf" name="libelf"></a><span class= + "term"><code class= + "filename">libelf.so</code></span> + </p> + </td> + <td> + <p> + Содержит функции API для обработки объектных файлов + ELF + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-libffi" name="ch-system-libffi"></a>8.50. + Libffi-3.4.4 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Библиотека Libffi предоставляет переносимый высокоуровневый + программный интерфейс для различных соглашений о вызовах. Это + позволяет программисту вызывать любую функцию, указанную в + описании интерфейса вызова во время выполнения. + </p> + <p> + FFI расшифровывается как интерфейс внешних функций. FFI + позволяет программе, написанной на одном языке, вызывать + программу, написанную на другом языке. В частности, Libffi + может обеспечить связь между интерпретатором, таким как Perl + или Python, и подпрограммами общей библиотеки, написанными на + C или C++. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">1.8 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">11 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.50.1. Установка пакета Libffi + </h3> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Как и GMP, Libffi собирается с учетом оптимизаций, + специфичных для используемого процессора. При сборке для + другой системы измените значение параметра <em class= + "parameter"><code>--with-gcc-arch=</code></em> в следующей + команде на имя архитектуры, полностью реализованной + процессором в этой системе. Если этого не сделать, все + приложения, ссылающиеся на <code class= + "filename">libffi</code>, будут вызывать ошибку + <span class="quote">«<span class="quote">Illegal Operation + - недопустимая операция</span>»</span>. + </p> + </div> + <p> + Подготовьте Libffi к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --disable-static \ + --with-gcc-arch=native</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров configure:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--with-gcc-arch=native</code></em></span> + </dt> + <dd> + <p> + Убедитесь, что GCC оптимизируется для текущей системы. + Если значение не указано, то архитектура системы + угадывается и сгенерированный код может быть + неправильным. Если сгенерированный код будет скопирован + из родной системы в менее мощную, используйте + архитектуру менее мощной системы в качестве параметра. + Дополнительные сведения об альтернативных типах систем + смотрите в <a class="ulink" href= + "https://gcc.gnu.org/onlinedocs/gcc-13.2.0/gcc/x86-Options.html"> + описании параметров x86 в руководстве GCC</a>. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-libffi" name="contents-libffi"></a>8.50.2. + Содержимое пакета Libffi + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libffi.so</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm10438" name="idm10438"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="libffi" name="libffi"></a><span class= + "term"><code class="filename">libffi</code></span> + </p> + </td> + <td> + <p> + Содержит внешний интерфейс для API-функций + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-Python" name="ch-system-Python"></a>8.51. + Python-3.12.2 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Python 3 содержит среду разработчика Python. Его можно + использовать для объектно-ориентированного программирования, + написания скриптов, прототипирования больших программ и + разработка целых приложений. Python — это интерпретируемый + язык программирования. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">1.8 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">485 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.51.1. Установка пакета Python 3 + </h3> + <p> + Подготовьте Python к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --enable-shared \ + --with-system-expat \ + --enable-optimizations</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--with-system-expat</code></em></span> + </dt> + <dd> + <p> + Этот параметр выполняет линковку с системной версией + <span class="application">Expat</span>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-optimizations</code></em></span> + </dt> + <dd> + <p> + Этот параметр позволяет выполнить обширные, но + отнимающие много времени, действия по оптимизации. + Интерпретатор собирается дважды; тесты, выполненные при + первой сборке, используются для улучшения финальной + версии. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Запускать тесты на этом этапе не рекомендуется. Известно, что + тесты зависают на неопределенный срок в неполной среде LFS. + При желании тесты можно запустить повторно в конце этой главы + или при переустановке Python 3 в BLFS. Чтобы запустить тесты, + выполните команду <span class="command"><strong>make + test</strong></span>. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + В некоторых местах книги, мы используем команду <span class= + "command"><strong>pip3</strong></span> для установки программ + и модулей Python 3 от имени пользователя <code class= + "systemitem">root</code>. Это противоречит рекомендации + разработчиков Python: устанавливать пакеты в виртуальную + среду или домашний каталог обычного пользователя (путем + запуска <span class="command"><strong>pip3</strong></span> от + имени этого пользователя). Поэтому всякий раз при + использовании <span class= + "command"><strong>pip3</strong></span> от имени пользователя + <code class="systemitem">root</code> появляется многострочное + предупреждение. + </p> + <p> + Основная причина этой рекомендации — избежать конфликта с + системным менеджером пакетов (например, <span class= + "command"><strong>dpkg</strong></span>), но в LFS нет + общесистемного менеджера пакетов, так что это не проблема. + Кроме того, <span class= + "command"><strong>pip3</strong></span> будет пытаться + проверять наличие новой версии при каждом запуске. Поскольку + разрешение доменных имен в среде chroot LFS еще не настроено, + он не сможет проверить наличие новой версии и выдаст + предупреждение. + </p> + <p> + Как только мы загрузим систему LFS и настроим сетевое + подключение, <span class= + "command"><strong>pip3</strong></span> выдаст предупреждение, + сообщающее пользователю о необходимости обновить его с + помощью предварительно собранного whl-файла в PyPI (всякий + раз, когда будет доступна новая версия). Но LFS считает + <span class="command"><strong>pip3</strong></span> частью + Python3, поэтому его не следует обновлять отдельно. Кроме + того, обновление из whl-файла не соответствует цели проекта — + собрать систему Linux из исходного кода, поэтому + предупреждение о новой версии <span class= + "command"><strong>pip3</strong></span> следует игнорировать. + По желанию, вы можете отключить все предупреждение, создав + следующий файл конфигурации: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/pip.conf << EOF +<code class="literal">[global] +root-user-action = ignore +disable-pip-version-check = true</code> +EOF +</kbd></pre> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + В LFS и BLFS мы собираем и устанавливаем модули Python с + помощью команды <span class= + "command"><strong>pip3</strong></span>. Убедитесь, что + команда <span class="command"><strong>pip3 + install</strong></span> в обеих книгах запускаются от имени + пользователя <code class="systemitem">root</code> (если + только она не для виртуальной среды Python). Запуск + <span class="command"><strong>pip3 install</strong></span> + от имени пользователя без полномочий <code class= + "systemitem">root</code> может показаться нормальным, но + это приведет к тому, что установленный модуль будет + недоступен для других пользователей. + </p> + <p> + Команда <span class="command"><strong>pip3 + install</strong></span> по умолчанию не приведёт к + автоматической переустановке уже установленного модуля. + Чтобы использовать команду <span class= + "command"><strong>pip3 install</strong></span> для + обновления модуля (например, с meson-0.61.3 до + meson-0.62.0), добавьте параметр <em class= + "parameter"><code>--upgrade</code></em> в командную строку. + Если по какой-то причине необходимо понизить версию модуля + или переустановить ту же версию, используйте параметр + <em class="parameter"><code>--force-reinstall + --no-deps</code></em>. + </p> + </div> + <p> + По желанию установите предварительно отформатированную + документацию: + </p> + <pre class="userinput"><kbd class= + "command">install -v -dm755 /usr/share/doc/python-3.12.2/html + +tar --no-same-owner \ + -xvf ../python-3.12.2-docs-html.tar.bz2 +cp -R --no-preserve=mode python-3.12.2-docs-html/* \ + /usr/share/doc/python-3.12.2/html</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение команд установки документации:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><code class= + "option">--no-same-owner</code> (tar) и <code class= + "option">--no-preserve=mode</code> (cp)</span> + </dt> + <dd> + <p> + Параметры обеспечивают, что установленные файлы имеют + корректные права и владельца файлов. Использование + <span class="application">tar</span> без этих + параметров приведет к установке файлов с правами + пользователя создавшего архив и файлы будут иметь + ограниченные разрешения. + </p> + </dd> + </dl> + </div> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-python" name="contents-python"></a>8.51.2. + Содержимое пакета Python 3 + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">2to3, idle3, + pip3, pydoc3, python3 и python3-config</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libpython3.12.so и libpython3.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/include/python3.12, + /usr/lib/python3 и /usr/share/doc/python-3.12.2</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm10536" name="idm10536"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="python-2to3" name= + "python-2to3"></a><span class="term"><span class= + "command"><strong>2to3</strong></span></span> + </p> + </td> + <td> + <p> + программа на <span class= + "application">Python</span>, которая читает файлы + написанные на <span class="application">Python + 2.x</span>, применяет к ним серию изменений и + переводит их в валидный код <span class= + "application">Python 3.x</span>. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="idle3" name="idle3"></a><span class= + "term"><span class= + "command"><strong>idle3</strong></span></span> + </p> + </td> + <td> + <p> + скрипт-обертка, который открывает графический + редактор с поддержкой <span class= + "application">Python</span>. Для запуска этого + скрипта, перед установкой Python необходимо + установить <span class="application">Tk</span>, + чтобы модуль Tkinter Python был собран. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pip3" name="pip3"></a><span class= + "term"><span class= + "command"><strong>pip3</strong></span></span> + </p> + </td> + <td> + <p> + Установщик пакетов для Python. Вы можете + использовать pip для установки пакетов из каталога + PyPI (Python Package Index) и других источников. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pydoc3" name="pydoc3"></a><span class= + "term"><span class= + "command"><strong>pydoc3</strong></span></span> + </p> + </td> + <td> + <p> + инструмент документации <span class= + "application">Python</span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="python3" name="python3"></a><span class= + "term"><span class= + "command"><strong>python3</strong></span></span> + </p> + </td> + <td> + <p> + это интерпретатор для Python, интерпретируемый, + интерактивный, объектно-ориентированный язык + программирования + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-flit-core" name= + "ch-system-flit-core"></a>8.52. Flit-Core-3.9.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Flit-core — это часть Flit, предназначенная для сборки + дистрибутива (инструмента для упаковки простых модулей + Python). + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">1.6 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.52.1. Установка пакета Flit-Core + </h3> + <p> + Соберите пакет: + </p> + <pre class="userinput"><kbd class= + "command">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">pip3 install --no-index --no-user --find-links dist flit_core</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров конфигурации и команд + pip3:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><span class= + "command"><strong>wheel</strong></span></span> + </dt> + <dd> + <p> + Эта команда создает архив wheel для этого пакета. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>-w + dist</code></em></span> + </dt> + <dd> + <p> + Указывает pip поместить созданный архив в каталог + <code class="filename">dist</code>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--no-cache-dir</code></em></span> + </dt> + <dd> + <p> + Не позволяет pip копировать созданный wheel-пакет в + каталог <code class="filename">/root/.cache/pip</code>. + </p> + </dd> + <dt> + <span class="term"><span class= + "command"><strong>install</strong></span></span> + </dt> + <dd> + <p> + Эта команда устанавливает пакет. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--no-build-isolation</code></em>, + <em class="parameter"><code>--no-deps</code></em> и + <em class="parameter"><code>--no-index</code></em></span> + </dt> + <dd> + <p> + Эти параметры предотвращают получение файлов из + онлайн-репозитория пакетов (PyPI). Если пакеты + установлены в правильном порядке, то нет необходимости + загружать какие-либо файлы; эти параметры усиливают + безопасность в случае ошибки пользователя. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--find-links dist</code></em></span> + </dt> + <dd> + <p> + Указывает pip искать архивы wheel в каталоге + <code class="filename">dist</code>. + </p> + </dd> + </dl> + </div> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-flit-core" name= + "contents-flit-core"></a>8.52.2. Содержимое пакета Flit-Core + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class= + "segbody">/usr/lib/python3.12/site-packages/flit_core и + /usr/lib/python3.12/site-packages/flit_core-3.9.0.dist-info</span> + </div> + </div> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-wheel" name="ch-system-wheel"></a>8.53. + Wheel-0.42.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Wheel — это библиотека Python, которая является эталонной + реализацией стандарта упаковки программ на языке Python. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">1.5 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.53.1. Установка пакета Wheel + </h3> + <p> + Скомпилируйте Wheel с помощью следующей команды: + </p> + <pre class="userinput"><kbd class= + "command">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</kbd></pre> + <p> + Установите Wheel: + </p> + <pre class="userinput"><kbd class= + "command">pip3 install --no-index --find-links=dist wheel</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-wheel" name="contents-wheel"></a>8.53.2. + Содержимое пакета Wheel + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">wheel</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class= + "segbody">/usr/lib/python3.12/site-packages/wheel и + /usr/lib/python3.12/site-packages/wheel-0.42.0.dist-info</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm10672" name="idm10672"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="wheel-wheel" name= + "wheel-wheel"></a><span class="term"><span class= + "command"><strong>wheel</strong></span></span> + </p> + </td> + <td> + <p> + это утилита для распаковки, упаковки или + преобразования wheel-архивов + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-setuptools" name= + "ch-system-setuptools"></a>8.54. Setuptools-69.1.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Setuptools это инструмент, используемый для загрузки, + сборки, установки, обновления и удаления пакетов Python. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">20 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.54.1. Установка пакета Setuptools + </h3> + <p> + Соберите пакет: + </p> + <pre class="userinput"><kbd class= + "command">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">pip3 install --no-index --find-links dist setuptools</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-setuptools" name= + "contents-setuptools"></a>8.54.2. Содержимое пакета + Setuptools + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class= + "segbody">/usr/lib/python3.12/site-packages/_distutils_hack, + /usr/lib/python3.12/site-packages/pkg_resources, + /usr/lib/python3.12/site-packages/setuptools, and + /usr/lib/python3.12/site-packages/setuptools-69.1.0.dist-info</span> + </div> + </div> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-ninja" name="ch-system-ninja"></a>8.55. + Ninja-1.11.1 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Ninja - небольшая система сборки ориентированная на скорость. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.3 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">75 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.55.1. Установка пакета Ninja + </h3> + <p> + При запуске <span class= + "command"><strong>ninja</strong></span> обычно использует + максимальное количество процессов параллельно. По умолчанию + это количество ядер в системе плюс два. В некоторых случаях + это может привести к перегреву процессора или нехватке памяти + в системе. Когда <span class= + "command"><strong>ninja</strong></span> вызывается из + командной строки, передача параметра -jN ограничит количество + параллельных процессов. Некоторые пакеты встраивают + выполнение <span class= + "command"><strong>ninja</strong></span> и параметр -j не + передается. + </p> + <p> + Использование приведенной ниже <span class= + "emphasis"><em>необязательной</em></span> процедуры позволяет + пользователю ограничить количество параллельных процессов с + помощью переменной окружения NINJAJOBS. <span class= + "bold"><strong>Пример</strong></span>, настройки: + </p> + <pre class="screen">export NINJAJOBS=4</pre> + <p> + ограничит <span class="command"><strong>ninja</strong></span> + четырьмя параллельными процессами. + </p> + <p> + По желанию, добавьте возможность использовать переменную + окружения NINJAJOBS, выполнив следующую команду: + </p> + <pre class="userinput"><kbd class= + "command">sed -i '/int Guess/a \ + int j = 0;\ + char* jobs = getenv( "NINJAJOBS" );\ + if ( jobs != NULL ) j = atoi( jobs );\ + if ( j > 0 ) return j;\ +' src/ninja.cc</kbd></pre> + <p> + Соберите Ninja с помощью команды: + </p> + <pre class="userinput"><kbd class= + "command">python3 configure.py --bootstrap</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров сборки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--bootstrap</code></em></span> + </dt> + <dd> + <p> + Этот параметр перестраивает Ninja под текущую систему. + </p> + </dd> + </dl> + </div> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class="command">./ninja ninja_test +./ninja_test --gtest_filter=-SubprocessTest.SetWithLots</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">install -vm755 ninja /usr/bin/ +install -vDm644 misc/bash-completion /usr/share/bash-completion/completions/ninja +install -vDm644 misc/zsh-completion /usr/share/zsh/site-functions/_ninja</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-ninja" name="contents-ninja"></a>8.55.2. + Содержимое пакета Ninja + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">ninja</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm10757" name="idm10757"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="ninja" name="ninja"></a><span class= + "term"><span class= + "command"><strong>ninja</strong></span></span> + </p> + </td> + <td> + <p> + это система сборки Ninja + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-meson" name="ch-system-meson"></a>8.56. + Meson-1.3.2 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Meson — это система сборки с открытым исходным кодом, + разработанная таким образом, чтобы быть очень быстрой и + максимально удобной для пользователя. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">42 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.56.1. Установка пакета Meson + </h3> + <p> + Скомпилируйте Meson с помощью следующей команды: + </p> + <pre class="userinput"><kbd class= + "command">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</kbd></pre> + <p> + Для набора тестов требуются некоторые пакеты, выходящие за + рамки LFS. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">pip3 install --no-index --find-links dist meson +install -vDm644 data/shell-completions/bash/meson /usr/share/bash-completion/completions/meson +install -vDm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/_meson</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров установки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class="parameter"><code>-w + dist</code></em></span> + </dt> + <dd> + <p> + Помещает собранный wheels в каталог <code class= + "filename">dist</code>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--find-links dist</code></em></span> + </dt> + <dd> + <p> + Устанавливает wheels из каталога <code class= + "filename">dist</code>. + </p> + </dd> + </dl> + </div> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-meson" name="contents-meson"></a>8.56.2. + Содержимое пакета Meson + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">meson</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class= + "segbody">/usr/lib/python3.12/site-packages/meson-1.3.2.dist-info + и /usr/lib/python3.12/site-packages/mesonbuild</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm10810" name="idm10810"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="meson" name="meson"></a><span class= + "term"><span class= + "command"><strong>meson</strong></span></span> + </p> + </td> + <td> + <p> + Высокопроизводительная система сборки + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-coreutils" name= + "ch-system-coreutils"></a>8.57. Coreutils-9.4 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Coreutils содержит основные утилиты, необходимые каждой + операционной системе. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">175 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.57.1. Установка пакета Coreutils + </h3> + <p> + Стандарт POSIX требует, чтобы программы пакета Coreutils + правильно распознавали символы даже в случае, если + используются многобайтовые локали. Следующий патч исправляет + несоответствие этому требованию, а также другие ошибки, + касающиеся интернационализации: + </p> + <pre class="userinput"><kbd class= + "command">patch -Np1 -i ../coreutils-9.4-i18n-1.patch</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + В этом патче было обнаружено много ошибок. Сообщая о новых + ошибках разработчикам Coreutils, сначала проверьте, + воспроизводятся ли эти ошибки без этого исправления. + </p> + </div> + <p> + Исправьте уязвимость в утилите <span class= + "command"><strong>split</strong></span>: + </p> + <pre class="userinput"><kbd class= + "command">sed -e '/n_out += n_hold/,+4 s|.*bufsize.*|//&|' \ + -i src/split.c</kbd></pre> + <p> + Теперь подготовьте Coreutils к компиляции: + </p> + <pre class="userinput"><kbd class="command">autoreconf -fiv +FORCE_UNSAFE_CONFIGURE=1 ./configure \ + --prefix=/usr \ + --enable-no-install-program=kill,uptime</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><span class= + "command"><strong>autoreconf</strong></span></span> + </dt> + <dd> + <p> + Патч для интернационализации изменил систему сборки + пакета, поэтому файлы конфигурации необходимо + сгенерировать заново. + </p> + </dd> + <dt> + <span class="term"><code class= + "envar">FORCE_UNSAFE_CONFIGURE=1</code></span> + </dt> + <dd> + <p> + Эта переменная среды позволяет собрать пакет от имени + пользователя <code class="systemitem">root</code>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-no-install-program=kill,uptime</code></em></span> + </dt> + <dd> + <p> + Назначение этого параметра — запретить Coreutils + устанавливать программы, которые будут установлены + другими пакетами. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Если вы не планируете запускать набор тестов, перейдите к + разделу <span class="quote">«<span class="quote">Установка + пакета</span>»</span>. + </p> + <p> + Теперь набор тестов готов к запуску. Сначала запустите тесты, + предназначенные для запуска от имени пользователя + <code class="systemitem">root</code>: + </p> + <pre class="userinput"><kbd class= + "command">make NON_ROOT_USERNAME=tester check-root</kbd></pre> + <p> + Мы собираемся выполнить остальные тесты от имени пользователя + <code class="systemitem">tester</code>. Некоторые тесты + требуют, чтобы пользователь был членом более чем одной + группы. Чтобы эти тесты не были пропущены, добавьте временную + группу и включите в неё пользователя <code class= + "systemitem">tester</code>: + </p> + <pre class="userinput"><kbd class= + "command">groupadd -g 102 dummy -U tester</kbd></pre> + <p> + Исправьте некоторые разрешения, чтобы пользователь без + полномочий <code class="systemitem">root</code> мог + компилировать и запускать тесты: + </p> + <pre class="userinput"><kbd class= + "command">chown -R tester . </kbd></pre> + <p> + Теперь запустите тесты: + </p> + <pre class="userinput"><kbd class= + "command">su tester -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"</kbd></pre> + <p> + Удалить временную группу: + </p> + <pre class="userinput"><kbd class= + "command">groupdel dummy</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + Переместите программы туда, где они должны быть в + соответствие со спецификациями FHS: + </p> + <pre class="userinput"><kbd class= + "command">mv -v /usr/bin/chroot /usr/sbin +mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8 +sed -i 's/"1"/"8"/' /usr/share/man/man8/chroot.8</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-coreutils" name= + "contents-coreutils"></a>8.57.2. Содержимое пакета Coreutils + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">[, b2sum, + base32, base64, basename, basenc, cat, chcon, chgrp, + chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, + dd, df, dir, dircolors, dirname, du, echo, env, expand, + expr, factor, false, fmt, fold, groups, head, hostid, id, + install, join, link, ln, logname, ls, md5sum, mkdir, + mkfifo, mknod, mktemp, mv, nice, nl, nohup, nproc, + numfmt, od, paste, pathchk, pinky, pr, printenv, printf, + ptx, pwd, readlink, realpath, rm, rmdir, runcon, seq, + sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, + shred, shuf, sleep, sort, split, stat, stdbuf, stty, sum, + sync, tac, tail, tee, test, timeout, touch, tr, true, + truncate, tsort, tty, uname, unexpand, uniq, unlink, + users, vdir, wc, who, whoami и yes</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">libstdbuf.so + (in /usr/libexec/coreutils)</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/libexec/coreutils</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm10904" name="idm10904"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="lbracket" name="lbracket"></a><span class= + "term"><span class= + "command"><strong>[</strong></span></span> + </p> + </td> + <td> + <p> + Это команда /usr/bin/[, которая является синонимом + команды <span class= + "command"><strong>test</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="base32" name="base32"></a><span class= + "term"><span class= + "command"><strong>base32</strong></span></span> + </p> + </td> + <td> + <p> + Кодирует и декодирует данные в соответствии со + спецификацией base32 (RFC 4648) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="base64" name="base64"></a><span class= + "term"><span class= + "command"><strong>base64</strong></span></span> + </p> + </td> + <td> + <p> + Кодирует и декодирует данные в соответствии со + спецификацией base64 (RFC 4648) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="b2sum" name="b2sum"></a><span class= + "term"><span class= + "command"><strong>b2sum</strong></span></span> + </p> + </td> + <td> + <p> + Выводит или проверяет контрольные суммы BLAKE2 + (512-битные) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="basename" name="basename"></a><span class= + "term"><span class= + "command"><strong>basename</strong></span></span> + </p> + </td> + <td> + <p> + Удаляет любой путь и заданный суффикс из имени + файла + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="basenc" name="basenc"></a><span class= + "term"><span class= + "command"><strong>basenc</strong></span></span> + </p> + </td> + <td> + <p> + Кодирует или декодирует данные с использованием + различных алгоритмов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="cat" name="cat"></a><span class= + "term"><span class= + "command"><strong>cat</strong></span></span> + </p> + </td> + <td> + <p> + Присоединяет файлы к стандартному выходному потоку + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="chcon" name="chcon"></a><span class= + "term"><span class= + "command"><strong>chcon</strong></span></span> + </p> + </td> + <td> + <p> + Изменяет контекст безопасности для файлов и + каталогов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="chgrp" name="chgrp"></a><span class= + "term"><span class= + "command"><strong>chgrp</strong></span></span> + </p> + </td> + <td> + <p> + Изменяет владельцев группы для файлов и директорий + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="chmod" name="chmod"></a><span class= + "term"><span class= + "command"><strong>chmod</strong></span></span> + </p> + </td> + <td> + <p> + Изменяет разрешения каждого файла на заданный + режим; режим может быть либо символьным + представлением вносимых изменений, либо + восьмеричным числом, представляющим новые + разрешения. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="chown" name="chown"></a><span class= + "term"><span class= + "command"><strong>chown</strong></span></span> + </p> + </td> + <td> + <p> + Изменяет принадлежность файлов и директорий + пользователю и/или группе + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="chroot" name="chroot"></a><span class= + "term"><span class= + "command"><strong>chroot</strong></span></span> + </p> + </td> + <td> + <p> + Запускает команду с указанным каталогом в качестве + корневого каталога <code class="filename">/</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="cksum" name="cksum"></a><span class= + "term"><span class= + "command"><strong>cksum</strong></span></span> + </p> + </td> + <td> + <p> + Выводит контрольную сумму Cyclic Redundancy Check + (CRC) и количество байтов для каждого указанного + файла. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="comm" name="comm"></a><span class= + "term"><span class= + "command"><strong>comm</strong></span></span> + </p> + </td> + <td> + <p> + Сравнивает два отсортированных файла, выводя в три + столбца уникальные и общие строки. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="cp" name="cp"></a><span class= + "term"><span class= + "command"><strong>cp</strong></span></span> + </p> + </td> + <td> + <p> + Копирует файлы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="csplit" name="csplit"></a><span class= + "term"><span class= + "command"><strong>csplit</strong></span></span> + </p> + </td> + <td> + <p> + Разбивает заданный файл на несколько новых файлов, + разделяя их в соответствии с заданными шаблонами + или номерами строк и выводя количество байтов для + каждого нового файла. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="cut" name="cut"></a><span class= + "term"><span class= + "command"><strong>cut</strong></span></span> + </p> + </td> + <td> + <p> + Выдает участки строк, выбирая части в соответствии + с заданными полями или позициями + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="date" name="date"></a><span class= + "term"><span class= + "command"><strong>date</strong></span></span> + </p> + </td> + <td> + <p> + Отображает текущее дату и время в заданном формате + или устанавливает системные дату и время + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="dd" name="dd"></a><span class= + "term"><span class= + "command"><strong>dd</strong></span></span> + </p> + </td> + <td> + <p> + Копирует файл, используя заданный размер блока и + количество, при необходимости выполняя + преобразования на нем. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="df" name="df"></a><span class= + "term"><span class= + "command"><strong>df</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает объем доступного (и используемого) + дискового пространства во всех смонтированных + файловых системах или только в файловых системах, + содержащих выбранные файлы. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="dir" name="dir"></a><span class= + "term"><span class= + "command"><strong>dir</strong></span></span> + </p> + </td> + <td> + <p> + Выводит содержимое заданного каталога (так же, как + команда <span class= + "command"><strong>ls</strong></span>) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="dircolors" name="dircolors"></a><span class= + "term"><span class= + "command"><strong>dircolors</strong></span></span> + </p> + </td> + <td> + <p> + Выводит команды для установки переменной среды + <code class="envar">LS_COLOR</code> для изменения + цветовой схемы, используемой <span class= + "command"><strong>ls</strong></span>. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="dirname" name="dirname"></a><span class= + "term"><span class= + "command"><strong>dirname</strong></span></span> + </p> + </td> + <td> + <p> + Извлекает часть(части) каталога из + заданного(заданных) имени(имён) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="du" name="du"></a><span class= + "term"><span class= + "command"><strong>du</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает объем дискового пространства, + используемого текущим каталогом, каждым из заданных + каталогов (включая все подкаталоги) или каждым из + заданных файлов. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="echo" name="echo"></a><span class= + "term"><span class= + "command"><strong>echo</strong></span></span> + </p> + </td> + <td> + <p> + Отображает указанные строки + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="env" name="env"></a><span class= + "term"><span class= + "command"><strong>env</strong></span></span> + </p> + </td> + <td> + <p> + Запускает команду в модифицированной среде + окружения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="expand" name="expand"></a><span class= + "term"><span class= + "command"><strong>expand</strong></span></span> + </p> + </td> + <td> + <p> + Конвертирует символы табуляции в пробелы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="expr" name="expr"></a><span class= + "term"><span class= + "command"><strong>expr</strong></span></span> + </p> + </td> + <td> + <p> + Вычисляет выражения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="factor" name="factor"></a><span class= + "term"><span class= + "command"><strong>factor</strong></span></span> + </p> + </td> + <td> + <p> + Выводит простые множители указанных целых чисел + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="false" name="false"></a><span class= + "term"><span class= + "command"><strong>false</strong></span></span> + </p> + </td> + <td> + <p> + Ничего не делает, указывает на неудачу; всегда + завершается с кодом состояния, указывающим на сбой + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fmt" name="fmt"></a><span class= + "term"><span class= + "command"><strong>fmt</strong></span></span> + </p> + </td> + <td> + <p> + Форматирует абзацы в указанных файлах + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fold" name="fold"></a><span class= + "term"><span class= + "command"><strong>fold</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет перенос строк в указанных файлах + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="groups" name="groups"></a><span class= + "term"><span class= + "command"><strong>groups</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает о принадлежности пользователя к группам + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="head" name="head"></a><span class= + "term"><span class= + "command"><strong>head</strong></span></span> + </p> + </td> + <td> + <p> + Выводит первые десять строк (или заданное + количество строк) каждого заданного файла. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="hostid" name="hostid"></a><span class= + "term"><span class= + "command"><strong>hostid</strong></span></span> + </p> + </td> + <td> + <p> + Выводит числовой идентификатор хоста (в + шестнадцатеричном формате) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="id" name="id"></a><span class= + "term"><span class= + "command"><strong>id</strong></span></span> + </p> + </td> + <td> + <p> + Выводит действующий идентификатор пользователя, + идентификатор группы и принадлежность к группам для + текущего или для указанного пользователя + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="install" name="install"></a><span class= + "term"><span class= + "command"><strong>install</strong></span></span> + </p> + </td> + <td> + <p> + Копирует файлы, одновременно устанавливая для них + права доступа, и, если возможно, устанавливая для + них владельца и группу + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="join" name="join"></a><span class= + "term"><span class= + "command"><strong>join</strong></span></span> + </p> + </td> + <td> + <p> + Объединяет строки, которые имеют идентичные + объединяемые поля в двух различных файлах + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="link" name="link"></a><span class= + "term"><span class= + "command"><strong>link</strong></span></span> + </p> + </td> + <td> + <p> + Создает жесткую ссылку (с указанным именем) на файл + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ln" name="ln"></a><span class= + "term"><span class= + "command"><strong>ln</strong></span></span> + </p> + </td> + <td> + <p> + Создает жесткие или мягкие (символические) ссылки + между файлами + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="logname" name="logname"></a><span class= + "term"><span class= + "command"><strong>logname</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает имя входа текущего пользователя + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ls" name="ls"></a><span class= + "term"><span class= + "command"><strong>ls</strong></span></span> + </p> + </td> + <td> + <p> + Выводит список содержимого для каждого заданного + каталога + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="md5sum" name="md5sum"></a><span class= + "term"><span class= + "command"><strong>md5sum</strong></span></span> + </p> + </td> + <td> + <p> + Выводит или проверяет контрольные суммы Message + Digest 5 (MD5) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mkdir" name="mkdir"></a><span class= + "term"><span class= + "command"><strong>mkdir</strong></span></span> + </p> + </td> + <td> + <p> + Создает директории с указанными именами + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mkfifo" name="mkfifo"></a><span class= + "term"><span class= + "command"><strong>mkfifo</strong></span></span> + </p> + </td> + <td> + <p> + Создает "именованный канал" "первым пришел — первым + ушел" (FIFO), в нотации UNIX с заданными именами + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mknod" name="mknod"></a><span class= + "term"><span class= + "command"><strong>mknod</strong></span></span> + </p> + </td> + <td> + <p> + Создает узлы устройств с заданными именами; узел + устройства представляет собой специальный + символьный файл, специальный файл блока или FIFO. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mktemp" name="mktemp"></a><span class= + "term"><span class= + "command"><strong>mktemp</strong></span></span> + </p> + </td> + <td> + <p> + Создает временные файлы безопасным способом; + используется в скриптах + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mv" name="mv"></a><span class= + "term"><span class= + "command"><strong>mv</strong></span></span> + </p> + </td> + <td> + <p> + Перемещает или переименовывает файлы или каталоги + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="nice" name="nice"></a><span class= + "term"><span class= + "command"><strong>nice</strong></span></span> + </p> + </td> + <td> + <p> + Запускает программу с измененным приоритетом + исполнения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="nl" name="nl"></a><span class= + "term"><span class= + "command"><strong>nl</strong></span></span> + </p> + </td> + <td> + <p> + Нумерует строки в указанных файлах + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="nohup" name="nohup"></a><span class= + "term"><span class= + "command"><strong>nohup</strong></span></span> + </p> + </td> + <td> + <p> + Запускает команду, невосприимчивую к зависаниям, а + ее вывод перенаправляется в файл журнала + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="nproc" name="nproc"></a><span class= + "term"><span class= + "command"><strong>nproc</strong></span></span> + </p> + </td> + <td> + <p> + Выводит количество дочерних процессов, доступных + для процесса. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="numfmt" name="numfmt"></a><span class= + "term"><span class= + "command"><strong>numfmt</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует числа в или из удобочитаемых строк + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="od" name="od"></a><span class= + "term"><span class= + "command"><strong>od</strong></span></span> + </p> + </td> + <td> + <p> + Вывод дампа файла в восьмеричном и других форматах + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="paste" name="paste"></a><span class= + "term"><span class= + "command"><strong>paste</strong></span></span> + </p> + </td> + <td> + <p> + Объединяет указанные файлы, последовательно + соединяя соответствующие строки рядом друг с + другом, разделенные символами табуляции. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pathchk" name="pathchk"></a><span class= + "term"><span class= + "command"><strong>pathchk</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет, являются ли имена файлов допустимыми или + переносимыми + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pinky" name="pinky"></a><span class= + "term"><span class= + "command"><strong>pinky</strong></span></span> + </p> + </td> + <td> + <p> + Легковесный клиент типа finger; выдает некоторую + информацию о заданных пользователях + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pr" name="pr"></a><span class= + "term"><span class= + "command"><strong>pr</strong></span></span> + </p> + </td> + <td> + <p> + Разбивает файлы для печати на страницы и столбцы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="printenv" name="printenv"></a><span class= + "term"><span class= + "command"><strong>printenv</strong></span></span> + </p> + </td> + <td> + <p> + Выдает значения переменных окружения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="printf" name="printf"></a><span class= + "term"><span class= + "command"><strong>printf</strong></span></span> + </p> + </td> + <td> + <p> + Выводит аргументы в соответствии с заданным + форматом, подобно функции C printf. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ptx" name="ptx"></a><span class= + "term"><span class= + "command"><strong>ptx</strong></span></span> + </p> + </td> + <td> + <p> + Создает перестановочный индекс по содержимому + указанных файлов с каждым ключевым словом в своем + контексте + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pwd" name="pwd"></a><span class= + "term"><span class= + "command"><strong>pwd</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает имя текущего рабочего каталога + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="readlink" name="readlink"></a><span class= + "term"><span class= + "command"><strong>readlink</strong></span></span> + </p> + </td> + <td> + <p> + Выдает значение указанной символической ссылки + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="realpath" name="realpath"></a><span class= + "term"><span class= + "command"><strong>realpath</strong></span></span> + </p> + </td> + <td> + <p> + Возвращает приведенное к обычному виду полное имя + файла + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="rm" name="rm"></a><span class= + "term"><span class= + "command"><strong>rm</strong></span></span> + </p> + </td> + <td> + <p> + Удаляет файлы или каталоги + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="rmdir" name="rmdir"></a><span class= + "term"><span class= + "command"><strong>rmdir</strong></span></span> + </p> + </td> + <td> + <p> + Удаляет каталоги, если они пусты + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="runcon" name="runcon"></a><span class= + "term"><span class= + "command"><strong>runcon</strong></span></span> + </p> + </td> + <td> + <p> + Запускает команду с указанным контекстом + безопасности + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="seq" name="seq"></a><span class= + "term"><span class= + "command"><strong>seq</strong></span></span> + </p> + </td> + <td> + <p> + Выдает последовательность чисел из указанного + диапазона с указанным значением приращения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sha1sum" name="sha1sum"></a><span class= + "term"><span class= + "command"><strong>sha1sum</strong></span></span> + </p> + </td> + <td> + <p> + Выводит или проверяет контрольные суммы 160-битного + алгоритма безопасного хеширования 1 (SHA1) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sha224sum" name="sha224sum"></a><span class= + "term"><span class= + "command"><strong>sha224sum</strong></span></span> + </p> + </td> + <td> + <p> + Выводит или проверяет контрольные суммы 224-битного + алгоритма безопасного хеширования + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sha256sum" name="sha256sum"></a><span class= + "term"><span class= + "command"><strong>sha256sum</strong></span></span> + </p> + </td> + <td> + <p> + Выводит или проверяет контрольные суммы 256-битного + алгоритма безопасного хеширования + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sha384sum" name="sha384sum"></a><span class= + "term"><span class= + "command"><strong>sha384sum</strong></span></span> + </p> + </td> + <td> + <p> + Выводит или проверяет контрольные суммы 384-битного + алгоритма безопасного хеширования + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sha512sum" name="sha512sum"></a><span class= + "term"><span class= + "command"><strong>sha512sum</strong></span></span> + </p> + </td> + <td> + <p> + Выводит или проверяет контрольные суммы 512-битного + алгоритма безопасного хеширования + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="shred" name="shred"></a><span class= + "term"><span class= + "command"><strong>shred</strong></span></span> + </p> + </td> + <td> + <p> + Многократно перезаписывает заданные файлы сложными + шаблонами, что затрудняет восстановление данных. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="shuf" name="shuf"></a><span class= + "term"><span class= + "command"><strong>shuf</strong></span></span> + </p> + </td> + <td> + <p> + Перемешивает строки текста + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sleep" name="sleep"></a><span class= + "term"><span class= + "command"><strong>sleep</strong></span></span> + </p> + </td> + <td> + <p> + Делает паузу на заданный промежуток времени + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sort" name="sort"></a><span class= + "term"><span class= + "command"><strong>sort</strong></span></span> + </p> + </td> + <td> + <p> + Сортирует строки в указанных файлах + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="split" name="split"></a><span class= + "term"><span class= + "command"><strong>split</strong></span></span> + </p> + </td> + <td> + <p> + Разбивает заданный файл на несколько частей в + соответствии с указанным размером или количеством + строк + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="stat" name="stat"></a><span class= + "term"><span class= + "command"><strong>stat</strong></span></span> + </p> + </td> + <td> + <p> + Отображает статус файла или файловой системы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="stdbuf" name="stdbuf"></a><span class= + "term"><span class= + "command"><strong>stdbuf</strong></span></span> + </p> + </td> + <td> + <p> + Запускает команды с измененными операциями + буферизации для своих стандартных потоков. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="stty" name="stty"></a><span class= + "term"><span class= + "command"><strong>stty</strong></span></span> + </p> + </td> + <td> + <p> + Устанавливает или сообщает настройки терминала + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sum" name="sum"></a><span class= + "term"><span class= + "command"><strong>sum</strong></span></span> + </p> + </td> + <td> + <p> + Выводит контрольную сумму и количество блоков для + каждого заданного файла + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sync" name="sync"></a><span class= + "term"><span class= + "command"><strong>sync</strong></span></span> + </p> + </td> + <td> + <p> + Сбрасывает буферы файловой системы; он + принудительно записывает измененные блоки на диск и + обновляет суперблок + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tac" name="tac"></a><span class= + "term"><span class= + "command"><strong>tac</strong></span></span> + </p> + </td> + <td> + <p> + Конкатенация содержимого указанных файлов в + обратном порядке + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tail" name="tail"></a><span class= + "term"><span class= + "command"><strong>tail</strong></span></span> + </p> + </td> + <td> + <p> + Выводит последние десять строк (или заданное + количество строк) каждого указанного файла + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tee" name="tee"></a><span class= + "term"><span class= + "command"><strong>tee</strong></span></span> + </p> + </td> + <td> + <p> + Считывает данные со стандартного потока ввода, + записывает как в стандартный вывод, так и в + указанные файлы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="test" name="test"></a><span class= + "term"><span class= + "command"><strong>test</strong></span></span> + </p> + </td> + <td> + <p> + Сравнивает значения и проверяет типы файловs + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="timeout" name="timeout"></a><span class= + "term"><span class= + "command"><strong>timeout</strong></span></span> + </p> + </td> + <td> + <p> + Запускает команду с ограничением по времени + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="touch" name="touch"></a><span class= + "term"><span class= + "command"><strong>touch</strong></span></span> + </p> + </td> + <td> + <p> + Изменяет временные метки файлов, устанавливая время + доступа и модификации данных файлов на текущее + время; несуществующие файлы создаются с нулевой + длиной + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tr" name="tr"></a><span class= + "term"><span class= + "command"><strong>tr</strong></span></span> + </p> + </td> + <td> + <p> + Переводит, сжимает и удаляет заданные символы из + стандартного потока + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="true" name="true"></a><span class= + "term"><span class= + "command"><strong>true</strong></span></span> + </p> + </td> + <td> + <p> + Ничего не делает, указывает на успешное выполнение + операции; он всегда завершается с кодом состояния, + указывающим на успех + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="truncate" name="truncate"></a><span class= + "term"><span class= + "command"><strong>truncate</strong></span></span> + </p> + </td> + <td> + <p> + Сжимает или расширяет файл до указанного размера + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tsort" name="tsort"></a><span class= + "term"><span class= + "command"><strong>tsort</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет топологическую сортировку; записывает + полностью упорядоченный список в соответствии с + частичным упорядочением в данном файле + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tty" name="tty"></a><span class= + "term"><span class= + "command"><strong>tty</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает имя файла терминала, подключенного к + стандартному вводу. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="uname" name="uname"></a><span class= + "term"><span class= + "command"><strong>uname</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает системную информацию + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="unexpand" name="unexpand"></a><span class= + "term"><span class= + "command"><strong>unexpand</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует пробелы в табуляции + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="uniq" name="uniq"></a><span class= + "term"><span class= + "command"><strong>uniq</strong></span></span> + </p> + </td> + <td> + <p> + Удаляет все повторяющиеся копии уже имеющихся + строк, кроме одной + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="unlink" name="unlink"></a><span class= + "term"><span class= + "command"><strong>unlink</strong></span></span> + </p> + </td> + <td> + <p> + Удаляет указанный файл + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="users" name="users"></a><span class= + "term"><span class= + "command"><strong>users</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает имена пользователей, вошедших в систему в + данный момент + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="vdir" name="vdir"></a><span class= + "term"><span class= + "command"><strong>vdir</strong></span></span> + </p> + </td> + <td> + <p> + То же, что <span class="command"><strong>ls + -l</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="wc" name="wc"></a><span class= + "term"><span class= + "command"><strong>wc</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает количество строк, слов и байт для каждого + заданного файла, а также общее количество строк, + если указано более одного файла + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="who" name="who"></a><span class= + "term"><span class= + "command"><strong>who</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает, кто вошел в систему + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="whoami" name="whoami"></a><span class= + "term"><span class= + "command"><strong>whoami</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает имя пользователя, соответствующее + идентификатору текущего пользователя + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="yes" name="yes"></a><span class= + "term"><span class= + "command"><strong>yes</strong></span></span> + </p> + </td> + <td> + <p> + Повторно выводит <code class="literal">y</code> или + указанную строку, до тех пор, пока команда не будет + завершена с помощью kill + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libstdbuf" name="libstdbuf"></a><span class= + "term"><code class= + "filename">libstdbuf</code></span> + </p> + </td> + <td> + <p> + Библиотека, используемая командой <span class= + "command"><strong>stdbuf</strong></span> + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-check" name="ch-system-check"></a>8.58. + Check-0.15.2 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Check - это фреймворк модульного тестирования для языка C. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU (около 1.6 + SBU с тестами)</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">12 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.58.1. Установка пакета Check + </h3> + <p> + Подготовить Check к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr --disable-static</kbd></pre> + <p> + Соберите пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Когда компиляция будет завершена, запустите набор тестов: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make docdir=/usr/share/doc/check-0.15.2 install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-check" name="contents-check"></a>8.58.2. + Содержимое пакета Check + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">checkmk</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libcheck.so</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm11684" name="idm11684"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="checkmk" name="checkmk"></a><span class= + "term"><span class= + "command"><strong>checkmk</strong></span></span> + </p> + </td> + <td> + <p> + Сценарий Awk для генерации unit-тестов C, для + использования с платформой модульного тестирования + Check. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libcheck" name="libcheck"></a><span class= + "term"><code class= + "filename">libcheck.so</code></span> + </p> + </td> + <td> + <p> + Содержит функции, позволяющие вызывать Check из + программы тестирования. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-diffutils" name= + "ch-system-diffutils"></a>8.59. Diffutils-3.10 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Diffutils содержит программы, которые показывают + различия между файлами или каталогами. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.3 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">36 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.59.1. Установка пакета Diffutils + </h3> + <p> + Подготовьте Diffutils к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестровать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-diffutils" name= + "contents-diffutils"></a>8.59.2. Содержимое пакета Diffutils + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">cmp, diff, + diff3, и sdiff</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm11733" name="idm11733"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="cmp" name="cmp"></a><span class= + "term"><span class= + "command"><strong>cmp</strong></span></span> + </p> + </td> + <td> + <p> + Сравнивает побайтно два файла и сообщает о любых + различиях + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="diff" name="diff"></a><span class= + "term"><span class= + "command"><strong>diff</strong></span></span> + </p> + </td> + <td> + <p> + Сравнивает два файла или каталога и сообщает, какие + строки отличаются + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="diff3" name="diff3"></a><span class= + "term"><span class= + "command"><strong>diff3</strong></span></span> + </p> + </td> + <td> + <p> + Сравнивает три файла построчно + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sdiff" name="sdiff"></a><span class= + "term"><span class= + "command"><strong>sdiff</strong></span></span> + </p> + </td> + <td> + <p> + Объединяет два файла и интерактивно выводит + результат + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-gawk" name="ch-system-gawk"></a>8.60. + Gawk-5.3.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Gawk содержит программы для работы с текстовыми + файлами. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">42 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.60.1. Установка пакета Gawk + </h3> + <p> + Во-первых, отредактируйте Makefile, чтобы некоторые ненужные + файлы не были установлены + </p> + <pre class="userinput"><kbd class= + "command">sed -i 's/extras//' Makefile.in</kbd></pre> + <p> + Подготовьте Gawk к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class="command">chown -R tester . +su tester -c "PATH=$PATH make check"</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">rm -f /usr/bin/gawk-5.3.0 +make install</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение команды:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><span class="command"><strong>rm -f + /usr/bin/gawk-5.3.0</strong></span></span> + </dt> + <dd> + <p> + Система сборки не будет пересоздавать жесткую ссылку + <code class="filename">gawk-5.3.0</code>, если она + существует. Удалите её, чтобы гарантировать, что + предыдущая жесткая ссылка, созданная в <a class="xref" + href="#ch-tools-gawk" title= + "6.9. Gawk-5.3.0">Раздел 6.9, «Gawk-5.3.0»</a>, + будет обновлена. + </p> + </dd> + </dl> + </div> + <p> + В процессе установки уже создан <span class= + "command"><strong>awk</strong></span> в виде символической + ссылки на <span class="command"><strong>gawk</strong></span>, + создайте также символическую ссылку на справочную страницу: + </p> + <pre class="userinput"><kbd class= + "command">ln -sv gawk.1 /usr/share/man/man1/awk.1</kbd></pre> + <p> + По желанию, установите документацию: + </p> + <pre class="userinput"><kbd class= + "command">mkdir -pv /usr/share/doc/gawk-5.3.0 +cp -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-5.3.0</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-gawk" name="contents-gawk"></a>8.60.2. + Содержимое пакета Gawk + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">awk (ссылка на + gawk), gawk и gawk-5.3.0</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">filefuncs.so, + fnmatch.so, fork.so, inplace.so, intdiv.so, ordchr.so, + readdir.so, readfile.so, revoutput.so, revtwoway.so, + rwarray.so и time.so (все в /usr/lib/gawk)</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/lib/gawk, /usr/libexec/awk, + /usr/share/awk и /usr/share/doc/gawk-5.3.0</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm11820" name="idm11820"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="awk" name="awk"></a><span class= + "term"><span class= + "command"><strong>awk</strong></span></span> + </p> + </td> + <td> + <p> + Ссылка на <span class= + "command"><strong>gawk</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gawk" name="gawk"></a><span class= + "term"><span class= + "command"><strong>gawk</strong></span></span> + </p> + </td> + <td> + <p> + Программа для работы с текстовыми файлами; это GNU + реализация <span class= + "command"><strong>awk</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gawk-version" name= + "gawk-version"></a><span class="term"><span class= + "command"><strong>gawk-5.3.0</strong></span></span> + </p> + </td> + <td> + <p> + Жесткая ссылка на <span class= + "command"><strong>gawk</strong></span> + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-findutils" name= + "ch-system-findutils"></a>8.61. Findutils-4.9.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Findutils содержит программы для поиска файлов. Эти + программы предназначены для поиска по всем файлам в дереве + каталогов, а также для создания, обслуживания и поиска в базе + данных (часто быстрее, чем рекурсивный поиск, но ненадежно, + если база данных давно не обновлялась).Findutils также + предоставляет программу <span class= + "command"><strong>xargs</strong></span>, которую можно + использовать для запуска указанной команды для каждого файла, + выбранного при поиске. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.4 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">51 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.61.1. Установка пакета Findutils + </h3> + <p> + Подготовьте Findutils к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr --localstatedir=/var/lib/locate</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--localstatedir</code></em></span> + </dt> + <dd> + <p> + Этот параметр перемещает базу данных команды + <span class="command"><strong>locate</strong></span> в + <code class="filename">/var/lib/locate</code>, что + соответствует расположению, совместимому со стандартом + FHS. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class="command">chown -R tester . +su tester -c "PATH=$PATH make check"</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-findutils" name= + "contents-findutils"></a>8.61.2. Содержимое пакета Findutils + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Installed programs:</strong> + <span class="segbody">Установленные программы</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/var/lib/locate</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm11891" name="idm11891"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="find" name="find"></a><span class= + "term"><span class= + "command"><strong>find</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет поиск в заданных каталогах файлов, + соответствующих критериям + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="locate" name="locate"></a><span class= + "term"><span class= + "command"><strong>locate</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет поиск по базе данных имен файлов и + сообщает об именах, которые содержат заданную + строку или соответствуют заданному шаблону. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="updatedb" name="updatedb"></a><span class= + "term"><span class= + "command"><strong>updatedb</strong></span></span> + </p> + </td> + <td> + <p> + Обновляет базу данных <span class= + "command"><strong>locate</strong></span>; сканирует + всю файловую систему (включая другие файловые + системы, которые в настоящее время смонтированы, + если не указано иное) и записывает найденные имена + файлов в базу данных + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xargs" name="xargs"></a><span class= + "term"><span class= + "command"><strong>xargs</strong></span></span> + </p> + </td> + <td> + <p> + Может использоваться для применения заданной + команды к списку файлов + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-groff" name="ch-system-groff"></a>8.62. + Groff-1.23.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Groff содержит программы для обработки и форматирования + текста и изображений. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.2 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">107 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.62.1. Установка пакета Groff + </h3> + <p> + Groff ожидает, что переменная окружения <code class= + "envar">PAGE</code> будет содержать размер бумаги по + умолчанию. Для пользователей из США подходит <em class= + "parameter"><code>PAGE=letter</code></em>. Для других стран + больше подойдет <em class= + "parameter"><code>PAGE=A4</code></em>. Хотя формат бумаги по + умолчанию настраивается во время компиляции, его можно + переопределить позже, записав <span class= + "quote">«<span class="quote">A4</span>»</span> или + <span class="quote">«<span class= + "quote">letter</span>»</span> в файл <code class= + "filename">/etc/papersize</code>. + </p> + <p> + Подготовьте Groff к компиляции: + </p> + <pre class="userinput"><kbd class="command">PAGE=<em class= + "replaceable"><code><paper_size></code></em> ./configure --prefix=/usr</kbd></pre> + <p> + Соберите пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-groff" name="contents-groff"></a>8.62.2. + Содержимое пакета Groff + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">addftinfo, + afmtodit, chem, eqn, eqn2graph, gdiffmk, glilypond, + gperl, gpinyin, grap2graph, grn, grodvi, groff, groffer, + grog, grolbp, grolj4, gropdf, grops, grotty, hpftodit, + indxbib, lkbib, lookbib, mmroff, neqn, nroff, pdfmom, + pdfroff, pfbtops, pic, pic2graph, post-grohtml, preconv, + pre-grohtml, refer, roff2dvi, roff2html, roff2pdf, + roff2ps, roff2text, roff2x, soelim, tbl, tfmtodit и + troff</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/lib/groff и + /usr/share/doc/groff-1.23.0, /usr/share/groff</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm11965" name="idm11965"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="addftinfo" name="addftinfo"></a><span class= + "term"><span class= + "command"><strong>addftinfo</strong></span></span> + </p> + </td> + <td> + <p> + Читает файл шрифта troff и добавляет некоторую + дополнительную информацию о метрике шрифта, + используемую системой <span class= + "command"><strong>groff</strong></span>. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="afmtodit" name="afmtodit"></a><span class= + "term"><span class= + "command"><strong>afmtodit</strong></span></span> + </p> + </td> + <td> + <p> + Создаёт файл шрифта для использования с + <span class="command"><strong>groff</strong></span> + и <span class= + "command"><strong>grops</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="chem" name="chem"></a><span class= + "term"><span class= + "command"><strong>chem</strong></span></span> + </p> + </td> + <td> + <p> + Препроцессор Groff для создания диаграмм химических + структур + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="eqn" name="eqn"></a><span class= + "term"><span class= + "command"><strong>eqn</strong></span></span> + </p> + </td> + <td> + <p> + Компилирует описания уравнений, имеющихся внутри + входных файлов troff, которые понятны <span class= + "command"><strong>troff</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="eqn2graph" name="eqn2graph"></a><span class= + "term"><span class= + "command"><strong>eqn2graph</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует a troff EQN (уравнение) во фрагмент + изображения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gdiffmk" name="gdiffmk"></a><span class= + "term"><span class= + "command"><strong>gdiffmk</strong></span></span> + </p> + </td> + <td> + <p> + Отображает различия между файлами groff/nroff/troff + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="glilypond" name="glilypond"></a><span class= + "term"><span class= + "command"><strong>glilypond</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует ноты, записанные на языке lilypond в + язык groff + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gperl" name="gperl"></a><span class= + "term"><span class= + "command"><strong>gperl</strong></span></span> + </p> + </td> + <td> + <p> + Препроцессор для groff, позволяющий вставлять код + perl в файлы groff + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gpinyin" name="gpinyin"></a><span class= + "term"><span class= + "command"><strong>gpinyin</strong></span></span> + </p> + </td> + <td> + <p> + Препроцессор groff, позволяющий вставлять Pinyin + (запись звуков китайского языка с помощью + латинского алфавита) в файлы groff. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grap2graph" name= + "grap2graph"></a><span class="term"><span class= + "command"><strong>grap2graph</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует диаграммы grap во фрагмент растрового + изображения (grap - это старый язык + программирования Unix для создания диаграмм) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grn" name="grn"></a><span class= + "term"><span class= + "command"><strong>grn</strong></span></span> + </p> + </td> + <td> + <p> + Препроцессор <span class= + "command"><strong>groff</strong></span> для файлов + gremlin + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grodvi" name="grodvi"></a><span class= + "term"><span class= + "command"><strong>grodvi</strong></span></span> + </p> + </td> + <td> + <p> + Драйвер для <span class= + "command"><strong>groff</strong></span>, создающий + выходные файлы в формате TeX dvi + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="groff" name="groff"></a><span class= + "term"><span class= + "command"><strong>groff</strong></span></span> + </p> + </td> + <td> + <p> + Внешний интерфейс к системе форматирования + документов groff; обычно он запускает программу + <span class="command"><strong>troff</strong></span> + и постпроцессор, соответствующий выбранному + устройству + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="groffer" name="groffer"></a><span class= + "term"><span class= + "command"><strong>groffer</strong></span></span> + </p> + </td> + <td> + <p> + Отображает файлы groff и справочные страницы на + терминалах X и tty + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grog" name="grog"></a><span class= + "term"><span class= + "command"><strong>grog</strong></span></span> + </p> + </td> + <td> + <p> + Читает файлы и пытается определить, какие из + параметров <span class= + "command"><strong>groff</strong></span> + <code class="option">-e</code>, <code class= + "option">-man</code>, <code class= + "option">-me</code>, <code class= + "option">-mm</code>, <code class= + "option">-ms</code>, <code class= + "option">-p</code>, <code class="option">-s</code>, + или <code class="option">-t</code> требуются для + печати файлов, и указывает команду <span class= + "command"><strong>groff</strong></span> с этими + параметрами + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grolbp" name="grolbp"></a><span class= + "term"><span class= + "command"><strong>grolbp</strong></span></span> + </p> + </td> + <td> + <p> + Драйвер <span class= + "command"><strong>groff</strong></span> для + принтеров Canon CAPSL (лазерные принтеры серий + LBP-4 и LBP-8) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grolj4" name="grolj4"></a><span class= + "term"><span class= + "command"><strong>grolj4</strong></span></span> + </p> + </td> + <td> + <p> + Драйвер для <span class= + "command"><strong>groff</strong></span> который + выводит результат в формате PCL5, подходящем для + принтера HP LaserJet 4 + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gropdf" name="gropdf"></a><span class= + "term"><span class= + "command"><strong>gropdf</strong></span></span> + </p> + </td> + <td> + <p> + Переводит выходные данные GNU <span class= + "command"><strong>troff</strong></span> в формат + PDF + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grops" name="grops"></a><span class= + "term"><span class= + "command"><strong>grops</strong></span></span> + </p> + </td> + <td> + <p> + Переводит выходные данные GNU <span class= + "command"><strong>troff</strong></span> в формат + PostScript + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grotty" name="grotty"></a><span class= + "term"><span class= + "command"><strong>grotty</strong></span></span> + </p> + </td> + <td> + <p> + Переводит вывод GNU <span class= + "command"><strong>troff</strong></span> в форму, + подходящую для устройств, подобных пишущим + машинкам. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="hpftodit" name="hpftodit"></a><span class= + "term"><span class= + "command"><strong>hpftodit</strong></span></span> + </p> + </td> + <td> + <p> + Создает файл шрифта для использования с + <span class="command"><strong>groff + -Tlj4</strong></span> из файла метрик шрифта для HP + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="indxbib" name="indxbib"></a><span class= + "term"><span class= + "command"><strong>indxbib</strong></span></span> + </p> + </td> + <td> + <p> + Создает инвертированный индекс для + библиографических баз данных для указанного файла, + используемый с <span class= + "command"><strong>refer</strong></span>, + <span class= + "command"><strong>lookbib</strong></span>, и + <span class="command"><strong>lkbib</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lkbib" name="lkbib"></a><span class= + "term"><span class= + "command"><strong>lkbib</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет поиск в библиографических базах данных + ссылок, содержащих указанные ключи, и сообщает о + любых найденных ссылках + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lookbib" name="lookbib"></a><span class= + "term"><span class= + "command"><strong>lookbib</strong></span></span> + </p> + </td> + <td> + <p> + Выводит приглашение при наличии стандартной ошибки + (если устройство стандартного ввода не является + терминалом), читает из устройства стандартного + ввода строку, в которой находится набор ключевых + слов, ищет в библиографической базе данных для + указанного файла ссылки, содержащие эти ключевые + слова, выводит все ссылки, найденные в стандартном + выводе и повторяет этот процесс до тех пор, пока не + завершится входной поток + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mmroff" name="mmroff"></a><span class= + "term"><span class= + "command"><strong>mmroff</strong></span></span> + </p> + </td> + <td> + <p> + Простой препроцессор для <span class= + "command"><strong>groff</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="neqn" name="neqn"></a><span class= + "term"><span class= + "command"><strong>neqn</strong></span></span> + </p> + </td> + <td> + <p> + Форматирует уравнения для их вывода в формате + American Standard Code for Information Interchange + (ASCII) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="nroff" name="nroff"></a><span class= + "term"><span class= + "command"><strong>nroff</strong></span></span> + </p> + </td> + <td> + <p> + Скрипт, который эмулирует команду <span class= + "command"><strong>nroff</strong></span> с помощью + <span class="command"><strong>groff</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pdfmom" name="pdfmom"></a><span class= + "term"><span class= + "command"><strong>pdfmom</strong></span></span> + </p> + </td> + <td> + <p> + Это обертка над groff которая упрощает создание + PDF-документов из файлов, отформатированных с + помощью макросов mom. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pdfroff" name="pdfroff"></a><span class= + "term"><span class= + "command"><strong>pdfroff</strong></span></span> + </p> + </td> + <td> + <p> + Создает pdf-документы с помощью groff + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pfbtops" name="pfbtops"></a><span class= + "term"><span class= + "command"><strong>pfbtops</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует шрифт PostScript в формате <code class= + "filename">.pfb</code> в формат ASCII + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pic" name="pic"></a><span class= + "term"><span class= + "command"><strong>pic</strong></span></span> + </p> + </td> + <td> + <p> + Компилирует описания изображений, вставленных во + входные файлы troff или TeX, в команды, понятные + TeX или <span class= + "command"><strong>troff</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pic2graph" name="pic2graph"></a><span class= + "term"><span class= + "command"><strong>pic2graph</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует диаграмму PIC во фрагмент изображения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="post-grohtml" name= + "post-grohtml"></a><span class="term"><span class= + "command"><strong>post-grohtml</strong></span></span> + </p> + </td> + <td> + <p> + Переводит выходной поток GNU <span class= + "command"><strong>troff</strong></span> в HTML + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="preconv" name="preconv"></a><span class= + "term"><span class= + "command"><strong>preconv</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует кодировку входных файлов в формат, + понимаемый GNU <span class= + "command"><strong>troff</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pre-grohtml" name= + "pre-grohtml"></a><span class="term"><span class= + "command"><strong>pre-grohtml</strong></span></span> + </p> + </td> + <td> + <p> + Переводит выходной поток GNU <span class= + "command"><strong>troff</strong></span> в HTML + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="refer" name="refer"></a><span class= + "term"><span class= + "command"><strong>refer</strong></span></span> + </p> + </td> + <td> + <p> + Копирует содержимое файла в стандартный вывод, + кроме тех символов, которые расположены между + <span class="emphasis"><em>.[</em></span> и + <span class="emphasis"><em>.]</em></span> и + интерпретируются как цитаты, и кроме строк между + <span class="emphasis"><em>.R1</em></span> и + <span class="emphasis"><em>.R2</em></span>, которые + интерпретируются как команды, указывающие как + цитаты должны быть обработаны + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="roff2dvi" name="roff2dvi"></a><span class= + "term"><span class= + "command"><strong>roff2dvi</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует файлы roff в формат DVI + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="roff2html" name="roff2html"></a><span class= + "term"><span class= + "command"><strong>roff2html</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует файлы roff в формат HTML + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="roff2pdf" name="roff2pdf"></a><span class= + "term"><span class= + "command"><strong>roff2pdf</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует файлы roff в формат PDF + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="roff2ps" name="roff2ps"></a><span class= + "term"><span class= + "command"><strong>roff2ps</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует файлы roff в файлы ps + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="roff2text" name="roff2text"></a><span class= + "term"><span class= + "command"><strong>roff2text</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует файлы roff в текстовые файлы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="roff2x" name="roff2x"></a><span class= + "term"><span class= + "command"><strong>roff2x</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует файлы roff в другие форматы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="soelim" name="soelim"></a><span class= + "term"><span class= + "command"><strong>soelim</strong></span></span> + </p> + </td> + <td> + <p> + Читает файлы и заменяет строки вида <span class= + "emphasis"><em>.so file</em></span> содержимым + указанного файла <span class= + "emphasis"><em>file</em></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tbl" name="tbl"></a><span class= + "term"><span class= + "command"><strong>tbl</strong></span></span> + </p> + </td> + <td> + <p> + Компилирует описания таблиц, вставленные во входные + файлы troff, в команды, понимаемые <span class= + "command"><strong>troff</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tfmtodit" name="tfmtodit"></a><span class= + "term"><span class= + "command"><strong>tfmtodit</strong></span></span> + </p> + </td> + <td> + <p> + Создает файл шрифта для использования с + <span class="command"><strong>groff + -Tdvi</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="troff" name="troff"></a><span class= + "term"><span class= + "command"><strong>troff</strong></span></span> + </p> + </td> + <td> + <p> + Полностью совместим с Unix <span class= + "command"><strong>troff</strong></span>; его + следует вызывать с помощью команды <span class= + "command"><strong>groff</strong></span>, которая + также будет запускать препроцессоры и + постпроцессоры в соответствующем порядке и с + соответствующими параметрами + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-grub" name="ch-system-grub"></a>8.63. + GRUB-2.12 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет GRUB содержит загрузчик операционной системы от проекта + GNU (GRand Unified Bootloader). + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.3 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">166 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.63.1. Установка пакета GRUB + </h3> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Если ваша система поддерживает UEFI и вы хотите загрузить + LFS с UEFI, вы можете пропустить установку этого пакета в + LFS и установить GRUB с поддержкой UEFI (и его + зависимости), следуя инструкции <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/grub-efi.html"> + из BLFS</a>. + </p> + </div> + <div class="admon warning"> + <h3> + Предупреждение + </h3> + <p> + Сбросьте переменные окружения, которые могут повлиять на + сборку: + </p> + <pre class="userinput"><kbd class= + "command">unset {C,CPP,CXX,LD}FLAGS</kbd></pre> + <p> + Не пытайтесь <span class="quote">«<span class= + "quote">настраивать</span>»</span> этот пакет с помощью + пользовательских флагов компиляции. Этот пакет является + загрузчиком. Низкоуровневые операции в исходном коде могут + быть нарушены из-за агрессивной оптимизации. + </p> + </div> + <p> + Добавьте файл, отсутствующий в архиве релиза: + </p> + <pre class="userinput"><kbd class="command">echo <code class= + "literal">depends bli part_gpt</code> > grub-core/extra_deps.lst</kbd></pre> + <p> + Подготовьте GRUB к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --sysconfdir=/etc \ + --disable-efiemu \ + --disable-werror</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение новых параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-werror</code></em></span> + </dt> + <dd> + <p> + Этот параметр позволяет завершить сборку с + предупреждениями, появившимися в более поздних версиях + Flex. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-efiemu</code></em></span> + </dt> + <dd> + <p> + Этот параметр запрещает установку компонента, отключает + функции и некоторые программы тестирования, которые не + нужны для LFS. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Запуск набора тестов не рекомендуется. Большинство тестов + зависят от пакетов, недоступных в ограниченной среде LFS. + Если вы все равно хотите запустить тесты, выполните + <span class="command"><strong>make check</strong></span>. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class="command">make install +mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions</kbd></pre> + <p> + Создание загружаемой системы LFS с помощью GRUB будет + обсуждаться в <a class="xref" href="#ch-bootable-grub" title= + "10.4. Использование GRUB для настройки процесса загрузки">Раздел 10.4, + «Использование GRUB для настройки процесса загрузки»</a>. + </p> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-gRUB" name="contents-gRUB"></a>8.63.2. + Содержимое пакета GRUB + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class= + "segbody">grub-bios-setup, grub-editenv, grub-file, + grub-fstest, grub-glue-efi, grub-install, grub-kbdcomp, + grub-macbless, grub-menulst2cfg, grub-mkconfig, + grub-mkimage, grub-mklayout, grub-mknetdir, + grub-mkpasswd-pbkdf2, grub-mkrelpath, grub-mkrescue, + grub-mkstandalone, grub-ofpathname, grub-probe, + grub-reboot, grub-render-label, grub-script-check, + grub-set-default, grub-sparc64-setup и + grub-syslinux2cfg</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/lib/grub, /etc/grub.d, + /usr/share/grub и /boot/grub (при первом запуске + grub-install)</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm12394" name="idm12394"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="grub-bios-setup" name= + "grub-bios-setup"></a><span class= + "term"><span class= + "command"><strong>grub-bios-setup</strong></span></span> + </p> + </td> + <td> + <p> + Вспомогательная программа для <span class= + "command"><strong>grub-install</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-editenv" name= + "grub-editenv"></a><span class="term"><span class= + "command"><strong>grub-editenv</strong></span></span> + </p> + </td> + <td> + <p> + Инструмент для редактирования блока окружения + (environment block) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-file" name="grub-file"></a><span class= + "term"><span class= + "command"><strong>grub-file</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет, относится ли данный файл к указанному + типу + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-fstest" name= + "grub-fstest"></a><span class="term"><span class= + "command"><strong>grub-fstest</strong></span></span> + </p> + </td> + <td> + <p> + Инструмент для отладки драйвера файловой системы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-glue-efi" name= + "grub-glue-efi"></a><span class="term"><span class= + "command"><strong>grub-glue-efi</strong></span></span> + </p> + </td> + <td> + <p> + Объединяет 32-разрядные и 64-разрядные бинарные + файлы в один файл (для компьютеров Apple) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-install" name= + "grub-install"></a><span class="term"><span class= + "command"><strong>grub-install</strong></span></span> + </p> + </td> + <td> + <p> + Устанавливает GRUB на ваш диск + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-kbdcomp" name= + "grub-kbdcomp"></a><span class="term"><span class= + "command"><strong>grub-kbdcomp</strong></span></span> + </p> + </td> + <td> + <p> + Скрипт, который преобразует макет xkb в макет, + распознаваемый GRUB + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-macbless" name= + "grub-macbless"></a><span class="term"><span class= + "command"><strong>grub-macbless</strong></span></span> + </p> + </td> + <td> + <p> + Это аналог bless в стиле Mac для файловых систем + HFS или HFS+ (команда <span class= + "command"><strong>bless</strong></span> характерна + для компьютеров Apple; она делает устройство + загрузочным) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-menulst2cfg" name= + "grub-menulst2cfg"></a><span class= + "term"><span class= + "command"><strong>grub-menulst2cfg</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует GRUB Legacy <code class= + "filename">menu.lst</code> в <code class= + "filename">grub.cfg</code> для использования с GRUB + 2 + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-mkconfig" name= + "grub-mkconfig"></a><span class="term"><span class= + "command"><strong>grub-mkconfig</strong></span></span> + </p> + </td> + <td> + <p> + Генерирует файл <code class= + "filename">grub.cfg</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-mkimage" name= + "grub-mkimage"></a><span class="term"><span class= + "command"><strong>grub-mkimage</strong></span></span> + </p> + </td> + <td> + <p> + Создаёт загрузочный образ GRUB + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-mklayout" name= + "grub-mklayout"></a><span class="term"><span class= + "command"><strong>grub-mklayout</strong></span></span> + </p> + </td> + <td> + <p> + Создаёт файл раскладки клавиатуры GRUB + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-mknetdir" name= + "grub-mknetdir"></a><span class="term"><span class= + "command"><strong>grub-mknetdir</strong></span></span> + </p> + </td> + <td> + <p> + Подготавливает сетевой загрузочный каталог GRUB + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-mkpasswd-pbkdf2" name= + "grub-mkpasswd-pbkdf2"></a><span class= + "term"><span class= + "command"><strong>grub-mkpasswd-pbkdf2</strong></span></span> + </p> + </td> + <td> + <p> + Генерирует зашифрованный пароль PBKDF2 для + использования в меню загрузки + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-mkrelpath" name= + "grub-mkrelpath"></a><span class= + "term"><span class="command"><strong>grub-mkrelpath</strong></span></span> + </p> + </td> + <td> + <p> + Создает имена системных путей относительно корня + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-mkrescue" name= + "grub-mkrescue"></a><span class="term"><span class= + "command"><strong>grub-mkrescue</strong></span></span> + </p> + </td> + <td> + <p> + Создает загрузочный образ GRUB, подходящий для + дискеты, CDROM/DVD или USB-накопителя + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-mkstandalone" name= + "grub-mkstandalone"></a><span class= + "term"><span class= + "command"><strong>grub-mkstandalone</strong></span></span> + </p> + </td> + <td> + <p> + Генерирует автономный образ + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-ofpathname" name= + "grub-ofpathname"></a><span class= + "term"><span class= + "command"><strong>grub-ofpathname</strong></span></span> + </p> + </td> + <td> + <p> + Вспомогательная программа, которая выводит путь к + устройству GRUB + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-probe" name= + "grub-probe"></a><span class="term"><span class= + "command"><strong>grub-probe</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет информацию об устройстве для заданного + пути или устройства + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-reboot" name= + "grub-reboot"></a><span class="term"><span class= + "command"><strong>grub-reboot</strong></span></span> + </p> + </td> + <td> + <p> + Устанавливает пункт меню в GRUB для загрузки по + умолчанию, только для следующей + загрузки(однократно) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-render-label" name= + "grub-render-label"></a><span class= + "term"><span class= + "command"><strong>grub-render-label</strong></span></span> + </p> + </td> + <td> + <p> + Отображает .disk_label для компьютеров Apple Mac + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-script-check" name= + "grub-script-check"></a><span class= + "term"><span class= + "command"><strong>grub-script-check</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет скрипт настройки GRUB на наличие + синтаксических ошибок + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-set-default" name= + "grub-set-default"></a><span class= + "term"><span class= + "command"><strong>grub-set-default</strong></span></span> + </p> + </td> + <td> + <p> + Устанавливает для GRUB загрузочную запись по + умолчанию + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-sparc64-setup" name= + "grub-sparc64-setup"></a><span class= + "term"><span class= + "command"><strong>grub-sparc64-setup</strong></span></span> + </p> + </td> + <td> + <p> + Вспомогательная программа для grub-setup + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="grub-syslinux2cfg" name= + "grub-syslinux2cfg"></a><span class= + "term"><span class= + "command"><strong>grub-syslinux2cfg</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует файл конфигурации syslinux в формат + grub.cfg + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-gzip" name="ch-system-gzip"></a>8.64. + Gzip-1.13 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Gzip содержит программы для сжатия и распаковки файлов. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.3 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">21 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.64.1. Установка пакета Gzip + </h3> + <p> + Подготовьте Gzip к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-gzip" name="contents-gzip"></a>8.64.2. + Содержимое пакета Gzip + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">gunzip, gzexe, + gzip, uncompress (жесткая ссылка на gunzip), zcat, zcmp, + zdiff, zegrep, zfgrep, zforce, zgrep, zless, zmore и + znew</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm12609" name="idm12609"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="gunzip" name="gunzip"></a><span class= + "term"><span class= + "command"><strong>gunzip</strong></span></span> + </p> + </td> + <td> + <p> + Распаковывает gzip-файлы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gzexe" name="gzexe"></a><span class= + "term"><span class= + "command"><strong>gzexe</strong></span></span> + </p> + </td> + <td> + <p> + Создает самораспаковывающиеся исполняемые файлы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="gzip" name="gzip"></a><span class= + "term"><span class= + "command"><strong>gzip</strong></span></span> + </p> + </td> + <td> + <p> + Сжимает файлы, используя алгоритм Lempel-Ziv + (LZ77). + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="uncompress" name= + "uncompress"></a><span class="term"><span class= + "command"><strong>uncompress</strong></span></span> + </p> + </td> + <td> + <p> + Распаковывает сжатые файлы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zcat" name="zcat"></a><span class= + "term"><span class= + "command"><strong>zcat</strong></span></span> + </p> + </td> + <td> + <p> + Распаковывает указанные сжатые файлы в стандартный + поток вывода + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zcmp" name="zcmp"></a><span class= + "term"><span class= + "command"><strong>zcmp</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>cmp</strong></span> для + архивированных файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zdiff" name="zdiff"></a><span class= + "term"><span class= + "command"><strong>zdiff</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>diff</strong></span> для + архивированных файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zegrep" name="zegrep"></a><span class= + "term"><span class= + "command"><strong>zegrep</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>egrep</strong></span> для + архивированных файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zfgrep" name="zfgrep"></a><span class= + "term"><span class= + "command"><strong>zfgrep</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>fgrep</strong></span> для + архивированных файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zforce" name="zforce"></a><span class= + "term"><span class= + "command"><strong>zforce</strong></span></span> + </p> + </td> + <td> + <p> + Принудительно устанавливает расширение <code class= + "filename">.gz</code> всем сжатым файлам, чтобы + <span class="command"><strong>gzip</strong></span> + не сжимал их снова; это может быть полезно, когда + имена файлов были обрезаны во время передачи файла + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zgrep" name="zgrep"></a><span class= + "term"><span class= + "command"><strong>zgrep</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>grep</strong></span> для + архивированных файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zless" name="zless"></a><span class= + "term"><span class= + "command"><strong>zless</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>less</strong></span> для + архивированных файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zmore" name="zmore"></a><span class= + "term"><span class= + "command"><strong>zmore</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>more</strong></span> для + архивированных файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="znew" name="znew"></a><span class= + "term"><span class= + "command"><strong>znew</strong></span></span> + </p> + </td> + <td> + <p> + Повторно сжимает файлы из формата <span class= + "command"><strong>compress</strong></span> в формат + <span class="command"><strong>gzip</strong></span> + — из <code class="filename">.Z</code> в + <code class="filename">.gz</code> + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-iproute2" name= + "ch-system-iproute2"></a>8.65. IPRoute2-6.7.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет IPRoute2 содержит набор программ для базового и + расширенного администрирования сетей IPv4. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">17 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.65.1. Установка пакета IPRoute2 + </h3> + <p> + Программа <span class="command"><strong>arpd</strong></span>, + входящая в этот пакет, не будет собрана, поскольку зависит от + Berkeley DB, которая не установлена в LFS. Однако каталог и + справочная страница для <span class= + "command"><strong>arpd</strong></span> все равно будут + установлены. Предотвратить это можно, выполнив приведенные + ниже команды. + </p> + <pre class="userinput"><kbd class= + "command">sed -i /ARPD/d Makefile +rm -fv man/man8/arpd.8</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class= + "command">make NETNS_RUN_DIR=/run/netns</kbd></pre> + <p> + Этот пакет не содержит рабочего набора тестов. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make SBINDIR=/usr/sbin install</kbd></pre> + <p> + По желанию, установите документацию: + </p> + <pre class="userinput"><kbd class= + "command">mkdir -pv /usr/share/doc/iproute2-6.7.0 +cp -v COPYING README* /usr/share/doc/iproute2-6.7.0</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-iproute2" name= + "contents-iproute2"></a>8.65.2. Содержимое пакета IPRoute2 + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">bridge, ctstat + (ссылка на lnstat), genl, ifstat, ip, lnstat, nstat, + routel, rtacct, rtmon, rtpr, rtstat (ссылка на lnstat), + ss и tc</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/etc/iproute2, /usr/lib/tc и + /usr/share/doc/iproute2-6.7.0</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm12760" name="idm12760"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="bridge" name="bridge"></a><span class= + "term"><span class= + "command"><strong>bridge</strong></span></span> + </p> + </td> + <td> + <p> + Настраивает сетевые мосты + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ctstat" name="ctstat"></a><span class= + "term"><span class= + "command"><strong>ctstat</strong></span></span> + </p> + </td> + <td> + <p> + Утилита состояния подключения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="genl" name="genl"></a><span class= + "term"><span class= + "command"><strong>genl</strong></span></span> + </p> + </td> + <td> + <p> + Универсальный интерфейс утилиты netlink + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ifstat" name="ifstat"></a><span class= + "term"><span class= + "command"><strong>ifstat</strong></span></span> + </p> + </td> + <td> + <p> + Показывает статистику интерфейса, включая + количество переданных и полученных пакетов по + интерфейсам. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ip" name="ip"></a><span class= + "term"><span class= + "command"><strong>ip</strong></span></span> + </p> + </td> + <td> + <p> + Основной исполняемый файл. Он имеет несколько + различных функций, в том числе эти: + </p> + <p> + <span class="command"><strong>ip link <em class= + "replaceable"><code><device></code></em></strong></span> + позволяет пользователям просматривать состояние + устройств и вносить изменения + </p> + <p> + <span class="command"><strong>ip + addr</strong></span> позволяет пользователям + просматривать адреса и их свойства, добавлять новые + адреса и удалять старые + </p> + <p> + <span class="command"><strong>ip + neighbor</strong></span> позволяет пользователям + просматривать связи с соседями и их свойства, + добавлять новые записи и удалять старые + </p> + <p> + <span class="command"><strong>ip + rule</strong></span> позволяет пользователям + просматривать политики маршрутизации и изменять их + </p> + <p> + <span class="command"><strong>ip + route</strong></span> позволяет пользователям + просматривать таблицу маршрутизации и изменять + правила таблицы маршрутизации + </p> + <p> + <span class="command"><strong>ip + tunnel</strong></span> позволяет пользователям + просматривать IP-туннели и их свойства, а также + изменять их + </p> + <p> + <span class="command"><strong>ip + maddr</strong></span> позволяет пользователям + просматривать multicast адреса и их свойства и + изменять их + </p> + <p> + <span class="command"><strong>ip + mroute</strong></span> позволяет пользователям + устанавливать, изменять или удалять multicast + маршрутизацию. + </p> + <p> + <span class="command"><strong>ip + monitor</strong></span> позволяет пользователям + постоянно отслеживать состояние устройств, адресов + и маршрутов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lnstat" name="lnstat"></a><span class= + "term"><span class= + "command"><strong>lnstat</strong></span></span> + </p> + </td> + <td> + <p> + Предоставляет сетевую статистику Linux; это + обобщенная и более полнофункциональная замена + старой программы <span class= + "command"><strong>rtstat</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="nstat" name="nstat"></a><span class= + "term"><span class= + "command"><strong>nstat</strong></span></span> + </p> + </td> + <td> + <p> + Отображает сетевую статистику + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="routel" name="routel"></a><span class= + "term"><span class= + "command"><strong>routel</strong></span></span> + </p> + </td> + <td> + <p> + Компонент <span class="command"><strong>ip + route</strong></span> для просмотра таблиц + маршрутизации + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="rtacct" name="rtacct"></a><span class= + "term"><span class= + "command"><strong>rtacct</strong></span></span> + </p> + </td> + <td> + <p> + Отображает содержимое <code class= + "filename">/proc/net/rt_acct</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="rtmon" name="rtmon"></a><span class= + "term"><span class= + "command"><strong>rtmon</strong></span></span> + </p> + </td> + <td> + <p> + Мониторит изменения таблицы маршрутизации + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="rtpr" name="rtpr"></a><span class= + "term"><span class= + "command"><strong>rtpr</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует вывод <span class="command"><strong>ip + -o</strong></span> в удобочитаемую форму + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="rtstat" name="rtstat"></a><span class= + "term"><span class= + "command"><strong>rtstat</strong></span></span> + </p> + </td> + <td> + <p> + Утилита состояния маршрута + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ss" name="ss"></a><span class= + "term"><span class= + "command"><strong>ss</strong></span></span> + </p> + </td> + <td> + <p> + Аналогично команде <span class= + "command"><strong>netstat</strong></span> + показывает активные соединения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tc" name="tc"></a><span class= + "term"><span class= + "command"><strong>tc</strong></span></span> + </p> + </td> + <td> + <p> + Управление трафиком для реализаций качества + обслуживания (QoS) и класса обслуживания (CoS) + </p> + <p> + <span class="command"><strong>tc + qdisc</strong></span> позволяет пользователям + настроить дисциплину обработки очередей + </p> + <p> + <span class="command"><strong>tc + class</strong></span> позволяет пользователям + настраивать классы, на основе планирования + дисциплины обработки очередей + </p> + <p> + <span class="command"><strong>tc + filter</strong></span> позволяет пользователям + настроить фильтрацию пакетов QOS/COS + </p> + <p> + <span class="command"><strong>tc + monitor</strong></span> может использоваться для + просмотра изменений, внесенных в управление + трафиком в ядре + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-kbd" name="ch-system-kbd"></a>8.66. + Kbd-2.6.4 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Kbd содержит файлы таблиц клавиш, консольные шрифты и + утилиты клавиатуры. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">34 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.66.1. Установка пакета Kbd + </h3> + <p> + Поведение клавиш backspace и delete не согласуется между + раскладками в пакете Kbd. Следующий патч исправляет эту + проблему для раскладок i386: + </p> + <pre class="userinput"><kbd class= + "command">patch -Np1 -i ../kbd-2.6.4-backspace-1.patch</kbd></pre> + <p> + После исправления клавиша backspace генерирует символ с кодом + 127, а клавиша delete генерирует хорошо известную + escape-последовательность. + </p> + <p> + Удалите ненужную программу <span class= + "command"><strong>resizecons</strong></span> (она требуется + несуществующей svgalib для предоставления файлов видеорежима + — для нормального использования <span class= + "command"><strong>setfont</strong></span>, который правильно + определяет размеры консоли) вместе с ее справочной страницей. + </p> + <pre class="userinput"><kbd class= + "command">sed -i '/RESIZECONS_PROGS=/s/yes/no/' configure +sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in</kbd></pre> + <p> + Подготовьте Kbd для компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr --disable-vlock</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметра configure:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-vlock</code></em></span> + </dt> + <dd> + <p> + Этот параметр предотвращает сборку утилиты vlock, + поскольку для неё требуется библиотека PAM, которая + недоступна в среде chroot. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Для некоторых языков (например белорусского) пакет Kbd не + предоставляет подходящую раскладку, штатная раскладка + <span class="quote">«<span class="quote">by</span>»</span> + предполагает кодировку ISO-8859-5, а обычно используется + раскладка CP1251. Пользователи таких языков должны отдельно + загрузить рабочую раскладку. + </p> + </div> + <p> + По желанию, установите документацию:: + </p> + <pre class="userinput"><kbd class= + "command">cp -R -v docs/doc -T /usr/share/doc/kbd-2.6.4</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-kbd" name="contents-kbd"></a>8.66.2. + Содержимое пакета Kbd + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">chvt, + deallocvt, dumpkeys, fgconsole, getkeycodes, kbdinfo, + kbd_mode, kbdrate, loadkeys, loadunimap, mapscrn, openvt, + psfaddtable (ссылка на psfxtable), psfgettable (ссылка на + psfxtable), psfstriptable (ссылка на psfxtable), + psfxtable, setfont, setkeycodes, setleds, setmetamode, + setvtrgb, showconsolefont, showkey, unicode_start и + unicode_stop</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/consolefonts, + /usr/share/consoletrans, /usr/share/keymaps, + /usr/share/doc/kbd-2.6.4 и /usr/share/unimaps</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm12949" name="idm12949"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="chvt" name="chvt"></a><span class= + "term"><span class= + "command"><strong>chvt</strong></span></span> + </p> + </td> + <td> + <p> + Изменяет используемый виртуальный терминал + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="deallocvt" name="deallocvt"></a><span class= + "term"><span class= + "command"><strong>deallocvt</strong></span></span> + </p> + </td> + <td> + <p> + Освобождает неиспользуемые виртуальные терминалы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="dumpkeys" name="dumpkeys"></a><span class= + "term"><span class= + "command"><strong>dumpkeys</strong></span></span> + </p> + </td> + <td> + <p> + Создает дамп таблиц перевода клавиатуры + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fgconsole" name="fgconsole"></a><span class= + "term"><span class= + "command"><strong>fgconsole</strong></span></span> + </p> + </td> + <td> + <p> + Выводит номер активного виртуального терминала + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="getkeycodes" name= + "getkeycodes"></a><span class="term"><span class= + "command"><strong>getkeycodes</strong></span></span> + </p> + </td> + <td> + <p> + Выводит таблицу ядра соответствия сканкода и кода + клавиши + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="kbdinfo" name="kbdinfo"></a><span class= + "term"><span class= + "command"><strong>kbdinfo</strong></span></span> + </p> + </td> + <td> + <p> + Получает информацию о состоянии консоли + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="kbd_mode" name="kbd_mode"></a><span class= + "term"><span class= + "command"><strong>kbd_mode</strong></span></span> + </p> + </td> + <td> + <p> + Выводит или устанавливает режим клавиатуры + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="kbdrate" name="kbdrate"></a><span class= + "term"><span class= + "command"><strong>kbdrate</strong></span></span> + </p> + </td> + <td> + <p> + Устанавливает частоту повторных нажатий клавиш и + задержки клавиатуры + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="loadkeys" name="loadkeys"></a><span class= + "term"><span class= + "command"><strong>loadkeys</strong></span></span> + </p> + </td> + <td> + <p> + Загружает таблицу преобразования клавиатуры + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="loadunimap" name= + "loadunimap"></a><span class="term"><span class= + "command"><strong>loadunimap</strong></span></span> + </p> + </td> + <td> + <p> + Загружает таблицу ядра отображения символов юникода + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mapscrn" name="mapscrn"></a><span class= + "term"><span class= + "command"><strong>mapscrn</strong></span></span> + </p> + </td> + <td> + <p> + Устаревшая программа, которая использовалась для + загрузки определяемой пользователем таблицы + соответствия выводимых символов в драйвер консоли; + теперь эту функцию выполняет <span class= + "command"><strong>setfont</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="openvt" name="openvt"></a><span class= + "term"><span class= + "command"><strong>openvt</strong></span></span> + </p> + </td> + <td> + <p> + Запускает программу на новом виртуальном терминале + (VT) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="psfaddtable" name= + "psfaddtable"></a><span class="term"><span class= + "command"><strong>psfaddtable</strong></span></span> + </p> + </td> + <td> + <p> + Добавляет таблицу символов Unicode в консольный + шрифт. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="psfgettable" name= + "psfgettable"></a><span class="term"><span class= + "command"><strong>psfgettable</strong></span></span> + </p> + </td> + <td> + <p> + Извлекает встроенную таблицу символов Unicode из + консольного шрифта. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="psfstriptable" name= + "psfstriptable"></a><span class="term"><span class= + "command"><strong>psfstriptable</strong></span></span> + </p> + </td> + <td> + <p> + Удаляет встроенную таблицу символов Unicode из + консольного шрифта. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="psfxtable" name="psfxtable"></a><span class= + "term"><span class= + "command"><strong>psfxtable</strong></span></span> + </p> + </td> + <td> + <p> + Обрабатывает таблицы символов Unicode для + консольных шрифтов. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="setfont" name="setfont"></a><span class= + "term"><span class= + "command"><strong>setfont</strong></span></span> + </p> + </td> + <td> + <p> + Изменяет шрифты Enhanced Graphic Adapter (EGA) и + Video Graphics Array (VGA), используемые в консоли + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="setkeycodes" name= + "setkeycodes"></a><span class="term"><span class= + "command"><strong>setkeycodes</strong></span></span> + </p> + </td> + <td> + <p> + Загружает таблицу соответствия сканкодов ядра и + кодов клавиш; это удобно, если на клавиатуре есть + нестандартные клавиши + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="setleds" name="setleds"></a><span class= + "term"><span class= + "command"><strong>setleds</strong></span></span> + </p> + </td> + <td> + <p> + Устанавливает значения флагов клавиатуры и + индикаторов (обычно - светодиоды) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="setmetamode" name= + "setmetamode"></a><span class="term"><span class= + "command"><strong>setmetamode</strong></span></span> + </p> + </td> + <td> + <p> + Определяет обработку метаклавиши на клавиатуре + (обычно, это клавиша Win) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="setvtrgb" name="setvtrgb"></a><span class= + "term"><span class= + "command"><strong>setvtrgb</strong></span></span> + </p> + </td> + <td> + <p> + Устанавливает цветовую схему консоли для всех + виртуальных терминалов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="showconsolefont" name= + "showconsolefont"></a><span class= + "term"><span class= + "command"><strong>showconsolefont</strong></span></span> + </p> + </td> + <td> + <p> + Показывает текущий шрифт экрана консоли EGA/VGA + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="showkey" name="showkey"></a><span class= + "term"><span class= + "command"><strong>showkey</strong></span></span> + </p> + </td> + <td> + <p> + Показывает сканкоды, код клавиши и код ASCII для + клавиш, нажатых на клавиатуре + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="unicode_start" name= + "unicode_start"></a><span class="term"><span class= + "command"><strong>unicode_start</strong></span></span> + </p> + </td> + <td> + <p> + Переводит клавиатуру и консоль в режим UNICODE. [Не + используйте эту программу, если вы не используете + файл раскладки для кодировки ISO-8859-1. Для других + кодировок эта утилита выдает неправильные + результаты]. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="unicode_stop" name= + "unicode_stop"></a><span class="term"><span class= + "command"><strong>unicode_stop</strong></span></span> + </p> + </td> + <td> + <p> + Возвращает клавиатуру и консоль из режима UNICODE + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-libpipeline" name= + "ch-system-libpipeline"></a>8.67. Libpipeline-1.5.7 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Libpipeline содержит библиотеку для гибкого и удобного + управления подпроцессами. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">10 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.67.1. Установка пакета Libpipeline + </h3> + <p> + Подготовьте Libpipeline к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-libpipeline" name= + "contents-libpipeline"></a>8.67.2. Содержимое пакета + Libpipeline + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libpipeline.so</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm13160" name="idm13160"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="libpipeline" name= + "libpipeline"></a><span class="term"><code class= + "filename">libpipeline</code></span> + </p> + </td> + <td> + <p> + Эта библиотека используется для безопасного + построения конвейеров между подпроцессами. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-make" name="ch-system-make"></a>8.68. + Make-4.4.1 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Make содержит программу, управляющую генерацией + исполняемых и других файлов, из исходного кода. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.5 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">13 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.68.1. Установка пакета Make + </h3> + <p> + Подготовьте Make к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class="command">chown -R tester . +su tester -c "PATH=$PATH make check"</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-make" name="contents-make"></a>8.68.2. + Содержимое пакета Make + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">make</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm13202" name="idm13202"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="make" name="make"></a><span class= + "term"><span class= + "command"><strong>make</strong></span></span> + </p> + </td> + <td> + <p> + Автоматически определяет, какие части пакета + необходимо (пере)компилировать и запускает + соответствующие команды. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-patch" name="ch-system-patch"></a>8.69. + Patch-2.7.6 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Patch содержит программу для изменения или создания + файлов путём наложение <span class="quote">«<span class= + "quote">патча</span>»</span>, обычно, создаваемого программой + <span class="command"><strong>diff</strong></span>. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">12 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.69.1. Установка пакета Patch + </h3> + <p> + Подготовьте Patch к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-patch" name="contents-patch"></a>8.69.2. + Содержимое пакета Patch + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">patch</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm13246" name="idm13246"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="patch" name="patch"></a><span class= + "term"><span class= + "command"><strong>patch</strong></span></span> + </p> + </td> + <td> + <p> + Изменяет файлы в соответствии с файлом исправления + (патч обычно представляет собой список отличий, + создаваемый с помощью программы <span class= + "command"><strong>diff</strong></span>. Применяя их + к исходным файлам, <span class= + "command"><strong>patch</strong></span> создает + исправленные версии.) + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-tar" name="ch-system-tar"></a>8.70. + Tar-1.35 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Tar предоставляет возможность создавать tar архивы, а + также производить с ними различные манипуляции. Tar может + распаковать предварительно созданный архив, добавить или + обновить файлы в нём, вернуть список файлов в архиве. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.5 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">43 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.70.1. Установка пакета Tar + </h3> + <p> + Подготовьте Tar к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">FORCE_UNSAFE_CONFIGURE=1 \ +./configure --prefix=/usr</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметра configure:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><code class= + "envar">FORCE_UNSAFE_CONFIGURE=1</code></span> + </dt> + <dd> + <p> + Этот параметр принудительно запускает тест для + <code class="function">mknod</code> от имени + пользователя <code class="systemitem">root</code>. + Обычно считается опасным запускать этот тест от имени + пользователя <code class="systemitem">root</code>, но, + поскольку он выполняется в системе, которая была + собрана лишь частично, его переопределение допустимо. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Известно, что один тест, capabilities: binary store/restore, + завершается ошибкой при запуске, потому что в LFS отсутствует + selinux, он будет пропущен, если ядро хоста не поддерживает + расширенные атрибуты или метки безопасности файловой системы, + используемой для сборки LFS. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class="command">make install +make -C doc install-html docdir=/usr/share/doc/tar-1.35</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-tar" name="contents-tar"></a>8.70.2. + Содержимое пакета Tar + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">tar</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/doc/tar-1.35</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm13303" name="idm13303"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="tar" name="tar"></a><span class= + "term"><span class= + "command"><strong>tar</strong></span></span> + </p> + </td> + <td> + <p> + Создает архивы, извлекает файлы и отображает + содержимое архивов, также известных как Тарболл. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-texinfo" name= + "ch-system-texinfo"></a>8.71. Texinfo-7.1 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Texinfo содержит программы для чтения, записи и + преобразования информационных страниц. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.3 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">139 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.71.1. Установка пакета Texinfo + </h3> + <p> + Подготовьте Texinfo к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + По желанию установите компоненты, входящие в пакет TeX:: + </p> + <pre class="userinput"><kbd class= + "command">make TEXMF=/usr/share/texmf install-tex</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметра make:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>TEXMF=/usr/share/texmf</code></em></span> + </dt> + <dd> + <p> + Переменная makefile <code class="envar">TEXMF</code> + содержит расположение корня дерева TeX, это + понадобится, если, например, пакет TeX планируется + установить позже. + </p> + </dd> + </dl> + </div> + <p> + Система документации использует простой текстовый файл для + хранения списка пунктов меню. Файл находится в <code class= + "filename">/usr/share/info/dir</code>. К сожалению, из-за + случайных проблем в Makefile различных пакетов он иногда + может не синхронизироваться с информационными страницами, + установленными в системе. Если когда-либо потребуется + пересоздать файл <code class= + "filename">/usr/share/info/dir</code>, следующие + необязательные команды решают эту задачу: + </p> + <pre class="userinput"><kbd class= + "command">pushd /usr/share/info + rm -v dir + for f in * + do install-info $f dir 2>/dev/null + done +popd</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-texinfo" name="contents-texinfo"></a>8.71.2. + Содержимое пакета Texinfo + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">info, + install-info, makeinfo (ссылка на texi2any), pdftexi2dvi, + pod2texi, texi2any, texi2dvi, texi2pdf, и texindex</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">MiscXS.so, + Parsetexi.so и XSParagraph.so (все в + /usr/lib/texinfo)</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/texinfo и + /usr/lib/texinfo</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm13365" name="idm13365"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="info" name="info"></a><span class= + "term"><span class= + "command"><strong>info</strong></span></span> + </p> + </td> + <td> + <p> + Используется для чтения информационных страниц, + которые похожи на справочные страницы, но гораздо + подробнее описывают применение всех доступных + параметров командной строки [Например, сравните + <span class="command"><strong>man + bison</strong></span> и <span class= + "command"><strong>info bison</strong></span>.] + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="install-info" name= + "install-info"></a><span class="term"><span class= + "command"><strong>install-info</strong></span></span> + </p> + </td> + <td> + <p> + Используется для установки информационных страниц; + он обновляет записи в индексном файле команды + <span class="command"><strong>info</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="makeinfo" name="makeinfo"></a><span class= + "term"><span class= + "command"><strong>makeinfo</strong></span></span> + </p> + </td> + <td> + <p> + Переводит исходные документы Texinfo в + информационные страницы, обычный текст или HTML. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pdftexi2dvi" name= + "pdftexi2dvi"></a><span class="term"><span class= + "command"><strong>pdftexi2dvi</strong></span></span> + </p> + </td> + <td> + <p> + Используется для форматирования документа Texinfo в + файл Portable Document Format (PDF). + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pod2texi" name="pod2texi"></a><span class= + "term"><span class= + "command"><strong>pod2texi</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует Pod в формат Texinfo + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="texi2any" name="texi2any"></a><span class= + "term"><span class= + "command"><strong>texi2any</strong></span></span> + </p> + </td> + <td> + <p> + Переводит исходную документацию Texinfo в различные + другие форматы. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="texi2dvi" name="texi2dvi"></a><span class= + "term"><span class= + "command"><strong>texi2dvi</strong></span></span> + </p> + </td> + <td> + <p> + Используется для форматирования документа Texinfo в + независимый от устройства файл, который можно + распечатать + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="texi2pdf" name="texi2pdf"></a><span class= + "term"><span class= + "command"><strong>texi2pdf</strong></span></span> + </p> + </td> + <td> + <p> + Используется для форматирования данного документа + Texinfo в файл Portable Document Format (PDF). + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="texindex" name="texindex"></a><span class= + "term"><span class= + "command"><strong>texindex</strong></span></span> + </p> + </td> + <td> + <p> + Используется для сортировки индексных файлов + Texinfo. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-vim" name="ch-system-vim"></a>8.72. + Vim-9.1.0041 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Vim содержит мощный текстовый редактор. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">2.5 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">236 + MB</span> + </div> + </div> + </div> + <div class="admon tip"> + <h3> + Альтернативы Vim + </h3> + <p> + .Если вы предпочитаете другой текстовый редактор, например, + Emacs, Joe или Nano, обратитесь к <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/editors.html"> + https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/editors.html</a> + за рекомендациями по установке. + </p> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.72.1. Установка пакета Vim + </h3> + <p> + Во-первых, измените расположение файла конфигурации + <code class="filename">vimrc</code> на <code class= + "filename">/etc</code>: + </p> + <pre class="userinput"><kbd class= + "command">echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h</kbd></pre> + <p> + Подготовьте Vim к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы подготовить тесты, убедитесь, что пользователь + <code class="systemitem">tester</code> может писать в + исходное дерево: + </p> + <pre class="userinput"><kbd class= + "command">chown -R tester .</kbd></pre> + <p> + Теперь запустите тесты от имени пользователя <code class= + "systemitem">tester</code>: + </p> + <pre class="userinput"><kbd class= + "command">su tester -c "TERM=xterm-256color LANG=en_US.UTF-8 make -j1 test" \ + &> vim-test.log</kbd></pre> + <p> + Набор тестов выводит на экран много двоичных данных. Это + может вызвать проблемы с настройками текущего терминала + (особенно, когда мы переопределяем переменную <code class= + "envar">TERM</code>, чтобы удовлетворить некоторые требования + набора тестов). Чтобы этого избежать, перенаправьте вывод в + файл журнала, как показано выше. Тест пройден успешно, если + лог по завершении содержит текст: <code class= + "computeroutput">ALL DONE</code>. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + Многие пользователи рефлекторно набирают <span class= + "command"><strong>vi</strong></span> вместо <span class= + "command"><strong>vim</strong></span>. Чтобы разрешить + выполнение <span class="command"><strong>vim</strong></span>, + когда пользователи вводят <span class= + "command"><strong>vi</strong></span>, создайте символическую + ссылку как для двоичного файла, так и для справочной + страницы: + </p> + <pre class="userinput"><kbd class= + "command">ln -sv vim /usr/bin/vi +for L in /usr/share/man/{,*/}man1/vim.1; do + ln -sv vim.1 $(dirname $L)/vi.1 +done</kbd></pre> + <p> + По умолчанию документация Vim установливается в каталог + <code class="filename">/usr/share/vim</code>. Следующая + символическая ссылка позволяет получить доступ к документации + через каталог <code class= + "filename">/usr/share/doc/vim-9.1.0041</code>, что + согласуется с расположением документации остальных пакетов: + </p> + <pre class="userinput"><kbd class= + "command">ln -sv ../vim/vim91/doc /usr/share/doc/vim-9.1.0041</kbd></pre> + <p> + Если в LFS будет установлена система X Window, может + потребоваться перекомпилировать Vim после установки X. Vim + поставляется с графической версией редактора, для которой + требуется установка X и некоторых дополнительных библиотек. + Для получения дополнительной информации об этом процессе + обратитесь к документации по Vim и странице установки Vim в + книге BLFS по адресу <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/vim.html"> + https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/vim.html</a>. + </p> + </div> + <div class="configuration" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="conf-vim" name="conf-vim"></a>8.72.2. Настройка Vim + </h3> + <p> + По умолчанию <span class= + "command"><strong>vim</strong></span> работает в режиме, + несовместимом с vi. Это может показаться необычным для + пользователей, которые в прошлом использовали другие + редакторы. Параметр <span class="quote">«<span class= + "quote">nocompatible</span>»</span> включен ниже, чтобы + подчеркнуть тот факт, что используется новое поведение. + Настройка также напоминает тем, кто хотел бы перейти в режим + <span class="quote">«<span class= + "quote">compatible</span>»</span>, что параметр должен быть + первым в файле конфигурации. Это необходимо, потому что + изменяются другие параметры, и переопределения происходят + после этой настройки. Создайте файл конфигурации <span class= + "command"><strong>vim</strong></span> по умолчанию, выполнив + следующие действия: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/vimrc << "EOF" +<code class="literal">" Begin /etc/vimrc + +" Ensure defaults are set before customizing settings, not after +source $VIMRUNTIME/defaults.vim +let skip_defaults_vim=1 + +set nocompatible +set backspace=2 +set mouse= +syntax on +if (&term == "xterm") || (&term == "putty") + set background=dark +endif + +" End /etc/vimrc</code> +EOF</kbd></pre> + <p> + Параметр <em class="parameter"><code>set + nocompatible</code></em> заставляет <span class= + "command"><strong>vim</strong></span> вести себя более + правильно (по умолчанию), чем vi-совместимый способ. Удалите + <span class="quote">«<span class="quote">no</span>»</span>, + чтобы сохранить старое поведение <span class= + "command"><strong>vi</strong></span>. Параметр <em class= + "parameter"><code>set backspace=2</code></em> позволяет + удалять символы через перенос строки, автоматические отступы + и начало вставки. Параметр <em class="parameter"><code>syntax + on</code></em> включает подсветку синтаксиса vim. Параметр + <em class="parameter"><code>set mouse=</code></em> позволяет + правильно вставлять текст с помощью мыши при работе в chroot + или через удаленное соединение. Наконец, оператор + <span class="emphasis"><em>if</em></span> с параметром + <em class="parameter"><code>set background=dark</code></em> + корректирует предположение <span class= + "command"><strong>vim</strong></span> о цвете фона некоторых + эмуляторов терминала. Это придает подсветке лучшую цветовую + схему для использования на черном фоне этих программ. + </p> + <p> + Документацию по другим доступным параметрам можно получить, + выполнив следующую команду: + </p> + <pre class="userinput"><kbd class= + "command">vim -c ':options'</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + По умолчанию vim устанавливает файлы проверки орфографии + только для английского языка. Для установки файлов проверки + орфографии других языков, скопируйте файлы <code class= + "filename">.spl</code> и, при необходимости, <code class= + "filename">.sug</code> для вашего языка и кодировки + символов из <code class="filename">runtime/spell</code>, + сохраните их в <code class= + "filename">/usr/share/vim/vim91/spell/</code>. + </p> + <p> + Чтобы использовать эти файлы проверки орфографии, + необходимо указать параметры для vim в файле <code class= + "filename">/etc/vimrc</code>, пример: + </p> + <pre class="screen"><code class="literal">set spelllang=en,ru +set spell</code></pre> + <p> + Дополнительные сведения смотрите в файле <code class= + "filename">runtime/spell/README.txt</code>. + </p> + </div> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-vim" name="contents-vim"></a>8.72.3. + Содержимое пакета Vim + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">ex (ссылка на + vim), rview (ссылка на vim), rvim (ссылка на vim), vi + (ссылка на vim), view (ссылка на vim), vim, vimdiff + (ссылка на vim), vimtutor и xxd</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/share/vim</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm13537" name="idm13537"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="ex" name="ex"></a><span class= + "term"><span class= + "command"><strong>ex</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>vim</strong></span> в режиме ex + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="rview" name="rview"></a><span class= + "term"><span class= + "command"><strong>rview</strong></span></span> + </p> + </td> + <td> + <p> + Это ограниченная версия <span class= + "command"><strong>view</strong></span>; никакие + команды оболочки не могут быть запущены, и + <span class="command"><strong>view</strong></span> + не может быть приостановлен + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="rvim" name="rvim"></a><span class= + "term"><span class= + "command"><strong>rvim</strong></span></span> + </p> + </td> + <td> + <p> + Это ограниченная версия <span class= + "command"><strong>vim</strong></span>; никакие + команды оболочки не могут быть запущены, и + <span class="command"><strong>vim</strong></span> + не может быть приостановлен + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="vi" name="vi"></a><span class= + "term"><span class= + "command"><strong>vi</strong></span></span> + </p> + </td> + <td> + <p> + Ссылка на <span class= + "command"><strong>vim</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="view" name="view"></a><span class= + "term"><span class= + "command"><strong>view</strong></span></span> + </p> + </td> + <td> + <p> + Запускает <span class= + "command"><strong>vim</strong></span> в режиме + только для чтения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="vim" name="vim"></a><span class= + "term"><span class= + "command"><strong>vim</strong></span></span> + </p> + </td> + <td> + <p> + Сам редактор + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="vimdiff" name="vimdiff"></a><span class= + "term"><span class= + "command"><strong>vimdiff</strong></span></span> + </p> + </td> + <td> + <p> + Редактирует две или три версии файла с помощью + <span class="command"><strong>vim</strong></span> и + показывает различия + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="vimtutor" name="vimtutor"></a><span class= + "term"><span class= + "command"><strong>vimtutor</strong></span></span> + </p> + </td> + <td> + <p> + Обучает основным горячим клавишам и командам + <span class="command"><strong>vim</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="xxd" name="xxd"></a><span class= + "term"><span class= + "command"><strong>xxd</strong></span></span> + </p> + </td> + <td> + <p> + Создает шестнадцатеричный дамп данного файла; он + также может выполнять обратную операцию, поэтому + его можно использовать для бинарных патчей + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-markupsafe" name= + "ch-system-markupsafe"></a>8.73. MarkupSafe-2.1.5 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + MarkupSafe — это модуль Python, реализующий безопасное + использование строк в языках разметки XML/HTML/XHTML + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">508 + KB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.73.1. Установка пакета MarkupSafe + </h3> + <p> + Скомпилируйте MarkupSafe с помощью следующей команды: + </p> + <pre class="userinput"><kbd class= + "command">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</kbd></pre> + <p> + С этим пакетом не поставляется тестов. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">pip3 install --no-index --no-user --find-links dist Markupsafe</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-markupsafe" name= + "contents-markupsafe"></a>8.73.2. Содержимое пакета + MarkupSafe + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class= + "segbody">/usr/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info</span> + </div> + </div> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-jinja2" name="ch-system-jinja2"></a>8.74. + Jinja2-3.1.3 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Jinja2 - это модуль Python, который реализует простой язык + шаблонов pythonic + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">3.2 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.74.1. Установка пакета Jinja2 + </h3> + <p> + Соберите пакет: + </p> + <pre class="userinput"><kbd class= + "command">pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">pip3 install --no-index --no-user --find-links dist Jinja2</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-jinja2" name="contents-jinja2"></a>8.74.2. + Содержимое пакета Jinja2 + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class= + "segbody">/usr/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info</span> + </div> + </div> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-udev" name="ch-system-udev"></a>8.75. Udev + из Systemd-255 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Udev содержит программы для динамического создания + узлов устройств. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.2 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">144 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.75.1. Установка пакета Udev + </h3> + <p> + Udev является частью пакета systemd-255. Используйте файл + systemd-255.tar.xz в качестве исходного архива. + </p> + <p> + Удалите две ненужные группы <code class= + "systemitem">render</code> и <code class= + "systemitem">sgx</code>, из правил udev по умолчанию: + </p> + <pre class="userinput"><kbd class= + "command">sed -i -e 's/GROUP="render"/GROUP="video"/' \ + -e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in</kbd></pre> + <p> + Удалите одно правило udev, требующее полной установки + Systemd: + </p> + <pre class="userinput"><kbd class= + "command">sed '/systemd-sysctl/s/^/#/' -i rules.d/99-systemd.rules.in</kbd></pre> + <p> + Измените жестко заданные пути к файлам конфигурации сети для + автономной установки udev: + </p> + <pre class="userinput"><kbd class= + "command">sed '/NETWORK_DIRS/s/systemd/udev/' -i src/basic/path-lookup.h</kbd></pre> + <p> + Подготовьте Udev к компиляции: + </p> + <pre class="userinput"><kbd class="command">mkdir -p build +cd build + +meson setup \ + --prefix=/usr \ + --buildtype=release \ + -Dmode=release \ + -Ddev-kvm-mode=0660 \ + -Dlink-udev-shared=false \ + -Dlogind=false \ + -Dvconsole=false \ + ..</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров meson:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--buildtype=release</code></em></span> + </dt> + <dd> + <p> + Этот параметр переопределяет тип сборки по умолчанию + (<span class="quote">«<span class= + "quote">debug</span>»</span>), который создает + неоптимизированные двоичные файлы. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>-Dmode=release</code></em></span> + </dt> + <dd> + <p> + Отключает некоторые функции, которые разработчики + считают экспериментальными. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>-Ddev-kvm-mode=0660</code></em></span> + </dt> + <dd> + <p> + По умолчанию правило udev разрешает всем пользователям + доступ к <code class="filename">/dev/kvm</code>. + Редакторы LFS считают это опасным. Данная опция + переопределяет разрешение по умолчанию. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>-Dlink-udev-shared=false</code></em></span> + </dt> + <dd> + <p> + Эта опция запрещает udev связываться с внутренней общей + библиотекой systemd <code class= + "systemitem">libsystemd-shared</code>. Эта библиотека + предназначена для совместного использования многими + компонентами Systemd, и ее использование избыточно, + когда установлен только udev. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>-Dlogind=false + -Dvconsole=false</code></em></span> + </dt> + <dd> + <p> + Эти параметры предотвращают создание нескольких файлов + правил udev, принадлежащих другим компонентам Systemd, + которые мы не будем устанавливать. + </p> + </dd> + </dl> + </div> + <p> + Получите список предоставляемых udev helpers и сохраните его + в переменной (экспортировать его не обязательно, но это + упрощает сборку от имени обычного пользователя или при + использовании менеджера пакетов): + </p> + <pre class="userinput"><kbd class= + "command">export udev_helpers=$(grep "'name' :" ../src/udev/meson.build | \ + awk '{print $3}' | tr -d ",'" | grep -v 'udevadm')</kbd></pre> + <p> + Соберите только компоненты, необходимые для udev: + </p> + <pre class="userinput"><kbd class= + "command">ninja udevadm systemd-hwdb \ + $(ninja -n | grep -Eo '(src/(lib)?udev|rules.d|hwdb.d)/[^ ]*') \ + $(realpath libudev.so --relative-to .) \ + $udev_helpers</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">install -vm755 -d {/usr/lib,/etc}/udev/{hwdb.d,rules.d,network} +install -vm755 -d /usr/{lib,share}/pkgconfig +install -vm755 udevadm /usr/bin/ +install -vm755 systemd-hwdb /usr/bin/udev-hwdb +ln -svfn ../bin/udevadm /usr/sbin/udevd +cp -av libudev.so{,*[0-9]} /usr/lib/ +install -vm644 ../src/libudev/libudev.h /usr/include/ +install -vm644 src/libudev/*.pc /usr/lib/pkgconfig/ +install -vm644 src/udev/*.pc /usr/share/pkgconfig/ +install -vm644 ../src/udev/udev.conf /etc/udev/ +install -vm644 rules.d/* ../rules.d/README /usr/lib/udev/rules.d/ +install -vm644 $(find ../rules.d/*.rules \ + -not -name '*power-switch*') /usr/lib/udev/rules.d/ +install -vm644 hwdb.d/* ../hwdb.d/{*.hwdb,README} /usr/lib/udev/hwdb.d/ +install -vm755 $udev_helpers /usr/lib/udev +install -vm644 ../network/99-default.link /usr/lib/udev/network</kbd></pre> + <p> + Установите некоторые пользовательские правила и + вспомогательные файлы, полезные в среде LFS: + </p> + <pre class="userinput"><kbd class= + "command">tar -xvf ../../udev-lfs-20230818.tar.xz +make -f udev-lfs-20230818/Makefile.lfs install</kbd></pre> + <p> + Установите справочные страницы: + </p> + <pre class="userinput"><kbd class= + "command">tar -xf ../../systemd-man-pages-255.tar.xz \ + --no-same-owner --strip-components=1 \ + -C /usr/share/man --wildcards '*/udev*' '*/libudev*' \ + '*/systemd.link.5' \ + '*/systemd-'{hwdb,udevd.service}.8 + +sed 's|systemd/network|udev/network|' \ + /usr/share/man/man5/systemd.link.5 \ + > /usr/share/man/man5/udev.link.5 + +sed 's/systemd\(\\\?-\)/udev\1/' /usr/share/man/man8/systemd-hwdb.8 \ + > /usr/share/man/man8/udev-hwdb.8 + +sed 's|lib.*udevd|sbin/udevd|' \ + /usr/share/man/man8/systemd-udevd.service.8 \ + > /usr/share/man/man8/udevd.8 + +rm /usr/share/man/man*/systemd*</kbd></pre> + <p> + Наконец, сбросьте значение переменной <code class= + "envar">udev_helpers</code>: + </p> + <pre class="userinput"><kbd class= + "command">unset udev_helpers</kbd></pre> + </div> + <div class="configuration" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="conf-udev" name="conf-udev"></a>8.75.2. Настройка Udev + </h3> + <p> + Информация об аппаратных устройствах хранится в каталогах + <code class="filename">/etc/udev/hwdb.d</code> и <code class= + "filename">/usr/lib/udev/hwdb.d</code>. <span class= + "application">Udev</span> необходимо, чтобы эта информация + была скомпилирована в двоичную базу данных <code class= + "filename">/etc/udev/hwdb.bin</code>. Создайте исходную базу + данных: + </p> + <pre class="userinput"><kbd class= + "command">udev-hwdb update</kbd></pre> + <p> + Эту команду необходимо запускать каждый раз при обновлении + информации об оборудовании. + </p> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-udev" name="contents-udev"></a>8.75.3. + Содержимое пакета Udev + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">udevadm, udevd + (символическая ссылка на udevadm) и udev-hwdb</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libudev.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/etc/udev и /usr/lib/udev</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm13770" name="idm13770"></a>Short Descriptions + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="udevadm" name="udevadm"></a><span class= + "term"><span class= + "command"><strong>udevadm</strong></span></span> + </p> + </td> + <td> + <p> + Универсальный инструмент администрирования udev: + управляет демоном udevd, предоставляет информацию + из базы данных Udev, отслеживает uevents, ожидает + завершения uevents, проверяет конфигурацию Udev и + запускает uevents для данного устройства + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="udevd" name="udevd"></a><span class= + "term"><span class= + "command"><strong>udevd</strong></span></span> + </p> + </td> + <td> + <p> + Демон, который прослушивает uevents в сокете + netlink, создает устройства и запускает настроенные + внешние программы в ответ на эти uevents + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="udev-hwdb" name="udev-hwdb"></a><span class= + "term"><span class= + "command"><strong>udev-hwdb</strong></span></span> + </p> + </td> + <td> + <p> + Обновляет или запрашивает базу данных оборудования + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libudev" name="libudev"></a><span class= + "term"><code class="filename">libudev</code></span> + </p> + </td> + <td> + <p> + Библиотека для получения информации об устройствах + udev + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="etc-udev" name="etc-udev"></a><span class= + "term"><code class= + "filename">/etc/udev</code></span> + </p> + </td> + <td> + <p> + Содержит файлы конфигурации Udev, разрешения для + устройств и правила именования устройств + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-man-db" name="ch-system-man-db"></a>8.76. + Man-DB-2.12.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Man-DB содержит программы для поиска и просмотра + справочных страниц. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.2 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">41 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.76.1. Установка пакета Man-DB + </h3> + <p> + Подготовьте Man-DB к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --docdir=/usr/share/doc/man-db-2.12.0 \ + --sysconfdir=/etc \ + --disable-setuid \ + --enable-cache-owner=bin \ + --with-browser=/usr/bin/lynx \ + --with-vgrind=/usr/bin/vgrind \ + --with-grap=/usr/bin/grap \ + --with-systemdtmpfilesdir= \ + --with-systemdsystemunitdir=</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-setuid</code></em></span> + </dt> + <dd> + <p> + Отключает установку setuid пользователю <code class= + "systemitem">man</code> при сборке программы + <span class="command"><strong>man</strong></span>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-cache-owner=bin</code></em></span> + </dt> + <dd> + <p> + Изменяет владельца файлов общесистемного кэша на + пользователя <code class="systemitem">bin</code>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--with-...</code></em></span> + </dt> + <dd> + <p> + Эти три аргумента используются для настройки программ + по умолчанию. <span class= + "command"><strong>lynx</strong></span> текстовый + веб-браузер (см. инструкции по установке в книге BLFS), + <span class="command"><strong>vgrind</strong></span> + преобразует исходные коды программ во входные данные + Groff, <span class= + "command"><strong>grap</strong></span> удобен для + набора графов в документах Groff. Программы + <span class="command"><strong>vgrind</strong></span> и + <span class="command"><strong>grap</strong></span> + обычно не нужны для просмотра справочных страниц. Они + не входят в состав книг LFS или BLFS, но вы можете + установить их самостоятельно после сборки LFS. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--with-systemd...</code></em></span> + </dt> + <dd> + <p> + Эти параметры предотвращают установку ненужных + каталогов и файлов systemd. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы протестировать пакет, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.76.2. Не англоязычные страницы руководств в LFS + </h3> + <p> + В следующей таблице приведены наборы символов, в которых + могут быть закодированы страницы руководств пакета Man-DB, + устанавливаемые в директории <code class= + "filename">/usr/share/man/<ll></code>. Кроме этого, + Man-DB правильно определяет, имеют ли справочные страницы, + установленные в этом каталоге, кодировку UTF-8. + </p> + <div class="table"> + <a id="idm13867" name="idm13867"></a> + <p class="title"> + <strong>Таблица 8.1. Допустимые кодировки старых 8-битных + страниц руководств</strong> + </p> + <div class="table-contents"> + <table class="table" summary= + "Допустимые кодировки старых 8-битных страниц руководств" + border="1"> + <colgroup> + <col width="1.5in" /> + <col width="1in" /> + <col width="2.5in" /> + <col width="1in" /> + </colgroup> + <thead> + <tr> + <th> + Язык (код) + </th> + <th> + Кодировка + </th> + <th> + Язык (код) + </th> + <th> + Кодировка + </th> + </tr> + </thead> + <tbody> + <tr> + <td> + Датский (da) + </td> + <td> + ISO-8859-1 + </td> + <td> + Хорватский (hr) + </td> + <td> + ISO-8859-2 + </td> + </tr> + <tr> + <td> + Немецкий (de) + </td> + <td> + ISO-8859-1 + </td> + <td> + Венгерский (hu) + </td> + <td> + ISO-8859-2 + </td> + </tr> + <tr> + <td> + Английский (en) + </td> + <td> + ISO-8859-1 + </td> + <td> + Японский (ja) + </td> + <td> + EUC-JP + </td> + </tr> + <tr> + <td> + Испанский (es) + </td> + <td> + ISO-8859-1 + </td> + <td> + Корейский (ko) + </td> + <td> + EUC-KR + </td> + </tr> + <tr> + <td> + Эстонский (et) + </td> + <td> + ISO-8859-1 + </td> + <td> + Литовский (lt) + </td> + <td> + ISO-8859-13 + </td> + </tr> + <tr> + <td> + Финский (fi) + </td> + <td> + ISO-8859-1 + </td> + <td> + Латышский (lv) + </td> + <td> + ISO-8859-13 + </td> + </tr> + <tr> + <td> + Французский (fr) + </td> + <td> + ISO-8859-1 + </td> + <td> + Македонский (mk) + </td> + <td> + ISO-8859-5 + </td> + </tr> + <tr> + <td> + Ирландский (ga) + </td> + <td> + ISO-8859-1 + </td> + <td> + Польский (pl) + </td> + <td> + ISO-8859-2 + </td> + </tr> + <tr> + <td> + Галисийский (gl) + </td> + <td> + ISO-8859-1 + </td> + <td> + Румынский (ro) + </td> + <td> + ISO-8859-2 + </td> + </tr> + <tr> + <td> + Индонезийский (id) + </td> + <td> + ISO-8859-1 + </td> + <td> + Русский (ru) + </td> + <td> + KOI8-R + </td> + </tr> + <tr> + <td> + Исландский (is) + </td> + <td> + ISO-8859-1 + </td> + <td> + Словацкий (sk) + </td> + <td> + ISO-8859-2 + </td> + </tr> + <tr> + <td> + Итальянский (it) + </td> + <td> + ISO-8859-1 + </td> + <td> + Словенский (sl) + </td> + <td> + ISO-8859-2 + </td> + </tr> + <tr> + <td> + Норвежский букмол (nb) + </td> + <td> + ISO-8859-1 + </td> + <td> + Сербский латинский (sr@latin) + </td> + <td> + ISO-8859-2 + </td> + </tr> + <tr> + <td> + Голландский (nl) + </td> + <td> + ISO-8859-1 + </td> + <td> + Сербский (sr) + </td> + <td> + ISO-8859-5 + </td> + </tr> + <tr> + <td> + Норвежский нюнорск (nn) + </td> + <td> + ISO-8859-1 + </td> + <td> + Турецкий (tr) + </td> + <td> + ISO-8859-9 + </td> + </tr> + <tr> + <td> + Норвежский (no) + </td> + <td> + ISO-8859-1 + </td> + <td> + Украинский (uk) + </td> + <td> + KOI8-U + </td> + </tr> + <tr> + <td> + Португальский (pt) + </td> + <td> + ISO-8859-1 + </td> + <td> + Вьетнамский (vi) + </td> + <td> + TCVN5712-1 + </td> + </tr> + <tr> + <td> + Шведский (sv) + </td> + <td> + ISO-8859-1 + </td> + <td> + Упрощенный китайский (zh_CN) + </td> + <td> + GBK + </td> + </tr> + <tr> + <td> + Белорусский (be) + </td> + <td> + CP1251 + </td> + <td> + Упрощенный китайский, Сингапур (zh_SG) + </td> + <td> + GBK + </td> + </tr> + <tr> + <td> + Болгарский (bg) + </td> + <td> + CP1251 + </td> + <td> + Традиционный китайский, Гонконг (zh_HK) + </td> + <td> + BIG5HKSCS + </td> + </tr> + <tr> + <td> + Чешский (cs) + </td> + <td> + ISO-8859-2 + </td> + <td> + Традиционный китайский (zh_TW) + </td> + <td> + BIG5 + </td> + </tr> + <tr> + <td> + Греческий (el) + </td> + <td> + ISO-8859-7 + </td> + <td> + + </td> + <td> + + </td> + </tr> + </tbody> + </table> + </div> + </div><br class="table-break" /> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Страницы руководств на языках, которые не указаны в списке, + не поддерживаются. + </p> + </div> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-man-db" name="contents-man-db"></a>8.76.3. + Содержимое пакета Man-DB + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">accessdb, + apropos (ссылка на whatis), catman, lexgrog, man, + man-recode, mandb, manpath, и whatis</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">libman.so и + libmandb.so (обе в /usr/lib/man-db)</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/lib/man-db, + /usr/libexec/man-db и /usr/share/doc/man-db-2.12.0</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm14004" name="idm14004"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="accessdb" name="accessdb"></a><span class= + "term"><span class= + "command"><strong>accessdb</strong></span></span> + </p> + </td> + <td> + <p> + Выводит содержимое базы данных <span class= + "command"><strong>whatis</strong></span> в + удобочитаемой форме. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="apropos" name="apropos"></a><span class= + "term"><span class= + "command"><strong>apropos</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет поиск в базе данных <span class= + "command"><strong>whatis</strong></span> и + отображает краткое описание системных команд, + содержащих заданную строку + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="catman" name="catman"></a><span class= + "term"><span class= + "command"><strong>catman</strong></span></span> + </p> + </td> + <td> + <p> + Создает или обновляет предварительно + отформатированные страницы руководств + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lexgrog" name="lexgrog"></a><span class= + "term"><span class= + "command"><strong>lexgrog</strong></span></span> + </p> + </td> + <td> + <p> + Отображает однострочную сводную информацию о данной + странице руководства + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="man" name="man"></a><span class= + "term"><span class= + "command"><strong>man</strong></span></span> + </p> + </td> + <td> + <p> + Форматирует и отображает запрошенную страницу + руководства + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="man-recode" name= + "man-recode"></a><span class="term"><span class= + "command"><strong>man-recode</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует страницы руководства в другую кодировку + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mandb" name="mandb"></a><span class= + "term"><span class= + "command"><strong>mandb</strong></span></span> + </p> + </td> + <td> + <p> + Создает или обновляет базу данных <span class= + "command"><strong>whatis</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="manpath" name="manpath"></a><span class= + "term"><span class= + "command"><strong>manpath</strong></span></span> + </p> + </td> + <td> + <p> + Отображает содержимое переменной $MANPATH или (если + переменная $MANPATH не установлена) соответствующий + путь поиска, определяемый в настройках man.conf и в + пользовательском окружении + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="whatis" name="whatis"></a><span class= + "term"><span class= + "command"><strong>whatis</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет поиск в базе данных <span class= + "command"><strong>whatis</strong></span> и + отображает краткие описания системных команд, в + которых в описании ключей указано искомое слово + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libman" name="libman"></a><span class= + "term"><code class="filename">libman</code></span> + </p> + </td> + <td> + <p> + Включает поддержку <span class= + "command"><strong>man</strong></span> во время + выполнения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libmandb" name="libmandb"></a><span class= + "term"><code class= + "filename">libmandb</code></span> + </p> + </td> + <td> + <p> + Включает поддержку <span class= + "command"><strong>man</strong></span> во время + выполнения + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-procps" name="ch-system-procps"></a>8.77. + Procps-ng-4.0.4 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Procps-ng содержит программы для мониторинга процессов. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.1 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">27 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.77.1. Установка пакета Procps-ng + </h3> + <p> + Подготовьте Procps-ng к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --docdir=/usr/share/doc/procps-ng-4.0.4 \ + --disable-static \ + --disable-kill</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметра configure:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-kill</code></em></span> + </dt> + <dd> + <p> + Этот параметр отключает сборку команды <span class= + "command"><strong>kill</strong></span>; она будет + установлена из пакета Util-linux. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы запустить набор тестов, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make -k check</kbd></pre> + <p> + Известно, что тест <code class="literal">ps with output flag + bsdtime,cputime,etime,etimes</code> завершается неудачно, + если ядро хоста собрано с выключенным параметром <code class= + "literal">CONFIG_BSD_PROCESS_ACCT</code>. Также известно, что + два теста: <code class="literal">pmap X with unreachable + process</code> и <code class="literal">pmap XX with + unreachable process</code> иногда завершаются неудачно. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-procps" name="contents-procps"></a>8.77.2. + Содержимое пакета Procps-ng + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">free, pgrep, + pidof, pkill, pmap, ps, pwdx, slabtop, sysctl, tload, + top, uptime, vmstat, w и watch</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class= + "segbody">libproc-2.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/include/procps и + /usr/share/doc/procps-ng-4.0.4</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm14139" name="idm14139"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="free" name="free"></a><span class= + "term"><span class= + "command"><strong>free</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает объем свободной и используемой памяти (как + физической, так и файла подкачки) в системе. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pgrep" name="pgrep"></a><span class= + "term"><span class= + "command"><strong>pgrep</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет поиск процессов на основе их имени и + других атрибутов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pidof" name="pidof"></a><span class= + "term"><span class= + "command"><strong>pidof</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает PIDы указанных программ + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pkill" name="pkill"></a><span class= + "term"><span class= + "command"><strong>pkill</strong></span></span> + </p> + </td> + <td> + <p> + Отправка сигналов процессам на основе их имени и + других атрибутов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pmap" name="pmap"></a><span class= + "term"><span class= + "command"><strong>pmap</strong></span></span> + </p> + </td> + <td> + <p> + Команда выводит детальную информацию об + использование оперативной памяти процессами + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ps" name="ps"></a><span class= + "term"><span class= + "command"><strong>ps</strong></span></span> + </p> + </td> + <td> + <p> + Список запущенных процессов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pwdx" name="pwdx"></a><span class= + "term"><span class= + "command"><strong>pwdx</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает текущий рабочий каталог процесса + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="slabtop" name="slabtop"></a><span class= + "term"><span class= + "command"><strong>slabtop</strong></span></span> + </p> + </td> + <td> + <p> + Отображает подробную информацию о кэш-памяти ядра в + режиме реального времени. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sysctl" name="sysctl"></a><span class= + "term"><span class= + "command"><strong>sysctl</strong></span></span> + </p> + </td> + <td> + <p> + Изменяет параметры ядра во время выполнения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tload" name="tload"></a><span class= + "term"><span class= + "command"><strong>tload</strong></span></span> + </p> + </td> + <td> + <p> + Выводит график текущей средней загрузки системы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="top" name="top"></a><span class= + "term"><span class= + "command"><strong>top</strong></span></span> + </p> + </td> + <td> + <p> + Отображает список процессов, наиболее интенсивно + использующих ЦП; обеспечивает просмотр активности + процессора в режиме реального времени + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="uptime" name="uptime"></a><span class= + "term"><span class= + "command"><strong>uptime</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает сколько времени работает система, сколько + пользователей вошли в систему и средние значения + загрузки системы. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="vmstat" name="vmstat"></a><span class= + "term"><span class= + "command"><strong>vmstat</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает статистику виртуальной памяти, содержащую + информацию о процессах, памяти, подкачке, блочном + вводе/выводе (IO), прерываниях и активности ЦП. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="w" name="w"></a><span class= + "term"><span class= + "command"><strong>w</strong></span></span> + </p> + </td> + <td> + <p> + Показывает, какие пользователи в настоящее время + вошли в систему и с какого момента + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="watch" name="watch"></a><span class= + "term"><span class= + "command"><strong>watch</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет заданную команду повторно, отображая + первый экран, заполненный ее выводом; это позволяет + пользователю наблюдать за изменениями с течением + времени + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libproc-2" name="libproc-2"></a><span class= + "term"><code class= + "filename">libproc-2</code></span> + </p> + </td> + <td> + <p> + Содержит функции, используемые большинством + программ в этом пакете. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-util-linux" name= + "ch-system-util-linux"></a>8.78. Util-linux-2.39.3 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Util-linux содержит различные служебные программы. + Среди них утилиты для работы с файловыми системами, + консолями, разделами и сообщениями. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.5 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">313 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.78.1. Установка пакета Util-linux + </h3> + <p> + Сначала отключите проблемный тест: + </p> + <pre class="userinput"><kbd class= + "command">sed -i '/test_mkfds/s/^/#/' tests/helpers/Makemodule.am</kbd></pre> + <p> + Подготовьте Util-linux к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --bindir=/usr/bin \ + --libdir=/usr/lib \ + --runstatedir=/run \ + --sbindir=/usr/sbin \ + --disable-chfn-chsh \ + --disable-login \ + --disable-nologin \ + --disable-su \ + --disable-setpriv \ + --disable-runuser \ + --disable-pylibmount \ + --disable-static \ + --without-python \ + --without-systemd \ + --without-systemdsystemunitdir \ + ADJTIME_PATH=/var/lib/hwclock/adjtime \ + --docdir=/usr/share/doc/util-linux-2.39.3</kbd></pre> + <p> + Параметры --disable и --without предотвращают появление + предупреждений о сборке компонентов, для которых требуются + пакеты, отсутствующие в LFS, или которые несовместимы с + программами, установленными другими пакетами. + </p> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + По желанию запустите набор тестов от имени пользователя без + полномочий <code class="systemitem">root</code>: + </p> + <div class="admon warning"> + <h3> + Предупреждение + </h3> + <p> + Запуск набора тестов от имени пользователя <code class= + "systemitem">root</code> может повредить вашу систему. + Чтобы запустить тесты, опция CONFIG_SCSI_DEBUG для ядра + должна быть доступна в текущей работающей системе и должна + быть собрана как модуль. Включение её в ядро будет + прерывать загрузку. Для полного охвата тестами в систему + необходимо установить другие пакеты из BLFS. По желанию, + этот тест можно запустить после загрузки в готовую систему + LFS: + </p> + <pre class="userinput"><kbd class= + "command">bash tests/run.sh --srcdir=$PWD --builddir=$PWD</kbd></pre> + </div> + <pre class="userinput"><kbd class="command">chown -R tester . +su tester -c "make -k check"</kbd></pre> + <p> + Тесты с <span class="emphasis"><em>жесткими + ссылками</em></span> завершатся неудачей, если в ядре хоста + не включена опция <code class= + "option">CONFIG_CRYPTO_USER_API_HASH</code> или не включено + никаких опций, обеспечивающих реализацию SHA256 (например, + <code class="option">CONFIG_CRYPTO_SHA256</code> или + <code class="option">CONFIG_CRYPTO_SHA256_SSSE3</code>, если + процессор поддерживает инструкции SSE3). Кроме того, + известно, что два подтеста из misc: mbsencode и один подтест + из script: replay не проходят. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-utillinux" name= + "contents-utillinux"></a>8.78.2. Содержимое пакета Util-linux + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">addpart, + agetty, blkdiscard, blkid, blkzone, blockdev, cal, + cfdisk, chcpu, chmem, choom, chrt, col, colcrt, colrm, + column, ctrlaltdel, delpart, dmesg, eject, fallocate, + fdisk, fincore, findfs, findmnt, flock, fsck, + fsck.cramfs, fsck.minix, fsfreeze, fstrim, getopt, + hardlink, hexdump, hwclock, i386 (ссылка на setarch), + ionice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last, + lastb (ссылка на last), ldattach, linux32 (link to + setarch), linux64 (ссылка на setarch), logger, look, + losetup, lsblk, lscpu, lsipc, lsirq, lsfd, lslocks, + lslogins, lsmem, lsns, mcookie, mesg, mkfs, mkfs.bfs, + mkfs.cramfs, mkfs.minix, mkswap, more, mount, mountpoint, + namei, nsenter, partx, pivot_root, prlimit, readprofile, + rename, renice, resizepart, rev, rfkill, rtcwake, script, + scriptlive, scriptreplay, setarch, setsid, setterm, + sfdisk, sulogin, swaplabel, swapoff, swapon, switch_root, + taskset, uclampset, ul, umount, uname26 (ссылка на + setarch), unshare, utmpdump, uuidd, uuidgen, uuidparse, + wall, wdctl, whereis, wipefs, x86_64 (ссылка на setarch) + и zramctl</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">libblkid.so, + libfdisk.so, libmount.so, libsmartcols.so и + libuuid.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/include/blkid, + /usr/include/libfdisk, /usr/include/libmount, + /usr/include/libsmartcols, /usr/include/uuid, + /usr/share/doc/util-linux-2.39.3 и + /var/lib/hwclock</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm14305" name="idm14305"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="addpart" name="addpart"></a><span class= + "term"><span class= + "command"><strong>addpart</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает ядру Linux о новых разделах + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="agetty" name="agetty"></a><span class= + "term"><span class= + "command"><strong>agetty</strong></span></span> + </p> + </td> + <td> + <p> + Открывает порт tty, запрашивает имя для входа, а + затем вызывает программу <span class= + "command"><strong>login</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="blkdiscard" name= + "blkdiscard"></a><span class="term"><span class= + "command"><strong>blkdiscard</strong></span></span> + </p> + </td> + <td> + <p> + Очищает сектора на устройстве + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="blkid" name="blkid"></a><span class= + "term"><span class= + "command"><strong>blkid</strong></span></span> + </p> + </td> + <td> + <p> + Утилита командной строки для вывода атрибутов + блочного устройства + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="blkzone" name="blkzone"></a><span class= + "term"><span class= + "command"><strong>blkzone</strong></span></span> + </p> + </td> + <td> + <p> + Используется для управления зонированными блочными + системами хранения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="blockdev" name="blockdev"></a><span class= + "term"><span class= + "command"><strong>blockdev</strong></span></span> + </p> + </td> + <td> + <p> + Позволяет пользователям вызывать ioctl блочного + устройства из командной строки + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="cal" name="cal"></a><span class= + "term"><span class= + "command"><strong>cal</strong></span></span> + </p> + </td> + <td> + <p> + Отображает простой календарь + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="cfdisk" name="cfdisk"></a><span class= + "term"><span class= + "command"><strong>cfdisk</strong></span></span> + </p> + </td> + <td> + <p> + Управляет таблицей разделов данного устройства + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="chcpu" name="chcpu"></a><span class= + "term"><span class= + "command"><strong>chcpu</strong></span></span> + </p> + </td> + <td> + <p> + Изменяет состояние процессоров + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="chmem" name="chmem"></a><span class= + "term"><span class= + "command"><strong>chmem</strong></span></span> + </p> + </td> + <td> + <p> + Настраивает память + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="choom" name="choom"></a><span class= + "term"><span class= + "command"><strong>choom</strong></span></span> + </p> + </td> + <td> + <p> + Отображает и регулирует оценки OOM-killer, + используемые для определения того, какой процесс + следует завершить первым, когда в Linux + заканчивается память + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="chrt" name="chrt"></a><span class= + "term"><span class= + "command"><strong>chrt</strong></span></span> + </p> + </td> + <td> + <p> + Манипулирует атрибутами процесса в режиме реального + времени + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="col" name="col"></a><span class= + "term"><span class= + "command"><strong>col</strong></span></span> + </p> + </td> + <td> + <p> + Фильтрует обратные переносы строк из входного + потока + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="colcrt" name="colcrt"></a><span class= + "term"><span class= + "command"><strong>colcrt</strong></span></span> + </p> + </td> + <td> + <p> + Фильтрует данные, выдаваемые командой <span class= + "command"><strong>nroff</strong></span> на + терминалы, у которых отсутствует ряд возможностей, + например, отображение перечеркнутых символов или + верхних и нижних индексов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="colrm" name="colrm"></a><span class= + "term"><span class= + "command"><strong>colrm</strong></span></span> + </p> + </td> + <td> + <p> + Фильтрует вывод указанных столбцов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="column" name="column"></a><span class= + "term"><span class= + "command"><strong>column</strong></span></span> + </p> + </td> + <td> + <p> + Форматирует заданный файл в несколько столбцов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ctrlaltdel" name= + "ctrlaltdel"></a><span class="term"><span class= + "command"><strong>ctrlaltdel</strong></span></span> + </p> + </td> + <td> + <p> + Устанавливает для комбинации символов Ctrl+Alt+Del + жесткую или мягкую перезагрузку + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="delpart" name="delpart"></a><span class= + "term"><span class= + "command"><strong>delpart</strong></span></span> + </p> + </td> + <td> + <p> + Запрашивает у ядра Linux удаление раздела + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="dmesg" name="dmesg"></a><span class= + "term"><span class= + "command"><strong>dmesg</strong></span></span> + </p> + </td> + <td> + <p> + Выводит загрузочные сообщения ядра + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="eject" name="eject"></a><span class= + "term"><span class= + "command"><strong>eject</strong></span></span> + </p> + </td> + <td> + <p> + Извлекает съемный носитель + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fallocate" name="fallocate"></a><span class= + "term"><span class= + "command"><strong>fallocate</strong></span></span> + </p> + </td> + <td> + <p> + Предварительное выделение места под файл + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fdisk" name="fdisk"></a><span class= + "term"><span class= + "command"><strong>fdisk</strong></span></span> + </p> + </td> + <td> + <p> + Манипулирует таблицей разделов указанного + устройства + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fincore" name="fincore"></a><span class= + "term"><span class= + "command"><strong>fincore</strong></span></span> + </p> + </td> + <td> + <p> + Подчитывает сколько страниц приложение хранит в + памяти ядра + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="findfs" name="findfs"></a><span class= + "term"><span class= + "command"><strong>findfs</strong></span></span> + </p> + </td> + <td> + <p> + Находит файловую систему по метке или + универсальному уникальному идентификатору (UUID) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="findmnt" name="findmnt"></a><span class= + "term"><span class= + "command"><strong>findmnt</strong></span></span> + </p> + </td> + <td> + <p> + Представляет собой интерфейс командной строки к + библиотеке libmount для работы с файлами mountinfo, + fstab и mtab + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="flock" name="flock"></a><span class= + "term"><span class= + "command"><strong>flock</strong></span></span> + </p> + </td> + <td> + <p> + Осуществляет блокировку файла, а затем выполняет + команду, не снимая блокировку + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fsck" name="fsck"></a><span class= + "term"><span class= + "command"><strong>fsck</strong></span></span> + </p> + </td> + <td> + <p> + Используется для проверки и, при необходимости, + восстановления файловых систем + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fsck.cramfs" name= + "fsck.cramfs"></a><span class="term"><span class= + "command"><strong>fsck.cramfs</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет проверку целостности файловой системы + Cramfs на данном устройстве + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fsck.minix" name= + "fsck.minix"></a><span class="term"><span class= + "command"><strong>fsck.minix</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет проверку целостности файловой системы + Minix на данном устройстве + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fsfreeze" name="fsfreeze"></a><span class= + "term"><span class= + "command"><strong>fsfreeze</strong></span></span> + </p> + </td> + <td> + <p> + Очень простая программа-обертка для выполнение + операций с драйвером ядра FIFREEZE/FITHAW ioctl + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fstrim" name="fstrim"></a><span class= + "term"><span class= + "command"><strong>fstrim</strong></span></span> + </p> + </td> + <td> + <p> + Освобождает неиспользованные блоки смонтированной + файловой системы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="getopt" name="getopt"></a><span class= + "term"><span class= + "command"><strong>getopt</strong></span></span> + </p> + </td> + <td> + <p> + Разбирает параметры указанной командной строки + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="hardlink" name="hardlink"></a><span class= + "term"><span class= + "command"><strong>hardlink</strong></span></span> + </p> + </td> + <td> + <p> + Объединяет дубликаты файлов путем создания жестких + ссылок + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="hexdump" name="hexdump"></a><span class= + "term"><span class= + "command"><strong>hexdump</strong></span></span> + </p> + </td> + <td> + <p> + Создает дамп указанного файла в шестнадцатеричном, + десятичном, восьмеричном или ascii-формате + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="hwclock" name="hwclock"></a><span class= + "term"><span class= + "command"><strong>hwclock</strong></span></span> + </p> + </td> + <td> + <p> + Читает или устанавливает значение аппаратных часов + системы, называемых также часами реального времени + (RTC- Real-Time Clock) или часами БИОС (BIOS - + Basic Input-Output System) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="i386" name="i386"></a><span class= + "term"><span class= + "command"><strong>i386</strong></span></span> + </p> + </td> + <td> + <p> + Символьная ссылка на setarch + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ionice" name="ionice"></a><span class= + "term"><span class= + "command"><strong>ionice</strong></span></span> + </p> + </td> + <td> + <p> + Читает или устанавливает класс и приоритет + обработки ввода/вывода для программ + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ipcmk" name="ipcmk"></a><span class= + "term"><span class= + "command"><strong>ipcmk</strong></span></span> + </p> + </td> + <td> + <p> + Создает различные ресурсы межпроцессного + взаимодействия (IPC) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ipcrm" name="ipcrm"></a><span class= + "term"><span class= + "command"><strong>ipcrm</strong></span></span> + </p> + </td> + <td> + <p> + Удаляет указанный ресурс межпроцессного + взаимодействия (IPC) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ipcs" name="ipcs"></a><span class= + "term"><span class= + "command"><strong>ipcs</strong></span></span> + </p> + </td> + <td> + <p> + Предоставляет информацию о состоянии IPC + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="irqtop" name="irqtop"></a><span class= + "term"><span class= + "command"><strong>irqtop</strong></span></span> + </p> + </td> + <td> + <p> + Отображает информацию о счетчике прерываний ядра в + стиле <a class="ulink" href= + "https://man.archlinux.org/man/top.1">top(1)</a> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="isosize" name="isosize"></a><span class= + "term"><span class= + "command"><strong>isosize</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает о размере файловой системы iso9660 + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="kill" name="kill"></a><span class= + "term"><span class= + "command"><strong>kill</strong></span></span> + </p> + </td> + <td> + <p> + Посылает сигналы процессам + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="last" name="last"></a><span class= + "term"><span class= + "command"><strong>last</strong></span></span> + </p> + </td> + <td> + <p> + Показывает, какие пользователи в последний раз + входили (и выходили), выполняя поиск в файле + <code class="filename">/var/log/wtmp</code>; кроме + этого показывает информацию о загрузке системы, + завершение работы и изменениях уровня выполнения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lastb" name="lastb"></a><span class= + "term"><span class= + "command"><strong>lastb</strong></span></span> + </p> + </td> + <td> + <p> + Показывает неудачные попытки входа в систему, + зарегистрированные в <code class= + "filename">/var/log/btmp</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ldattach" name="ldattach"></a><span class= + "term"><span class= + "command"><strong>ldattach</strong></span></span> + </p> + </td> + <td> + <p> + Назначает устройству последовательного доступа + алгоритм, определяющий дисциплину обслуживания + этого устройства + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="linux32" name="linux32"></a><span class= + "term"><span class= + "command"><strong>linux32</strong></span></span> + </p> + </td> + <td> + <p> + Символическая ссылка на setarch + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="linux64" name="linux64"></a><span class= + "term"><span class= + "command"><strong>linux64</strong></span></span> + </p> + </td> + <td> + <p> + Символическая ссылка на setarch + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="logger" name="logger"></a><span class= + "term"><span class= + "command"><strong>logger</strong></span></span> + </p> + </td> + <td> + <p> + Добавляет указанное сообщение в системный журнал + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="look" name="look"></a><span class= + "term"><span class= + "command"><strong>look</strong></span></span> + </p> + </td> + <td> + <p> + Отображает строки, начинающиеся с указанной + последовательности символов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="losetup" name="losetup"></a><span class= + "term"><span class= + "command"><strong>losetup</strong></span></span> + </p> + </td> + <td> + <p> + Настраивает и управляет устройствами типа loop + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lsblk" name="lsblk"></a><span class= + "term"><span class= + "command"><strong>lsblk</strong></span></span> + </p> + </td> + <td> + <p> + Выводит информацию обо всех или выбранных блочных + устройствах в древовидном формате + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lscpu" name="lscpu"></a><span class= + "term"><span class= + "command"><strong>lscpu</strong></span></span> + </p> + </td> + <td> + <p> + Выводит информацию об архитектуре процессора + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lsfd" name="lsfd"></a><span class= + "term"><span class= + "command"><strong>lsfd</strong></span></span> + </p> + </td> + <td> + <p> + Отображает информацию об открытых файлах; заменяет + <span class="command"><strong>lsof</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lsipc" name="lsipc"></a><span class= + "term"><span class= + "command"><strong>lsipc</strong></span></span> + </p> + </td> + <td> + <p> + Выводит информацию об объектах IPC, которые в + настоящее время используются в системе + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lsirq" name="lsirq"></a><span class= + "term"><span class= + "command"><strong>lsirq</strong></span></span> + </p> + </td> + <td> + <p> + Отображает информацию о счетчике прерываний ядра + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lslocks" name="lslocks"></a><span class= + "term"><span class= + "command"><strong>lslocks</strong></span></span> + </p> + </td> + <td> + <p> + Отображает список всех заблокированных в настоящее + время файлов в системе + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lslogins" name="lslogins"></a><span class= + "term"><span class= + "command"><strong>lslogins</strong></span></span> + </p> + </td> + <td> + <p> + Выводит информацию о пользователях, группах и + системных учетных записях + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lsmem" name="lsmem"></a><span class= + "term"><span class= + "command"><strong>lsmem</strong></span></span> + </p> + </td> + <td> + <p> + Отображает диапазоны доступной памяти с указанием + их оперативного статуса + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lsns" name="lsns"></a><span class= + "term"><span class= + "command"><strong>lsns</strong></span></span> + </p> + </td> + <td> + <p> + Отображает список пространств имен + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mcookie" name="mcookie"></a><span class= + "term"><span class= + "command"><strong>mcookie</strong></span></span> + </p> + </td> + <td> + <p> + Генерирует для <span class= + "command"><strong>xauth</strong></span> магические + куки (128-битные случайные числа в + шестнадцатеричном формате) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mesg" name="mesg"></a><span class= + "term"><span class= + "command"><strong>mesg</strong></span></span> + </p> + </td> + <td> + <p> + Определяет, могут ли другие пользователи отправлять + сообщения на терминал текущего пользователя + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mkfs" name="mkfs"></a><span class= + "term"><span class= + "command"><strong>mkfs</strong></span></span> + </p> + </td> + <td> + <p> + Создает файловую систему на устройстве (обычно это + раздел жесткого диска) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mkfs.bfs" name="mkfs.bfs"></a><span class= + "term"><span class= + "command"><strong>mkfs.bfs</strong></span></span> + </p> + </td> + <td> + <p> + Создает файловую систему Santa Cruz Operations + (SCO) bfs + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mkfs.cramfs" name= + "mkfs.cramfs"></a><span class="term"><span class= + "command"><strong>mkfs.cramfs</strong></span></span> + </p> + </td> + <td> + <p> + Создает файловую систему cramfs + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mkfs.minix" name= + "mkfs.minix"></a><span class="term"><span class= + "command"><strong>mkfs.minix</strong></span></span> + </p> + </td> + <td> + <p> + Создает файловую систему Minix + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mkswap" name="mkswap"></a><span class= + "term"><span class= + "command"><strong>mkswap</strong></span></span> + </p> + </td> + <td> + <p> + Инициализирует данное устройство или файл для + использования в качестве области подкачки + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="more" name="more"></a><span class= + "term"><span class= + "command"><strong>more</strong></span></span> + </p> + </td> + <td> + <p> + Фильтр постраничного вывода текста + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mount" name="mount"></a><span class= + "term"><span class= + "command"><strong>mount</strong></span></span> + </p> + </td> + <td> + <p> + Подключение файловой системы, находящейся на + заданном устройстве, к указанному каталогу в дереве + файловой системы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mountpoint" name= + "mountpoint"></a><span class="term"><span class= + "command"><strong>mountpoint</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет, является ли каталог точкой монтирования + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="namei" name="namei"></a><span class= + "term"><span class= + "command"><strong>namei</strong></span></span> + </p> + </td> + <td> + <p> + Разделяет на составляющие путь к файлу или + каталогу, показывая информацию о типе каждого + элемента + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="nsenter" name="nsenter"></a><span class= + "term"><span class= + "command"><strong>nsenter</strong></span></span> + </p> + </td> + <td> + <p> + Запускает программу в пространстве имен других + процессов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="partx" name="partx"></a><span class= + "term"><span class= + "command"><strong>partx</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает ядру информацию о наличии и количестве + разделов, находящихся на диске + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pivot_root" name= + "pivot_root"></a><span class="term"><span class= + "command"><strong>pivot_root</strong></span></span> + </p> + </td> + <td> + <p> + Делает данную файловую систему новой корневой + файловой системой текущего процесса + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="prlimit" name="prlimit"></a><span class= + "term"><span class= + "command"><strong>prlimit</strong></span></span> + </p> + </td> + <td> + <p> + Получает и устанавливает ограничения использования + ресурсов процесса + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="readprofile" name= + "readprofile"></a><span class="term"><span class= + "command"><strong>readprofile</strong></span></span> + </p> + </td> + <td> + <p> + Читает информацию о профилировании ядра + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="rename" name="rename"></a><span class= + "term"><span class= + "command"><strong>rename</strong></span></span> + </p> + </td> + <td> + <p> + Переименовывает заданные файлы, заменяя одну строку + другой + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="renice" name="renice"></a><span class= + "term"><span class= + "command"><strong>renice</strong></span></span> + </p> + </td> + <td> + <p> + Изменяет приоритет запущенных процессов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="resizepart" name= + "resizepart"></a><span class="term"><span class= + "command"><strong>resizepart</strong></span></span> + </p> + </td> + <td> + <p> + Запрашивает у ядра Linux изменение размера раздела + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="rev" name="rev"></a><span class= + "term"><span class= + "command"><strong>rev</strong></span></span> + </p> + </td> + <td> + <p> + Меняет в указанном файле порядок строк на обратный + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="rfkill" name="rfkill"></a><span class= + "term"><span class= + "command"><strong>rfkill</strong></span></span> + </p> + </td> + <td> + <p> + Bнструмент командной строки для управления + беспроводными устройствами + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="rtcwake" name="rtcwake"></a><span class= + "term"><span class= + "command"><strong>rtcwake</strong></span></span> + </p> + </td> + <td> + <p> + Используется для перехода системы в спящий режим до + указанного времени пробуждения + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="script" name="script"></a><span class= + "term"><span class= + "command"><strong>script</strong></span></span> + </p> + </td> + <td> + <p> + Создает скрипт терминальной сессии + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="scriptlive" name= + "scriptlive"></a><span class="term"><span class= + "command"><strong>scriptlive</strong></span></span> + </p> + </td> + <td> + <p> + Перезапускает скрипт терминальной сессии, используя + информацию о времени + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="scriptreplay" name= + "scriptreplay"></a><span class="term"><span class= + "command"><strong>scriptreplay</strong></span></span> + </p> + </td> + <td> + <p> + Воспроизводит скрипт в соответствие с указанным + временем запуска + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="setarch" name="setarch"></a><span class= + "term"><span class= + "command"><strong>setarch</strong></span></span> + </p> + </td> + <td> + <p> + В окружении, используемом новой программой, + изменяет информацию об архитектуре и устанавливает + флаги персонализации + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="setsid" name="setsid"></a><span class= + "term"><span class= + "command"><strong>setsid</strong></span></span> + </p> + </td> + <td> + <p> + Запускает указанную программу в новом сеансе + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="setterm" name="setterm"></a><span class= + "term"><span class= + "command"><strong>setterm</strong></span></span> + </p> + </td> + <td> + <p> + Устанавливает атрибуты терминала + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sfdisk" name="sfdisk"></a><span class= + "term"><span class= + "command"><strong>sfdisk</strong></span></span> + </p> + </td> + <td> + <p> + Управляет таблицей разделов диска + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sulogin" name="sulogin"></a><span class= + "term"><span class= + "command"><strong>sulogin</strong></span></span> + </p> + </td> + <td> + <p> + Позволяет пользователю <code class= + "systemitem">root</code> входить в систему; обычно + он вызывается <span class= + "command"><strong>init</strong></span>, когда + система переходит в однопользовательский режим + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="swaplabel" name="swaplabel"></a><span class= + "term"><span class= + "command"><strong>swaplabel</strong></span></span> + </p> + </td> + <td> + <p> + Изменяет UUID и метку раздела подкачки + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="swapoff" name="swapoff"></a><span class= + "term"><span class= + "command"><strong>swapoff</strong></span></span> + </p> + </td> + <td> + <p> + Отключает устройства и файлы подкачки + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="swapon" name="swapon"></a><span class= + "term"><span class= + "command"><strong>swapon</strong></span></span> + </p> + </td> + <td> + <p> + Включает устройства и файлы, применяемые для + раздела подкачки, а также выводит список устройств + и файлов, используемых в данный момент + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="switch_root" name= + "switch_root"></a><span class="term"><span class= + "command"><strong>switch_root</strong></span></span> + </p> + </td> + <td> + <p> + Переключается на другую файловую систему и + устанавливает её в качестве корневой + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="taskset" name="taskset"></a><span class= + "term"><span class= + "command"><strong>taskset</strong></span></span> + </p> + </td> + <td> + <p> + Устанавливает привязку процессора к процессу + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="uclampset" name="uclampset"></a><span class= + "term"><span class= + "command"><strong>uclampset</strong></span></span> + </p> + </td> + <td> + <p> + Управляет атрибутами ограничения использования + системы или процесса + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ul" name="ul"></a><span class= + "term"><span class= + "command"><strong>ul</strong></span></span> + </p> + </td> + <td> + <p> + Фильтр для преобразования символов подчеркивания в + escape-последовательности + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="umount" name="umount"></a><span class= + "term"><span class= + "command"><strong>umount</strong></span></span> + </p> + </td> + <td> + <p> + Размонтирует файловую систему из дерева ФС + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="uname26" name="uname26"></a><span class= + "term"><span class= + "command"><strong>uname26</strong></span></span> + </p> + </td> + <td> + <p> + Символическая ссылка на setarch + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="unshare" name="unshare"></a><span class= + "term"><span class= + "command"><strong>unshare</strong></span></span> + </p> + </td> + <td> + <p> + Позволяет процессу (или потоку) отделить части + своего контекста выполнения, которые используются + совместно с другими процессами (или потоками) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="utmpdump" name="utmpdump"></a><span class= + "term"><span class= + "command"><strong>utmpdump</strong></span></span> + </p> + </td> + <td> + <p> + Отображает содержимое указанного файла входа в + систему в удобном для пользователя формате + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="uuidd" name="uuidd"></a><span class= + "term"><span class= + "command"><strong>uuidd</strong></span></span> + </p> + </td> + <td> + <p> + Демон, используемый библиотекой UUID для создания + безопасных и гарантированно уникальных + идентификаторов UUID + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="uuidgen" name="uuidgen"></a><span class= + "term"><span class= + "command"><strong>uuidgen</strong></span></span> + </p> + </td> + <td> + <p> + Создает новые идентификаторы (UUID). Каждый новый + UUID - это случайная последовательность, которая, + будет с очень высокой вероятностью уникальной среди + всех идентификаторов, созданных как на локальной + машине, так и на любых других системах, в прошлом и + будущем (2<sup>128</sup> или около 3,4 х + 10<sup>38</sup> вариантов) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="uuidparse" name="uuidparse"></a><span class= + "term"><span class= + "command"><strong>uuidparse</strong></span></span> + </p> + </td> + <td> + <p> + Утилита для анализа уникальных идентификаторов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="wall" name="wall"></a><span class= + "term"><span class= + "command"><strong>wall</strong></span></span> + </p> + </td> + <td> + <p> + Отображает содержимое файла или, по умолчанию, его + вывод на терминалах всех пользователей, вошедших в + систему в данный момент + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="wdctl" name="wdctl"></a><span class= + "term"><span class= + "command"><strong>wdctl</strong></span></span> + </p> + </td> + <td> + <p> + Показывает статус аппаратного сторожевого таймера + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="whereis" name="whereis"></a><span class= + "term"><span class= + "command"><strong>whereis</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает местоположение двоичного файла, исходного + кода и справочной страницы для указанной команды + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="wipefs" name="wipefs"></a><span class= + "term"><span class= + "command"><strong>wipefs</strong></span></span> + </p> + </td> + <td> + <p> + Стирает с устройства сигнатуру файловой системы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="x86_64" name="x86_64"></a><span class= + "term"><span class= + "command"><strong>x86_64</strong></span></span> + </p> + </td> + <td> + <p> + Символическая ссылка на setarch + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="zramctl" name="zramctl"></a><span class= + "term"><span class= + "command"><strong>zramctl</strong></span></span> + </p> + </td> + <td> + <p> + Программа для настройки и управления устройствами + zram (сжатый RAM-диск) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libblkid" name="libblkid"></a><span class= + "term"><code class= + "filename">libblkid</code></span> + </p> + </td> + <td> + <p> + Содержит подпрограммы для идентификации устройства + и извлечения токена + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libfdisk" name="libfdisk"></a><span class= + "term"><code class= + "filename">libfdisk</code></span> + </p> + </td> + <td> + <p> + Содержит подпрограммы для управления таблицами + разделов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libmount" name="libmount"></a><span class= + "term"><code class= + "filename">libmount</code></span> + </p> + </td> + <td> + <p> + Содержит подпрограммы для монтирования и + размонтирования блочных устройств + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libsmartcols" name= + "libsmartcols"></a><span class="term"><code class= + "filename">libsmartcols</code></span> + </p> + </td> + <td> + <p> + Содержит подпрограммы для более удобного вывода на + экран информации в табличном виде + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libuuid" name="libuuid"></a><span class= + "term"><code class="filename">libuuid</code></span> + </p> + </td> + <td> + <p> + Содержит подпрограммы для генерации уникальных + идентификаторов для объектов, которые могут быть + доступны за пределами локальной системы + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-e2fsprogs" name= + "ch-system-e2fsprogs"></a>8.79. E2fsprogs-1.47.0 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет E2fsprogs содержит утилиты для работы с файловой + системой <code class="systemitem">ext2</code>. Также он + поддерживает журналируемые файловые системы <code class= + "systemitem">ext3</code> и <code class= + "systemitem">ext4</code>. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">2.4 SBU на жестком + диске, 0.4 SBU на SSD диске</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">95 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.79.1. Установка пакета E2fsprogs + </h3> + <p> + В документации к E2fsprogs рекомендуется выполнять сборку в + подкаталоге папки с исходниками: + </p> + <pre class="userinput"><kbd class="command">mkdir -v build +cd build</kbd></pre> + <p> + Подготовьте E2fsprogs к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">../configure --prefix=/usr \ + --sysconfdir=/etc \ + --enable-elf-shlibs \ + --disable-libblkid \ + --disable-libuuid \ + --disable-uuidd \ + --disable-fsck</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-elf-shlibs</code></em></span> + </dt> + <dd> + <p> + Параметр создает общие библиотеки, которые используют + некоторые программы в этом пакете. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--disable-*</code></em></span> + </dt> + <dd> + <p> + Эти параметры предотвращают сборку и установку + библиотек <code class="systemitem">libuuid</code> и + <code class="systemitem">libblkid</code>, демона + <code class="systemitem">uuidd</code>, и обертку для + <span class="command"><strong>fsck</strong></span>, + поскольку util-linux устанавливает более свежие версии. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Чтобы запустить тесты, выполните: + </p> + <pre class="userinput"><kbd class= + "command">make check</kbd></pre> + <p> + Известно, что один тест, с именем <code class= + "filename">m_assume_storage_prezeroed</code>, завершается + ошибкой. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + <p> + Удалите ненужные статические библиотеки: + </p> + <pre class="userinput"><kbd class= + "command">rm -fv /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a</kbd></pre> + <p> + Этот пакет устанавливает сжатый файл <code class= + "filename">.info</code> но не обновляет общесистемный файл + <code class="filename">dir</code>. Разархивируйте этот файл, + а затем обновите системный файл <code class= + "filename">dir</code>, используя следующие команды: + </p> + <pre class="userinput"><kbd class= + "command">gunzip -v /usr/share/info/libext2fs.info.gz +install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info</kbd></pre> + <p> + По желанию, создайте и установите дополнительную + документацию, выполнив следующие команды: + </p> + <pre class="userinput"><kbd class= + "command">makeinfo -o doc/com_err.info ../lib/et/com_err.texinfo +install -v -m644 doc/com_err.info /usr/share/info +install-info --dir-file=/usr/share/info/dir /usr/share/info/com_err.info</kbd></pre> + </div> + <div class="configuration" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="conf-e2fsprogs" name="conf-e2fsprogs"></a>8.79.2. + Настройка E2fsprogs + </h3> + <p> + Файл <code class="filename">/etc/mke2fs.conf</code> содержит + значения по умолчанию для различных параметров командной + строки <span class="command"><strong>mke2fs</strong></span>. + Вы можете отредактировать файл, чтобы значения по умолчанию + соответствовали вашим потребностям. Например, некоторые + утилиты (не в LFS или BLFS) не могут распознать файловую + систему <code class="systemitem">ext4</code> с включенным + параметром <code class="literal">metadata_csum_seed</code>. + <span class="bold"><strong>Если</strong></span> вам нужна + такая утилита, вы можете удалить параметр из списка по + умолчанию для <code class="systemitem">ext4</code> с помощью + команды: + </p> + <pre class="userinput"><kbd class= + "command">sed 's/metadata_csum_seed,//' -i /etc/mke2fs.conf</kbd></pre> + <p> + Подробности читайте на странице руководства <a class="ulink" + href= + "https://man.archlinux.org/man/mke2fs.conf.5">mke2fs.conf(5)</a>. + </p> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-e2fsprogs" name= + "contents-e2fsprogs"></a>8.79.3. Содержимое пакета E2fsprogs + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">badblocks, + chattr, compile_et, debugfs, dumpe2fs, e2freefrag, + e2fsck, e2image, e2label, e2mmpstatus, e2scrub, + e2scrub_all, e2undo, e4crypt, e4defrag, filefrag, + fsck.ext2, fsck.ext3, fsck.ext4, logsave, lsattr, + mk_cmds, mke2fs, mkfs.ext2, mkfs.ext3, mkfs.ext4, + mklost+found, resize2fs и tune2fs</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные + библиотеки:</strong> <span class="segbody">libcom_err.so, + libe2p.so, libext2fs.so, и libss.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/include/e2p, /usr/include/et, + /usr/include/ext2fs, /usr/include/ss, /usr/lib/e2fsprogs, + /usr/share/et и /usr/share/ss</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm15211" name="idm15211"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="badblocks" name="badblocks"></a><span class= + "term"><span class= + "command"><strong>badblocks</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет поиск поврежденных блоков на устройстве + (обычно на разделе диска) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="chattr" name="chattr"></a><span class= + "term"><span class= + "command"><strong>chattr</strong></span></span> + </p> + </td> + <td> + <p> + Изменяет атрибуты файлов в файловых системах + <code class="systemitem">ext{234}</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="compile_et" name= + "compile_et"></a><span class="term"><span class= + "command"><strong>compile_et</strong></span></span> + </p> + </td> + <td> + <p> + Компилятор таблицы ошибок; конвертирует таблицу + имен кодов ошибок и сообщений в файл исходного кода + на языке С с тем, чтобы ее можно было использовать + с библиотекой <code class="filename">com_err</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="debugfs" name="debugfs"></a><span class= + "term"><span class= + "command"><strong>debugfs</strong></span></span> + </p> + </td> + <td> + <p> + Отладчик файловой системы; его можно использовать + для проверки и изменения состояния файловых систем + <code class="systemitem">ext{234}</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="dumpe2fs" name="dumpe2fs"></a><span class= + "term"><span class= + "command"><strong>dumpe2fs</strong></span></span> + </p> + </td> + <td> + <p> + Выводит информацию о суперблоке и группе блоков для + файловой системы, присутствующей на указанном + устройстве. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="e2freefrag" name= + "e2freefrag"></a><span class="term"><span class= + "command"><strong>e2freefrag</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает информацию о фрагментации свободного + пространства + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="e2fsck" name="e2fsck"></a><span class= + "term"><span class= + "command"><strong>e2fsck</strong></span></span> + </p> + </td> + <td> + <p> + Используется для проверки и, при необходимости, + восстановления файловых систем <code class= + "systemitem">ext{234}</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="e2image" name="e2image"></a><span class= + "term"><span class= + "command"><strong>e2image</strong></span></span> + </p> + </td> + <td> + <p> + Используется для сохранения важных данных файловых + систем <code class="systemitem">ext{234}</code> в + файл + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="e2label" name="e2label"></a><span class= + "term"><span class= + "command"><strong>e2label</strong></span></span> + </p> + </td> + <td> + <p> + Отображает или изменяет метку файловой системы в + файловой системе <code class= + "systemitem">ext{234}</code> на данном устройстве. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="e2mmpstatus" name= + "e2mmpstatus"></a><span class="term"><span class= + "command"><strong>e2mmpstatus</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет состояние MMP (Multiple Mount Protection + - защита от множественного монтирования) файловой + системы <code class="systemitem">ext4</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="e2scrub" name="e2scrub"></a><span class= + "term"><span class= + "command"><strong>e2scrub</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет содержимое смонтированной файловой + системы <code class="systemitem">ext{234}</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="e2scrub_all" name= + "e2scrub_all"></a><span class="term"><span class= + "command"><strong>e2scrub_all</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет все смонтированные файловые системы + <code class="systemitem">ext{234}</code> на наличие + ошибок + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="e2undo" name="e2undo"></a><span class= + "term"><span class= + "command"><strong>e2undo</strong></span></span> + </p> + </td> + <td> + <p> + Воспроизводит журнал отмены (undo_log) для файловой + системы <code class="systemitem">ext{234}</code>, + обнаруженной на устройстве. [Это можно использовать + для отмены неудачной операции программой + E2fsprogs.] + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="e4crypt" name="e4crypt"></a><span class= + "term"><span class= + "command"><strong>e4crypt</strong></span></span> + </p> + </td> + <td> + <p> + Утилита шифрования файловой системы <code class= + "systemitem">Ext4</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="e4defrag" name="e4defrag"></a><span class= + "term"><span class= + "command"><strong>e4defrag</strong></span></span> + </p> + </td> + <td> + <p> + Онлайн дефрагментатор для файловой системы + <code class="systemitem">ext4</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="filefrag" name="filefrag"></a><span class= + "term"><span class= + "command"><strong>filefrag</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает о том, насколько сильно может быть + фрагментирован конкретный файл + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fsck.ext2" name="fsck.ext2"></a><span class= + "term"><span class= + "command"><strong>fsck.ext2</strong></span></span> + </p> + </td> + <td> + <p> + По умолчанию проверяет файловые системы + <code class="systemitem">ext2</code> и является + жесткой ссылкой на <span class= + "command"><strong>e2fsck</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fsck.ext3" name="fsck.ext3"></a><span class= + "term"><span class= + "command"><strong>fsck.ext3</strong></span></span> + </p> + </td> + <td> + <p> + По умолчанию проверяет файловые системы + <code class="systemitem">ext3</code> и является + жесткой ссылкой на <span class= + "command"><strong>e2fsck</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fsck.ext4" name="fsck.ext4"></a><span class= + "term"><span class= + "command"><strong>fsck.ext4</strong></span></span> + </p> + </td> + <td> + <p> + По умолчанию проверяет файловые системы + <code class="systemitem">ext4</code> и является + жесткой ссылкой на <span class= + "command"><strong>e2fsck</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="logsave" name="logsave"></a><span class= + "term"><span class= + "command"><strong>logsave</strong></span></span> + </p> + </td> + <td> + <p> + Сохраняет вывод команды в файл журнала + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lsattr" name="lsattr"></a><span class= + "term"><span class= + "command"><strong>lsattr</strong></span></span> + </p> + </td> + <td> + <p> + Перечисляет атрибуты файлов во второй расширенной + файловой системе. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mk_cmds" name="mk_cmds"></a><span class= + "term"><span class= + "command"><strong>mk_cmds</strong></span></span> + </p> + </td> + <td> + <p> + Преобразует таблицу имен команд и справочных + сообщений в исходный файл C, подходящий для + использования с библиотекой подсистемы <code class= + "filename">libss</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mke2fs" name="mke2fs"></a><span class= + "term"><span class= + "command"><strong>mke2fs</strong></span></span> + </p> + </td> + <td> + <p> + Создает файловую систему <code class= + "systemitem">ext{234}</code> на указанном + устройстве + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mkfs.ext2" name="mkfs.ext2"></a><span class= + "term"><span class= + "command"><strong>mkfs.ext2</strong></span></span> + </p> + </td> + <td> + <p> + По умолчанию создает файловую систему <code class= + "systemitem">ext2</code> и является жесткой ссылкой + на <span class= + "command"><strong>mke2fs</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mkfs.ext3" name="mkfs.ext3"></a><span class= + "term"><span class= + "command"><strong>mkfs.ext3</strong></span></span> + </p> + </td> + <td> + <p> + По умолчанию создает файловую систему <code class= + "systemitem">ext3</code> и является жесткой ссылкой + на <span class= + "command"><strong>mke2fs</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mkfs.ext4" name="mkfs.ext4"></a><span class= + "term"><span class= + "command"><strong>mkfs.ext4</strong></span></span> + </p> + </td> + <td> + <p> + По умолчанию создает файловую систему <code class= + "systemitem">ext4</code> и является жесткой ссылкой + на <span class= + "command"><strong>mke2fs</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mklost-found" name= + "mklost-found"></a><span class="term"><span class= + "command"><strong>mklost+found</strong></span></span> + </p> + </td> + <td> + <p> + Используется для создания каталога <code class= + "filename">lost+found</code> в файловой системе + <code class="systemitem">ext{234}</code>; + предварительно выделяет дисковые блоки для этого + каталога, чтобы облегчить задачу <span class= + "command"><strong>e2fsck</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="resize2fs" name="resize2fs"></a><span class= + "term"><span class= + "command"><strong>resize2fs</strong></span></span> + </p> + </td> + <td> + <p> + Может использоваться для увеличения или уменьшения + файловой системы <code class= + "systemitem">ext{234}</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="tune2fs" name="tune2fs"></a><span class= + "term"><span class= + "command"><strong>tune2fs</strong></span></span> + </p> + </td> + <td> + <p> + Позволяет настроить параметры для файловой системы + <code class="systemitem">ext{234}</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libcom_err" name= + "libcom_err"></a><span class="term"><code class= + "filename">libcom_err</code></span> + </p> + </td> + <td> + <p> + Стандартная процедура отображения ошибок + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libe2p" name="libe2p"></a><span class= + "term"><code class="filename">libe2p</code></span> + </p> + </td> + <td> + <p> + Используется <span class= + "command"><strong>dumpe2fs</strong></span>, + <span class= + "command"><strong>chattr</strong></span>, и + <span class= + "command"><strong>lsattr</strong></span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libext2fs" name="libext2fs"></a><span class= + "term"><code class= + "filename">libext2fs</code></span> + </p> + </td> + <td> + <p> + Содержит подпрограммы, позволяющие программам + пользовательского уровня управлять файловой + системой <code class="systemitem">ext{234}</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="libss" name="libss"></a><span class= + "term"><code class="filename">libss</code></span> + </p> + </td> + <td> + <p> + Используется <span class= + "command"><strong>debugfs</strong></span> + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-sysklogd" name= + "ch-system-sysklogd"></a>8.80. Sysklogd-1.5.1 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Sysklogd содержит программы для логирования системных + сообщений, таких как сообщения ядра, когда происходят + различные события. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">680 + KB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.80.1. Установка пакета Sysklogd + </h3> + <p> + Во-первых, устраните проблему, которая при некоторых условиях + вызывает в klogd ошибку сегментирования и исправьте + устаревшую программную конструкцию: + </p> + <pre class="userinput"><kbd class= + "command">sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c +sed -i 's/union wait/int/' syslogd.c</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Этот пакет не содержит набора тестов. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make BINDIR=/sbin install</kbd></pre> + </div> + <div class="configuration" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="conf-sysklogd" name="conf-sysklogd"></a>8.80.2. + Настройка Sysklogd + </h3> + <p> + Создайте новый файл <code class= + "filename">/etc/syslog.conf</code>, выполнив следующую + команду: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/syslog.conf << "EOF" +<code class="literal"># Begin /etc/syslog.conf + +auth,authpriv.* -/var/log/auth.log +*.*;auth,authpriv.none -/var/log/sys.log +daemon.* -/var/log/daemon.log +kern.* -/var/log/kern.log +mail.* -/var/log/mail.log +user.* -/var/log/user.log +*.emerg * + +# End /etc/syslog.conf</code> +EOF</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-sysklogd" name= + "contents-sysklogd"></a>8.80.3. Содержимое пакета Sysklogd + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">klogd и + syslogd</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm15523" name="idm15523"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="klogd" name="klogd"></a><span class= + "term"><span class= + "command"><strong>klogd</strong></span></span> + </p> + </td> + <td> + <p> + Системный демон для перехвата и регистрации + сообщений ядра + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="syslogd" name="syslogd"></a><span class= + "term"><span class= + "command"><strong>syslogd</strong></span></span> + </p> + </td> + <td> + <p> + Регистрирует сообщения системных программ для + записи в лог [Каждое регистрируемое сообщение + содержит как минимум время события, имя хоста, а + также имя программы, но это зависит от настроек + службы логирования.] + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-sysvinit" name= + "ch-system-sysvinit"></a>8.81. Sysvinit-3.08 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Sysvinit содержит программы для управления загрузкой, + выполнением и выключением системы. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">3.5 + MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 8.81.1. Установка пакета Sysvinit + </h3> + <p> + Сначала примените патч, который удаляет несколько программ, + установленных другими пакетами и исправляет предупреждение + компилятора: + </p> + <pre class="userinput"><kbd class= + "command">patch -Np1 -i ../sysvinit-3.08-consolidated-1.patch</kbd></pre> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + С этим пакетом не поставляется набор тестов. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-sysvinit" name= + "contents-sysvinit"></a>8.81.2. Содержимое пакета Sysvinit + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные + программы:</strong> <span class="segbody">bootlogd, + fstab-decode, halt, init, killall5, poweroff (ссылка на + halt), reboot (ссылка на halt), runlevel, shutdown и + telinit (ссылка на init)</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm15570" name="idm15570"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="bootlogd" name="bootlogd"></a><span class= + "term"><span class= + "command"><strong>bootlogd</strong></span></span> + </p> + </td> + <td> + <p> + Логирует сообщения при загрузке системы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="fstab-decode" name= + "fstab-decode"></a><span class="term"><span class= + "command"><strong>fstab-decode</strong></span></span> + </p> + </td> + <td> + <p> + Запускает команду с аргументами, заданными в fstab + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="halt-sysv" name="halt-sysv"></a><span class= + "term"><span class= + "command"><strong>halt</strong></span></span> + </p> + </td> + <td> + <p> + Обычно вызывает команду <span class= + "command"><strong>shutdown</strong></span> с + параметром <em class= + "parameter"><code>-h</code></em>, за исключением + случаев, когда уровень запуска уже равен 0, тогда + он посылает ядру сигнал на остановку системы; Кроме + этого отмечает в файле <code class= + "filename">/var/log/wtmp</code>, что система + завершает работу + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="init-sysv" name="init-sysv"></a><span class= + "term"><span class= + "command"><strong>init</strong></span></span> + </p> + </td> + <td> + <p> + Первый процесс, который запускается после + инициализации оборудования; init берет на себя + процесс загрузки и запускает все процессы, которые + указанны в его файле конфигурации + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="killall5" name="killall5"></a><span class= + "term"><span class= + "command"><strong>killall5</strong></span></span> + </p> + </td> + <td> + <p> + Посылает сигнал всем процессам, за исключением + процессов в его собственном сеансе; он не завершит + свою родительскую оболочку + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="poweroff-sysv" name= + "poweroff-sysv"></a><span class="term"><span class= + "command"><strong>poweroff</strong></span></span> + </p> + </td> + <td> + <p> + Посылает ядру команду остановить систему и + выключить компьютер (смотрите команду <span class= + "command"><strong>halt</strong></span>) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="reboot-sysv" name= + "reboot-sysv"></a><span class="term"><span class= + "command"><strong>reboot</strong></span></span> + </p> + </td> + <td> + <p> + Посылает ядру команду перезагрузить систему + (смотрите команду <span class= + "command"><strong>halt</strong></span>) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="runlevel-sysv" name= + "runlevel-sysv"></a><span class="term"><span class= + "command"><strong>runlevel</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает о предыдущем и текущем уровнях выполнения + так, как это указано в последней записи в файле + <code class="filename">/run/utmp</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="shutdown-sysv" name= + "shutdown-sysv"></a><span class="term"><span class= + "command"><strong>shutdown</strong></span></span> + </p> + </td> + <td> + <p> + Безопасно останавливает систему, отправляя сигналы + всем процессам и оповещая всех пользователей, + находящихся в системе + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="telinit-sysv" name= + "telinit-sysv"></a><span class="term"><span class= + "command"><strong>telinit</strong></span></span> + </p> + </td> + <td> + <p> + Сообщает <span class= + "command"><strong>init</strong></span> на какой + уровень выполнения перейти + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-aboutdebug" name= + "ch-system-aboutdebug"></a>8.82. Об отладочных символах + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Большинство программ и библиотек по умолчанию компилируются с + отладочными символами (<span class= + "command"><strong>gcc</strong></span> с параметром <em class= + "parameter"><code>-g</code></em>). Это означает, что при + отладке программы или библиотеки, которые были скомпилированы с + использованием отладочной информации, отладчик может + предоставить не только адреса памяти, но и имена подпрограмм и + переменных. + </p> + <p> + Включение отладочных символов значительно увеличивает размер + программы или библиотеки. Ниже приведена информация по объему + пространства, занимаемого отладочными символами: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Двоичный файл <span class= + "command"><strong>bash</strong></span> с отладочными + символами: 1200 KB + </p> + </li> + <li class="listitem"> + <p> + Двоичный файл <span class= + "command"><strong>bash</strong></span> без отладочных + символов: 480 KB (на 60% меньше) + </p> + </li> + <li class="listitem"> + <p> + Файлы Glibc и GCC (<code class="filename">/lib</code> и + <code class="filename">/usr/lib</code>) с отладочными + символами: 87 MB + </p> + </li> + <li class="listitem"> + <p> + Файлы Glibc и GCC без отладочных символов: 16 MB (на 82% + меньше) + </p> + </li> + </ul> + </div> + <p> + Размеры могут варьироваться в зависимости от используемого + компилятора и библиотеки Си, но программа, в которой были + удалены отладочные символы, обычно примерно на 50-80% меньше, + чем ее аналог с ними. Поскольку большинство пользователей + никогда не будут использовать отладчик в своем программном + обеспечении, удаление отладочных символов может освободить + много места на диске. В следующем разделе показано, как удалить + все отладочные символы из программ и библиотек. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-stripping" name= + "ch-system-stripping"></a>8.83. Удаление отладочных + символов + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Этот раздел является необязательным. Если предполагаемый + пользователь не является программистом и не планирует выполнять + какую-либо отладку системного программного обеспечения, размер + системы можно уменьшить примерно на 2 ГБ, удалив отладочные + символы и некоторые ненужные записи таблицы символов из + двоичных файлов и библиотек. Это не вызывает никаких неудобств + для обычного пользователя Linux. + </p> + <p> + Большинство людей, использующих приведенные ниже команды, не + испытывают никаких трудностей. Однако легко допустить опечатку + и сделать новую систему непригодной для использования. Поэтому + перед выполнением команды <span class= + "command"><strong>strip</strong></span> рекомендуется сделать + резервную копию системы LFS. + </p> + <p> + Команда <span class="command"><strong>strip</strong></span> с + параметром <em class= + "parameter"><code>--strip-unneeded</code></em> удаляет все + отладочные символы из двоичного файла или библиотеки. Кроме + этого, она удаляет все записи таблицы символов, ненужные + компоновщику (для статических библиотек) или динамическому + компоновщику (для динамически подключаемых двоичных файлов и + общих библиотек). + </p> + <p> + Отладочные символы из выбранных библиотек сжимаются с помощью + <span class="application">Zlib</span> и сохраняются в отдельных + файлах. Эта отладочная информация необходима при выполнении + регрессионных тестов, с помощью <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1//general/valgrind.html"> + valgrind</a> или <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1//general/gdb.html"> + gdb</a> позже, в BLFS. + </p> + <p> + Обратите внимание, что команда <span class= + "command"><strong>strip</strong></span> перезапишет двоичный + файл или библиотеку, которую она обрабатывает. Это может + привести к сбою процессов, использующих код или данные из + файла. Если это затронет сам процесс, выполняющий <span class= + "command"><strong>strip</strong></span>, удаляемый двоичный + файл или библиотека могут быть уничтожены; это может сделать + систему полностью непригодной для использования. Чтобы избежать + этого, мы скопируем некоторые библиотеки и двоичные файлы в + <code class="filename">/tmp</code>, очистим их и переустановим + с помощью команды <span class= + "command"><strong>install</strong></span>. Прочтите статью + <a class="xref" href="#pkgmgmt-upgrade-issues" title= + "8.2.1. Проблемы с обновлением">Раздел 8.2.1, «Проблемы с + обновлением»</a>, чтобы понять, почему следует использовать + команду <span class="command"><strong>install</strong></span> + здесь. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Имя загрузчика ELF — ld-linux-x86-64.so.2 в 64-битных + системах. и ld-linux.so.2 в 32-битных системах. Конструкция + ниже выбирает правильное имя для текущей архитектуры, + исключая всё, что заканчивается на <code class= + "literal">g</code>, если приведенные ниже команды уже были + выполнены. + </p> + </div> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + Если есть какой-либо пакет, версия которого отличается от + версии, указанной в книге (либо в соответствии с + рекомендациями по безопасности, либо в соответствии с личными + предпочтениями), может потребоваться обновить имя файла + библиотеки в <code class="envar">save_usrlib</code> или + <code class="envar">online_usrlib</code>. <span class= + "bold"><strong>В противном случае система может стать + полностью непригодной для использования.</strong></span> + </p> + </div> + <pre class="userinput"><kbd class= + "command">save_usrlib="$(cd /usr/lib; ls ld-linux*[^g]) + libc.so.6 + libthread_db.so.1 + libquadmath.so.0.0.0 + libstdc++.so.6.0.32 + libitm.so.1.0.0 + libatomic.so.1.2.0" + +cd /usr/lib + +for LIB in $save_usrlib; do + objcopy --only-keep-debug --compress-debug-sections=zlib $LIB $LIB.dbg + cp $LIB /tmp/$LIB + strip --strip-unneeded /tmp/$LIB + objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB + install -vm755 /tmp/$LIB /usr/lib + rm /tmp/$LIB +done + +online_usrbin="bash find strip" +online_usrlib="libbfd-2.42.so + libsframe.so.1.0.0 + libhistory.so.8.2 + libncursesw.so.6.4-20230520 + libm.so.6 + libreadline.so.8.2 + libz.so.1.3.1 + libzstd.so.1.5.5 + $(cd /usr/lib; find libnss*.so* -type f)" + +for BIN in $online_usrbin; do + cp /usr/bin/$BIN /tmp/$BIN + strip --strip-unneeded /tmp/$BIN + install -vm755 /tmp/$BIN /usr/bin + rm /tmp/$BIN +done + +for LIB in $online_usrlib; do + cp /usr/lib/$LIB /tmp/$LIB + strip --strip-unneeded /tmp/$LIB + install -vm755 /tmp/$LIB /usr/lib + rm /tmp/$LIB +done + +for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \ + $(find /usr/lib -type f -name \*.a) \ + $(find /usr/{bin,sbin,libexec} -type f); do + case "$online_usrbin $online_usrlib $save_usrlib" in + *$(basename $i)* ) + ;; + * ) strip --strip-unneeded $i + ;; + esac +done + +unset BIN LIB save_usrlib online_usrbin online_usrlib +</kbd></pre> + <p> + Большое количество файлов будет помечено как ошибочные, потому + что формат файла не распознан. Эти предупреждения можно смело + игнорировать. Они указывают на то, что файлы являются + скриптами, а не двоичными файлами. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-system-cleanup" name= + "ch-system-cleanup"></a>8.84. Очистка + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Наконец, удалите некоторые лишние файлы, оставшиеся после + запуска тестов: + </p> + <pre class="userinput"><kbd class= + "command">rm -rf /tmp/*</kbd></pre> + <p> + Также в каталогах /usr/lib и /usr/libexec есть несколько файлов + с расширением .la. Это файлы <span class="quote">«<span class= + "quote">архива libtool</span>»</span>. Как было сказано ранее, + в современной системе Linux файлы .la libtool необходимы только + для libltdl. Предполагается, что libltdl не будет загружать + библиотеки в LFS, кроме этого известно, что некоторые файлы .la + могут нарушить сборку пакетов BLFS. Удалите эти файлы сейчас: + </p> + <pre class="userinput"><kbd class= + "command">find /usr/lib /usr/libexec -name \*.la -delete</kbd></pre> + <p> + Дополнительные сведения об архивных файлах Libtool смотрите в + книге BLFS <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/introduction/la-files.html"> + "О файлах Libtool Archive (.la)"</a>. + </p> + <p> + Компилятор, собранный в <a class="xref" href= + "#chapter-temporary-tools" title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 6</a> + и <a class="xref" href="#chapter-chroot-temporary-tools" title= + "Глава 7. Вход в окружение Chroot и создание дополнительных временных инструментов"> + Глава 7</a> все еще установлен, но больше не нужен. + Удалите его с помощью команды: + </p> + <pre class="userinput"><kbd class= + "command">find /usr -depth -name $(uname -m)-lfs-linux-gnu\* | xargs rm -rf</kbd></pre> + <p> + Наконец, удалите временную учетную запись пользователя + 'tester', созданную в начале предыдущей главы. + </p> + <pre class="userinput"><kbd class= + "command">userdel -r tester</kbd></pre> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="chapter-config" name="chapter-config"></a>Глава 9. + Системные настройки + </h2> + </div> + </div> + </div> + <div class="chapter" lang="ru" xml:lang="ru"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-config-introduction" name= + "ch-config-introduction"></a>9.1. Введение + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Загрузка системы Linux включает в себя несколько задач. Процесс + должен монтировать как виртуальные, так и реальные файловые + системы, инициализировать устройства, активировать файл + подкачки, проверять целостность файловых систем, монтировать + любые разделы или файл подкачки, устанавливать системные часы, + запускать сеть, запускать требуемые системой службы и выполнять + любые другие необходимые пользователю задачи. Этот процесс + должен быть организован таким образом, чтобы задачи выполнялись + в правильном порядке, но в то же время как можно быстрее. + </p> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="sysv-desc" name="sysv-desc"></a>9.1.1. System V + </h3> + <p> + System V это классический процесс загрузки, который + использовался в Unix и Unix-подобных системах, таких как + Linux с 1983 года. Он состоит из небольшой программы + <span class="command"><strong>init</strong></span>, которая + настраивает базовые программы, такие как <span class= + "command"><strong>login</strong></span> (через getty) и + запускает скрипт. Этот скрипт, обычно именуемый <span class= + "command"><strong>rc</strong></span> управляет выполнением + дополнительных сценариев, необходимых для инициализации + системы. + </p> + <p> + Программа <span class="command"><strong>init</strong></span> + управляется файлом <code class="filename">/etc/inittab</code> + и разделена по уровням выполнения, которые могут быть выбраны + пользователем. В LFS используются следующие уровни: + </p> + <div class="literallayout"> + <p> + 0 — выключение<br /> + 1 — Однопользовательский режим<br /> + 2 — Определяемый пользователем<br /> + 3 — Полный многопользовательский режим<br /> + + 4 — Определяемый пользователем<br /> + 5 — Полный многопользовательский режим с дисплей-менеджером<br /> + + 6 — перезагрузка + </p> + </div> + <p> + Уровень выполнения по умолчанию равен 3 или 5. + </p> + <h4> + <a id="idm15733" name="idm15733"></a>Преимущества + </h4> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Устоявшаяся, хорошо отлаженная система. + </p> + </li> + <li class="listitem"> + <p> + Легко настраивается. + </p> + </li> + </ul> + </div> + <h4> + <a id="idm15739" name="idm15739"></a>Недостатки + </h4> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Может загружаться медленнее. Загрузка базовой системы + LFS в среднем занимает 8-12 секунд, при этом время + загрузки измеряется от первого сообщения ядра до + запроса на вход в систему. Подключение к сети обычно + устанавливается примерно через 2 секунды после запроса + на вход в систему. + </p> + </li> + <li class="listitem"> + <p> + Последовательная обработка задач загрузки. Это связано + с предыдущим пунктом. Задержка в работе любого + процесса, например, проверка файловой системы, приведет + к задержке всего процесса загрузки. + </p> + </li> + <li class="listitem"> + <p> + Напрямую не поддерживает дополнительные функции, такие + как контрольные группы (cgroups) и диспетчер системных + ресурсов для каждого пользователя. + </p> + </li> + <li class="listitem"> + <p> + Добавление init-скриптов требует ручных однотипных + действий. + </p> + </li> + </ul> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-config-bootscripts" name= + "ch-config-bootscripts"></a>9.2. LFS-Bootscripts-20230728 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет LFS-Bootscripts содержит набор скриптов для + запуска/остановки системы LFS при загрузке/завершении работы. + Файлы конфигурации и процедуры, необходимые для настройки + /процесса загрузки, описаны в следующих разделах. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">менее 0.1 + SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">244 + KB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 9.2.1. Установка пакета LFS-Bootscripts + </h3> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class= + "command">make install</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-bootscripts" name= + "contents-bootscripts"></a>9.2.2. Содержимое пакета + LFS-Bootscripts + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные скрипты:</strong> + <span class="segbody">checkfs, cleanfs, console, + functions, halt, ifdown, ifup, localnet, modules, + mountfs, mountvirtfs, network, rc, reboot, sendsignals, + setclock, ipv4-static, swap, sysctl, sysklogd, template, + udev и udev_retry</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/etc/rc.d, /etc/init.d + (символическая ссылка), /etc/sysconfig, /lib/services, + /lib/lsb (символическая ссылка)</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm15776" name="idm15776"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="checkfs-bootscripts" name= + "checkfs-bootscripts"></a><span class= + "term"><span class= + "command"><strong>checkfs</strong></span></span> + </p> + </td> + <td> + <p> + Проверяет целостность файловых систем перед их + монтированием (за исключением журналируемых и + сетевых файловых систем) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="cleanfs-bootscripts" name= + "cleanfs-bootscripts"></a><span class= + "term"><span class= + "command"><strong>cleanfs</strong></span></span> + </p> + </td> + <td> + <p> + Удаляет файлы, которые не должны сохраняться между + перезагрузками, например, те, которые находятся в + директориях <code class="filename">/run/</code> и + <code class="filename">/var/lock/</code>; скрипт + пересоздает <code class="filename">/run/utmp</code> + и удаляет файлы, которые, возможно, существуют + <code class="filename">/etc/nologin</code>, + <code class="filename">/fastboot</code>, и + <code class="filename">/forcefsck</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="console-bootscripts" name= + "console-bootscripts"></a><span class= + "term"><span class= + "command"><strong>console</strong></span></span> + </p> + </td> + <td> + <p> + Загружает правильную таблицу раскладок для + требуемой раскладки клавиатуры; он также + устанавливает экранный шрифт + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="functions-bootscripts" name= + "functions-bootscripts"></a><span class= + "term"><span class= + "command"><strong>functions</strong></span></span> + </p> + </td> + <td> + <p> + Содержит общие функции, такие как проверка ошибок и + состояния, которые используются несколькими + загрузочными скриптами + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="halt-bootscripts" name= + "halt-bootscripts"></a><span class= + "term"><span class= + "command"><strong>halt</strong></span></span> + </p> + </td> + <td> + <p> + Останавливает работу системы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ifdown-bootscripts" name= + "ifdown-bootscripts"></a><span class= + "term"><span class= + "command"><strong>ifdown</strong></span></span> + </p> + </td> + <td> + <p> + Останавливает сетевое устройство + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ifup-bootscripts" name= + "ifup-bootscripts"></a><span class= + "term"><span class= + "command"><strong>ifup</strong></span></span> + </p> + </td> + <td> + <p> + Инициализирует сетевое устройство + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="localnet-bootscripts" name= + "localnet-bootscripts"></a><span class= + "term"><span class= + "command"><strong>localnet</strong></span></span> + </p> + </td> + <td> + <p> + Настраивает имя хоста системы и локальное + устройство loopback + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="modules-bootscripts" name= + "modules-bootscripts"></a><span class= + "term"><span class= + "command"><strong>modules</strong></span></span> + </p> + </td> + <td> + <p> + Загружает модули ядра из списка, который находится + в файле <code class= + "filename">/etc/sysconfig/modules</code>, используя + указанные там же аргументы + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mountfs-bootscripts" name= + "mountfs-bootscripts"></a><span class= + "term"><span class= + "command"><strong>mountfs</strong></span></span> + </p> + </td> + <td> + <p> + Монтирует все файловые системы, кроме тех, которые + помечены как <span class= + "emphasis"><em>noauto</em></span> или сетевых + файловых систем + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="mountvirtfs-bootscripts" name= + "mountvirtfs-bootscripts"></a><span class= + "term"><span class= + "command"><strong>mountvirtfs</strong></span></span> + </p> + </td> + <td> + <p> + Монтирует виртуальные файловые системы, такие как + <code class="systemitem">proc</code> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="network-bootscripts" name= + "network-bootscripts"></a><span class= + "term"><span class= + "command"><strong>network</strong></span></span> + </p> + </td> + <td> + <p> + Выполняет настройку сетевых интерфейсов, например, + сетевых карт, и настаивает шлюз по-умолчанию (где + это применимо) + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="rc-bootscripts" name= + "rc-bootscripts"></a><span class= + "term"><span class="command"><strong>rc</strong></span></span> + </p> + </td> + <td> + <p> + Основной сценарий управления; он отвечает за запуск + всех остальных загрузочных скриптов один за другим, + в последовательности, определяемой именами + символических ссылок на другие скрипты. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="reboot-bootscripts" name= + "reboot-bootscripts"></a><span class= + "term"><span class= + "command"><strong>reboot</strong></span></span> + </p> + </td> + <td> + <p> + Перезагружает систему + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sendsignals-bootscripts" name= + "sendsignals-bootscripts"></a><span class= + "term"><span class= + "command"><strong>sendsignals</strong></span></span> + </p> + </td> + <td> + <p> + Обеспечивает завершение каждого процесса перед + перезагрузкой или остановкой системы. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="setclock-bootscripts" name= + "setclock-bootscripts"></a><span class= + "term"><span class= + "command"><strong>setclock</strong></span></span> + </p> + </td> + <td> + <p> + Сбрасывает системные часы на местное время, если + аппаратные часы не установлены на всемирное + координированное время (UTC). + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="ipv4-static-bootscripts" name= + "ipv4-static-bootscripts"></a><span class= + "term"><span class= + "command"><strong>ipv4-static</strong></span></span> + </p> + </td> + <td> + <p> + Предоставляет функциональные возможности, + необходимые для назначения статического адреса + сетевому интерфейсу. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="swap-bootscripts" name= + "swap-bootscripts"></a><span class= + "term"><span class= + "command"><strong>swap</strong></span></span> + </p> + </td> + <td> + <p> + Включает и отключает файлы и разделы, используемые + для подкачки. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sysctl-bootscripts" name= + "sysctl-bootscripts"></a><span class= + "term"><span class= + "command"><strong>sysctl</strong></span></span> + </p> + </td> + <td> + <p> + Загружает в работающее ядро значения системных + настроек из файла <code class= + "filename">/etc/sysctl.conf</code>, если этот файл + существует + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="sysklogd-bootscripts" name= + "sysklogd-bootscripts"></a><span class= + "term"><span class= + "command"><strong>sysklogd</strong></span></span> + </p> + </td> + <td> + <p> + Запускает и останавливает демоны журналирования + сообщений, выдаваемых системой и ядром. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="template-bootscripts" name= + "template-bootscripts"></a><span class= + "term"><span class= + "command"><strong>template</strong></span></span> + </p> + </td> + <td> + <p> + Шаблон для создания пользовательских загрузочных + скриптов для других демонов + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="udev-bootscripts" name= + "udev-bootscripts"></a><span class= + "term"><span class= + "command"><strong>udev</strong></span></span> + </p> + </td> + <td> + <p> + Подготавливает каталог <code class= + "filename">/dev</code> и запускает демон udev + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="udev-retry-bootscripts" name= + "udev-retry-bootscripts"></a><span class= + "term"><span class= + "command"><strong>udev_retry</strong></span></span> + </p> + </td> + <td> + <p> + Повторяет неудачные попытки запуска udev uevents и + копирует сгенерированные файлы правил из + <code class="filename">/run/udev</code> в + <code class="filename">/etc/udev/rules.d</code> + если требуется. + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-config-udev" name="ch-config-udev"></a>9.3. + Взаимодействие с устройствами и модулями + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + В <a class="xref" href="#chapter-building-system" title= + "Глава 8. Установка базового системного программного обеспечения"> + Глава 8</a>, мы установили демон udev во время сборки + <span class="phrase">udev</span> . Прежде чем мы углубимся в + детали того, как работает udev, необходимо кратко рассказать о + предыдущих методах взаимодействия с устройствами. + </p> + <p> + Системы Linux традиционно использовали метод статического + создания устройств, при котором огромное количество узлов + устройств(иногда буквально тысячи узлов) создавалось в + <code class="filename">/dev</code>, независимо от того, + существовали ли соответствующие аппаратные устройства на самом + деле. Обычно это делалось с помощью скрипта <span class= + "command"><strong>MAKEDEV</strong></span>, который содержал ряд + вызовов команды <span class= + "command"><strong>mknod</strong></span> с соответствующими + основными и второстепенными номерами устройств, для всех + возможных вариантов, которые только могут существовать в мире. + </p> + <p> + Используя метод udev, узлы устройств создаются только для тех + устройств, которые обнаружены ядром. Эти узлы устройств + создаются каждый раз при загрузке системы; они хранятся в + файловой системе <code class="systemitem">devtmpfs</code> + (виртуальная файловая система, которая полностью находится в + оперативной памяти). Узлы не занимают много места в памяти и их + общий размер незначителен. + </p> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 9.3.1. История + </h3> + <p> + В феврале 2000 года, новая файловая система <code class= + "systemitem">devfs</code> была принята в ветку ядра 2.3.46 и + была доступна на протяжении выпуска стабильных релизов ветки + 2.4. Хотя она и присутствовала в ядре, такой способ + динамического создания устройств никогда не получал поддержки + от разработчиков ядра. + </p> + <p> + Основная проблема с подходом, принятым <code class= + "systemitem">devfs</code> была связана с обработкой + обнаружения, создания и назначения имен устройствам. Проблема + связанная с именованием узлов была самой важной. Общепринято, + что если имена устройств можно настраивать, политика + именования устройств должна выбираться системными + администраторами, а не навязываться разработчиками. Файловая + система <code class="systemitem">devfs</code> также страдала + от состояния гонки, присущего её архитектуре; оно не могло + быть исправлено без существенной переработки ядра. + <code class="systemitem">devfs</code> долгое время была + помечена как устаревшая и, наконец, была удалена из ядра в + июне 2006 года. + </p> + <p> + При разработке нестабильной ветки ядра 2.5, позднее, + выпущенной как стабильный релиз 2.6, появилась новая + виртуальная файловая система <code class= + "systemitem">sysfs</code>. Задача этой файловой системы + заключалась в предоставление информации о конфигурации + оборудования системы процессам пользовательского + пространства. С помощью этого представления, видимого в + пользовательском пространстве, стало возможным разработать + замену пользовательского пространства для <code class= + "systemitem">devfs</code>. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 9.3.2. Реализация Udev + </h3> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm15978" name="idm15978"></a>9.3.2.1. Sysfs + </h4> + </div> + </div> + </div> + <p> + Краткое описание файловой системы <code class= + "systemitem">sysfs</code> было представлено выше. Можно + задаться вопросом, как <code class= + "systemitem">sysfs</code> получает информацию об + устройствах в системе, и о том, какие номера устройств + должны использоваться для них. Драйверы, скомпилированные в + ядро, регистрируют свои объекты в <code class= + "systemitem">sysfs</code> (внутри <code class= + "systemitem">devtmpfs</code>), по мере обнаружения ядром. + Для драйверов, которые скомпилированы в виде модулей, + регистрация происходит при его загрузке. После монтирования + файловой системы <code class="systemitem">sysfs</code> (в + каталог <code class="filename">/sys</code>), данные, + зарегистрированные драйверами, в <code class= + "systemitem">sysfs</code>, станут доступны для + пользовательского пространства и udevd для обработки + (включая модификацию узлов устройств). + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="ch-config-udev-device-node-creation" name= + "ch-config-udev-device-node-creation"></a>9.3.2.2. + Создание узла устройства + </h4> + </div> + </div> + </div> + <p> + Файлы устройств создаются ядром в файловой системе + <code class="systemitem">devtmpfs</code>. Любой драйвер, + которому необходимо зарегистрировать узел устройства, будет + использовать для этого <code class= + "systemitem">devtmpfs</code> (через системный драйвер + ядра). Когда экземпляр <code class= + "systemitem">devtmpfs</code> монтируется в каталог + <code class="filename">/dev</code>, узел устройства будет + доступен в пользовательском пространстве с фиксированным + именем, разрешениями и владельцем. + </p> + <p> + Через некоторое время, ядро отправит uevent в <span class= + "command"><strong>udevd</strong></span>. На основе правил, + которые указанны в файлах в каталогах <code class= + "filename">/etc/udev/rules.d</code>, <code class= + "filename">/lib/udev/rules.d</code>, и <code class= + "filename">/run/udev/rules.d</code>, <span class= + "command"><strong>udevd</strong></span> создаст + дополнительные символические ссылки на узлы устройств, или + сменит разрешения, владельца или группу, или изменит запись + (имя) во внутренней базе данных <span class= + "command"><strong>udevd</strong></span> для этого объекта. + </p> + <p> + Правила в этих трёх каталогах пронумерованы и используются + совместно. Если <span class= + "command"><strong>udevd</strong></span> не может найти + правило для устройства, он оставит права доступа и + владельца на <code class="systemitem">devtmpfs</code>, + которые были установлены изначально. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="module-loading" name= + "module-loading"></a>9.3.2.3. Загрузка модуля + </h4> + </div> + </div> + </div> + <p> + Драйверы устройств, скомпилированные в виде модулей ядра + могут содержать встроенные псевдонимы. Псевдонимы можно + увидеть просмотрев вывод программы <span class= + "command"><strong>modinfo</strong></span>, обычно они + связаны со специфичными для шины идентификаторами + устройств, которые поддерживается модулем. Например, + драйвер <span class="emphasis"><em>snd-fm801</em></span> + подерживает PCI устройства с идентификатором поставщика + 0x1319 и идентификатором устройства 0x0801, и имеет + псевдоним <code class= + "literal">pci:v00001319d00000801sv*sd*bc04sc01i*</code>. + Для большинства устройств, драйвер шины экспортирует + псевдонимы драйвера, которые будет обрабатывать устройство + через <code class="systemitem">sysfs</code>. Например, файл + <code class= + "filename">/sys/bus/pci/devices/0000:00:0d.0/modalias</code> + может содержать строку <code class= + "literal">pci:v00001319d00000801sv00001319sd00001319bc04sc01i00</code>. + Правила по умолчанию, которые предоставлены Udev, заставят + <span class="command"><strong>udevd</strong></span> вызвать + <span class= + "command"><strong>/sbin/modprobe</strong></span> с + содержимым, которое находится в значении переменной + окружения <code class="envar">MODALIAS</code> uevent + (которое должно совпадать с содержимым файла <code class= + "filename">modalias</code> в sysfs), тем самым загружая все + модули, чьи псевдонимы совпадают в строке после расширения + подстановочных знаков + </p> + <p> + В указанном примере, это означает, что в дополнение к + <span class="emphasis"><em>snd-fm801</em></span> будет + загружен устаревший (и нежелательный) драйвер <span class= + "emphasis"><em>forte</em></span>, если он будет доступен. + Ниже приведены способы, как можно предотвратить загрузку + нежелательных драйверов. + </p> + <p> + Само ядро также способно загружать модули для сетевых + протоколов, файловых систем и поддержки NLS по запросу. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm16022" name="idm16022"></a>9.3.2.4. Работа + с устройствами с горячей заменой или динамическими + устройствами + </h4> + </div> + </div> + </div> + <p> + При подключении устройства, например, MP3-плеер, к + универсальной последовательной шине (USB), ядро распознает, + что устройство подключено, и генерирует событие uevent. + Затем это событие обрабатывается <span class= + "command"><strong>udevd</strong></span>, как было описано + выше. + </p> + </div> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 9.3.3. Проблемы с загрузкой модулей и созданием устройств + </h3> + <p> + Существует несколько возможных проблем, связанных с + автоматическим созданием узлов устройств. + </p> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm16029" name="idm16029"></a>9.3.3.1. Модуль + ядра не загружается автоматически + </h4> + </div> + </div> + </div> + <p> + Udev загрузит модуль только в том случае, если у него есть + псевдоним, специфичный для шины, и драйвер шины правильно + экспортирует необходимые псевдонимы в <code class= + "systemitem">sysfs</code>. В других случаях следует + организовать загрузку модуля иными способами. Известно, + что, начиная с версии Linux-6.7.4, udev, выполняет загрузку + правильно написанных драйверов для INPUT, IDE, PCI, USB, + SCSI, SERIO, и FireWire устройств. + </p> + <p> + Чтобы определить, имеет ли требуемый драйвер устройства + необходимую поддержку Udev, запустите <span class= + "command"><strong>modinfo</strong></span> с именем модуля в + качестве аргумента. Далее, попробуйте найти каталог + устройства в <code class="filename">/sys/bus</code> и + проверьте, есть ли там файл <code class= + "filename">modalias</code>. + </p> + <p> + Если файл <code class="filename">modalias</code> существует + в <code class="systemitem">sysfs</code>, то драйвер, + который поддерживает устройство, может обращаться к нему + напрямую, но не имеет псевдонима, это ошибка в драйвере. + Загрузите драйвер без помощи Udev и ожидайте, что проблема + будет исправлена позднее. + </p> + <p> + Если же в каталоге <code class="filename">/sys/bus</code> + нет файла <code class="filename">modalias</code>, это + означает, что разработчики ядра еще не добавили поддержку + <code class="filename">modalias</code> к этому типу шины. В + Linux-6.7.4 это относится к шиной ISA. Ожидайте, что эта + проблема будет исправлена в более поздних версиях ядра. + </p> + <p> + Udev не предназначен для загрузки драйверов <span class= + "quote">«<span class="quote">обёрток</span>»</span>, таких + как <span class="emphasis"><em>snd-pcm-oss</em></span> и не + аппаратных драйверов, например, <span class= + "emphasis"><em>loop</em></span>. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm16048" name="idm16048"></a>9.3.3.2. Модуль + ядра не загружается автоматически и Udev не + предназначен для его загрузки + </h4> + </div> + </div> + </div> + <p> + Если модуль <span class="quote">«<span class= + "quote">обёртка</span>»</span> только расширяет + функциональность, предоставляемую каким-либо другим модулем + (например модуль <span class= + "emphasis"><em>snd-pcm-oss</em></span> расширяет + функциональность модуля <span class= + "emphasis"><em>snd-pcm</em></span>, давая возможность + звуковым картам быть доступными для OSS приложений), + настройте <span class= + "command"><strong>modprobe</strong></span> для загрузки + оболочки после того, как Udev загрузит обернутый модуль. + Для этого добавьте строку <span class="quote">«<span class= + "quote">softdep</span>»</span> в файл, который находится в + каталоге <code class="filename">/etc/modprobe.d/<em class= + "replaceable"><code><filename></code></em>.conf</code>. + Например: + </p> + <pre class="screen"><code class= + "literal">softdep snd-pcm post: snd-pcm-oss</code></pre> + <p> + Обратите внимание, что команда <span class= + "quote">«<span class="quote">softdep</span>»</span> + разрешает добавлять <code class="literal">pre:</code> + зависимости, или одновременно <code class= + "literal">pre:</code> и <code class="literal">post:</code> + зависимости. Обратитесь к документации <a class="ulink" + href= + "https://man.archlinux.org/man/modprobe.d.5">modprobe.d(5)</a> + для изучения синтаксиса и возможностей <span class= + "quote">«<span class="quote">softdep</span>»</span>. + </p> + <p> + Если рассматриваемый модуль не является обёрткой, и полезен + сам по себе, настройте загрузочный скрипт <span class= + "command"><strong>modules</strong></span>, чтобы он + инициализировался при загрузке системы. Для этого добавьте + имя модуля в файл <code class= + "filename">/etc/sysconfig/modules</code> в отдельной + строке. Этот способ сработает и для модулей-обёрток, но не + является оптимальным. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm16070" name="idm16070"></a>9.3.3.3. Udev + загружает какой-то нежелательный модуль + </h4> + </div> + </div> + </div> + <p> + Либо не создавайте модуль, либо занесите его в черный + список в файле <code class= + "filename">/etc/modprobe.d/blacklist.conf</code>, как это + сделано с модулем <span class= + "emphasis"><em>forte</em></span> в примере ниже: + </p> + <pre class="screen"><code class= + "literal">blacklist forte</code></pre> + <p> + Модули, занесенные в черный список, можно загрузить вручную + с помощью явной команды <span class= + "command"><strong>modprobe</strong></span>. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm16079" name="idm16079"></a>9.3.3.4. Udev + неправильно создает устройство или делает + неправильную символическую ссылку + </h4> + </div> + </div> + </div> + <p> + Это обычно происходит, если правило неожиданно совпадает с + другим устройством. Например, плохо написанное поставщиком + оборудования правило может соответствовать как диску + SCSI(искомое устройство), так и универсальному устройству + SCSI (неправильно). Найдите ошибочное правило и исправьте + его с помощью команды <span class="command"><strong>udevadm + info</strong></span>. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm16083" name="idm16083"></a>9.3.3.5. Правило + Udev работает ненадежно + </h4> + </div> + </div> + </div> + <p> + Это может быть проявлением предыдущей проблемы. В ином + случае, если правило использует атрибуты файловой системы + <code class="systemitem">sysfs</code>, то это может быть + проблемой синхронизации ядра, которая будет исправлена в + более поздних версиях ядра. Но вы можете обойти проблему, + создав правило, которое ожидает используемый атрибут + <code class="systemitem">sysfs</code> и добавляет его к + файлу правил <code class= + "filename">/etc/udev/rules.d/10-wait_for_sysfs.rules</code> + (создайте его, если файл не существует). Пожалуйста, + сообщите в списке рассылки разработчиков LFS, если это + решение вам поможет. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm16089" name="idm16089"></a>9.3.3.6. Udev не + создаёт устройство + </h4> + </div> + </div> + </div> + <p> + Во-первых, убедитесь, что драйвер встроен в ядро или уже + загружен как модуль, и, что udev не создает устройство с + неправильным именем. + </p> + <p> + Если драйвер ядра не экспортирует свои данные в + <code class="systemitem">sysfs</code>, udev не хватает + информации, необходимой для создания узла устройства. Это, + вероятнее всего, произойдет со сторонними драйверами, + которых нет в дереве исходного кода ядра. Создайте + статический узел в каталоге <code class= + "filename">/usr/lib/udev/devices</code> с соответствующими + старшим/младшим номерами (смотрите файл devices.txt в + документации к ядру или документации, предоставленной + сторонним поставщиком драйвера). Статический узел будет + скопирован в <code class="filename">/dev</code> с помощью + <span class="command"><strong>udev</strong></span>. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm16097" name="idm16097"></a>9.3.3.7. Порядок + присвоения имен устройствам меняется случайным + образом после перезагрузки + </h4> + </div> + </div> + </div> + <p> + Это связано с тем, что udev обрабатывает события uevents и + загружает модули параллельно, а значит в непредсказуемом + порядке. Это никогда не будет <span class= + "quote">«<span class="quote">исправлено</span>»</span>. Вы + не должны полагаться на то что имена устройств ядра + стабильны. Вместо этого создайте свои собственные правила, + которые делают символические ссылки со стабильными именами + на основе некоторых неизменяемых атрибутов устройства, + таких как серийный номер или вывод различных утилит *_id, + установленных Udev. Смотрите <a class="xref" href= + "#ch-config-symlinks" title= + "9.4. Управление устройствами">Раздел 9.4, «Управление + устройствами»</a> и <a class="xref" href= + "#ch-config-network" title= + "9.5. Настройка сети">Раздел 9.5, «Настройка сети»</a> + для примера. + </p> + </div> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 9.3.4. Полезная информация + </h3> + <p> + Дополнительную документацию можно получить на следующих + сайтах: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Реализация пользовательского пространства в + <code class="systemitem">devfs</code> <a class="ulink" + href= + "http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf"> + http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf</a> + </p> + </li> + <li class="listitem"> + <p> + Файловая система <code class="systemitem">sysfs</code> + <a class="ulink" href= + "https://www.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf"> + https://www.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf</a> + </p> + </li> + </ul> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-config-symlinks" name= + "ch-config-symlinks"></a>9.4. Управление устройствами + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 9.4.1. Сетевые устройства + </h3> + <p> + Udev по умолчанию присваивает имена сетевым устройствам в + соответствии с данными прошивки, BIOS'а или физическими + характеристиками, такими как шина, слот или MAC-адрес. Целью + такого соглашения об именовании является обеспечение того, + чтобы сетевые устройства именовались последовательно, а не + основывались на времени обнаружения сетевой карты. Например, + в более старых версиях Linux—на компьютере с двумя сетевыми + картами производства Intel и Realtek, сетевая карта + производства Intel могла стать eth0, а карта Realtek — eth1. + Иногда после перезагрузки карты именовались наоборот. + </p> + <p> + В новой схеме именования, типичными именами сетевых устройств + являются enp5s0 или wlp3s0. Если такие имена для вас + нежелательны, то может быть реализована традиционная схема + именования или своя собственная. + </p> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm16121" name="idm16121"></a>9.4.1.1. + Отключение постоянного присвоения имен в параметрах + загрузки ядра + </h4> + </div> + </div> + </div> + <p> + Традиционная схема именования - eth0, eth1, и так далее, + может быть включена путем добавления параметра + <strong class= + "userinput"><code>net.ifnames=0</code></strong> в командную + строку ядра. Это решение подходит для систем, которые имеют + только одно сетевое устройство каждого типа. Часто в + ноутбуках несколько сетевых устройств с именами eth0 и + wlan0; в таких ноутбуках также может использоваться этот + метод. Командная строка указывается в файле конфигурации + GRUB. Подробности смотрите на странице <a class="xref" + href="#grub-cfg" title= + "10.4.4. Создание файла конфигурации GRUB">Раздел 10.4.4, + «Создание файла конфигурации GRUB»</a>. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm16126" name="idm16126"></a>9.4.1.2. + Создание пользовательских правил Udev + </h4> + </div> + </div> + </div> + <p> + Схему именования можно настроить, создав пользовательские + правила udev. В состав книги включен скрипт, который + генерирует начальные правила. Чтобы их сгенерировать, + выполните команду: + </p> + <pre class="install"><kbd class= + "command">bash /usr/lib/udev/init-net-rules.sh</kbd></pre> + <p> + Теперь, проверьте файл <code class= + "filename">/etc/udev/rules.d/70-persistent-net.rules</code>, + чтобы узнать какое имя с каким сетевым устройством + сопоставлено: + </p> + <pre class="userinput"><kbd class= + "command">cat /etc/udev/rules.d/70-persistent-net.rules</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + В некоторых случаях, например, когда MAC-адреса были + назначены сетевой карте вручную или в виртуальной среде, + такой как Qemu или Xen, возможно, файл сетевых правил не + будет сгенерирован, поскольку адреса назначаются не + последовательно. В таких случаях, этот способ не + применим. + </p> + </div> + <p> + Файл начинается с блока комментариев, далее следуют две + строки для каждой сетевой карты (NIC). Первая строка + представляет собой описание с комментариями и содержит + аппаратные идентификаторы (например, поставщика PCI и + идентификаторы устройств, если это PCI-карта), а также + информацию о драйвере (если его удалось обнаружить). Ни + идентификатор оборудования, ни драйвер не используются для + определения того, какое имя присвоить интерфейсу; эта + информация предназначена только для справки. Вторая строка + - это правило udev, которое соответствует этому сетевому + адаптеру и фактически присваивает ему имя. + </p> + <p> + Все правила udev состоят из нескольких ключевых слов, + разделенных запятыми и необязательными пробелами. Ниже + приведены ключевые слова и пояснения по каждому из них: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + <code class="literal">SUBSYSTEM=="net"</code> - + указывает Udev игнорировать устройства, которые не + являются сетевыми картами. + </p> + </li> + <li class="listitem"> + <p> + <code class="literal">ACTION=="add"</code> - + указывает Udev игнорировать правила для событий, + отличных от добавления (события "удалить" и + "изменить" также происходят, но не требуют + переименования сетевых интерфейсов). + </p> + </li> + <li class="listitem"> + <p> + <code class="literal">DRIVERS=="?*"</code> - + существует для того, чтобы Udev проигнорировал + подинтерфейсы VLAN или моста (потому что эти + подинтерфейсы не имеют драйверов). Эти подинтерфейсы + пропускаются, потому что назначенные им имена будут + конфликтовать с именами их родительских устройств. + </p> + </li> + <li class="listitem"> + <p> + <code class="literal">ATTR{address}</code> - + значением этого ключевого слова является MAC-адрес + сетевой карты. + </p> + </li> + <li class="listitem"> + <p> + <code class="literal">ATTR{type}=="1"</code> - этот + ключ гарантирует выполнение правила соответствующего + только основному интерфейсу, при использовании + определенных беспроводных драйверов, которые создают + несколько виртуальных интерфейсов. Дополнительные + интерфейсы пропускаются по той же причине, что и + подинтерфейсы VLAN и мост, в ином случае произошел бы + конфликт имен. + </p> + </li> + <li class="listitem"> + <p> + <code class="literal">NAME</code> - значением этого + ключевого слова является имя, которое udev присвоит + этому интерфейсу. + </p> + </li> + </ul> + </div> + <p> + Значение <code class="literal">NAME</code> является очень + важным. Прежде чем продолжить, убедитесь, что вы знаете, + какое имя назначено каждой из сетевых карт и обязательно + используйте это значение <code class="literal">NAME</code> + при создании файлов конфигурации сети. + </p> + <p> + Даже если создан пользовательский файл правил udev, udev + все равно может назначить одно или несколько альтернативных + имен для сетевой карты на основе физических характеристик. + Если пользовательское правило udev переименовывает + какой-либо сетевой адаптер, используя имя, уже назначенное + в качестве альтернативного имени другого сетевого адаптера, + это правило udev не будет выполнено. Если возникает эта + проблема, вы можете создать файл конфигурации <code class= + "filename">/etc/udev/network/99-default.link</code> с + пустой альтернативной политикой назначения, + переопределяющей файл конфигурации по умолчанию + <code class="filename">/usr/lib/udev/network/99-default.link</code>: + </p> + <pre class="userinput"><kbd class= + "command">sed -e '/^AlternativeNamesPolicy/s/=.*$/=/' \ + -i /usr/lib/udev/network/99-default.link \ + > /etc/udev/network/99-default.link</kbd></pre> + </div> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 9.4.2. Символические ссылки CD-ROM + </h3> + <p> + Некоторое программное обеспечение, которое вы, возможно, + захотите установить позже (например, различные медиаплееры) + ожидают, что устройства <code class= + "filename">/dev/cdrom</code> или <code class= + "filename">/dev/dvd</code> и символические ссылки на CD-ROM + или DVD-ROM устройства должны существовать. Кроме того, может + быть удобно использовать эти символические ссылки в + <code class="filename">/etc/fstab</code>. Udev поставляется с + файлом сценария, который будет генерировать правила для + создания этих символических ссылок, в зависимости от + возможностей каждого устройства, но вам нужно решить, какой + из двух режимов работы вы хотите использовать. + </p> + <p> + Во-первых, скрипт может работать в режиме <span class= + "quote">«<span class="quote">by-path</span>»</span> + (используется по умолчанию для USB и FireWire устройств), где + создаваемые им правила зависят от физического пути к CD или + DVD устройству. Во-вторых, он может работать в режиме + <span class="quote">«<span class="quote">by-id</span>»</span> + (по умолчанию для устройств IDE и SCSI), где создаваемые им + правила зависят от строк идентификации, хранящихся в самом + устройстве CD или DVD. Путь определяется сценарием Udev + <span class="command"><strong>path_id</strong></span>, а + идентификационные строки считываются с оборудования командами + <span class="command"><strong>ata_id</strong></span> или + <span class="command"><strong>scsi_id</strong></span>, в + зависимости от того, какой тип устройства у вас есть. + </p> + <p> + У каждого подхода есть свои преимущества; правильный подход к + использованию будет зависеть от того, какие изменения + устройств могут произойти. Если вы ожидаете, что физический + путь к устройству (порты и/или слоты, в который оно + подключено), изменится, например, потому, что вы планируете + переместить диск в другой порт IDE или другой разъем USB, то + вы должны использовать режим <span class= + "quote">«<span class="quote">by-id</span>»</span>. С другой + стороны, если вы ожидаете, что идентификация устройства + изменится, например, потому, что оно может выйти из строя, и + вы замените его другим устройством с теми же характеристиками + и подключите к тем же разъемам, тогда вы должны использовать + режим <span class="quote">«<span class= + "quote">by-path</span>»</span>. + </p> + <p> + Если с вашим устройством возможен любой из вариантов, + выберите тот, который по вашему мнению случается чаще. + </p> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + Внешние устройства (например, привод компакт-дисков, + подключенный через USB) не следует подключать методом + <span class="quote">«<span class= + "quote">by-path</span>»</span>, потому что каждый раз, + когда устройство подключено в новый внешний порт, изменится + его физический путь. Все внешние устройства подвержены этой + проблеме, если при написании правил Udev применять режим + распознавания по их физическому пути. К тому же, эта + проблема не ограничивается CD и DVD-приводами. + </p> + </div> + <p> + Если вы хотите увидеть значения, которые будут использовать + скрипты udev, то для требуемого устройства CD-ROM найдите + соответствующий каталог в <code class="filename">/sys</code> + (например, это может быть <code class= + "filename">/sys/block/hdd</code>) и выполните команду, + аналогичную следующей: + </p> + <pre class="userinput"><kbd class= + "command">udevadm test /sys/block/hdd</kbd></pre> + <p> + Обратите внимание на строки, содержащие вывод различных + идентификаторов *_id. Режим <span class="quote">«<span class= + "quote">by-id</span>»</span> будет использовать значение + ID_SERIAL если оно существует и не пустое, иначе будет + использована комбинация ID_MODEL и ID_REVISION. Режим + <span class="quote">«<span class= + "quote">by-path</span>»</span> будет использовать значение + ID_PATH. + </p> + <p> + Если режим по умолчанию не подходит для вашей ситуации, то в + файл <code class= + "filename">/etc/udev/rules.d/83-cdrom-symlinks.rules</code> + можно внести следующие изменения (где <em class= + "replaceable"><code>mode</code></em> является одним из + значений <span class="quote">«<span class= + "quote">by-id</span>»</span> или <span class= + "quote">«<span class="quote">by-path</span>»</span>): + </p> + <pre class="userinput"><kbd class= + "command">sed -e 's/"write_cd_rules"/"write_cd_rules <em class= + "replaceable"><code>mode</code></em>"/' \ + -i /etc/udev/rules.d/83-cdrom-symlinks.rules</kbd></pre> + <p> + Обратите внимание, что на данный момент, нет необходимости + создавать файлы правил или символические ссылки, так как вы + смонтировали каталог <code class="filename">/dev</code> хоста + в систему LFS, и мы предполагаем, что символические ссылки + уже существуют. Правила и символические ссылки будут + создаваться при первой загрузке LFS системы. + </p> + <p> + Однако, если у вас есть несколько устройств CD-ROM, то + символические ссылки, сгенерированные в это время, могут + указывать на другие устройства, и иметь различия от хост + системы, потому что устройства не будут обнаружены в + предсказуемом порядке. Назначения, созданные при первой + загрузке системы LFS, будут правильными, проблема возникнет + только в том случае, если символические ссылки в обеих + системах указывают на одно и то же устройство. Если + потребуется, проверьте (и, возможно, отредактируйте) + сгенерированные правила в файле <code class= + "filename">/etc/udev/rules.d/70-persistent-cd.rules</code> + после загрузки, чтобы убедиться, что назначенные + символические ссылки соответствуют тому, что вам нужно. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 9.4.3. Работа с дубликатами устройств + </h3> + <p> + Как поясняется в <a class="xref" href="#ch-config-udev" + title="9.3. Взаимодействие с устройствами и модулями">Раздел 9.3, + «Взаимодействие с устройствами и модулями»</a>, порядок + отображения устройства с одинаковой функциональностью в + <code class="filename">/dev</code> является, как правило, + случайным. Например, если у вас есть веб камера и TV тюнер, + иногда <code class="filename">/dev/video0</code> ссылается на + камеру, а <code class="filename">/dev/video1</code> ссылается + на TV тюнер, а иногда, например, после перезагрузки системы, + порядок поменяется на противоположный. Для всех классов + оборудования, за исключением звуковых и сетевых карт, это + можно исправить, написав правила udev для создания постоянных + символических ссылок. Случай с сетевыми картами описан + отдельно в <a class="xref" href="#ch-config-network" title= + "9.5. Настройка сети">Раздел 9.5, «Настройка сети»</a>, + инструкции по настройке звуковых карт можно найти в <a class= + "ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/devices.html"> + BLFS</a>. + </p> + <p> + Для каждого из ваших устройств, которые могут иметь такую + проблему (даже если проблема не существует в текущем + дистрибутиве Linux ), найдите соответствующий каталог в + <code class="filename">/sys/class</code> или <code class= + "filename">/sys/block</code>. Для видеоустройств это может + быть <code class= + "filename">/sys/class/video4linux/video<em class= + "replaceable"><code>X</code></em></code>. Определите + атрибуты, которые однозначно идентифицируют устройство + (обычно это идентификаторы поставщика и продукта и/или + серийные номера): + </p> + <pre class="userinput"><kbd class= + "command">udevadm info -a -p /sys/class/video4linux/video0</kbd></pre> + <p> + Затем напишите правила, которые создают символические ссылки, + например: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/udev/rules.d/83-duplicate_devs.rules << "EOF" +<code class="literal"> +# Persistent symlinks for webcam and tuner +KERNEL=="video*", ATTRS{idProduct}=="1910", ATTRS{idVendor}=="0d81", SYMLINK+="webcam" +KERNEL=="video*", ATTRS{device}=="0x036f", ATTRS{vendor}=="0x109e", SYMLINK+="tvtuner" +</code> +EOF</kbd></pre> + <p> + В результате устройства <code class= + "filename">/dev/video0</code> и <code class= + "filename">/dev/video1</code> по-прежнему случайным образом + ссылаются на TV тюнер и веб-камеру (и, следовательно, никогда + не должны использоваться напрямую), но есть символические + ссылки /dev/tvtuner и /dev/webcam, которые всегда указывают + на правильное устройство. + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-config-network" name="ch-config-network"></a>9.5. + Настройка сети + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 9.5.1. Создание файлов конфигурации сетевого интерфейса + </h3> + <p> + Файлы в каталоге <code class= + "filename">/etc/sysconfig/</code> обычно определяют, какие + интерфейсы запускаются и выключаются сетевым скриптом. Этот + каталог должен содержать файл для каждого настраиваемого + интерфейса, например <code class= + "filename">ifconfig.xyz</code>, где <span class= + "quote">«<span class="quote">xyz</span>»</span> описывает + сетевую карту. Имя интерфейса (например, eth0) обычно + является подходящим. Каждый файл содержит атрибуты одного + интерфейса, такие как его IP-адреса, маски подсетей и так + далее. Имя файла должно быть <span class= + "emphasis"><em>ifconfig</em></span>. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Если процедура именования из предыдущего раздела не + использовалась, udev будет назначать имена интерфейсов + сетевых карт на основе физических характеристик системы, + например, enp2s1. Если вы не знаете имя вашего интерфейса, + вы всегда можете запустить <span class="command"><strong>ip + link</strong></span> или <span class="command"><strong>ls + /sys/class/net</strong></span> после загрузки системы. + </p> + <p> + Имена интерфейсов зависят от реализации и конфигурации + демона udev, работающего в системе. Демон udev для LFS + (установленный в <a class="xref" href="#ch-system-udev" + title="8.75. Udev из Systemd-255">Раздел 8.75, «Udev + из Systemd-255»</a>) не запустится, пока система LFS не + будет загружена. Таким образом, имена интерфейсов в системе + LFS не всегда можно определить, запустив эти команды в + хост-дистрибутиве, <span class="emphasis"><em>даже в среде + chroot</em></span>. + </p> + </div> + <p> + Следующая команда создает пример конфигурационного файла для + устройства <span class="emphasis"><em>eth0</em></span> со + статическим IP-адресом: + </p> + <pre class="userinput"><kbd class="command">cd /etc/sysconfig/ +cat > ifconfig.<em class= +"replaceable"><code>eth0</code></em> << "EOF" +<code class="literal">ONBOOT=<em class="replaceable"><code>yes</code></em> +IFACE=<em class="replaceable"><code>eth0</code></em> +SERVICE=<em class="replaceable"><code>ipv4-static</code></em> +IP=<em class="replaceable"><code>192.168.1.2</code></em> +GATEWAY=<em class="replaceable"><code>192.168.1.1</code></em> +PREFIX=<em class="replaceable"><code>24</code></em> +BROADCAST=<em class="replaceable"><code>192.168.1.255</code></em></code> +EOF</kbd></pre> + <p> + Значения, выделенные курсивом, должны быть изменены в каждом + файле, чтобы правильно настроить интерфейсы. + </p> + <p> + Если переменной <code class="envar">ONBOOT</code> присвоено + значение <code class="literal">yes</code>, сценарий загрузки + сети System V вызовет сетевую карту (NIC) в процессе загрузки + системы. Если задано значение, отличное от <code class= + "literal">yes</code> сетевой адаптер будет проигнорирован + сетевым скриптом и не будет запущен автоматически. Интерфейсы + можно запускать или останавливать вручную с помощью команд + <span class="command"><strong>ifup</strong></span> и + <span class="command"><strong>ifdown</strong></span>. + </p> + <p> + Переменная <code class="envar">IFACE</code> определяет имя + сетевого интерфейса, например, eth0. Она необходима для всех + файлов конфигураций сетевых устройств. Расширение файла + должно соответствовать этому значению. + </p> + <p> + Переменная <code class="envar">SERVICE</code> определяет + метод получения IP-адреса. Пакет LFS-Bootscripts имеет + модульный формат назначения IP, а создание дополнительных + файлов в каталоге <code class= + "filename">/lib/services/</code> позволит использовать другие + методы назначения IP. Переменная обычно используется для + протокола DHCP (Dynamic Host Configuration Protocol), который + рассматривается в книге BLFS + </p> + <p> + Переменная <code class="envar">GATEWAY</code> должна + содержать IP-адрес шлюза по умолчанию, если таковой имеется. + Если нет, то закомментируйте эту строку. + </p> + <p> + Переменная <code class="envar">PREFIX</code> указывает + количество бит, используемых в подсети. Каждый сегмент + IP-адреса состоит из 8 бит. Если маска подсети равна + 255.255.255.0, то для указания номера сети используются + первые три сегмента (24 бита). Если сетевая маска + 255.255.255.240, подсеть использует первые 28 бит. Префиксы + длиннее 24 бит обычно используются DSL и кабельными + интернет-провайдерами (ISP). В этом примере (PREFIX=24) маска + сети — 255.255.255.0. Измените переменную <code class= + "envar">PREFIX</code> в соответствии c конфигурацией вашей + сети. Если этот параметр не указан, то ПРЕФИКС по умолчанию + равен 24. + </p> + <p> + Для получения дополнительной информации смотрите справочную + страницу <span class="command"><strong>ifup</strong></span>. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="resolv.conf" name="resolv.conf"></a>9.5.2. Создание + файла /etc/resolv.conf + </h3> + <p> + Системе потребуются дополнительные настройки службы доменных + имен (DNS) для преобразования имен сети Интернет в IP-адреса + и наоборот. Это достигается путем указания IP-адреса + DNS-сервера, доступного от провайдера или администратора + сети, в <code class="filename">/etc/resolv.conf</code>. + Создайте файл, выполнив следующие действия: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/resolv.conf << "EOF" +<code class="literal"># Begin /etc/resolv.conf + +domain <em class="replaceable"><code><Ваше доменное имя></code></em> +nameserver <em class= +"replaceable"><code><IP-адрес вашего основного DNS-сервера></code></em> +nameserver <em class= +"replaceable"><code><IP-адрес вашего дополнительного DNS-сервера></code></em> + +# End /etc/resolv.conf</code> +EOF</kbd></pre> + <p> + Оператор <code class="varname">domain</code> может быть + опущен или заменён оператором <code class= + "varname">search</code>. Смотрите справочную страницу + resolv.conf для получения подробной информации. + </p> + <p> + Замените <em class="replaceable"><code><IP-адрес вашего + основного DNS-сервера></code></em> адресом наиболее + подходящего DNS сервера. DNS серверов, может быть указано + более одной записи (дополнительные серверы необходимы для + возможности резервного переключения). Если вам нужен только + один DNS-сервер, удалите вторую строку <span class= + "emphasis"><em>nameserver</em></span> из файла. DNS-сервер + также может выступать шлюзом в локальной сети. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Адреса общедоступных DNS серверов Google - 8.8.8.8 и + 8.8.4.4. + </p> + </div> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="ch-config-hostname" name= + "ch-config-hostname"></a>9.5.3. Настройка имени хоста + </h3> + <p> + В процессе загрузки файл <code class= + "filename">/etc/hostname</code> используется для настройки + имени хоста системы. + </p> + <p> + Создайте файл <code class="filename">/etc/hostname</code> и + внесите имя хоста, выполнив команду: + </p> + <pre class="userinput"><kbd class="command">echo "<em class= + "replaceable"><code><lfs></code></em>" > /etc/hostname</kbd></pre> + <p> + <em class="replaceable"><code><lfs></code></em> + замените на имя вашего компьютера. Не вносите сюда полное + доменное имя(FQDN). Эта информация помещается в файл + <code class="filename">/etc/hosts</code>. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="ch-config-hosts" name="ch-config-hosts"></a>9.5.4. + Настройка файла /etc/hosts + </h3> + <p> + Выберите полное доменное имя (FQDN) и возможные псевдонимы + для использования в файле <code class= + "filename">/etc/hosts</code>. Если вы используете статические + IP-адреса, вам также необходимо определиться с IP-адресом. + Синтаксис для записи в файле hosts следующий: + </p> + <pre class="screen"><code class= + "literal">IP_address myhost.example.org aliases</code></pre> + <p> + Если компьютер не должен быть виден в Интернете (т. е. нет + зарегистрированного домена и действительного блока + назначенных IP-адресов—у большинства пользователей этого + нет), убедитесь, что IP-адрес находится в диапазоне + внутренних сетевых IP-адресов. Допустимые диапазоны: + </p> + <pre class="screen"><code class= + "literal">Диапазон адресов локальной сети Стандартный префикс +10.0.0.1 - 10.255.255.254 8 +172.x.0.1 - 172.x.255.254 16 +192.168.y.1 - 192.168.y.254 24</code></pre> + <p> + x может быть любым числом в диапазоне 16-31. y может быть + любым числом в диапазоне 0-255. + </p> + <p> + Правильным IP адресом в локальной сети может быть + 192.168.1.1. + </p> + <p> + Если компьютер должен быть виден в Интернете, действительным + полным доменным именем может быть само имя домена или строка, + полученная путем объединения префикса (часто имени хоста) и + домена с помощью символа <span class="quote">«<span class= + "quote">.</span>»</span>. Кроме того, вам необходимо + обратиться к администратору домена, чтобы связать полное + доменное имя и ваш общедоступный IP-адрес. + </p> + <p> + Даже если компьютер не виден из Интернета, полное доменное + имя все равно необходимо для правильной работы некоторых + программ, таких как MTA. Для этих целей можно использовать + специальное полное доменное имя <code class= + "literal">localhost.localdomain</code>. + </p> + <p> + Создайте файл <code class="filename">/etc/hosts</code>, + выполнив команду: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/hosts << "EOF" +<code class="literal"># Begin /etc/hosts + +127.0.0.1 localhost.localdomain localhost +127.0.1.1 <em class="replaceable"><code><FQDN></code></em> <em class= +"replaceable"><code><HOSTNAME></code></em> +<em class="replaceable"><code><192.168.1.1></code></em> <em class= +"replaceable"><code><FQDN></code></em> <em class= +"replaceable"><code><HOSTNAME></code></em> <em class= +"replaceable"><code>[alias1] [alias2 ...]</code></em> +::1 localhost ip6-localhost ip6-loopback +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters + +# End /etc/hosts</code> +EOF</kbd></pre> + <p> + Значения <em class= + "replaceable"><code><192.168.1.1></code></em>, + <em class="replaceable"><code><FQDN></code></em>, и + <em class="replaceable"><code><HOSTNAME></code></em> + должны быть изменены в соответствии с предпочтениями + пользователя или требованиями сети (если имеется IP-адрес + выданный сетевым/системным администратором и машина + подключена к существующей сети). Необязательные параметры + могут быть опущены. + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-config-usage" name="ch-config-usage"></a>9.6. + Настройка и использование загрузочных скриптов System V + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 9.6.1. Как работают загрузочные скрипты System V? + </h3> + <p> + В этой версии LFS используется специальное средство загрузки + под названием SysVinit, основанное на наборе уровней + выполнения (<span class= + "emphasis"><em>run-levels</em></span>). Процедура загрузки + может сильно отличаться от одной системы к другой; и тот + факт, что в конкретном дистрибутиве Linux все работало + должным образом, не гарантирует, что оно будут работать так + же в LFS. LFS работает по-своему, но соблюдает общепринятые + стандарты. + </p> + <p> + Существует альтернативная система загрузки, которая + называется <span class= + "command"><strong>systemd</strong></span>. Мы не будем + обсуждать этот вариант загрузки здесь. Для получения + подробного описания, посетите <a class="ulink" href= + "https://www.linux.com/training-tutorials/understanding-and-using-systemd/"> + https://www.linux.com/training-tutorials/understanding-and-using-systemd/</a>. + </p> + <p> + SysVinit (в дальнейшем именуемый <span class= + "quote">«<span class="quote">init</span>»</span>) использует + схему уровней выполнения. Существует семь уровней выполнения, + пронумерованных от 0 до 6. (На самом деле уровней больше, но + они предназначены для особых случаев и обычно не + используются. Подробности смотрите в руководстве <a class= + "ulink" href= + "https://man.archlinux.org/man/init.8">init(8)</a>). Каждый + из них соответствует действиям, которые компьютер должен + выполнить при запуске и выключении. Уровень выполнения по + умолчанию — 3. Ниже приведено описание различных уровней в + том виде, в каком они реализованы в LFS: + </p> + <div class="literallayout"> + <p> + 0: выключение компьютера<br /> + 1: однопользовательский режим<br /> + 2: зарезервировано для настройки, в остальном аналогично 3<br /> + + 3: многопользовательский режим с поддержкой сети<br /> + + 4: зарезервировано для настройки, в остальном аналогично 3<br /> + + 5: то же, что и 4, обычно используется для входа в систему с графическим интерфейсом (например, <br /> + + <span class= + "command"><strong>gdm</strong></span> от GNOME или <span class="command"><strong>lxdm</strong></span> от LXDE)<br /> + + 6: перезагрузка компьютера + </p> + </div> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Раньше, много лет назад, уровень выполнения 2 обозначался + как <span class="quote">«<span class= + "quote">многопользовательский режим без поддержки + сети</span>»</span>, тогда, несколько пользователей могли + подключаться к системе через последовательные порты. В + сегодняшних условиях это не имеет смысла, и мы обозначаем + этот уровень как <span class="quote">«<span class= + "quote">зарезервировано</span>»</span>. + </p> + </div> + </div> + <div class="configuration" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="conf-sysvinit" name="conf-sysvinit"></a>9.6.2. + Настройка Sysvinit + </h3> + <p> + Во время инициализации ядра первой запускаемой программой + (если она не переопределена в командной строке) является + <span class="command"><strong>init</strong></span>. Эта + программа считывает файл инициализации <code class= + "filename">/etc/inittab</code>. Создайте этот файл: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/inittab << "EOF" +<code class="literal"># Begin /etc/inittab + +id:3:initdefault: + +si::sysinit:/etc/rc.d/init.d/rc S + +l0:0:wait:/etc/rc.d/init.d/rc 0 +l1:S1:wait:/etc/rc.d/init.d/rc 1 +l2:2:wait:/etc/rc.d/init.d/rc 2 +l3:3:wait:/etc/rc.d/init.d/rc 3 +l4:4:wait:/etc/rc.d/init.d/rc 4 +l5:5:wait:/etc/rc.d/init.d/rc 5 +l6:6:wait:/etc/rc.d/init.d/rc 6 + +ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now + +su:S06:once:/sbin/sulogin +s1:1:respawn:/sbin/sulogin + +1:2345:respawn:/sbin/agetty --noclear tty1 9600 +2:2345:respawn:/sbin/agetty tty2 9600 +3:2345:respawn:/sbin/agetty tty3 9600 +4:2345:respawn:/sbin/agetty tty4 9600 +5:2345:respawn:/sbin/agetty tty5 9600 +6:2345:respawn:/sbin/agetty tty6 9600 + +# End /etc/inittab</code> +EOF</kbd></pre> + <p> + Пояснения по содержимому этого файла инициализации находится + на справочной странице <span class= + "emphasis"><em>inittab</em></span>. Для LFS основной командой + является <span class="command"><strong>rc</strong></span>. В + приведенном выше файле инициализации, <span class= + "command"><strong>rc</strong></span> будет выполнять все + сценарии, начинающиеся с символа S в каталоге <code class= + "filename">/etc/rc.d/rcS.d</code>, за которыми следуют все + скрипты, начинающиеся с S в каталоге <code class= + "filename">/etc/rc.d/rc?.d</code>, где знак вопроса задается + значением initdefault. + </p> + <p> + Для удобства, скрипт <span class= + "command"><strong>rc</strong></span> считывает библиотеку + функций из <code class= + "filename">/lib/lsb/init-functions</code>. Эта библиотека + также читает необязательный файл конфигурации <code class= + "filename">/etc/sysconfig/rc.site</code>. В этот файл можно + поместить любой из параметров конфигурации системы, описанных + в последующих разделах, что позволяет объединить все + параметры системы в одном файле. + </p> + <p> + Для удобства отладки скрипт functions также записывает весь + вывод в <code class="filename">/run/var/bootlog</code>. + Поскольку каталог <code class="filename">/run</code> является + tmpfs, этот файл не сохраняется при загрузке; однако его + содержимое добавляется в файл <code class= + "filename">/var/log/boot.log</code> по окончании процесса + загрузки. + </p> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="init-levels" name="init-levels"></a>9.6.2.1. + Изменение уровней выполнения + </h4> + </div> + </div> + </div> + <p> + Изменить уровень выполнения можно с помощью команды + <span class="command"><strong>init <em class= + "replaceable"><code><runlevel></code></em></strong></span>, + где <em class= + "replaceable"><code><runlevel></code></em> - это + целевой уровнем выполнения. Например, чтобы перезагрузить + компьютер, пользователь должен выполнить команду + <span class="command"><strong>init 6</strong></span>, + которая является псевдонимом для команды <span class= + "command"><strong>reboot</strong></span>. Аналогично, init + 0 является псевдонимом для команды <span class= + "command"><strong>halt</strong></span>. + </p> + <p> + В каталоге <code class="filename">/etc/rc.d</code> есть ещё + несколько каталогов, которые выглядят как <code class= + "filename">rc?.d</code> (где ? - номер уровня выполнения), + все они содержат ряд символических ссылок. Некоторые ссылки + начинаются с <span class="emphasis"><em>K</em></span>, + другие начинаются с <span class= + "emphasis"><em>S</em></span>, и все они содержат две цифры + после начальной буквы. K означает остановить (убить) + службу, а S означает запустить службу. Числа определяют + порядок выполнения сценариев от 00 до 99—чем меньше число, + тем раньше запускается скрипт. Когда <span class= + "command"><strong>init</strong></span> переключается на + другой уровень выполнения, соответствующие службы либо + запускаются, либо останавливаются, в зависимости от + выбранного уровня выполнения. + </p> + <p> + Реальные скрипты находятся в каталоге <code class= + "filename">/etc/rc.d/init.d</code>. Они выполняют + фактическую работу, и символические ссылки указывают на + них. Ссылки К и S указывают на один и тот же скрипт в + <code class="filename">/etc/rc.d/init.d</code>. Это связано + с тем, что скрипты могут вызываться с разными параметрами, + такими как <em class="parameter"><code>start</code></em>, + <em class="parameter"><code>stop</code></em>, <em class= + "parameter"><code>restart</code></em>, <em class= + "parameter"><code>reload</code></em>, и <em class= + "parameter"><code>status</code></em>. Когда встречается + ссылка K, соответствующий скрипт запускается с аргументом + <em class="parameter"><code>stop</code></em>. Когда + встречается S-ссылка, соответствующий скрипт запускается с + аргументом <em class="parameter"><code>start</code></em>. + </p> + <p> + Ниже приведено описание к аргументам скриптов: + </p> + <div class="variablelist"> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>start</code></em></span> + </dt> + <dd> + <p> + Служба запущена. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>stop</code></em></span> + </dt> + <dd> + <p> + Служба остановлена. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>restart</code></em></span> + </dt> + <dd> + <p> + Служба остановлена и снова запущена. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>reload</code></em></span> + </dt> + <dd> + <p> + Конфигурация сервиса обновлена. Используется после + изменения файла конфигурации службы, когда перезапуск + не требуется. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>status</code></em></span> + </dt> + <dd> + <p> + Сообщает, запущена ли служба и с какими ИД процессов. + </p> + </dd> + </dl> + </div> + <p> + Не стесняйтесь изменять работу процесса загрузки (в конце + концов, это ваша собственная система LFS). Приведенные + здесь файлы являются примером того, как это можно сделать. + </p> + </div> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 9.6.3. Загрузочные скрипты Udev + </h3> + <p> + Инит-скрипт <code class= + "filename">/etc/rc.d/init.d/udev</code> запускает + <span class="command"><strong>udevd</strong></span>, который + инициализирует все устройства "холодного подключения", + которые уже были созданы ядром, и ожидает выполнения всех + правил. Скрипт также отключает обработчик uevent по умолчанию + <code class="filename">/sbin/hotplug</code>. Это сделано + потому, что ядру больше не нужно обращаться к внешнему + бинарному файлу. Вместо этого <span class= + "command"><strong>udevd</strong></span> будет прослушивать + сокет netlink на предмет событий, которые вызывает ядро. + </p> + <p> + Инит-скрипт <span class= + "command"><strong>/etc/rc.d/init.d/udev_retry</strong></span> + решает задачу повторного запуска событий для подсистем, + правила которых могут зависеть от файловых систем, которые не + монтируются до запуска скрипта <span class= + "command"><strong>mountfs</strong></span> (в частности, его + вызывают <code class="filename">/usr</code> и <code class= + "filename">/var</code>). Этот скрипт запускается после + скрипта <span class= + "command"><strong>mountfs</strong></span>, поэтому эти + правила (при повторном запуске) должны сработать во второй + раз. Он настраивается в файле <code class= + "filename">/etc/sysconfig/udev_retry</code>; любые слова в + этом файле, кроме комментариев, являются именами подсистем, + которые запускаются при повторной попытке. Чтобы найти + подсистему устройства, используйте <span class= + "command"><strong>udevadm info --attribute-walk + <device></strong></span>, где <device> - это + абсолютный путь в /dev или /sys, такой как /dev/sr0 или + /sys/class/rtc. + </p> + <p> + Для получения информации о загрузке модуля ядра и udev + смотрите <a class="xref" href="#module-loading" title= + "9.3.2.3. Загрузка модуля">Раздел 9.3.2.3, «Загрузка + модуля»</a>. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="ch-config-clock" name="ch-config-clock"></a>9.6.4. + Настройка системного времени + </h3> + <p> + Скрипт <span class="command"><strong>setclock</strong></span> + считывает время с аппаратных часов, также известных как часы + BIOS или CMOS (Complementary Metal Oxide Semiconductor). Если + на аппаратных часах установлено время UTC (всемирное + скоординированное время), этот скрипт преобразует полученное + значение в локальное время, используя файл <code class= + "filename">/etc/localtime</code> (который сообщает программе + <span class="command"><strong>hwclock</strong></span>, в + какой временной зоне находится пользователь). Невозможно + определить, установленное на аппаратных часах время UTC или + же локальное, поэтому необходимо указать его вручную. + </p> + <p> + Скрипт <span class="command"><strong>setclock</strong></span> + запускается системой <span class="application">udev</span> + при загрузке, когда ядро определяет возможности аппаратного + обеспечения. Также его можно запустить вручную с параметром + stop, чтобы сохранить системное время в аппаратные часы CMOS. + </p> + <p> + Если Вы не можете вспомнить, установлено на аппаратных часах + UTC или локальное время, запустите команду <strong class= + "userinput"><code>hwclock --localtime --show</code></strong>. + Она отобразит текущее время в соответствии с аппаратными + часами. Если оно совпадает с тем, что показывают ваши + настенные/наручные часы, значит на часах CMOS установлено + локальное время. Если вывод <span class= + "command"><strong>hwclock</strong></span> не совпадает с + локальным временем, скорее всего, это UTC. Проверьте это, + добавив или вычитая нужное количество часов для вашего + часового пояса ко времени, отображаемому <span class= + "command"><strong>hwclock</strong></span>. Например, если ваш + часовой пояс это MSK, также известный как GMT +0300, то нужно + вычесть три часа из локального времени. + </p> + <p> + Измените значение переменной <code class="envar">UTC</code> + ниже на <em class="parameter"><code>0</code></em> (ноль), + если на аппаратных часах установлено <span class= + "emphasis"><em>НЕ</em></span> UTC. + </p> + <p> + Создайте новый файл <code class= + "filename">/etc/sysconfig/clock</code> выполнив: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/sysconfig/clock << "EOF" +<code class="literal"># Begin /etc/sysconfig/clock + +UTC=1 + +# Set this to any options you might need to give to hwclock, +# such as machine hardware clock type for Alphas. +CLOCKPARAMS= + +# End /etc/sysconfig/clock</code> +EOF</kbd></pre> + <p> + Хороший совет, объясняющий, как обращаться с временем в LFS, + доступен по адресу <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/hints/downloads/files/time.txt"> + https://mirror.linuxfromscratch.ru/hints/downloads/files/time.txt</a>. + Там объясняются такие вопросы, как часовые пояса, UTC и + переменная окружения <code class="envar">TZ</code>. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Параметры CLOCKPARAMS и UTC также могут быть указаны в + файле <code class="filename">/etc/sysconfig/rc.site</code>. + </p> + </div> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="ch-config-console" name="ch-config-console"></a>9.6.5. + Настройка консоли Linux + </h3> + <p> + Эта секция описывает настройку скрипта <span class= + "command"><strong>console</strong></span>, который + устанавливает раскладку клавиатуры, шрифт консоли и уровень + подробности информации, выводимой ядром на консоль. Если Вы + не планируете использовать символы, не соответствующие + стандарту ASCII (например, знак копирайта, символы фунта и + евро), и собираетесь печатать только в английской раскладке, + то можете пропустить большую часть секции. Без файла + конфигурации (или эквивалентных настроек в <code class= + "filename">rc.site</code>), скрипт <span class= + "command"><strong>console</strong></span> не будет ничего + делать. + </p> + <p> + Скрипт <span class="command"><strong>console</strong></span> + считывает конфигурацию из файла <code class= + "filename">/etc/sysconfig/console</code>. Решите для себя, + какую раскладку клавиатуры и какой шрифт намерены + использовать. В этом также могут помочь различные HOWTO для + конкретных языков; смотрите <a class="ulink" href= + "https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html">https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html</a>. + Если вы все еще сомневаетесь, посмотрите в каталогах + <code class="filename">/usr/share/keymaps</code> и + <code class="filename">/usr/share/consolefonts</code> + допустимые раскладки и экранные шрифты. Прочтите справочные + страницы <a class="ulink" href= + "https://man.archlinux.org/man/loadkeys.1">loadkeys(1)</a> и + <a class="ulink" href= + "https://man.archlinux.org/man/setfont.8">setfont(8)</a>, + чтобы определить правильные аргументы для этих программ. + </p> + <p> + Файл <code class="filename">/etc/sysconfig/console</code> + должен содержать строки вида: <code class= + "envar">ПЕРЕМЕННАЯ=значение</code>. Допустимы следующие + переменные: + </p> + <div class="variablelist"> + <dl class="variablelist"> + <dt> + <span class="term">LOGLEVEL</span> + </dt> + <dd> + <p> + Эта переменная задает уровень подробности сообщений, + посылаемых ядром на системную консоль. Значение этой + переменной передается в качестве аргумента утилите + <span class="command"><strong>dmesg -n</strong></span>. + Допустимы уровни от <code class="literal">1</code>(нет + сообщений) до <code class="literal">8</code>. По + умолчанию <code class="literal">7</code>, что является + довольно подробным. + </p> + </dd> + <dt> + <span class="term">KEYMAP</span> + </dt> + <dd> + <p> + Эта переменная указывает аргументы для программы + <span class="command"><strong>loadkeys</strong></span>, + обычно это имя загружаемой раскладки, например, + <code class="literal">it</code>. Если эта переменная не + установлена, загрузочный скрипт не будет запускать + программу loadkeys, и будет использоваться раскладка по + умолчанию. Обратите внимание, что некоторые раскладки + имеют несколько версий с одним и тем же именем (cz и + его варианты в qwerty/ и qwertz/, es в olpc/ и qwerty/ + и trf в fgGIod/ и qwerty/). В этих случаях также + следует указать родительский каталог (например, + qwerty/es), чтобы обеспечить загрузку правильной + раскладки. + </p> + </dd> + <dt> + <span class="term">KEYMAP_CORRECTIONS</span> + </dt> + <dd> + <p> + Эта (крайне редко используемая) переменная задает + аргументы для второго вызова программы <span class= + "command"><strong>loadkeys</strong></span>. Она + полезна, если стандартная раскладка вас не совсем + устраивает и необходимо внести небольшую корректировку. + Например, чтобы добавить символ евро в раскладку, + которая его не содержит, присвойте этой переменной + значение <code class="literal">euro2</code>. + </p> + </dd> + <dt> + <span class="term">FONT</span> + </dt> + <dd> + <p> + Эта переменная определяет аргументы для программы + <span class="command"><strong>setfont</strong></span>. + Обычно она включает в себя имя шрифта <code class= + "literal">-m</code> и имя загружаемой таблицы символов. + Например, чтобы загрузить шрифт <span class= + "quote">«<span class="quote">lat1-16</span>»</span> + вместе с таблицей символов <span class= + "quote">«<span class="quote">8859-1</span>»</span> + (подходит для США), установите эту переменную в + <code class="literal">lat1-16 -m 8859-1</code>. В + режиме UTF-8 ядро использует таблицу символов для + преобразования 8-битных кодов клавиш в UTF-8, поэтому + аргумент параметра "-m" должен быть установлен на + кодировку соответствующих кодов клавиш в раскладке. + </p> + </dd> + <dt> + <span class="term">UNICODE</span> + </dt> + <dd> + <p> + Присвойте этой переменной значение <code class= + "literal">1</code>, <code class="literal">yes</code> + или <code class="literal">true</code>, чтобы + переключить консоль в режим UTF-8. Это полезно при + использовании локали, основанной на UTF-8, и не + рекомендуется в иных случаях. + </p> + </dd> + <dt> + <span class="term">LEGACY_CHARSET</span> + </dt> + <dd> + <p> + Для многих раскладок клавиатуры в пакете Kbd не + существует готового Unicode-варианта. Скрипт + <span class="command"><strong>console</strong></span> + будет на лету конвертировать имеющуюся раскладку в + UTF-8, если присвоить этой переменной имя доступной + не-UTF-8 раскладки. + </p> + </dd> + </dl> + </div> + <p> + Несколько примеров: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Мы будем использовать <code class= + "literal">C.UTF-8</code> в качестве локали для + интерактивных сеансов в консоли Linux в <a class="xref" + href="#ch-config-locale" title= + "9.7. Настройка системной локали">Раздел 9.7, + «Настройка системной локали,»</a>, поэтому нам следует + установить значение переменной <code class= + "literal">UNICODE</code> в <code class= + "literal">1</code>. Консольные шрифты, поставляемые + пакетом <span class="application">Kbd</span>, + содержащие глифы для всех символов сообщений программы + в <code class="literal">C.UTF-8</code> являются + <code class="filename">LatArCyrHeb*.psfu.gz</code>, + <code class="filename">LatGrkCyr*.psfu.gz</code>, + <code class="filename">Lat2-Terminus16.psfu.gz</code> и + <code class="filename">pancyrillic.f16.psfu.gz</code> + из каталога <code class= + "filename">/usr/share/consolefonts</code> (в других + поставляемых консольных шрифтах отсутствуют глифы + некоторых символов Unicode, таких как левые/правые + кавычки и английское тире). Поэтому установите один из + них, например <code class= + "filename">Lat2-Terminus16.psfu.gz</code>, в качестве + шрифта консоли по умолчанию: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/sysconfig/console << "EOF" +<code class="literal"># Begin /etc/sysconfig/console + +UNICODE="1" +FONT="Lat2-Terminus16" + +# End /etc/sysconfig/console</code> +EOF</kbd></pre> + </li> + <li class="listitem"> + <p> + Для русскоязычных пользователей может подойти такой + вариант: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/sysconfig/console << "EOF" +<code class="literal"># Begin /etc/sysconfig/console + +UNICODE="1" +KEYMAP="ruwin_alt_sh-UTF-8" +FONT="cyr-sun16" + +# End /etc/sysconfig/console</code> +EOF</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Для поиска нужной раскладки, выполните команду: + <span class="command"><strong>find /usr/share/keymaps + -type f</strong></span> + </p> + <p> + <code class="literal">ruwin_alt-UTF-8</code> - + переключение раскладки по Alt. + </p> + <p> + <code class="literal">ruwin_alt_sh-UTF-8</code> - + переключение раскладки по Alt+Shift. + </p> + <p> + <code class="literal">ruwin_cplk-UTF-8</code> - + переключение раскладки по Caps Lock. + </p> + <p> + <code class="literal">ruwin_ct_sh-UTF-8</code> - + переключение раскладки по Ctrl+Shift. + </p> + <p> + <code class="literal">ruwin_ctrl-UTF-8</code> - + переключение раскладки по Ctrl. + </p> + <p> + Посмотреть список доступных шрифтов можно с помощью + следующей команды: <span class="command"><strong>ls + /usr/share/consolefonts</strong></span> + </p> + </div> + </li> + <li class="listitem"> + <p> + Для не-Unicode настройки необходимы только переменные + KEYMAP и FONT. Например, для польских пользователей + может подойти такой вариант: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/sysconfig/console << "EOF" +<code class="literal"># Begin /etc/sysconfig/console + +KEYMAP="pl2" +FONT="lat2a-16 -m 8859-2" + +# End /etc/sysconfig/console</code> +EOF</kbd></pre> + </li> + <li class="listitem"> + <p> + Как упоминалось выше, иногда бывает необходимо + подкорректировать раскладку. Следующий пример добавляет + символ евро к немецкой раскладке: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/sysconfig/console << "EOF" +<code class="literal"># Begin /etc/sysconfig/console + +KEYMAP="de-latin1" +KEYMAP_CORRECTIONS="euro2" +FONT="lat0-16 -m 8859-15" +UNICODE="1" + +# End /etc/sysconfig/console</code> +EOF</kbd></pre> + </li> + <li class="listitem"> + <p> + Ниже приведен пример с поддержкой Unicode для + болгарского языка, где существует стандартная раскладка + UTF-8: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/sysconfig/console << "EOF" +<code class="literal"># Begin /etc/sysconfig/console + +UNICODE="1" +KEYMAP="bg_bds-utf8" +FONT="LatArCyrHeb-16" + +# End /etc/sysconfig/console</code> +EOF</kbd></pre> + </li> + <li class="listitem"> + <p> + Из-за использования 512-символьного шрифта + LatArCyrHeb-16 в предыдущем примере, яркие цвета больше + не доступны в консоли Linux, если используется + фреймбуфер. Если Вы хотите использовать яркие цвета без + фреймбуфера и можете обходиться без символов, не + относящихся к вашему языку, тогда можно использовать + специфичный для вашего языка 256-символьный шрифт, как + показано ниже: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/sysconfig/console << "EOF" +<code class="literal"># Begin /etc/sysconfig/console + +UNICODE="1" +KEYMAP="bg_bds-utf8" +FONT="cyr-sun16" + +# End /etc/sysconfig/console</code> +EOF</kbd></pre> + </li> + <li class="listitem"> + <p> + Следующий пример демонстрирует автоматическое + преобразование раскладки из ISO-8859-15 в UTF-8 и + включает "мертвые" клавиши в режиме Unicode: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/sysconfig/console << "EOF" +<code class="literal"># Begin /etc/sysconfig/console + +UNICODE="1" +KEYMAP="de-latin1" +KEYMAP_CORRECTIONS="euro2" +LEGACY_CHARSET="iso-8859-15" +FONT="LatArCyrHeb-16 -m 8859-15" + +# End /etc/sysconfig/console</code> +EOF</kbd></pre> + </li> + <li class="listitem"> + <p> + Некоторые раскладки включают в себя "мертвые" клавиши + (то есть клавиши, нажатие которых само по себе не + приводит к появлению на экране символа, но которые + влияют на символ, генерируемый следующей клавишей) или + определяют слияние символов (например: <span class= + "quote">«<span class="quote">нажмите Ctrl+. A E чтобы + получить Æ</span>»</span> в раскладке по умолчанию). + Linux-6.7.4 правильно интерпретирует "мертвые" клавиши + и слияния, только когда исходные символы имеют 8-битные + коды. Эта особенность не влияет на раскладки для + европейских языков, поскольку в них "сливаются" два + ASCII-символа или добавляются подчеркивания к + неподчеркнутым ASCII-символам. Однако, в режиме UTF-8 + могут быть проблемы, например, для греческого языка, + когда необходимо подчеркнуть символ α. Решением в этой + ситуации будет отказ от использования UTF-8 или + установка графической системы X Window, не имеющих + подобных ограничений. + </p> + </li> + <li class="listitem"> + <p> + Для китайского, японского, корейского и некоторых + других языков невозможно настроить консоль Linux так, + чтобы она отображала все необходимые символы. + Пользователи, которым требуются эти языки, должны + установить систему X Window, шрифты, покрывающие + необходимый диапазон символов, и правильный метод ввода + (например, SCIM поддерживает большое число + разнообразных языков). + </p> + </li> + </ul> + </div> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Файл <code class="filename">/etc/sysconfig/console</code> + управляет только локализацией текстовой консоли Linux. Он + никак не влияет на настройки раскладки клавиатуры и шрифтов + в системе X Window, в сессиях SSH или на последовательном + терминале. В этих ситуациях ограничения, описанные в двух + расположенных выше абзацах, не применяются. + </p> + </div> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="ch-config-createfiles" name= + "ch-config-createfiles"></a>9.6.6. Создание файлов при + загрузке + </h3> + <p> + Иногда необходимо создавать файлы во время загрузки. + Например, часто требуется каталог <code class= + "filename">/tmp/.ICE-unix</code> . Это можно сделать, создав + запись в скрипте <code class= + "filename">/etc/sysconfig/createfiles</code>. Формат этого + файла описан в комментариях файла конфигурации по умолчанию. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="ch-config-sysklogd" name= + "ch-config-sysklogd"></a>9.6.7. Настройка скрипта Sysklogd + </h3> + <p> + Скрипт <code class="filename">sysklogd</code> вызывает + программу <span class= + "command"><strong>syslogd</strong></span> как часть + инициализации System V. Параметр <em class= + "parameter"><code>-m 0</code></em> отключает периодическую + (по умолчанию - каждые 20 минут) запись временных меток в + файлы журналов, производимую <span class= + "command"><strong>syslogd</strong></span>. Если Вам + необходимо включить периодическую запись временных меток, + отредактируйте файл <code class= + "filename">/etc/sysconfig/rc.site</code> и присвойте + переменной SYSKLOGD_PARMS требуемое значение. Например, чтобы + сбросить все параметры, присвойте переменной пустое значение: + </p> + <pre class="screen">SYSKLOGD_PARMS=</pre> + <p> + Дополнительные параметры смотрите в <strong class= + "userinput"><code>man syslogd</code></strong>. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="ch-config-site" name="ch-config-site"></a>9.6.8. Файл + rc.site + </h3> + <p> + Необязательный файл <code class= + "filename">/etc/sysconfig/rc.site</code> содержит настройки, + автоматически применяемые всеми загрузочными скриптами. Этот + файл может содержать парамеры, обычно указываемые в файлах + <code class="filename">hostname</code>, <code class= + "filename">console</code> и <code class= + "filename">clock</code> из каталога <code class= + "filename">/etc/sysconfig/</code>. Если значение одной и той + же переменной присваивается, как в одном из этих файлов, так + и в <code class="filename">rc.site</code>, приоритет имеет + значение из специализированного файла. + </p> + <p> + <code class="filename">rc.site</code> также содержит + параметры, которые могут настраивать другие аспекты процесса + загрузки. Установка переменной IPROMPT позволит выборочно + запускать загрузочные скрипты. Другие параметры описаны в + комментариях к файлу. Версия файла по умолчанию выглядит + следующим образом: + </p> + <pre class="auto"># rc.site +# Optional parameters for boot scripts. + +# Distro Information +# These values, if specified here, override the defaults +#DISTRO="Linux From Scratch" # The distro name +#DISTRO_CONTACT="lfs-dev@lists.linuxfromscratch.org" # Bug report address +#DISTRO_MINI="LFS" # Short name used in filenames for distro config + +# Define custom colors used in messages printed to the screen + +# Please consult `man console_codes` for more information +# under the "ECMA-48 Set Graphics Rendition" section +# +# Warning: when switching from a 8bit to a 9bit font, +# the linux console will reinterpret the bold (1;) to +# the top 256 glyphs of the 9bit font. This does +# not affect framebuffer consoles + +# These values, if specified here, override the defaults +#BRACKET="\\033[1;34m" # Blue +#FAILURE="\\033[1;31m" # Red +#INFO="\\033[1;36m" # Cyan +#NORMAL="\\033[0;39m" # Grey +#SUCCESS="\\033[1;32m" # Green +#WARNING="\\033[1;33m" # Yellow + +# Use a colored prefix +# These values, if specified here, override the defaults +#BMPREFIX=" " +#SUCCESS_PREFIX="${SUCCESS} * ${NORMAL} " +#FAILURE_PREFIX="${FAILURE}*****${NORMAL} " +#WARNING_PREFIX="${WARNING} *** ${NORMAL} " + +# Manually set the right edge of message output (characters) +# Useful when resetting console font during boot to override +# automatic screen width detection +#COLUMNS=120 + +# Interactive startup +#IPROMPT="yes" # Whether to display the interactive boot prompt +#itime="3" # The amount of time (in seconds) to display the prompt + +# The total length of the distro welcome string, without escape codes +#wlen=$(echo "Welcome to ${DISTRO}" | wc -c ) +#welcome_message="Welcome to ${INFO}${DISTRO}${NORMAL}" + +# The total length of the interactive string, without escape codes +#ilen=$(echo "Press 'I' to enter interactive startup" | wc -c ) +#i_message="Press '${FAILURE}I${NORMAL}' to enter interactive startup" + +# Set scripts to skip the file system check on reboot +#FASTBOOT=yes + +# Skip reading from the console +#HEADLESS=yes + +# Write out fsck progress if yes +#VERBOSE_FSCK=no + +# Speed up boot without waiting for settle in udev +#OMIT_UDEV_SETTLE=y + +# Speed up boot without waiting for settle in udev_retry +#OMIT_UDEV_RETRY_SETTLE=yes + +# Skip cleaning /tmp if yes +#SKIPTMPCLEAN=no + +# For setclock +#UTC=1 +#CLOCKPARAMS= + +# For consolelog (Note that the default, 7=debug, is noisy) +#LOGLEVEL=7 + +# For network +#HOSTNAME=mylfs + +# Delay between TERM and KILL signals at shutdown +#KILLDELAY=3 + +# Optional sysklogd parameters +#SYSKLOGD_PARMS="-m 0" + +# Console parameters +#UNICODE=1 +#KEYMAP="de-latin1" +#KEYMAP_CORRECTIONS="euro2" +#FONT="lat0-16 -m 8859-15" +#LEGACY_CHARSET= + +</pre> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm16672" name="idm16672"></a>9.6.8.1. + Настройка скриптов загрузки и завершения работы + </h4> + </div> + </div> + </div> + <p> + Загрузочные скрипты LFS загружают и завершают работу + системы довольно эффективно, но есть несколько настроек, + которые вы можете внести в файл rc.site, чтобы еще больше + повысить скорость и настроить сообщения в соответствии с + вашими предпочтениями. Чтобы сделать это, измените + настройки в приведенном выше файле <code class= + "filename">/etc/sysconfig/rc.site</code>. + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Во время работы загрузочного скрипта <code class= + "filename">udev</code> происходит вызов <span class= + "command"><strong>udev settle</strong></span>, для + завершения которого требуется некоторое время. Это + время может и не потребоваться в зависимости от + конфигурации устройств в системе. Если у вас имеются + только простые разделы и одна сетевая карта, процессу + загрузки, вероятно, не нужно будет ждать завершения + работы этой команды. Чтобы пропустить её, установите + переменную OMIT_UDEV_SETTLE=y. + </p> + </li> + <li class="listitem"> + <p> + Скрипт загрузки <code class= + "filename">udev_retry</code> также по умолчанию + запускает <span class="command"><strong>udev + settle</strong></span>. Команда необходима только + тогда, когда каталог <code class= + "filename">/var</code> смонтирован в отдельный + раздел. Это связано с тем, что часам нужен доступ к + файлу <code class= + "filename">/var/lib/hwclock/adjtime</code>. Для + других настроек также может потребоваться дождаться + завершения udev, но в большинстве случаев в этом нет + необходимости. Пропустите команду, установив + переменную OMIT_UDEV_RETRY_SETTLE=y. + </p> + </li> + <li class="listitem"> + <p> + По умолчанию проверка файловой системы выполняется в + "тихом" режиме. Это может показаться задержкой во + время процесса загрузки. Чтобы включить вывод + <span class="command"><strong>fsck</strong></span>, + установите переменную VERBOSE_FSCK=y. + </p> + </li> + <li class="listitem"> + <p> + При перезагрузке вы, возможно, захотите полностью + пропустить проверку файловой системы, <span class= + "command"><strong>fsck</strong></span>. Чтобы сделать + это, либо создайте файл <code class= + "filename">/fastboot</code>, либо перезагрузите + систему командой <span class= + "command"><strong>/sbin/shutdown -f -r + now</strong></span>. С другой стороны, вы можете + принудительно проверить все файловые системы, создав + <code class="filename">/forcefsck</code> или запустив + <span class= + "command"><strong>shutdown</strong></span> с + параметром <em class="parameter"><code>-F</code></em> + вместо <em class="parameter"><code>-f</code></em>. + </p> + <p> + Установка переменной FASTBOOT=y отключит <span class= + "command"><strong>fsck</strong></span> во время + процесса загрузки до тех пор, пока она не будет + удалена. Это не рекомендуется делать на постоянной + основе. + </p> + </li> + <li class="listitem"> + <p> + Обычно все файлы в каталоге <code class= + "filename">/tmp</code> удаляются во время загрузки. В + зависимости от количества имеющихся файлов или + каталогов это может привести к заметной задержке в + процессе загрузки. Чтобы пропустить удаление этих + файлов, установите переменную SKIPTMPCLEAN=y. + </p> + </li> + <li class="listitem"> + <p> + Во время завершения работы, <span class= + "command"><strong>init</strong></span> отправляет + сигнал TERM каждой запущенной программе (например, + agetty), ожидает установленное время (по умолчанию 3 + секунды), затем посылает каждому процессу сигнал + завершения(KILL) и снова ждёт. Этот процесс + повторяется в сценарии <span class= + "command"><strong>sendsignals</strong></span> для + любых процессов, которые не завершаются их + собственными скриптами. Задержка для <span class= + "command"><strong>init</strong></span> может быть + установлена путем передачи параметра. Например, чтобы + устранить задержку в <span class= + "command"><strong>init</strong></span>, передайте + параметр -t0 при выключении или перезагрузке + (например, <span class= + "command"><strong>/sbin/shutdown -t0 -r + now</strong></span>). Задержку для скрипта + <span class= + "command"><strong>sendsignals</strong></span> можно + пропустить, установив параметр KILLDELAY=0. + </p> + </li> + </ul> + </div> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-config-locale" name="ch-config-locale"></a>9.7. + Настройка системной локали + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Некоторые переменные окружения, необходимые для поддержки + вашего языка. Правильная их установка влияет на: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Выходные данные программ, переводятся на ваш родной язык + </p> + </li> + <li class="listitem"> + <p> + Правильную интерпретацию символов в буквы, цифры и другие + классы. Это необходимо для того, чтобы <span class= + "command"><strong>bash</strong></span> правильно принимал + не-ASCII символы, в командной строке в неанглоязычных + языковых системах + </p> + </li> + <li class="listitem"> + <p> + Правильную для страны сортировку по алфавиту + </p> + </li> + <li class="listitem"> + <p> + Подходящий формат бумаги по умолчанию + </p> + </li> + <li class="listitem"> + <p> + Правильное форматирование денежных значений, значений + времени и дат + </p> + </li> + </ul> + </div> + <p> + Ниже замените <em class= + "replaceable"><code><ll></code></em> двухбуквенным кодом + нужного вам языка (например <code class="literal">en</code>), а + <em class="replaceable"><code><CC></code></em> + двухбуквенным кодом соответствующей страны (например + <code class="literal">GB</code>). <em class= + "replaceable"><code><charmap></code></em> нужно заменить + на каноническую кодировку для выбраной вами локали. Также могут + присутствовать необязательные модификаторы, такие как + <code class="literal">@euro</code>. + </p> + <p> + Список всех локалей, поддерживаемых Glibc, можно получить, + выполнив следующую команду: + </p> + <pre class="userinput"><kbd class="command">locale -a</kbd></pre> + <p> + Таблицы символов могут иметь несколько синонимов. Например + <code class="literal">ISO-8859-1</code> так же называют + <code class="literal">iso8859-1</code> и <code class= + "literal">iso88591</code>. Некоторые приложения не могут + корректно обрабатывать различные синонимы (например + <code class="literal">UTF-8</code> должно быть указано как + <code class="literal">UTF-8</code>, а не <code class= + "literal">utf8</code>), поэтому в большинстве случаев + безопаснее всего выбрать каноническое имя для конкретной + локали. Для определения канонического имени локали выполните + команду ниже, заменив <em class="replaceable"><code><locale + name></code></em> на вывод <span class= + "command"><strong>locale -a</strong></span> для желаемой локали + (например <code class="literal">en_GB.iso88591</code> в нашем + примере). + </p> + <pre class="userinput"><kbd class="command">LC_ALL=<em class= + "replaceable"><code><locale name></code></em> locale charmap</kbd></pre> + <p> + Для локали <code class="literal">en_GB.iso88591</code> + приведенная выше команда напечатает: + </p> + <pre class="screen"><code class= + "computeroutput">ISO-8859-1</code></pre> + <p> + Окончательная настройка локали будет выглядеть так: + <code class="literal">en_GB.ISO-8859-1</code>. Важно, чтобы + локаль, найденная с помощью приведенной выше методики, была + проверена перед её добавлением в файлы запуска Bash: + </p> + <pre class="userinput"><kbd class= + "command">LC_ALL=<locale name> locale language +LC_ALL=<locale name> locale charmap +LC_ALL=<locale name> locale int_curr_symbol +LC_ALL=<locale name> locale int_prefix</kbd></pre> + <p> + Приведенные выше команды должны вывести название языка, + кодировку символов, используемую в локали, местную валюту и + телефонный код страны. Если какая-либо из команд завершается с + сообщением об ошибке, похожим на указанное ниже, это означает, + что ваша локаль либо не была установлена в Главе 8, либо не + поддерживается стандартной установкой Glibc. + </p> + <pre class="screen"><code class= + "computeroutput">locale: Cannot set LC_* to default locale: No such file or directory</code></pre> + <p> + Если это произойдет, вам следует либо установить желаемую + локаль с помощью команды <span class= + "command"><strong>localedef</strong></span>, либо рассмотреть + возможность выбора другой локали. Дальнейшие инструкции не + предполагают таких сообщений об ошибках от Glibc. + </p> + <p> + Другие пакеты также могут работать некорректно (но не всегда + будут отображать какие-либо сообщения об ошибках), если + название локали не соответствует их ожиданиям. В таких случаях + изучите, какие ещё дистрибутивы Linux поддерживают ваш язык, + возможно, это даст некоторую полезную информацию + </p> + <p> + Программа оболочки <span class= + "command"><strong>/bin/bash</strong></span> (далее именуемая + как <span class="quote">«<span class= + "quote">оболочка</span>»</span>) использует начальный набор + файлов, чтобы помочь создать среду для запуска. Каждый файл + имеет определенное назначение и может по-разному влиять на вход + в систему и интерактивное окружение. Файлы в каталоге + <code class="filename">/etc</code> содержат глобальные + настройки. Если в домашнем каталоге существуют эквивалентные + файлы, они могут переопределить глобальные настройки. + </p> + <p> + Интерактивная оболочка входа запускается после успешного входа + с использованием <span class= + "command"><strong>/bin/login</strong></span>, прочитав файл + <code class="filename">/etc/passwd</code>. Интерактивная + оболочка без входа в систему запускается из командной строки + (например, <code class="prompt">[prompt]$</code><span class= + "command"><strong>/bin/bash</strong></span>). Неинтерактивная + оболочка обычно присутствует когда выполняется скрипт оболочки. + Он неинтерактивен, поскольку обрабатывает скрипт и не ожидает + ввода пользователем между командами. + </p> + <p> + Создайте файл <code class="filename">/etc/profile</code> + <span class="phrase">после того, как будут определены + правильные настройки локали, чтобы установить желаемый + язык</span>, но вместо этого установите локаль <code class= + "literal">C.UTF-8</code> при запуске консоли Linux (чтобы + программы не выводили символы, которые консоль Linux не может + отобразить): + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/profile << "EOF" +<code class="literal"># Begin /etc/profile + +for i in $(locale); do + unset ${i%=*} +done + +if [[ "$TERM" = linux ]]; then + export LANG=C.UTF-8 +else + export LANG=<em class= +"replaceable"><code><ll>_<CC>.<charmap><@modifiers></code></em> +fi + +# End /etc/profile</code> +EOF</kbd></pre> + <p> + Локаль <code class="literal">C</code> (используемая по + умолчанию) и <code class="literal">en_US</code> (одна из + рекомендуемых для англоязычных пользователей в Соединенных + Штатах) это разные локали. <code class="literal">C</code> + использует 7-битный набор символов US-ASCII и обрабатывает + байты с установленным старшим битом как недопустимые символы. + Вот почему, например, команда <span class= + "command"><strong>ls</strong></span> заменяет их + вопросительными знаками в этой локали. Кроме того, попытка + отправить почту с такими символами из Mutt или Pine приводит к + тому что, отправляемые сообщения не соответствуют RFC + (кодировка в исходящей почте указана как <code class= + "computeroutput">unknown 8-bit</code>). Рекомендуется + использовать локаль <code class="literal">C</code>, если вы + уверены, что вам никогда не понадобятся 8-битные символы. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-config-inputrc" name="ch-config-inputrc"></a>9.8. + Создание файла /etc/inputrc + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Файл <code class="filename">inputrc</code> это конфигурационный + файл библиотеки readline, который предоставляет возможности + редактирования, когда пользователь вводит строку с терминала. + Он работает путем преобразования ввода с клавиатуры в + определенные действия. Readline используется bash и + большинством других оболочек, а также многими другими + приложениями. + </p> + <p> + Большинство людей не нуждаются в специальных настройках, + поэтому приведенная ниже команда создает глобальный + <code class="filename">/etc/inputrc</code>, используемый всеми, + кто входит в систему. Если позже вы решите, что вам нужно + переопределить значения по умолчанию для одного из + пользователей, вы можете создать файл <code class= + "filename">.inputrc</code> в домашнем каталоге пользователя и + указать в нём измененные настройки. + </p> + <p> + Дополнительные сведения о редактировании файла <code class= + "filename">inputrc</code> см. в разделе <span class= + "command"><strong>info bash</strong></span> в секции + <span class="emphasis"><em>Readline Init File</em></span>. + Также хорошим источником информации является <span class= + "command"><strong>info readline</strong></span>. + </p> + <p> + Ниже приведен общий глобальный <code class= + "filename">inputrc</code> с комментариями, объясняющими, что + делают различные параметры. Обратите внимание, что комментарии + не могут находиться в той же строке, что и команды. Создайте + файл с помощью следующей команды: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/inputrc << "EOF" +<code class="literal"># Begin /etc/inputrc +# Modified by Chris Lynn <roryo@roryo.dynup.net> + +# Разрешить перенос приглашения оболочки на следующую строку +set horizontal-scroll-mode Off + +# Разрешить 8-битный ввод +set meta-flag On +set input-meta On + +# Отключить обрезание восьмого бита в вводимых символах +set convert-meta Off + +# Выводить на экран все восемь бит +set output-meta On + +# Звуковой сигнал - none, visible или audible, соответственно никакого, видимый или слышимый +set bell-style none + +# Нижеследующие команды привязывают escape-последовательности (первый аргумент) +# к специфичным для Readline функциям (второй аргумент) +"\eOd": backward-word +"\eOc": forward-word + +# для консоли linux +"\e[1~": beginning-of-line +"\e[4~": end-of-line +"\e[5~": beginning-of-history +"\e[6~": end-of-history +"\e[3~": delete-char +"\e[2~": quoted-insert + +# для xterm +"\eOH": beginning-of-line +"\eOF": end-of-line + +# для Konsole +"\e[H": beginning-of-line +"\e[F": end-of-line + +# End /etc/inputrc</code> +EOF</kbd></pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-config-shells" name="ch-config-shells"></a>9.9. + Создание файла /etc/shells + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Файл <code class="filename">shells</code> содержит список + оболочек входа в систему. Приложения используют этот файл для + определения корректности оболочки. Для каждой оболочки должна + присутствовать одна строка, состоящая из пути к файлу оболочки + относительно корня структуры каталогов (/). + </p> + <p> + Например, <span class="command"><strong>chsh</strong></span> + обращается к этому файлу, чтобы определить, может ли + непривилегированный пользователь изменить оболочку входа для + своей учетной записи. Если имя команды не указано в списке, + пользователю будет отказано в возможности изменять оболочки. + </p> + <p> + Это обязательное условие для таких приложений, как <span class= + "application">GDM</span>, которые не заполняют список + пользователей, если ему не удаётся найти <code class= + "filename">/etc/shells</code>, или демонов FTP, которые + традиционно запрещают доступ пользователям с оболочками, не + включенными в этот файл. + </p> + <pre class="root"><kbd class= + "command">cat > /etc/shells << "EOF" +<code class="literal"># Begin /etc/shells + +/bin/sh +/bin/bash + +# End /etc/shells</code> +EOF</kbd></pre> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="chapter-bootable" name="chapter-bootable"></a>Глава + 10. Делаем систему LFS загрузочной + </h2> + </div> + </div> + </div> + <div class="chapter" lang="ru" xml:lang="ru"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-bootable-introduction" name= + "ch-bootable-introduction"></a>10.1. Введение + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Пришло время сделать систему LFS загрузочной. В этой главе + обсуждается создание файла <code class= + "filename">/etc/fstab</code>, сборка ядра для новой системы и + установка загрузчика GRUB, чтобы система LFS могла быть выбрана + для загрузки при запуске. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-bootable-fstab" name= + "ch-bootable-fstab"></a>10.2. Создание файла /etc/fstab + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Файл <code class="filename">/etc/fstab</code> используется + некоторыми программами для определения того, какие файловые + системы должны монтироваться по умолчанию, в каком порядке и + какие из них должны быть проверены (на наличие ошибок + целостности) перед монтированием. Создайте новую таблицу + файловых систем следующим образом: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/fstab << "EOF" +<code class="literal"># Begin /etc/fstab + +# file system mount-point type options dump fsck +# order + +/dev/<em class= +"replaceable"><code><xxx></code></em> / <em class= +"replaceable"><code><fff></code></em> defaults 1 1 +/dev/<em class= +"replaceable"><code><yyy></code></em> swap swap pri=1 0 0 +proc /proc proc nosuid,noexec,nodev 0 0 +sysfs /sys sysfs nosuid,noexec,nodev 0 0 +devpts /dev/pts devpts gid=5,mode=620 0 0 +tmpfs /run tmpfs defaults 0 0 +devtmpfs /dev devtmpfs mode=0755,nosuid 0 0 +tmpfs /dev/shm tmpfs nosuid,nodev 0 0 +cgroup2 /sys/fs/cgroup cgroup2 nosuid,noexec,nodev 0 0 + +# End /etc/fstab</code> +EOF</kbd></pre> + <p> + Замените <em class="replaceable"><code><xxx></code></em>, + <em class="replaceable"><code><yyy></code></em>, и + <em class="replaceable"><code><fff></code></em> + подходящими для системы значениями, например, <code class= + "filename">sda2</code>, <code class="filename">sda5</code>, и + <code class="systemitem">ext4</code>. Для получения подробной + информации о параметрах в этом файле, смотрите <a class="ulink" + href="https://man.archlinux.org/man/fstab.5">fstab(5)</a>. + </p> + <p> + Файловым системам операционных систем MS DOS и Windows (таким + как vfat, ntfs, smbfs, cifs, iso9660, udf) требуется + специальная опция utf8, чтобы не-ASCII символы в именах файлов + интерпретировались правильно. Для локалей, отличных от UTF-8, + значение <code class="option">iocharset</code> должно быть + таким же, как набор символов локали и настроено так, чтобы ядро + понимало его. Это будет работать, если соответствующее + определение набора символов (находится в разделе File systems + -> Native Language Support при настройке ядра) было + скомпилировано в ядро или собрано как модуль. Однако, если + набор символов локали — UTF-8, параметр <code class= + "option">iocharset=utf8</code> сделает файловую систему + чувствительной к регистру. Чтобы исправить это, используйте + специальную опцию <code class="option">utf8</code> вместо + <code class="option">iocharset=utf8</code> для локалей UTF-8. + Параметр <span class="quote">«<span class= + "quote">codepage</span>»</span> также необходим для файловых + систем vfat и smbfs. Он должен быть установлен на номер кодовой + страницы, используемый в MS-DOS в вашей стране. Например, для + монтирования флешек пользователь локали ru_RU.KOI8-R должен + установить следующие значения в группе параметров строки + монтирования в <code class="filename">/etc/fstab</code>: + </p> + <pre class="screen"><code class= + "literal">noauto,user,quiet,showexec,codepage=866,iocharset=koi8r</code></pre> + <p> + Соответствующий фрагмент параметров для пользователей + ru_RU.UTF-8 выглядит следующим образом: + </p> + <pre class="screen"><code class= + "literal">noauto,user,quiet,showexec,codepage=866,utf8</code></pre> + <p> + Обратите внимание, что <code class="option">iocharset</code> + используется по умолчанию для <code class= + "literal">iso8859-1</code> (которая сохраняет файловую систему + нечувствительной к регистру), а параметр <code class= + "option">utf8</code> указывает ядру, что нужно преобразовать + имена файлов с использованием UTF-8, чтобы их можно было + интерпретировать в локали UTF-8. + </p> + <p> + Также возможно указать значения кодовой страницы по умолчанию и + iocharset для некоторых файловых систем во время настройки + ядра. Соответствующие параметры называются <span class= + "quote">«<span class="quote">Default NLS Option</span>»</span> + (<code class="option">CONFIG_NLS_DEFAULT)</code>, <span class= + "quote">«<span class="quote">Default Remote NLS + Option</span>»</span> (<code class= + "option">CONFIG_SMB_NLS_DEFAULT</code>), <span class= + "quote">«<span class="quote">Default codepage for + FAT</span>»</span> (<code class= + "option">CONFIG_FAT_DEFAULT_CODEPAGE</code>) и <span class= + "quote">«<span class="quote">Default iocharset for + FAT</span>»</span> (<code class= + "option">CONFIG_FAT_DEFAULT_IOCHARSET</code>). Нет возможности + указать эти параметры для файловой системы ntfs во время + компиляции ядра. + </p> + <p> + Для некоторых типов жестких дисков можно сделать файловую + систему ext3 более устойчивой к сбоям питания. Чтобы сделать + это, добавьте параметр <code class="option">barrier=1</code> к + соответствующей записи в <code class= + "filename">/etc/fstab</code>. Чтобы проверить, поддерживает ли + диск эту опцию, запустите <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/hdparm.html"> + hdparm</a> на соответствуюшем разделе. Например, если: + </p> + <pre class="userinput"><kbd class= + "command">hdparm -I /dev/sda | grep NCQ</kbd></pre> + <p> + возвращает непустой вывод, опция поддерживается. + </p> + <p> + Примечание: разделы на основе управления логическими томами + (LVM) не могут использовать параметр <code class= + "option">barrier</code>. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-bootable-kernel" name= + "ch-bootable-kernel"></a>10.3. Linux-6.7.4 + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Этот пакет содержит ядро Linux. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время + сборки:</strong> <span class="segbody">0.6 - 20.4 SBU + (обычно около 1.4 SBU)</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">1.8 - 10.6 + GB (обычно около 2 GB)</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 10.3.1. Установка ядра + </h3> + <p> + Сборка ядра состоит из нескольких этапов—настройка, + компиляция и установка. Ознакомьтесь с файлом <code class= + "filename">README</code> в дереве исходных текстов, чтобы + узнать об альтернативных способах настройки ядра. + </p> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + Сборка ядра Linux в первый раз — одна из самых сложных + задач в LFS. Правильный выбор параметров зависит от + конкретного оборудования для целевой системы и ваших + потребностей. Для ядра доступно почти 12 000 элементов + конфигурации, хотя для большинства компьютеров требуется + только около трети из них. Редакторы LFS рекомендуют + пользователям, не знакомым с этим процессом, внимательно + следовать описанным ниже процедурам. Главная цель сейчас + состоит в том, чтобы довести первоначальную систему до + состояния, когда вы сможете войти в систему из командной + строки при последующей перезагрузке в <a class="xref" href= + "#ch-finish-reboot" title= + "11.3. Перезагрузка системы">Раздел 11.3, + «Перезагрузка системы»</a>. Вопросы оптимизация и + кастомизация второстепенны. + </p> + <p> + Для получения общей информации о конфигурации ядра смотрите + <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/hints/downloads/files/kernel-configuration.txt"> + https://mirror.linuxfromscratch.ru/hints/downloads/files/kernel-configuration.txt</a>. + Дополнительную информацию о настройке и сборке ядра можно + найти по адресу <a class="ulink" href= + "https://anduin.linuxfromscratch.org/LFS/kernel-nutshell/">https://anduin.linuxfromscratch.org/LFS/kernel-nutshell/</a>. + Эти ссылки немного устарели, но все же дают разумное + представление о процессе. + </p> + <p> + Если ничего не помогает, вы можете обратиться за помощью в + список рассылки <a class="ulink" href= + "https://www.linuxfromscratch.org/mail.html">lfs-support</a>. + Обратите внимание, что подписка необходима для того, чтобы + рассылка не содержала спама. + </p> + </div> + <p> + Подготовьте пакет к компиляции, выполнив следующую команду: + </p> + <pre class="userinput"><kbd class= + "command">make mrproper</kbd></pre> + <p> + Выполнение этой команды гарантирует, что дерево исходников + будет абсолютно чистым. Разработчики ядра рекомендуют + запускать эту команду перед каждой компиляцией. Не следует + полагаться на то, что дерево исходных текстов ядра будет + чистым после распаковки. + </p> + <p> + Существует несколько способов настройки параметров ядра. + Обычно это делается с помощью псевдографического интерфейса, + например так: + </p> + <pre class="userinput"><kbd class= + "command">make menuconfig</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значения необязательных переменных окружения + make:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>LANG=<переменная_LANG_хоста> + LC_ALL=</code></em></span> + </dt> + <dd> + <p> + Устанавливает значение локали на то, которое + используется на хосте. Это может понадобиться для + правильного отображения интерфейса menuconfig с помощью + ncurses в текстовой консоли Linux с UTF-8. + </p> + <p> + Если это необходимо, обязательно замените значение + <em class= + "replaceable"><code><переменной_LANG></code></em> + на значение переменной <code class="envar">$LANG</code> + вашего хоста. В качестве альтернативы вы можете + использовать значения переменных <code class= + "envar">$LC_ALL</code> или <code class= + "envar">$LC_CTYPE</code>. + </p> + </dd> + <dt> + <span class="term"><span class="command"><strong>make + menuconfig</strong></span></span> + </dt> + <dd> + <p> + Эта команда запускает интерфейс на основе ncurses. Для + использования других (графических) интерфейсов, + выполните <span class="command"><strong>make + help</strong></span>. + </p> + </dd> + </dl> + </div> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Хорошей отправной точкой для настройки ядра, может стать + запуск команды <span class="command"><strong>make + defconfig</strong></span>. В результате её выполнения будет + создана базовая конфигурация с учётом архитектуры системы. + </p> + <p> + Обязательно включите/отключите/настройте следующие + параметры, иначе система может работать некорректно или + вообще не загружаться: + </p> + <pre class="screen"><span class= + "blue">G</span>eneral setup ---> + [ ] <span class= +"blue">C</span>ompile the kernel with warnings as errors [WERROR] + <span class="blue">C</span>PU/Task time and stats accounting ---> + [*] <span class= +"blue">P</span>ressure stall information tracking [PSI] + [ ] <span class= +"blue">R</span>equire boot parameter to enable pressure stall information tracking + ... [PSI_DEFAULT_DISABLED] + < > <span class= +"blue">E</span>nable kernel headers through /sys/kernel/kheaders.tar.xz [IKHEADERS] + [*] <span class= +"blue">C</span>ontrol Group support ---> [CGROUPS] + [*] M<span class= +"blue">e</span>mory controller [MEMCG] + [ ] <span class= +"blue">C</span>onfigure standard kernel features (expert users) ---> [EXPERT] + +<span class="blue">P</span>rocessor type and features ---> + [*] <span class= +"blue">B</span>uild a relocatable kernel [RELOCATABLE] + [*] <span class= +"blue">R</span>andomize the address of the kernel image (KASLR) [RANDOMIZE_BASE] + +<span class="blue">G</span>eneral architecture-dependent options ---> + [*] <span class= +"blue">S</span>tack Protector buffer overflow detection [STACKPROTECTOR] + [*] <span class= +"blue">S</span>trong Stack Protector [STACKPROTECTOR_STRONG] + +<span class="blue">D</span>evice Drivers ---> + <span class="blue">G</span>eneric Driver Options ---> + [ ] <span class= +"blue">S</span>upport for uevent helper [UEVENT_HELPER] + [*] M<span class= +"blue">a</span>intain a devtmpfs filesystem to mount at /dev [DEVTMPFS] + [*] <span class= +"blue">A</span>utomount devtmpfs at /dev, after the kernel mounted the rootfs + ... [DEVTMPFS_MOUNT] + <span class="blue">G</span>raphics support ---> + < /*/M> <span class= +"blue">D</span>irect Rendering Manager (XFree86 4.1.0 and higher DRI support) ---> + ... [DRM] + # If [DRM] is selected as * or M, this must be selected: + [ /*] <span class= +"blue">E</span>nable legacy fbdev support for your modesetting driver + ... [DRM_FBDEV_EMULATION] + <span class="blue">C</span>onsole display driver support ---> + # If [DRM] is selected as * or M, this must be selected: + [ /*] <span class= +"blue">F</span>ramebuffer Console support [FRAMEBUFFER_CONSOLE]</pre> + <p> + Включите некоторые дополнительные функции, если вы + собираете 64-битную систему. Если вы используете + menuconfig, включите их в следующем порядке: сначала + <em class="parameter"><code>CONFIG_PCI_MSI</code></em>, + затем <em class= + "parameter"><code>CONFIG_IRQ_REMAP</code></em>, и, наконец, + <em class="parameter"><code>CONFIG_X86_X2APIC</code></em>, + потому что параметр отображается только после выбора его + зависимости. + </p> + <pre class="screen"><span class= + "blue">P</span>rocessor type and features ---> + [*] <span class= +"blue">S</span>upport x2apic [X86_X2APIC] + +<span class="blue">D</span>evice Drivers ---> + [*] <span class= +"blue">P</span>CI support ---> [PCI] + [*] M<span class= +"blue">e</span>ssage Signaled Interrupts (MSI and MSI-X) [PCI_MSI] + [*] <span class= +"blue">I</span>OMMU Hardware Support ---> [IOMMU_SUPPORT] + [*] <span class= +"blue">S</span>upport for Interrupt Remapping [IRQ_REMAP]</pre> + <p> + Если вы создаете 32-разрядную систему, работающую на + оборудовании с объемом оперативной памяти более 4 ГБ, + измените конфигурацию таким образом, чтобы ядро могло + использовать до 64 ГБ оперативной памяти: + </p> + <pre class="screen"><span class= + "blue">P</span>rocessor type and features ---> + H<span class="blue">i</span>gh Memory Support ---> + (X) <span class= +"blue">6</span>4GB [HIGHMEM64G]</pre> + <p> + Если раздел для системы LFS находится на NVME SSD (то есть + узлом устройства для раздела является <code class= + "filename">/dev/nvme*</code>, а не <code class= + "filename">/dev/sd*</code>), включите параметр NVME + support, иначе система LFS не будет загружаться: + </p> + <pre class="screen"><span class= + "blue">D</span>evice Drivers ---> + N<span class="blue">V</span>ME Support ---> + <*> N<span class= +"blue">V</span>M Express block device [BLK_DEV_NVME]</pre> + </div> + <p> + Есть несколько других параметров, которые могут понадобиться + в зависимости от особенностей системы. Для получения списка + необходимых опций для пакетов BLFS смотрите <a class="ulink" + href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/longindex.html#kernel-config-index"> + Список опций ядра BLFS</a>. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Если ваша хост поддерживает UEFI и вы хотите загрузить LFS + с помощью него, вам необходимо настроить некоторые + параметры ядра, следуя инструкции <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/grub-setup.html#uefi-kernel"> + на странице BLFS</a>, <span class="bold"><strong>даже если + вы будете использовать загрузчик UEFI из основного + дистрибутива</strong></span>. + </p> + </div> + <div class="variablelist"> + <p class="title"> + <strong>Пояснения для выбранных выше параметров + ядра:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class="parameter"><code>Randomize + the address of the kernel image + (KASLR)</code></em></span> + </dt> + <dd> + <p> + Включите ASLR для образа ядра, чтобы уменьшить + вероятность некоторых атак, основанных на фиксированных + адресах конфиденциальных данных или кода в ядре. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>Compile + the kernel with warnings as errors</code></em></span> + </dt> + <dd> + <p> + Включение этого параметра может привести к сбою сборки, + если компилятор и/или конфигурация отличается от + конфигурации ядра разработчиков. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>Enable + kernel headers through + /sys/kernel/kheaders.tar.xz</code></em></span> + </dt> + <dd> + <p> + Для сборки ядра с этим параметром необходим пакет + <span class="command"><strong>cpio</strong></span>. + <span class="command"><strong>cpio</strong></span> не + устанавливается в LFS. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>Configure + standard kernel features (expert + users)</code></em></span> + </dt> + <dd> + <p> + Эта опция приведет к отображению некоторых параметров в + интерфейсе конфигурации, но изменение этих параметров + может быть опасным. Не используйте её, если вы не + знаете, что делаете. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>Strong + Stack Protector</code></em></span> + </dt> + <dd> + <p> + Включите SSP для ядра. Мы включили его для всего + пользовательского пространства с помощью <em class= + "parameter"><code>--enable-default-ssp</code></em>, + настроив GCC, но ядро не использует настройки GCC по + умолчанию для SSP. Мы включаем это явно здесь. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>Support + for uevent helper</code></em></span> + </dt> + <dd> + <p> + Включение этого параметра может вызвать сбои при + управление устройствами через Udev. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>Maintain a + devtmpfs</code></em></span> + </dt> + <dd> + <p> + С помощью этого параметра узлы устройств создаются + автоматически и заполняются самим ядром, даже без + запуска Udev. Udev будет работать поверх, управляя + разрешениями и добавляя необходимые символические + ссылки. Этот элемент конфигурации необходим всем + пользователям Udev. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>Automount + devtmpfs at /dev</code></em></span> + </dt> + <dd> + <p> + Этот параметр позволит смонтировать представление ядра + устройств в /dev при переключении на корневую файловую + систему непосредственно перед запуском init. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>Enable + legacy fbdev support for your modesetting + driver</code></em> и <em class= + "parameter"><code>Framebuffer Console + support</code></em></span> + </dt> + <dd> + <p> + Они необходимы для отображения консоли Linux на + графическом процессоре, управляемом драйвером DRI + (Direct Rendering Infrastructure - инфраструктура + прямого рендеринга). Если <code class= + "option">CONFIG_DRM</code> (Direct Rendering Manager - + диспетчер прямого рендеринга) включен, вам также + следует включить эти две опции, иначе вы увидите пустой + экран после загрузки драйвера DRI. + </p> + </dd> + <dt> + <span class="term"><em class="parameter"><code>Support + x2apic</code></em></span> + </dt> + <dd> + <p> + Поддержка запуска 64-разрядного контроллера прерываний + для x86 процессоров в режиме x2APIC. x2APIC может быть + включен в BIOS на системах x86 и у ядра собранного без + этой опции будет kernel panic при загрузке. Эта опция + не окажет никакого эффекта, но и не причиняет вреда, + если x2APIC отключен в BIOS. + </p> + </dd> + </dl> + </div> + <p> + В качестве альтернативы, в некоторых ситуациях может быть + уместно использование команды <span class= + "command"><strong>make oldconfig</strong></span>. Смотрите + файл <code class="filename">README</code> для получения + дополнительной информации. + </p> + <p> + По желанию, вы можете пропустить настройку ядра, скопировав + конфигурационный файл ядра <code class= + "filename">.config</code>, из хост системы(если он доступен) + в каталог куда было распаковано ядро <code class= + "filename">linux-6.7.4</code>. Однако, мы не рекомендуем этот + вариант. Намного лучше изучить все параметры меню и создать + конфигурацию ядра с нуля. + </p> + <p> + Скомпилируйте образ ядра и модули: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + При использовании модулей, могут потребоваться файлы + конфигурации, которые расположены в каталоге <code class= + "filename">/etc/modprobe.d</code>. Информация о модулях и + конфигурации ядра находится в <a class="xref" href= + "#ch-config-udev" title= + "9.3. Взаимодействие с устройствами и модулями">Раздел 9.3, + «Взаимодействие с устройствами и модулями»</a> и в + документации к ядру <code class= + "filename">linux-6.7.4/Documentation</code>. Кроме этого, + стоит ознакомиться с руководством <a class="ulink" href= + "https://man.archlinux.org/man/modprobe.d.5">modprobe.d(5)</a>. + </p> + <p> + Если поддержка модулей не была отключена в параметрах ядра, + установите модули с помощью: + </p> + <pre class="userinput"><kbd class= + "command">make modules_install</kbd></pre> + <p> + После окончания компиляции, необходимо выполнить еще + несколько шагов для завершения установки ядра. Некоторые + файлы должны быть скопированы в каталог <code class= + "filename">/boot</code>. + </p> + <div class="admon caution"> + <h3> + Внимание + </h3> + <p> + Если вы решили использовать отдельный <code class= + "filename">/boot</code> раздел для системы LFS (возможно, + общий раздел <code class="filename">/boot</code> с + хост-дистрибутивом), скопированные ниже файлы должны быть + помещены туда. Самый простой способ сделать это — сначала + создать запись для <code class="filename">/boot</code> в + <code class="filename">/etc/fstab</code> (подробности + читайте в предыдущем разделе), затем выполните следующую + команду от имени пользователя <code class= + "systemitem">root</code> в среде <span class= + "emphasis"><em>chroot</em></span>: + </p> + <pre class="userinput"><kbd class= + "command">mount /boot</kbd></pre> + <p> + Путь к узлу устройства в команде опущен, поскольку + <span class="command"><strong>mount</strong></span> может + прочитать его из <code class="filename">/etc/fstab</code>. + </p> + </div> + <p> + Путь к образу ядра может различаться в зависимости от + используемой платформы. Имя файла, может быть произвольным, + но начинаться должно с <span class= + "emphasis"><em>vmlinuz</em></span> для обеспечения + совместимости с автоматической настройкой процесса загрузки, + описанного в следующем разделе. Следующая команда + предполагает архитектуру x86: + </p> + <pre class="userinput"><kbd class= + "command">cp -iv arch/x86/boot/bzImage /boot/vmlinuz-6.7.4-lfs-12.1</kbd></pre> + <p> + <code class="filename">System.map</code> - это символьный + файл для ядра. Он содержит точки входа каждой функции в API + ядра, а также адреса структур данных для запущенного ядра. Он + используется в качестве ресурса при исследовании проблем с + ядром. Выполните следующую команду для установки файла: + </p> + <pre class="userinput"><kbd class= + "command">cp -iv System.map /boot/System.map-6.7.4</kbd></pre> + <p> + Файл конфигурации ядра <code class="filename">.config</code> + создается на шаге <span class="command"><strong>make + menuconfig</strong></span> и содержит все параметры ядра, + которое было скомпилировано только что. Рекомендуется + сохранить этот файл на будущее: + </p> + <pre class="userinput"><kbd class= + "command">cp -iv .config /boot/config-6.7.4</kbd></pre> + <p> + Установите документацию ядра: + </p> + <pre class="userinput"><kbd class= + "command">cp -r Documentation -T /usr/share/doc/linux-6.7.4</kbd></pre> + <p> + Важно отметить, что файлы в каталоге с исходным кодом ядра не + принадлежат пользователю <span class= + "emphasis"><em>root</em></span>. Всякий раз, когда пакет + распаковывается от имени пользователя <span class= + "emphasis"><em>root</em></span> (как это и выполнялось внутри + среды chroot), файлы имеют те идентификаторы пользователя и + группы, которые были присвоены при распаковке. Обычно это не + вызывает проблем для других устанавливаемых пакетов, так как + каталог с исходниками удаляется после установки пакета. + Однако исходный код ядра Linux часто сохраняется в течение + длительного времени. Из-за этого существует вероятность того, + что идентификатор пользователя, используемый при распаковке, + будет назначен другому пользователю. В таком случае, этот + пользователь будет иметь доступ на запись в этот каталог. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + В ряде случаев требуется обновить конфигурацию ядра для + пакетов, которые будут установлены позже в BLFS. В отличии + от других пакетов, нет необходимости удалять дерево + исходного кода ядра после установки только что собранного + ядра. + </p> + <p> + Если вы планируете оставить каталог с исходным кодом ядра, + выполните команду <span class="command"><strong>chown -R + 0:0 *</strong></span> находясь в каталоге <code class= + "filename">linux-6.7.4</code>, чтобы все файлы принадлежали + пользователю <span class="emphasis"><em>root</em></span>. + </p> + </div> + <div class="admon warning"> + <h3> + Предупреждение + </h3> + <p> + Иногда, в документации к ядру, рекомендуют создать + символическую ссылку <code class= + "filename">/usr/src/linux</code> указывающую на каталог с + исходниками ядра. Эта рекомендация относится к ядрам до + версии 2.6 и <span class="emphasis"><em>не + должна</em></span> выполняться в системе LFS, так как это + может вызвать проблемы с пакетами, которые вы, возможно, + захотите собрать, когда ваша базовая система LFS будет + готова. + </p> + </div> + <div class="admon warning"> + <h3> + Предупреждение + </h3> + <p> + Заголовочные файлы в системном каталоге <code class= + "filename">include</code> (<code class= + "filename">/usr/include</code>) <span class= + "emphasis"><em>всегда</em></span> используются те, которые + применялись при компиляции Glibc, то есть подготовленные + заголовочные файлы, установленные в <a class="xref" href= + "#ch-tools-linux-headers" title= + "5.4. Заголовочные файлы Linux-6.7.4 API">Раздел 5.4, + «Заголовочные файлы Linux-6.7.4 API»</a>. Поэтому их + <span class="emphasis"><em>никогда</em></span> не следует + заменять на чистые заголовочные файлы ядра или любые другие + подготовленные заголовочные файлы. + </p> + </div> + </div> + <div class="configuration" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="conf-modprobe" name="conf-modprobe"></a>10.3.2. + Настройка порядка загрузки модулей Linux + </h3> + <p> + В большинстве случаев модули Linux загружаются автоматически, + но иногда требуется определенный порядок. Программа, которая + загружает модули, <span class= + "command"><strong>modprobe</strong></span> или <span class= + "command"><strong>insmod</strong></span>, использует файл + <code class="filename">/etc/modprobe.d/usb.conf</code> как + раз для этой цели. Этот файл должен быть заполнен таким + образом, что если USB-драйверы (ehci_hcd, ohci_hcd и + uhci_hcd) были собраны в виде модулей, то они будут загружены + в правильном порядке; ehci_hcd должен быть загружен до + ohci_hcd и uhci_hcd для того, чтобы избежать предупреждений + во время загрузки. + </p> + <p> + Создайте новый файл <code class= + "filename">/etc/modprobe.d/usb.conf</code>, выполнив + следующую команду: + </p> + <pre class="userinput"><kbd class= + "command">install -v -m755 -d /etc/modprobe.d +cat > /etc/modprobe.d/usb.conf << "EOF" +<code class="literal"># Begin /etc/modprobe.d/usb.conf + +install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true +install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true + +# End /etc/modprobe.d/usb.conf</code> +EOF</kbd></pre> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="contents-kernel" name="contents-kernel"></a>10.3.3. + Содержимое пакета Linux + </h3> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные файлы:</strong> + <span class="segbody">config-6.7.4, + vmlinuz-6.7.4-lfs-12.1, и System.map-6.7.4</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/lib/modules, + /usr/share/doc/linux-6.7.4</span> + </div> + </div> + </div> + <div class="variablelist"> + <h4> + <a id="idm17140" name="idm17140"></a>Краткое описание + </h4> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="config" name="config"></a><span class= + "term"><code class= + "filename">config-6.7.4</code></span> + </p> + </td> + <td> + <p> + Содержит в себе все параметры конфигурации ядра + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="lfskernel" name="lfskernel"></a><span class= + "term"><code class= + "filename">vmlinuz-6.7.4-lfs-12.1</code></span> + </p> + </td> + <td> + <p> + Ядро системы Linux. При включении компьютера ядро — + это первая загружаемая часть операционной системы. + Оно обнаруживает и инициализирует все компоненты + аппаратного обеспечения компьютера, делает их + доступными в виде дерева каталогов с файлами для + доступа к ним программ и превращает один процессор + в мультизадачную машину, способную выполнять + множество программ как будто одновременно. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="System.map" name= + "System.map"></a><span class="term"><code class= + "filename">System.map-6.7.4</code></span> + </p> + </td> + <td> + <p> + Список адресов и символов; файл содержит точки + входа и адреса всех функций и структур данных в + ядре + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-bootable-grub" name="ch-bootable-grub"></a>10.4. + Использование GRUB для настройки процесса загрузки + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Если ваша система поддерживает UEFI и вы хотите загрузить LFS + с помощью UEFI, вам следует пропустить инструкции на этой + странице, но все равно изучить синтаксис <code class= + "filename">grub.cfg</code> и способ указания раздела в файле + с этой страницы, а также настроить GRUB с поддержкой UEFI + используя инструкции, приведенные на <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/grub-setup.html"> + странице BLFS</a>. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 10.4.1. Введение + </h3> + <div class="admon warning"> + <h3> + Предупреждение + </h3> + <p> + При неправильной настройке GRUB ваша система перестанет + загружаться без вспомогательно загрузочного CD-ROM или + USB-накопителя. Для загрузки системы LFS этот раздел + необязателен. Вы можете просто использовать существующий + загрузчик, например Grub-Legacy, GRUB2 или LILO. + </p> + </div> + <p> + Убедитесь, что аварийный загрузочный диск готов к + <span class="quote">«<span class= + "quote">спасению</span>»</span> компьютера, если он + перестанет загружаться. Если у вас еще нет загрузочного + диска, вы можете создать его. Для этого необходимо перейти в + раздел BLFS и установить программу <strong class= + "userinput"><code>xorriso</code></strong> из пакета <a class= + "ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/multimedia/libisoburn.html"> + libisoburn</a>. + </p> + <pre class="userinput"><kbd class="command">cd /tmp +grub-mkrescue --output=grub-img.iso +xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso</kbd></pre> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 10.4.2. Соглашения об именовании GRUB + </h3> + <p> + GRUB использует собственную структуру именования дисков и + разделов в виде <span class= + "emphasis"><em>(hdn,m)</em></span>, где <span class= + "emphasis"><em>n</em></span> — номер жесткого диска, а + <span class="emphasis"><em>m</em></span> — номер раздела. + Номера жестких дисков начинаются с нуля, а номера разделов + начинаются с единицы для обычных разделов (с пяти для + расширенных разделов). Обратите внимание, что это отличается + от более ранних версий, где оба номера начинались с нуля. + Например, раздел <code class="filename">sda1</code> это + <span class="emphasis"><em>(hd0,1)</em></span> в GRUB, а + <code class="filename">sdb3</code> <span class= + "emphasis"><em>(hd1,3)</em></span>. В отличие от Linux, GRUB + не считает приводы CD-ROM жесткими дисками. Например, если + используемый CD-привода определяется как <code class= + "filename">hdb</code>, а второй жесткий диск как <code class= + "filename">hdc</code>, этот второй жесткий диск все равно + будет <span class="emphasis"><em>(hd1)</em></span>. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 10.4.3. Настройка + </h3> + <p> + GRUB записывает данные на первый физический сектор жесткого + диска. Эта область не является частью какой-либо файловой + системы. Программа в загрузочном разделе имеет доступ к + модулям GRUB расположенным по умолчанию в /boot/grub/. + </p> + <p> + Расположение загрузочного раздела - это выбор пользователя, + который влияет на конфигурацию. Одна из рекомендаций + заключается в том, чтобы иметь отдельный небольшой раздел + (примерно 200 МБ) исключительно для загрузочной информации. В + этом случае каждая сборка, будь то LFS или другой + дистрибутив, может обращаться к тем же загрузочным файлам, а + доступ может быть получен из любой загруженной системы. Если + вы решите так сделать, вам необходимо примонтировать + отдельный раздел, переместить все файлы из текущего каталога + <code class="filename">/boot</code> (например, ядро Linux, + которое вы создали на предыдущем этапе) в новый раздел. Затем + нужно отмонтировать раздел и примонтировать его заново в + каталог <code class="filename">/boot</code>. Когда вы это + сделаете, обязательно обновите данные в файле <code class= + "filename">/etc/fstab</code>. + </p> + <p> + Оставить <code class="filename">/boot</code> на текущем + разделе LFS это тоже рабочее решение, но его настройка для + загрузки нескольких систем сложнее. + </p> + <p> + Используя информацию выше, определите соответствующие точки + монтирования для корневого раздела (или загрузочного раздела, + если используется отдельный). В следующем примере + предполагается, что корневым (или отдельным загрузочным) + разделом является <code class="filename">sda2</code>. + </p> + <p> + Установите файлы GRUB в каталог <code class= + "filename">/boot/grub</code> и настройте загрузочный сектор: + </p> + <div class="admon warning"> + <h3> + Предупреждение + </h3> + <p> + Следующая команда перезапишет текущий загрузчик. Не + выполняйте эту команду, если это не нужно, например, если + вы используете сторонний менеджер загрузки для управления + главной загрузочной записью (MBR). + </p> + </div> + <pre class="userinput"><kbd class= + "command">grub-install /dev/sda</kbd></pre> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Если система была загружена с использованием UEFI, + <span class="command"><strong>grub-install</strong></span> + попытается установить файлы для <span class= + "emphasis"><em>x86_64-efi</em></span>, но эти файлы не были + установлены в <a class="xref" href= + "#chapter-building-system" title= + "Глава 8. Установка базового системного программного обеспечения"> + Глава 8</a>. Если это так, добавьте <code class= + "option">--target i386-pc</code> к приведенной выше + команде. + </p> + </div> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + <a id="grub-cfg" name="grub-cfg"></a>10.4.4. Создание файла + конфигурации GRUB + </h3> + <p> + Создайте файл <code class= + "filename">/boot/grub/grub.cfg</code>: + </p> + <pre class="userinput"><kbd class= + "command">cat > /boot/grub/grub.cfg << "EOF" +<code class="literal"># Begin /boot/grub/grub.cfg +set default=0 +set timeout=5 + +insmod part_gpt +insmod ext2 +set root=(hd0,2) + +menuentry "GNU/Linux, Linux 6.7.4-lfs-12.1" { + linux /boot/vmlinuz-6.7.4-lfs-12.1 root=/dev/sda2 ro +}</code> +EOF</kbd></pre> + <p> + Команды <span class="command"><strong>insmod</strong></span> + загружают модули <span class="application">GRUB</span> с + именами <code class="filename">part_gpt</code> и <code class= + "filename">ext2</code>. Несмотря на название, <code class= + "filename">ext2</code> фактически поддерживаются файловые + системы <code class="systemitem">ext2</code>, <code class= + "systemitem">ext3</code> и <code class= + "systemitem">ext4</code>. Команда <span class= + "command"><strong>grub-install</strong></span> встроила + некоторые модули в основной образ <span class= + "application">GRUB</span> (установленный в MBR или раздел + GRUB BIOS) для доступа к другим модулям (в <code class= + "filename">/boot/grub/i386-pc</code>), поэтому в стандартной + конфигурации эти два модуля уже встроены и эти две команды + <span class="command"><strong>insmod</strong></span> ничего + не будут делать. В любом случае, от них нет никакого вреда, + но они могут понадобиться в некоторых редких конфигурациях. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + С точки зрения <span class="application">GRUB</span>, файлы + ядра относятся к используемому разделу. Если вы + используется отдельный раздел /boot, удалите /boot из + приведенной выше строки <span class= + "emphasis"><em>linux</em></span>. Вам также потребуется + изменить строку <span class="emphasis"><em>set + root</em></span> так, чтобы она указывала на загрузочный + раздел. + </p> + </div> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Наименование раздела для GRUB может измениться, если вы + добавили или удалили некоторые диски (это могут быть как + съемные диски, так и USB-устройства). Изменение может + привести к сбою загрузки, потому что <code class= + "filename">grub.cfg</code> ссылается на <span class= + "quote">«<span class="quote">старые</span>»</span> + указатели. Чтобы не столкнуться с этой проблемой, + необходимо использовать UUID раздела и файловой системы + вместо указателя GRUB для указания устройства. Запустите + команду <span class="command"><strong>lsblk -o + UUID,PARTUUID,PATH,MOUNTPOINT</strong></span>, чтобы + посмотреть UUID ваших файловых систем (в столбце + <code class="literal">UUID</code>) и разделов (в столбце + <code class="literal">PARTUUID</code>). Затем замените + <code class="literal">set root=(hdx,y)</code> на + <code class="literal">search --set=root --fs-uuid + <em class="replaceable"><code><UUID файловой системы, в + которой установлено ядро></code></em></code>, и замените + <code class="literal">root=/dev/sda2</code> на <code class= + "literal">root=PARTUUID=<em class= + "replaceable"><code><UUID раздела, в котором собрана + LFS></code></em></code>. + </p> + <p> + Обратите внимание, что UUID раздела и UUID файловой системы + на этом разделе это совершенно разные вещи. Некоторые + онлайн-ресурсы могут предлагать вам использовать + <code class="literal">root=UUID=<em class= + "replaceable"><code><UUID файловой + системы></code></em></code> вместо <code class= + "literal">root=PARTUUID=<em class= + "replaceable"><code><UUID + раздела></code></em></code>, но для этого требуется + initramfs, которая не рассматривается в LFS. + </p> + <p> + Имя узла устройства для раздела в <code class= + "filename">/dev</code> также может измениться (хотя это + менее вероятно, чем изменение указателя GRUB). Вы можете + заменить пути к узлам устройств, таким как <code class= + "literal">/dev/sda1</code> на <code class= + "literal">PARTUUID=<em class="replaceable"><code><UUID + раздела></code></em></code>, в <code class= + "filename">/etc/fstab</code>, чтобы избежать потенциального + сбоя загрузки в случае, если имя узла устройства + изменилось. + </p> + </div> + <p> + GRUB - чрезвычайно мощная программа, предоставляющая огромное + количество вариантов загрузки с самых разных устройств, + работающих систем и типов разделов. Существует также + множество опций настройки, таких как графические + экраны-заставки, воспроизведение звука, ввод с помощью мыши и + т. д., детали этих опций выходят за рамки этой инструкции. + </p> + <div class="admon caution"> + <h3> + Внимание + </h3> + <p> + Существует команда <span class= + "application">grub-mkconfig</span>, которая может + автоматически записывать файл конфигурации. Она использует + набор скриптов из каталога /etc/grub.d/ и уничтожит любые + сделанные вами настройки. Эти скрипты предназначены в + первую очередь для обычных дистрибутивов и не рекомендуются + для LFS. Если вы устанавливаете коммерческий дистрибутив + Linux, есть вероятность, что эта программа будет запущена. + Обязательно создайте резервную копию файла grub.cfg. + </p> + </div> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="chapter-finalizing" name= + "chapter-finalizing"></a>Глава 11. Заключение + </h2> + </div> + </div> + </div> + <div class="chapter" lang="ru" xml:lang="ru"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-finish-theend" name="ch-finish-theend"></a>11.1. + Заключение + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Отлично! Новая система LFS установлена! Желаем успехов в работе + с вашей новой, блестящей, самостоятельно собранной Linux + системой. + </p> + <p> + Может быть хорошей идеей создать файл <code class= + "filename">/etc/lfs-release</code>. Имея этот файл, вам (и нам, + если вам в какой-то момент понадобится обратиться за помощью) + будет проще узнать, какая версия LFS установлена в системе. + Создайте этот файл, выполнив следующую команду: + </p> + <pre class="userinput"><kbd class= + "command">echo 12.1 > /etc/lfs-release</kbd></pre> + <p> + Следующие два файла, содержащие описание установленной системы, + могут использоваться пакетами, устанавливаемыми позже, либо в + бинарном виде, либо путем их сборки. + </p> + <p> + Первый показывает статус вашей новой системы по отношению к + стандарту LSB. Чтобы создать этот файл, выполните: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/lsb-release << "EOF" +DISTRIB_ID="Linux From Scratch" +DISTRIB_RELEASE="12.1" +DISTRIB_CODENAME="<your name here>" +DISTRIB_DESCRIPTION="Linux From Scratch" +EOF</kbd></pre> + <p> + Второй содержит примерно ту же информацию и используется + systemd и некоторыми графическими средами рабочего стола. Чтобы + создать этот файл, выполните: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/os-release << "EOF" +NAME="Linux From Scratch" +VERSION="12.1" +ID=lfs +PRETTY_NAME="Linux From Scratch 12.1" +VERSION_CODENAME="<your name here>" +HOME_URL="https://mirror.linuxfromscratch.ru/lfs/" +EOF</kbd></pre> + <p> + Обязательно настройте значения 'DISTRIB_CODENAME' и + 'VERSION_CODENAME', чтобы сделать название вашей новой системы + уникальным. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-finish-getcounted" name= + "ch-finish-getcounted"></a>11.2. Вступите в ряды + пользователей LFS + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Теперь, когда вы закончили изучение книги LFS, хотите добавить + себя в список пользователей LFS? Перейдите по ссылке <a class= + "ulink" href= + "https://www.linuxfromscratch.org/cgi-bin/lfscounter.php">https://www.linuxfromscratch.org/cgi-bin/lfscounter.php</a> + и зарегистрируйтесь. Введите ваше имя и версию LFS, которую вы + использовали. + </p> + <p> + Давайте выполним перезагрузку в систему LFS. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-finish-reboot" name="ch-finish-reboot"></a>11.3. + Перезагрузка системы + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Теперь, когда все программное обеспечение установлено, пришло + время перезагрузить ваш компьютер. Однако есть несколько вещей, + которые нужно проверить. Вот некоторые предложения: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Установить <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/firmware.html"> + прошивки</a>, если они необходимы для правильной работы + вашего оборудования. + </p> + </li> + <li class="listitem"> + <p> + Убедитесь, что установлен пароль для пользователя + <code class="systemitem">root</code>. + </p> + </li> + <li class="listitem"> + <p> + На данном этапе также уместно ознакомиться со следующими + конфигурационными файлами. + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + /etc/bashrc + </p> + </li> + <li class="listitem"> + <p> + /etc/dircolors + </p> + </li> + <li class="listitem"> + <p> + /etc/fstab + </p> + </li> + <li class="listitem"> + <p> + /etc/hosts + </p> + </li> + <li class="listitem"> + <p> + /etc/inputrc + </p> + </li> + <li class="listitem"> + <p> + /etc/profile + </p> + </li> + <li class="listitem"> + <p> + /etc/resolv.conf + </p> + </li> + <li class="listitem"> + <p> + /etc/vimrc + </p> + </li> + <li class="listitem"> + <p> + /root/.bash_profile + </p> + </li> + <li class="listitem"> + <p> + /root/.bashrc + </p> + </li> + <li class="listitem"> + <p> + /etc/sysconfig/ifconfig.eth0 + </p> + </li> + </ul> + </div> + </li> + </ul> + </div> + <p> + Теперь, после всего, давайте перейдём к первой загрузке нашей + новой системы LFS. Для начала, выйдем из chroot-окружения: + </p> + <pre class="userinput"><kbd class="command">logout</kbd></pre> + <p> + Затем размонтируйте виртуальные файловые системы: + </p> + <pre class="userinput"><kbd class= + "command">umount -v $LFS/dev/pts +mountpoint -q $LFS/dev/shm && umount -v $LFS/dev/shm +umount -v $LFS/dev +umount -v $LFS/run +umount -v $LFS/proc +umount -v $LFS/sys</kbd></pre> + <p> + Если было создано несколько разделов, размонтируйте их перед + размонтированием основного, вот так: + </p> + <pre class="userinput"><kbd class="command">umount -v $LFS/home +umount -v $LFS/usr</kbd></pre> + <p> + Размонтируйте саму файловую систему LFS: + </p> + <pre class="userinput"><kbd class= + "command">umount -v $LFS</kbd></pre> + <p> + Теперь, выполните перезагрузку системы. + </p> + <p> + Предполагается, что загрузчик GRUB был настроен ранее, поэтому + пункт меню <span class="emphasis"><em>LFS 12.1</em></span> + будет загружен автоматически. + </p> + <p> + После завершения перезагрузки, система LFS будет готова к + использованию. Вы увидите простую подсказку <span class= + "quote">«<span class="quote">login:</span> »</span>. На этом + этапе вы можете перейти к <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/">книге + BLFS</a>, где вы установите дополнительное программное + обеспечение в соответствии с вашими потребностями. + </p> + <p> + Если перезагрузка завершилась <span class= + "bold"><strong>неудачей</strong></span>, самое время устранить + эти неполадки. Советы по решению проблем с начальной загрузкой, + смотрите на странице <a class="ulink" href= + "https://www.linuxfromscratch.org/lfs/troubleshooting.html">https://www.linuxfromscratch.org/lfs/troubleshooting.html</a>. + </p> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ch-finish-whatnow" name= + "ch-finish-whatnow"></a>11.4. Дополнительные ресурсы + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Благодарим за прочтение книги LFS. Мы надеемся, что эта книга + была полезна и вы узнали больше о процессе создания системы с + нуля. + </p> + <p> + Теперь, когда система LFS установлена, вы можете задаться + вопросом <span class="quote">«<span class="quote">Что + дальше?</span>»</span> Чтобы ответить на этот вопрос, мы + составили для вас список ресурсов. + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + Обслуживание + </p> + <p> + Для всего программного обеспечения регулярно появляются + сообщения об ошибках и уведомления безопасности. + Поскольку система LFS компилируется из исходного кода, вы + должны быть в курсе таких отчетов. Существует несколько + онлайн-ресурсов, которые отслеживают такие отчеты, + некоторые из них приведены ниже: + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/lfs/advisories/"> + Рекомендации по безопасности LFS</a> + </p> + <p> + Это список уязвимостей системы безопасности, + обнаруженных в книге LFS после ее публикации. + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "https://seclists.org/oss-sec/">Список рассылки по + безопасности ПО с открытым исходным кодом</a> + </p> + <p> + Это список рассылки для обсуждения недостатков + безопасности, концепций и практик в сообществе Open + Source. + </p> + </li> + </ul> + </div> + </li> + <li class="listitem"> + <p> + Советы LFS + </p> + <p> + Советы LFS представляют собой коллекцию обучающих + материалов, собранную добровольцами сообщества LFS. + Советы доступны по адресу <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/hints/downloads/files/"> + https://mirror.linuxfromscratch.ru/hints/downloads/files/</a>. + </p> + </li> + <li class="listitem"> + <p> + Списки рассылки + </p> + <p> + Существует несколько списков рассылки LFS, на которые вы + можете подписаться, если нуждаетесь в помощи, хотите быть + в курсе последних событий, хотите внести свой вклад в + проект и многое другое. Посетите <a class="xref" href= + "#ch-intro-maillists" title= + "1.4.2. Списки рассылки">Глава 1 - Списки + рассылки</a> для получения дополнительной информации. + </p> + </li> + <li class="listitem"> + <p> + Проект документации по Linux (TLDP) + </p> + <p> + Целью проекта TLDP является сотрудничество по всем + вопросам связанным с документацией по Linux. TLDP + содержит большую коллекцию инструкций, руководств и + справочных страниц. Она расположена по адресу <a class= + "ulink" href="https://tldp.org/">https://tldp.org/</a>. + </p> + </li> + </ul> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="afterlfs" name="afterlfs"></a>11.5. Начало работы + после сборки LFS + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 11.5.1. Что делать дальше? + </h3> + <p> + Теперь, когда LFS собрана и у вас есть загружаемая система, + необходимо решить, что же делать дальше? Следующий шаг - + определиться, как использовать систему. Как правило, следует + учитывать две широкие категории: рабочая станция или сервер. + Действительно, эти категории не являются взаимоисключающими. + Приложения, необходимые для каждой категории, можно + объединить в одну систему, но пока давайте рассмотрим их по + отдельности. + </p> + <p> + Сервер — более простая категория. Как правило, это + веб-сервер, такой как <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/server/apache.html"> + Apache</a>, и сервер баз данных, например, <a class="ulink" + href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/server/mariadb.html"> + MariaDB</a>. Однако возможны и другие варианты. К этой же + категории относятся операционные системы для встраиваемых + устройств. + </p> + <p> + Рабочая станция же, гораздо сложнее. Обычно для нее требуется + среда рабочего стола, например, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/lxde/lxde.html"> + LXDE</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/xfce/xfce.html"> + XFCE</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/kde/kde.html"> + KDE</a>, или <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/gnome/gnome.html"> + Gnome</a> основанные на базовом <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/x/installing.html"> + графическом окружении</a> и наборе графических приложений, + таких как <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/xsoft/firefox.html"> + веб-браузер Firefox</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/xsoft/thunderbird.html"> + почтовый клиент Thunderbird</a>, или <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/xsoft/libreoffice.html"> + пакет офисных приложений LibreOffice</a>. Для этих приложений + требуется множество (может быть несколько сотен, в + зависимости от ваших потребностей) пакетов вспомогательных + приложений и библиотек. + </p> + <p> + В дополнение к вышесказанному, существует набор приложений + для управления системой. Все эти приложения есть в + справочнике BLFS, но не все пакеты необходимы в каждом + конкретном окружении. Например <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/basicnet/dhcpcd.html"> + клиент dhcpcd</a>, обычно не требуется на серверах или + <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/basicnet/wireless_tools.html"> + управление параметрами беспроводных сетей</a> - полезно + только для ноутбуков и других портативных систем. + </p> + </div> + <div class="sect2" lang="ru" xml:lang="ru"> + <h3 class="sect2"> + 11.5.2. Работа в базовой среде LFS + </h3> + <p> + Когда вы впервые загружаетесь в LFS, у вас есть все + необходимые инструменты для сборки дополнительных пакетов. К + сожалению, набор программ пользовательского окружения + довольно скудный. Есть несколько способов исправить это: + </p> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm17404" name="idm17404"></a>11.5.2.1. Работа + с хоста LFS в chroot + </h4> + </div> + </div> + </div> + <p> + Этот метод обеспечивает полноценную графическую среду, в + которой доступен полнофункциональный браузер и возможности + копирования/вставки. Также он позволяет использовать + приложения хоста, такие как wget, для загрузки исходных + текстов пакетов в каталог, доступный при работе в среде + chroot. + </p> + <p> + Чтобы правильно собрать пакеты в chroot, вам необходимо не + забыть смонтировать виртуальные файловые системы, если они + еще не смонтированы. Один из способов сделать это — создать + скрипт в <span class= + "bold"><strong>ХОСТОВОЙ</strong></span> системе: + </p> + <pre class="screen"><span class= + "command"><strong>cat > ~/mount-virt.sh << "EOF" +#!/bin/bash + +function mountbind +{ + if ! mountpoint $LFS/$1 >/dev/null; then + $SUDO mount --bind /$1 $LFS/$1 + echo $LFS/$1 mounted + else + echo $LFS/$1 already mounted + fi +} + +function mounttype +{ + if ! mountpoint $LFS/$1 >/dev/null; then + $SUDO mount -t $2 $3 $4 $5 $LFS/$1 + echo $LFS/$1 mounted + else + echo $LFS/$1 already mounted + fi +} + +if [ $EUID -ne 0 ]; then + SUDO=sudo +else + SUDO="" +fi + +if [ x$LFS == x ]; then + echo "LFS not set" + exit 1 +fi + +mountbind dev +mounttype dev/pts devpts devpts -o gid=5,mode=620 +mounttype proc proc proc +mounttype sys sysfs sysfs +mounttype run tmpfs run +if [ -h $LFS/dev/shm ]; then + install -v -d -m 1777 $LFS$(realpath /dev/shm) +else + mounttype dev/shm tmpfs tmpfs -o nosuid,nodev +fi + +#mountbind usr/src +#mountbind boot +#mountbind home +EOF</strong></span></pre> + <p> + Обратите внимание, что последние три команды в скрипте + закомментированы. Они пригодятся, если эти каталоги + монтируются как отдельные разделы в хост-системе и будут + монтироваться при загрузке завершенной системы LFS/BLFS. + </p> + <p> + Скрипт можно запустить с помощью <span class= + "command"><strong>bash ~/mount-virt.sh</strong></span> либо + от имени обычного пользователя (рекомендуется), либо от + имени <code class="systemitem">root</code>. При запуске от + имени обычного пользователя в хост-системе требуется sudo. + </p> + <p> + Еще одна проблема, на которую указывает скрипт, заключается + в том, где хранить загруженные файлы пакетов. Это + местоположение является произвольным. Оно может находиться + в домашнем каталоге обычного пользователя, таком как + ~/sources, или в глобальном каталоге /usr/src. Наша + рекомендация - не смешивать источники BLFS и источники LFS + в (из среды chroot) /sources. В любом случае, пакеты должны + быть доступны внутри среды chroot. + </p> + <p> + Последняя удобная функция, представленная здесь, + предназначена для упрощения процесса входа в среду chroot. + Это можно сделать с помощью псевдонима, помещенного в + пользовательский файл ~/.bashrc в хост-системе: + </p> + <pre class="screen"><span class= + "command"><strong>alias lfs='sudo /usr/sbin/chroot /mnt/lfs /usr/bin/env -i HOME=/root TERM="$TERM" PS1="\u:\w\\\\$ " +PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login'</strong></span></pre> + <p> + Этот псевдоним немного сложен для восприятия из-за кавычек + и слэшей. Всё это должно быть в одной строке. Вышеуказанная + команда была разделена на две части для презентационных + целей. + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm17420" name="idm17420"></a>11.5.2.2. Работа + удаленно по ssh + </h4> + </div> + </div> + </div> + <p> + Этот метод также предоставляет полноценную графическую + среду, но сначала требует установки <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/openssh.html"> + sshd</a> в системе LFS, обычно в chroot. Кроме этого + потребуется второй компьютер. Преимущество этого метода в + том, что он прост, поскольку не требует сложной среды + chroot. Он также использует собранное вами ядро LFS для + всех дополнительных пакетов и по-прежнему предоставляет + полную систему для установки пакетов. + </p> + <p> + Вы можете использовать команду <span class= + "command"><strong>scp</strong></span> для загрузки исходных + текстов пакетов, которые будут собраны в системе LFS. Если + вместо этого вы хотите загрузить исходные тексты + непосредственно в систему LFS, установите <a class="ulink" + href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/libtasn1.html"> + libtasn1</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/p11-kit.html"> + p11-kit</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/make-ca.html"> + make-ca</a> и <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/basicnet/wget.html"> + wget</a> в chroot (или загрузите их исходники с помощью + <span class="command"><strong>scp</strong></span> после + загрузки системы LFS). + </p> + </div> + <div class="sect3"> + <div class="titlepage"> + <div> + <div> + <h4 class="title"> + <a id="idm17431" name="idm17431"></a>11.5.2.3. Работа + из командной строки LFS + </h4> + </div> + </div> + </div> + <p> + Этот метод требует установки <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/libtasn1.html"> + libtasn1</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/p11-kit.html"> + p11-kit</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/make-ca.html"> + make-ca</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/basicnet/wget.html"> + wget</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/gpm.html"> + gpm</a> и <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/basicnet/links.html"> + links</a> (или <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/basicnet/lynx.html"> + lynx</a>) в chroot, а затем перезагрузки в новую систему + LFS. На данный момент система по умолчанию имеет шесть + виртуальных консолей. Переключать консоли так же просто, + как использовать комбинации клавиш <span class= + "keycap"><strong>Alt</strong></span>+<span class= + "keycap"><strong>Fx</strong></span> , где <span class= + "keycap"><strong>Fx</strong></span> это клавиши от + <span class="keycap"><strong>F1</strong></span> до + <span class="keycap"><strong>F6</strong></span>. Комбинации + <span class= + "keycap"><strong>Alt</strong></span>+<span class= + "keycap"><strong>→</strong></span> и <span class= + "keycap"><strong>Alt</strong></span>+<span class= + "keycap"><strong>←</strong></span> также переключают + консоль. + </p> + <p> + На этом этапе вы можете войти в две разные виртуальные + консоли и запустить браузер links или lynx в одной консоли + и bash в другой. GPM позволяет копировать команды из + браузера с помощью левой кнопки мыши, переключать консоли и + вставлять их в другую консоль. + </p> + <div class="admon note"> + <h3> + Примечание + </h3> + <p> + Вместо примечания: переключение виртуальных консолей + также может быть выполнено из экземпляра X Window с + помощью комбинации клавиш <span class= + "keycap"><strong>Ctrl</strong></span>+<span class= + "keycap"><strong>Alt</strong></span>+<span class= + "keycap"><strong>Fx</strong></span> ,но операция + копирования мышью не работает между графическим + интерфейсом и виртуальной консолью. Вы можете вернуться к + дисплею X Window с помощью комбинации <span class= + "keycap"><strong>Ctrl</strong></span>+<span class= + "keycap"><strong>Alt</strong></span>+<span class= + "keycap"><strong>Fx</strong></span> ,где <span class= + "keycap"><strong>Fx</strong></span> обычно <span class= + "keycap"><strong>F1</strong></span>, но может быть + <span class="keycap"><strong>F7</strong></span>. + </p> + </div> + </div> + </div> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h1 class="title"> + <a id="part5" name="part5"></a>Часть V. Приложения + </h1> + </div> + </div> + </div> + <div class="part"> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="appendixa" name="appendixa"></a>Приложение A. + Сокращения и условные обозначения + </h2> + </div> + </div> + </div> + <div class="appendix"> + <div class="variablelist"> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>ABI</strong></span></span> + </p> + </td> + <td> + <p> + Application Binary Interface - Двоичный (бинарный) + интерфейс приложений + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>ALFS</strong></span></span> + </p> + </td> + <td> + <p> + Automated Linux From Scratch - Проект автоматической + сборки системы LFS + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>API</strong></span></span> + </p> + </td> + <td> + <p> + Application Programming Interface - Программный + интерфейс приложения + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>ASCII</strong></span></span> + </p> + </td> + <td> + <p> + American Standard Code for Information Interchange — + Американский стандартный код для обмена информацией + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>BIOS</strong></span></span> + </p> + </td> + <td> + <p> + Basic Input/Output System - Базовая система + ввода/вывода + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>BLFS</strong></span></span> + </p> + </td> + <td> + <p> + Beyond Linux From Scratch - Проект, расширяющий + возможности Linux From Scratch + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>BSD</strong></span></span> + </p> + </td> + <td> + <p> + Berkeley Software Distribution - Система + распространения программного обеспечения в исходных + кодах + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>chroot</strong></span></span> + </p> + </td> + <td> + <p> + change root - Команда изменения корневого каталога + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>CMOS</strong></span></span> + </p> + </td> + <td> + <p> + Complementary Metal Oxide Semiconductor - + Комплементарная структура металл-оксид-полупроводник + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>COS</strong></span></span> + </p> + </td> + <td> + <p> + Class Of Service - Класс обслуживания + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>CPU</strong></span></span> + </p> + </td> + <td> + <p> + Central Processing Unit - Центральный процессор, + процессор + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>CRC</strong></span></span> + </p> + </td> + <td> + <p> + Cyclic Redundancy Check - Циклический избыточный код + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>CVS</strong></span></span> + </p> + </td> + <td> + <p> + Concurrent Versions System - Централизованная система + управления версиями + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>DHCP</strong></span></span> + </p> + </td> + <td> + <p> + Dynamic Host Configuration Protocol - Протокол + динамической настройки узла + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>DNS</strong></span></span> + </p> + </td> + <td> + <p> + Domain Name Service - Служба доменных имён + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>EGA</strong></span></span> + </p> + </td> + <td> + <p> + Enhanced Graphics Adapter - Усовершенствованный + графический адаптер + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>ELF</strong></span></span> + </p> + </td> + <td> + <p> + Executable and Linkable Format - Формат исполняемых и + компонуемых файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>EOF</strong></span></span> + </p> + </td> + <td> + <p> + End of File - Конец файла, символ конца файла + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>EQN</strong></span></span> + </p> + </td> + <td> + <p> + equation - уравнение + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>ext2</strong></span></span> + </p> + </td> + <td> + <p> + second extended file system - вторая расширенная + файловая система + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>ext3</strong></span></span> + </p> + </td> + <td> + <p> + third extended file system - третья расширенная + файловая система + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>ext4</strong></span></span> + </p> + </td> + <td> + <p> + fourth extended file system - четвёртая расширенная + файловая система + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>FAQ</strong></span></span> + </p> + </td> + <td> + <p> + Frequently Asked Questions - Часто задаваемые вопросы + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>FHS</strong></span></span> + </p> + </td> + <td> + <p> + Filesystem Hierarchy Standard - Стандарт иерархии + файловой системы + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>FIFO</strong></span></span> + </p> + </td> + <td> + <p> + First-In, First Out - Схема обслуживания очереди + "первый пришел — первым ушёл" + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>FQDN</strong></span></span> + </p> + </td> + <td> + <p> + Fully Qualified Domain Name - Полное доменное имя + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>FTP</strong></span></span> + </p> + </td> + <td> + <p> + File Transfer Protocol - Протокол передачи файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>GB</strong></span></span> + </p> + </td> + <td> + <p> + Gigabytes - Гигабайты + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>GCC</strong></span></span> + </p> + </td> + <td> + <p> + GNU Compiler Collection - Коллекция компиляторов GNU + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>GID</strong></span></span> + </p> + </td> + <td> + <p> + Group Identifier - Идентификатор группы + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>GMT</strong></span></span> + </p> + </td> + <td> + <p> + Greenwich Mean Time - Среднее время по Гринвичу + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>HTML</strong></span></span> + </p> + </td> + <td> + <p> + Hypertext Markup Language - Язык гипертекстовой + разметки + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>IDE</strong></span></span> + </p> + </td> + <td> + <p> + Integrated Drive Electronics - Интерфейс подключения + дисковых устройств + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>IEEE</strong></span></span> + </p> + </td> + <td> + <p> + Institute of Electrical and Electronic Engineers - + Институт инженеров электротехники и электроники + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>IO</strong></span></span> + </p> + </td> + <td> + <p> + Input/Output - Ввод/вывод + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>IP</strong></span></span> + </p> + </td> + <td> + <p> + Internet Protocol - Межсетевой протокол + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>IPC</strong></span></span> + </p> + </td> + <td> + <p> + Inter-Process Communication - Обмен данными между + потоками одного или разных процессов + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>IRC</strong></span></span> + </p> + </td> + <td> + <p> + Internet Relay Chat - Ретранслируемый интернет-чат + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>ISO</strong></span></span> + </p> + </td> + <td> + <p> + International Organization for Standardization - + Международная организация по стандартизации + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>ISP</strong></span></span> + </p> + </td> + <td> + <p> + Internet Service Provider - Провайдер интернет услуг + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>KB</strong></span></span> + </p> + </td> + <td> + <p> + Kilobytes - Килобайты + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>LED</strong></span></span> + </p> + </td> + <td> + <p> + Light Emitting Diode - Светодиод + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>LFS</strong></span></span> + </p> + </td> + <td> + <p> + Linux From Scratch - Линукс с нуля + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>LSB</strong></span></span> + </p> + </td> + <td> + <p> + Linux Standard Base - Совместный проект семейства + операционных систем, основанных на Linux (то есть + дистрибутивов Linux), при организации Linux Foundation, + целью которого является стандартизация их внутренней + структуры. LSB опирается на существующие спецификации, + такие как POSIX, Single UNIX Specification, и другие + открытые стандарты, при этом расширяя и дополняя их. + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>MB</strong></span></span> + </p> + </td> + <td> + <p> + Megabytes - Мегабайты + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>MBR</strong></span></span> + </p> + </td> + <td> + <p> + Master Boot Record - Главная загрузочная запись + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>MD5</strong></span></span> + </p> + </td> + <td> + <p> + Message Digest 5 - 128-битный алгоритм хеширования + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>NIC</strong></span></span> + </p> + </td> + <td> + <p> + Network Interface Card - Сетевой адаптер + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>NLS</strong></span></span> + </p> + </td> + <td> + <p> + Native Language Support - Поддержка естественного языка + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>NNTP</strong></span></span> + </p> + </td> + <td> + <p> + Network News Transport Protocol - Сетевой транспортный + протокол новостных групп + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>NPTL</strong></span></span> + </p> + </td> + <td> + <p> + Native POSIX Threading Library - Библиотека потоков + POSIX + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>OSS</strong></span></span> + </p> + </td> + <td> + <p> + Open Sound System - Унифицированный драйвер для + звуковых карт и других звуковых устройств + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>PCH</strong></span></span> + </p> + </td> + <td> + <p> + Pre-Compiled Headers - Предварительно скомпилированные + заголовки + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>PCRE</strong></span></span> + </p> + </td> + <td> + <p> + Perl Compatible Regular Expression - Регулярные + выражения, совместимые с Perl + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>PID</strong></span></span> + </p> + </td> + <td> + <p> + Process Identifier - Идентификатор процесса + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>PTY</strong></span></span> + </p> + </td> + <td> + <p> + pseudo terminal - Псевдотерминал + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>QOS</strong></span></span> + </p> + </td> + <td> + <p> + Quality Of Service - Качество обслуживания + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>RAM</strong></span></span> + </p> + </td> + <td> + <p> + Random Access Memory - Оперативная память + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>RPC</strong></span></span> + </p> + </td> + <td> + <p> + Remote Procedure Call - Удаленный вызов процедур + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>RTC</strong></span></span> + </p> + </td> + <td> + <p> + Real Time Clock - Часы реального времени + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>SBU</strong></span></span> + </p> + </td> + <td> + <p> + Standard Build Unit - Стандартная единица (времени) + сборки + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>SCO</strong></span></span> + </p> + </td> + <td> + <p> + The Santa Cruz Operation - Компания-разработчик + программного обеспечения + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>SHA1</strong></span></span> + </p> + </td> + <td> + <p> + Secure-Hash Algorithm 1 - Алгоритм криптографического + хеширования + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>TLDP</strong></span></span> + </p> + </td> + <td> + <p> + The Linux Documentation Project - Проект документации + Linux + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>TFTP</strong></span></span> + </p> + </td> + <td> + <p> + Trivial File Transfer Protocol - Простейший протокол + передачи файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>TLS</strong></span></span> + </p> + </td> + <td> + <p> + Thread-Local Storage - Локальное хранилище потока + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>UID</strong></span></span> + </p> + </td> + <td> + <p> + User Identifier - Идентификатор пользователя + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>umask</strong></span></span> + </p> + </td> + <td> + <p> + user file-creation mask - Команда, определяющая маску + создания пользовательских файлов + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>USB</strong></span></span> + </p> + </td> + <td> + <p> + Universal Serial Bus - Универсальная последовательная + шина + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>UTC</strong></span></span> + </p> + </td> + <td> + <p> + Coordinated Universal Time - Всемирное координированное + время + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>UUID</strong></span></span> + </p> + </td> + <td> + <p> + Universally Unique Identifier - Универсальный + уникальный идентификатор + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>VC</strong></span></span> + </p> + </td> + <td> + <p> + Virtual Console - Виртуальная консоль + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>VGA</strong></span></span> + </p> + </td> + <td> + <p> + Video Graphics Array - Компонентный видеоинтерфейс + </p> + </td> + </tr> + <tr> + <td> + <p> + <span class="term"><span class= + "bold"><strong>VT</strong></span></span> + </p> + </td> + <td> + <p> + Virtual Terminal - Виртуальный терминал + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="appendixb" name="appendixb"></a>Приложение B. + Благодарности + </h2> + </div> + </div> + </div> + <div class="appendix"> + <p> + Мы хотели бы поблагодарить следующих людей и организации за их + вклад в проект Linux From Scratch. + </p> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:gerard@linuxfromscratch.org">Gerard Beekmans</a> + <gerard AT linuxfromscratch D0T org> – Основатель проекта + LFS + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:bdubbs@linuxfromscratch.org">Bruce Dubbs</a> + <bdubbs AT linuxfromscratch D0T org> – Главный редактор LFS + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:jim@linuxfromscratch.org">Jim + Gifford</a> <jim AT linuxfromscratch D0T org> – Второй + руководитель проекта CLFS + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:pierre@linuxfromscratch.org">Pierre Labastie</a> + <pierre AT linuxfromscratch D0T org> – Редактор BLFS и + руководитель ALFS + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:dj@linuxfromscratch.org">DJ + Lucas</a> <dj AT linuxfromscratch D0T org> – Редактор + проектов LFS и BLFS + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:ken@linuxfromscratch.org">Ken + Moffat</a> <ken AT linuxfromscratch D0T org> – Редактор BLFS + </p> + </li> + <li class="listitem"> + <p> + Бесчисленное множество других людей из различных списков + рассылки проектов LFS и BLFS, которые помогали в создании + этой книги, присылая свои предложения, проверяя книгу и + отправляя отчеты об ошибках, инструкции и собственный опыт + установки различных пакетов. + </p> + </li> + </ul> + </div> + <h3> + <a id="idm17866" name="idm17866"></a>Переводчики + </h3> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:macana@macana-es.com">Manuel + Canales Esparcia</a> <macana AT macana-es D0T com> – Перевод + проекта LFS на испанский язык + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:johan@linuxfromscratch.org">Johan Lenglet</a> + <johan AT linuxfromscratch D0T org> – Перевод проекта LFS на + французский язык до 2008 г. + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:jmengual@linuxfromscratch.org">Jean-Philippe + Mengual</a> <jmengual AT linuxfromscratch D0T org> – Перевод + проекта LFS на французский язык 2008-2016 гг + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:jlepiller@linuxfromscratch.org">Julien Lepiller</a> + <jlepiller AT linuxfromscratch D0T org> – Перевод проекта + LFS на французский язык с 2017-по настоящее время + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:lizardo@linuxfromscratch.org">Anderson Lizardo</a> + <lizardo AT linuxfromscratch D0T org> – Перевод проекта LFS + на португальский язык до 2022 г. + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:jafesp@gmail.com">Jamenson + Espindula</a> <jafesp AT gmail D0T com> – Перевод проекта + LFS на португальский язык 2022-по настоящее время + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:tr@erdfunkstelle.de">Thomas + Reitelbach</a> <tr AT erdfunkstelle D0T de> – Перевод + проекта LFS на немецкий язык + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:info@linuxfromscratch.org.ru">Anton Maisak</a> + <info AT linuxfromscratch D0T ru> – Перевод проекта LFS на + русский язык 2018-2020 гг + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:helen@linuxfromscratch.org.ru">Elena Shevcova</a> + <info AT linuxfromscratch D0T ru> – Перевод проекта LFS на + русский язык 2018-2020 гг + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:info@linuxfromscratch.ru">Vladimir Pertsev</a> + <info AT linuxfromscratch D0T ru> – Перевод проекта LFS на + русский язык 2022-по настоящее время + </p> + </li> + </ul> + </div> + <h3> + <a id="idm17898" name="idm17898"></a>Зеркала проекта + </h3> + <h4> + <a id="idm17899" name="idm17899"></a>Североамериканские зеркала + </h4> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:scott@osuosl.org">Scott + Kveton</a> <scott AT osuosl D0T org> – зеркало + lfs.oregonstate.edu + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:lost@l-w.net">William + Astle</a> <lost AT l-w D0T net> – зеркало + ca.linuxfromscratch.org + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:eujon.sellers@gmail.com">Eujon Sellers</a> + <jpolen@rackspace.com> – зеркало lfs.introspeed.com + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:justin@knierim.org">Justin + Knierim</a> <tim@idge.net> – зеркало lfs-matrix.net + </p> + </li> + </ul> + </div> + <h4> + <a id="idm17913" name="idm17913"></a>Южноамериканские зеркала + </h4> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:manuel@linuxfromscratch.org">Manuel Canales + Esparcia</a> <manuel AT linuxfromscratch D0T org> – зеркало + lfsmirror.lfs-es.info + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:lfalcon@thymbra.com">Luis + Falcon</a> <Luis Falcon> – зеркало torredehanoi.org + </p> + </li> + </ul> + </div> + <h4> + <a id="idm17921" name="idm17921"></a>Европейские зеркала + </h4> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:guido@primerelay.net">Guido + Passet</a> <guido AT primerelay D0T net> – зеркало + nl.linuxfromscratch.org + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:baafie@planet.nl">Bastiaan + Jacques</a> <baafie AT planet D0T nl> – зеркало + lfs.pagefault.net + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:sven.cranshoff@lineo.be">Sven + Cranshoff</a> <sven D0T cranshoff AT lineo D0T be> – зеркало + lfs.lineo.be + </p> + </li> + <li class="listitem"> + <p> + Scarlet Belgium – зеркало lfs.scarlet.be + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:info@aliensoft.org">Sebastian + Faulborn</a> <info AT aliensoft D0T org> – зеркало + lfs.aliensoft.org + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:stuart@dontuse.ms">Stuart + Fox</a> <stuart AT dontuse D0T ms> – зеркало lfs.dontuse.ms + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:admin@realhost.de">Ralf + Uhlemann</a> <admin AT realhost D0T de> – зеркало + lfs.oss-mirror.org + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:Antonin.Sprinzl@tuwien.ac.at">Antonin Sprinzl</a> + <Antonin D0T Sprinzl AT tuwien D0T ac D0T at> – зеркало + at.linuxfromscratch.org + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:fredan-lfs@fredan.org">Fredrik Danerklint</a> + <fredan-lfs AT fredan D0T org> – зеркало + se.linuxfromscratch.org + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:franck@linuxpourtous.com">Franck</a> + <franck AT linuxpourtous D0T com> – зеркало + lfs.linuxpourtous.com + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:baque@cict.fr">Philippe + Baque</a> <baque AT cict D0T fr> – зеркало lfs.cict.fr + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:kontakt@wankoo.org">Benjamin + Heil</a> <kontakt AT wankoo D0T org> – зеркало + lfs.wankoo.org + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:info@linuxfromscratch.ru">Vladimir Pertsev</a> + <info AT linuxfromscratch D0T ru> – зеркало + mirror.linuxfromscratch.ru + </p> + </li> + </ul> + </div> + <h4> + <a id="idm17961" name="idm17961"></a>Азиатские зеркала + </h4> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:satit@wbac.ac.th">Satit + Phermsawang</a> <satit AT wbac D0T ac D0T th> – зеркало + lfs.phayoune.org + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:info@shizu-net.jp">Shizunet + Co.,Ltd.</a> <info AT shizu-net D0T jp> – зеркало + lfs.mirror.shizu-net.jp + </p> + </li> + </ul> + </div> + <h4> + <a id="idm17969" name="idm17969"></a>Австралийские зеркала + </h4> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:jason@dstc.edu.au">Jason + Andrade</a> <jason AT dstc D0T edu D0T au> – зеркало + au.linuxfromscratch.org + </p> + </li> + </ul> + </div> + <h3> + <a id="idm17974" name="idm17974"></a>Бывшие участники проекта + </h3> + <div class="itemizedlist"> + <ul> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:theladyskye@linuxfromscratch.org">Christine + Barczak</a> <theladyskye AT linuxfromscratch D0T org> – + Редактор книги LFS + </p> + </li> + <li class="listitem"> + <p> + Archaic <archaic@linuxfromscratch.org> – Технический + писатель/редактор LFS, руководитель проекта HLFS, редактор + BLFS, Сопровождающий проекта Советы и патчи + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:matthew@linuxfromscratch.org">Matthew Burgess</a> + <matthew AT linuxfromscratch D0T org> – Руководитель проекта + LFS, технический писатель/редактор LFS + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:nathan@linuxfromscratch.org">Nathan Coulson</a> + <nathan AT linuxfromscratch D0T org> – Сопровождающий + LFS-Bootscripts + </p> + </li> + <li class="listitem"> + <p> + Timothy Bauscher + </p> + </li> + <li class="listitem"> + <p> + Robert Briggs + </p> + </li> + <li class="listitem"> + <p> + Ian Chilton + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:jeroen@linuxfromscratch.org">Jeroen Coumans</a> + <jeroen AT linuxfromscratch D0T org> – Разработчик + веб-сайта, сопровождающий FAQ + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:manuel@linuxfromscratch.org">Manuel Canales + Esparcia</a> <manuel AT linuxfromscratch D0T org> – + Сопровождающий XML и XSL проектов LFS/BLFS/HLFS + </p> + </li> + <li class="listitem"> + <p> + Alex Groenewoud – Технический писатель LFS + </p> + </li> + <li class="listitem"> + <p> + Marc Heerdink + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:jhuntwork@linuxfromscratch.org">Jeremy Huntwork</a> + <jhuntwork AT linuxfromscratch D0T org> – Технический + писатель LFS, сопровождающий LFS LiveCD + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:bryan@linuxfromscratch.org">Bryan Kadzban</a> + <bryan AT linuxfromscratch D0T org> – Технический писатель + LFS + </p> + </li> + <li class="listitem"> + <p> + Mark Hymers + </p> + </li> + <li class="listitem"> + <p> + Seth W. Klein – Сопровождающий FAQ + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:nicholas@linuxfromscratch.org">Nicholas Leippe</a> + <nicholas AT linuxfromscratch D0T org> – Сопровождающий Wiki + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:lizardo@linuxfromscratch.org">Anderson Lizardo</a> + <lizardo AT linuxfromscratch D0T org> – Сопровождающий + движка сайта + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:randy@linuxfromscratch.org">Randy McMurchy</a> + <randy AT linuxfromscratch D0T org> – Руководитель проекта + BLFS, редактор LFS + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:dnicholson@linuxfromscratch.org">Dan Nicholson</a> + <dnicholson AT linuxfromscratch D0T org> – Редактор LFS и + BLFS + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:alexander@linuxfromscratch.org">Alexander E. + Patrakov</a> <alexander AT linuxfromscratch D0T org> – + Технический писатель LFS, редактор интернационализации LFS, + сопровождающий LFS Live CD + </p> + </li> + <li class="listitem"> + <p> + Simon Perreault + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:scot@linuxfromscratch.org">Scot Mc Pherson</a> + <scot AT linuxfromscratch D0T org> – Сопровождающий шлюза + NNTP для проекта LFS + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:renodr@linuxfromscratch.org">Douglas R. Reno</a> + <renodr AT linuxfromscratch D0T org> – Редактор Systemd + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:ryan@linuxfromscratch.org">Ryan Oliver</a> + <ryan AT linuxfromscratch D0T org> – Один из руководителей + проекта CLFS + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:gschafer@zip.com.au">Greg + Schafer</a> <gschafer AT zip D0T com D0T au> – Технический + писатель проекта LFS и архитектор методов сборки пакетов + следующего поколения, предназначенных для 64-битной + архитектуры + </p> + </li> + <li class="listitem"> + <p> + Jesse Tie-Ten-Quee – Технический писатель LFS + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:jwrober@linuxfromscratch.org">James Robertson</a> + <jwrober AT linuxfromscratch D0T org> – Сопровождающий + Bugzilla + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:tushar@linuxfromscratch.org">Tushar Teredesai</a> + <tushar AT linuxfromscratch D0T org> – Редактор книги BLFS, + руководитель проекта Советы и Патчи + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href= + "mailto:jeremy@linuxfromscratch.org">Jeremy Utley</a> + <jeremy AT linuxfromscratch D0T org> – Технический писатель + проекта LFS, сопровождающий Bugzilla, сопровождающий + LFS-Bootscripts + </p> + </li> + <li class="listitem"> + <p> + <a class="ulink" href="mailto:zwinkles@gmail.com">Zack + Winkles</a> <zwinkles AT gmail D0T com> – Технический + писатель проекта LFS + </p> + </li> + </ul> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="appendixc" name="appendixc"></a>Приложение C. + Зависимости + </h2> + </div> + </div> + </div> + <div class="appendix"> + <p> + Каждый пакет в системе LFS для правильной сборки и установки + может ссылаться на один или несколько других пакетов. Некоторые + пакеты могут иметь циклические зависимости, то есть первый пакет + зависит от второго, который в свою очередь, зависит от первого. + Именно по этой причине, указанный порядок сборки пакетов в LFS + очень важен. Цель этой страницы - документировать зависимости + каждого пакета, собранного в LFS + </p> + <p> + Для каждого собираемого пакета существует от трёх до пяти типов + зависимостей, перечисленных ниже. В первом списке перечислены + другие пакеты, которые должны быть доступны для компиляции и + установки рассматриваемого пакета. Во втором перечислены пакеты, + которые должны быть доступны, когда какие-либо программы или + библиотеки из пакета используются во время его выполнения. В + третьем списке перечислены пакеты, которые, в дополнение к + пакетам из первого списка, должны быть доступны для запуска + наборов тестов. Четвертый список зависимостей — это пакеты, + которые требуют, чтобы некий пакет был собран и установлен по + определенному пути, прежде чем они будут собраны и установлены. + </p> + <p> + Последний список зависимостей - это необязательные пакеты, + которые не рассматриваются в LFS, но могут быть полезны + пользователю. Эти пакеты могут иметь дополнительные как + обязательные, так и необязательные зависимости. Такие зависимости + - рекомендуется разрешать после завершения сборки всей системы + LFS. В некоторых случаях, повторная установка некоторых таких + пакетов рассматривается в BLFS. + </p> + <h3> + <a id="acl-dep" name="acl-dep"></a>Acl + </h3> + <div class="segmentedlist"> + <a id="acl-depends" name="acl-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Attr, Bash, Binutils, Coreutils, GCC, + Gettext, Grep, M4, Make, Perl, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="acl-rundeps" name="acl-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Attr и + Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="acl-testdeps" name="acl-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Automake, Diffutils, Findutils и + Libtool</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="acl-before" name="acl-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Coreutils, Sed, Tar и Vim</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="acl-optdeps" name="acl-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="attr-dep" name="attr-dep"></a>Attr + </h3> + <div class="segmentedlist"> + <a id="attr-depends" name="attr-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, M4, Make, Perl, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="attr-rundeps" name="attr-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="attr-testdeps" name="attr-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Automake, Diffutils, Findutils и + Libtool</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="attr-before" name="attr-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Acl, Libcap и Patch</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="attr-optdeps" name="attr-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="autoconf-dep" name="autoconf-dep"></a>Autoconf + </h3> + <div class="segmentedlist"> + <a id="autoconf-depends" name="autoconf-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Coreutils, Grep, M4, Make, Perl, + Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="autoconf-rundeps" name="autoconf-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bash, Coreutils, + Grep, M4, Make, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="autoconf-testdeps" name="autoconf-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Automake, Diffutils, Findutils, GCC и + Libtool</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="autoconf-before" name="autoconf-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Automake и Coreutils</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="autoconf-optdeps" name="autoconf-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/emacs.html"> + Emacs</a></span> + </div> + </div> + </div> + <h3> + <a id="automake-dep" name="automake-dep"></a>Automake + </h3> + <div class="segmentedlist"> + <a id="automake-depends" name="automake-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Autoconf, Bash, Coreutils, Gettext, + Grep, M4, Make, Perl, Sed, и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="automake-rundeps" name="automake-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bash, Coreutils, + Grep, M4, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="automake-testdeps" name="automake-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Binutils, Bison, Bzip2, DejaGNU, + Diffutils, Expect, Findutils, Flex, GCC, Gettext, Gzip, + Libtool и Tar</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="automake-before" name="automake-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Coreutils</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="automake-optdeps" name="automake-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="bash-dep" name="bash-dep"></a>Bash + </h3> + <div class="segmentedlist"> + <a id="bash-depends" name="bash-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Bison, Coreutils, + Diffutils, Gawk, GCC, Glibc, Grep, Make, Ncurses, Patch, + Readline, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bash-rundeps" name="bash-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc, Ncurses и + Readline</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bash-testdeps" name="bash-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Expect и Shadow</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bash-before" name="bash-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bash-optdeps" name="bash-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/x/installing.html"> + Xorg</a></span> + </div> + </div> + </div> + <h3> + <a id="bc-dep" name="bc-dep"></a>Bc + </h3> + <div class="segmentedlist"> + <a id="bc-depends" name="bc-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make и Readline</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bc-rundeps" name="bc-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc, Ncurses и + Readline</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bc-testdeps" name="bc-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Gawk</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bc-before" name="bc-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Linux</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bc-optdeps" name="bc-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="binutils-dep" name="binutils-dep"></a>Binutils + </h3> + <div class="segmentedlist"> + <a id="binutils-depends" name="binutils-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + File, Flex, Gawk, GCC, Glibc, Grep, Make, Perl, Pkgconf, Sed, + Texinfo, Zlib и Zstd</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="binutils-rundeps" name="binutils-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc, Zlib и + Zstd</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="binutils-testdeps" name="binutils-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">DejaGNU и Expect</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="binutils-before" name="binutils-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="binutils-optdeps" name="binutils-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://sourceware.org/elfutils/">Elfutils</a> и <a class= + "ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/jansson.html"> + Jansson</a></span> + </div> + </div> + </div> + <h3> + <a id="bison-dep" name="bison-dep"></a>Bison + </h3> + <div class="segmentedlist"> + <a id="bison-depends" name="bison-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, M4, Make, Perl и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bison-rundeps" name="bison-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bison-testdeps" name="bison-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Diffutils, Findutils и Flex</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bison-before" name="bison-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Kbd и Tar</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bison-optdeps" name="bison-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/doxygen.html"> + Doxygen</a></span> + </div> + </div> + </div> + <h3> + <a id="bzip2-dep" name="bzip2-dep"></a>Bzip2 + </h3> + <div class="segmentedlist"> + <a id="bzip2-depends" name="bzip2-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Make и Patch</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bzip2-rundeps" name="bzip2-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bzip2-testdeps" name="bzip2-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bzip2-before" name="bzip2-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">File и Libelf</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="bzip2-optdeps" name="bzip2-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="check-dep" name="check-dep"></a>Check + </h3> + <div class="segmentedlist"> + <a id="check-depends" name="check-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Gawk, GCC, Grep, Make, Sed и + Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="check-rundeps" name="check-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bash и Gawk</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="check-testdeps" name="check-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="check-before" name="check-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="check-optdeps" name="check-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://github.com/testing-cabal/subunit">libsubunit</a> и + <a class="ulink" href= + "http://cyberelk.net/tim/software/patchutils/">patchutils</a></span> + </div> + </div> + </div> + <h3> + <a id="coreutils-dep" name="coreutils-dep"></a>Coreutils + </h3> + <div class="segmentedlist"> + <a id="coreutils-depends" name="coreutils-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Autoconf, Automake, Bash, Binutils, + Coreutils, GCC, Gettext, Glibc, GMP, Grep, Libcap, Make, + OpenSSL, Patch, Perl, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="coreutils-rundeps" name="coreutils-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="coreutils-testdeps" name="coreutils-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Diffutils, E2fsprogs, Findutils, Shadow + и Util-linux</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="coreutils-before" name="coreutils-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Bash, Diffutils, Findutils, Man-DB и + <span class="phrase">Udev</span></span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="coreutils-optdeps" name="coreutils-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://metacpan.org/pod/Expect">Expect.pm</a> и <a class= + "ulink" href= + "https://metacpan.org/pod/IO::Tty">IO::Tty</a></span> + </div> + </div> + </div> + <h3> + <a id="dejagnu-dep" name="dejagnu-dep"></a>DejaGNU + </h3> + <div class="segmentedlist"> + <a id="dejagnu-depends" name="dejagnu-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Coreutils, Diffutils, Expect, + GCC, Grep, Make, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="dejagnu-rundeps" name="dejagnu-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Expect и + Bash</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="dejagnu-testdeps" name="dejagnu-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="dejagnu-before" name="dejagnu-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="dejagnu-optdeps" name="dejagnu-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="diffutils-dep" name="diffutils-dep"></a>Diffutils + </h3> + <div class="segmentedlist"> + <a id="diffutils-depends" name="diffutils-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Gawk, GCC, + Gettext, Glibc, Grep, Make, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="diffutils-rundeps" name="diffutils-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="diffutils-testdeps" name="diffutils-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Perl</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="diffutils-before" name="diffutils-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="diffutils-optdeps" name="diffutils-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="e2fsprogs-dep" name="e2fsprogs-dep"></a>E2fsprogs + </h3> + <div class="segmentedlist"> + <a id="e2fsprogs-depends" name="e2fsprogs-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Gzip, Make, Pkgconf, Sed, Texinfo и + Util-linux</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="e2fsprogs-rundeps" name="e2fsprogs-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc и + Util-linux</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="e2fsprogs-testdeps" name="e2fsprogs-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Procps-ng и Psmisc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="e2fsprogs-before" name="e2fsprogs-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="e2fsprogs-optdeps" name="e2fsprogs-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="expat-dep" name="expat-dep"></a>Expat + </h3> + <div class="segmentedlist"> + <a id="expat-depends" name="expat-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="expat-rundeps" name="expat-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="expat-testdeps" name="expat-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="expat-before" name="expat-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Python и XML::Parser</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="expat-optdeps" name="expat-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="expect-dep" name="expect-dep"></a>Expect + </h3> + <div class="segmentedlist"> + <a id="expect-depends" name="expect-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Grep, Make, Patch, Sed и Tcl</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="expect-rundeps" name="expect-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc и Tcl</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="expect-testdeps" name="expect-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="expect-before" name="expect-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="expect-optdeps" name="expect-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/tk.html"> + Tk</a></span> + </div> + </div> + </div> + <h3> + <a id="file-dep" name="file-dep"></a>File + </h3> + <div class="segmentedlist"> + <a id="file-depends" name="file-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Bzip2, Coreutils, + Diffutils, Gawk, GCC, Glibc, Grep, Make, Sed, Xz и + Zlib</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="file-rundeps" name="file-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc, Bzip2, Xz и + Zlib</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="file-testdeps" name="file-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="file-before" name="file-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="file-optdeps" name="file-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/libseccomp.html"> + libseccomp</a></span> + </div> + </div> + </div> + <h3> + <a id="findutils-dep" name="findutils-dep"></a>Findutils + </h3> + <div class="segmentedlist"> + <a id="findutils-depends" name="findutils-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Sed, и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="findutils-rundeps" name="findutils-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bash и + Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="findutils-testdeps" name="findutils-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">DejaGNU, Diffutils и Expect</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="findutils-before" name="findutils-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="findutils-optdeps" name="findutils-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="flex-dep" name="flex-dep"></a>Flex + </h3> + <div class="segmentedlist"> + <a id="flex-depends" name="flex-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, M4, Make, Patch, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="flex-rundeps" name="flex-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bash, Glibc и + M4</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="flex-testdeps" name="flex-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Bison и Gawk</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="flex-before" name="flex-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Binutils, IProute2, Kbd, Kmod и + Man-DB</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="flex-optdeps" name="flex-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="flit-core-dep" name="flit-core-dep"></a>Flit-Core + </h3> + <div class="segmentedlist"> + <a id="flit-core-depends" name="flit-core-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Python</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="flit-core-rundeps" name="flit-core-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Python</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="flit-core-testdeps" name="flit-core-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="flit-core-before" name="flit-core-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Wheel</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="flit-core-optdeps" name="flit-core-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/python-modules.html#pytest"> + pytest</a> и <a class="ulink" href= + "https://pypi.org/project/testpath">testpath</a></span> + </div> + </div> + </div> + <h3> + <a id="gawk-dep" name="gawk-dep"></a>Gawk + </h3> + <div class="segmentedlist"> + <a id="gawk-depends" name="gawk-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, GMP, Grep, Make, MPFR, Patch, Readline, Sed и + Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gawk-rundeps" name="gawk-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bash, Glibc и + Mpfr</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gawk-testdeps" name="gawk-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Diffutils</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gawk-before" name="gawk-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gawk-optdeps" name="gawk-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/libsigsegv.html"> + libsigsegv</a></span> + </div> + </div> + </div> + <h3> + <a id="gcc-dep" name="gcc-dep"></a>GCC + </h3> + <div class="segmentedlist"> + <a id="gcc-depends" name="gcc-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + Findutils, Gawk, GCC, Gettext, Glibc, GMP, Grep, Libxcrypt, + M4, Make, MPC, MPFR, Patch, Perl, Sed, Tar, Texinfo и + Zstd</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gcc-rundeps" name="gcc-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bash, Binutils, + Glibc, Mpc и Python</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gcc-testdeps" name="gcc-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">DejaGNU, Expect и Shadow</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gcc-before" name="gcc-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gcc-optdeps" name="gcc-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://www.gdcproject.org/">GDC</a>, <a class="ulink" href= + "https://gcc.gnu.org/wiki/GNAT">GNAT</a>, и <a class="ulink" + href="https://repo.or.cz/isl.git">ISL</a></span> + </div> + </div> + </div> + <h3> + <a id="gdbm" name="gdbm"></a>GDBM + </h3> + <div class="segmentedlist"> + <a id="gdbm-depends" name="gdbm-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + GCC, Grep, Make и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gdbm-rundeps" name="gdbm-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bash, Glibc и + Readline</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gdbm-testdeps" name="gdbm-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gdbm-before" name="gdbm-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gdbm-optdeps" name="gdbm-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="gettext-dep" name="gettext-dep"></a>Gettext + </h3> + <div class="segmentedlist"> + <a id="gettext-depends" name="gettext-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, Ncurses, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gettext-rundeps" name="gettext-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Acl, Bash, Gcc и + Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gettext-testdeps" name="gettext-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Diffutils, Perl и Tcl</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gettext-before" name="gettext-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Automake и Bison</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gettext-optdeps" name="gettext-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/libunistring.html"> + libunistring</a> и <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/libxml2.html"> + libxml2</a></span> + </div> + </div> + </div> + <h3> + <a id="glibc-dep" name="glibc-dep"></a>Glibc + </h3> + <div class="segmentedlist"> + <a id="glibc-depends" name="glibc-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Bison, Coreutils, + Diffutils, Gawk, GCC, Gettext, Grep, Gzip, Linux API Headers, + Make, Perl, Python, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="glibc-rundeps" name="glibc-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="glibc-testdeps" name="glibc-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">File</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="glibc-before" name="glibc-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="glibc-optdeps" name="glibc-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="gmp-dep" name="gmp-dep"></a>GMP + </h3> + <div class="segmentedlist"> + <a id="gmp-depends" name="gmp-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, M4, Make, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gmp-rundeps" name="gmp-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">GCC и Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gmp-testdeps" name="gmp-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gmp-before" name="gmp-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">MPFR и GCC</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gmp-optdeps" name="gmp-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="gperf-dep" name="gperf-dep"></a>Gperf + </h3> + <div class="segmentedlist"> + <a id="gperf-depends" name="gperf-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc и + Make</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gperf-rundeps" name="gperf-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">GCC и Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gperf-testdeps" name="gperf-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Diffutils и Expect</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gperf-before" name="gperf-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gperf-optdeps" name="gperf-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="grep-dep" name="grep-dep"></a>Grep + </h3> + <div class="segmentedlist"> + <a id="grep-depends" name="grep-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + GCC, Gettext, Glibc, Grep, Make, Patch, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="grep-rundeps" name="grep-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="grep-testdeps" name="grep-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Gawk</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="grep-before" name="grep-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Man-DB</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="grep-optdeps" name="grep-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/pcre2.html"> + PCRE2</a> и <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/libsigsegv.html"> + libsigsegv</a></span> + </div> + </div> + </div> + <h3> + <a id="groff-dep" name="groff-dep"></a>Groff + </h3> + <div class="segmentedlist"> + <a id="groff-depends" name="groff-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Bison, Coreutils, Gawk, + GCC, Glibc, Grep, Make, Patch, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="groff-rundeps" name="groff-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">GCC, Glibc и + Perl</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="groff-testdeps" name="groff-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="groff-before" name="groff-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Man-DB</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="groff-optdeps" name="groff-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/pst/gs.html"> + ghostscript</a> и <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/uchardet.html"> + Uchardet</a></span> + </div> + </div> + </div> + <h3> + <a id="grub-dep" name="grub-dep"></a>GRUB + </h3> + <div class="segmentedlist"> + <a id="grub-depends" name="grub-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Bison, Coreutils, + Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed, + Texinfo и Xz</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="grub-rundeps" name="grub-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bash, GCC, + Gettext, Glibc, Xz и Sed.</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="grub-testdeps" name="grub-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="grub-before" name="grub-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="grub-optdeps" name="grub-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="gzip-dep" name="gzip-dep"></a>Gzip + </h3> + <div class="segmentedlist"> + <a id="gzip-depends" name="gzip-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gzip-rundeps" name="gzip-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bash и + Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gzip-testdeps" name="gzip-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Diffutils и Less</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gzip-before" name="gzip-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Man-DB</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="gzip-optdeps" name="gzip-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="iana-etc-dep" name="iana-etc-dep"></a>Iana-Etc + </h3> + <div class="segmentedlist"> + <a id="iana-etc-depends" name="iana-etc-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Coreutils</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="iana-etc-rundeps" name="iana-etc-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="iana-etc-testdeps" name="iana-etc-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="iana-etc-before" name="iana-etc-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Perl</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="iana-etc-optdeps" name="iana-etc-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="inetutils-dep" name="inetutils-dep"></a>Inetutils + </h3> + <div class="segmentedlist"> + <a id="inetutils-depends" name="inetutils-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, Ncurses, Patch, Sed, Texinfo и Zlib</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="inetutils-rundeps" name="inetutils-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">GCC, Glibc, + Ncurses и Readline</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="inetutils-testdeps" name="inetutils-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="inetutils-before" name="inetutils-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Tar</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="inetutils-optdeps" name="inetutils-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="intltool-dep" name="intltool-dep"></a>Intltool + </h3> + <div class="segmentedlist"> + <a id="intltool-depends" name="intltool-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Gawk, Glibc, Make, Perl, Sed и + XML::Parser</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="intltool-rundeps" name="intltool-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Autoconf, + Automake, Bash, Glibc, Grep, Perl и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="intltool-testdeps" name="intltool-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Perl</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="intltool-before" name="intltool-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="intltool-optdeps" name="intltool-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="iproute2-dep" name="iproute2-dep"></a>IProute2 + </h3> + <div class="segmentedlist"> + <a id="iproute2-depends" name="iproute2-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Bison, Coreutils, Flex, GCC, + Glibc, Make, Libcap, Libelf, Linux API Headers и Zlib</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="iproute2-rundeps" name="iproute2-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bash, Coreutils, + Glibc, Libcap, Libelf и Zlib</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="iproute2-testdeps" name="iproute2-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="iproute2-before" name="iproute2-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="iproute2-optdeps" name="iproute2-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://www.oracle.com/database/technologies/related/berkeleydb.html"> + Berkeley DB</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/iptables.html"> + iptables</a>, <a class="ulink" href= + "https://github.com/libbpf/libbpf">libbpf</a>, <a class= + "ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/basicnet/libmnl.html"> + libmnl</a> и <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/basicnet/libtirpc.html"> + libtirpc</a></span> + </div> + </div> + </div> + <h3> + <a id="jinja2-dep" name="jinja2-dep"></a>Jinja2 + </h3> + <div class="segmentedlist"> + <a id="jinja2-depends" name="jinja2-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">MarkupSafe, Python, Setuptools и + Wheel</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="jinja2-rundeps" name="jinja2-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">MarkupSafe и + Python</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="jinja2-testdeps" name="jinja2-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="jinja2-before" name="jinja2-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody"><span class="phrase">Udev</span></span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="jinja2-optdeps" name="jinja2-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="kbd-dep" name="kbd-dep"></a>Kbd + </h3> + <div class="segmentedlist"> + <a id="kbd-depends" name="kbd-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Bison, Check, + Coreutils, Flex, GCC, Gettext, Glibc, Gzip, Make, Patch и + Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="kbd-rundeps" name="kbd-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bash, Coreutils и + Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="kbd-testdeps" name="kbd-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="kbd-before" name="kbd-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="kbd-optdeps" name="kbd-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/linux-pam.html"> + Linux-PAM</a></span> + </div> + </div> + </div> + <h3> + <a id="kmod-dep" name="kmod-dep"></a>Kmod + </h3> + <div class="segmentedlist"> + <a id="kmod-depends" name="kmod-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Bison, Coreutils, Flex, + GCC, Gettext, Glibc, Gzip, Make, OpenSSL, Pkg-config, Sed, Xz + и Zlib</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="kmod-rundeps" name="kmod-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc, Xz и + Zlib</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="kmod-testdeps" name="kmod-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="kmod-before" name="kmod-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody"><span class="phrase">Udev</span></span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="kmod-optdeps" name="kmod-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="less-dep" name="less-dep"></a>Less + </h3> + <div class="segmentedlist"> + <a id="less-depends" name="less-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Grep, Make, Ncurses и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="less-rundeps" name="less-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc и + Ncurses</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="less-testdeps" name="less-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="less-before" name="less-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Gzip</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="less-optdeps" name="less-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/pcre2.html"> + PCRE2</a> или <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/pcre.html"> + PCRE</a></span> + </div> + </div> + </div> + <h3> + <a id="libcap-dep" name="libcap-dep"></a>Libcap + </h3> + <div class="segmentedlist"> + <a id="libcap-depends" name="libcap-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Attr, Bash, Binutils, Coreutils, GCC, + Glibc, Perl, Make и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libcap-rundeps" name="libcap-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libcap-testdeps" name="libcap-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libcap-before" name="libcap-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">IProute2 и Shadow</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libcap-optdeps" name="libcap-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/linux-pam.html"> + Linux-PAM</a></span> + </div> + </div> + </div> + <h3> + <a id="libelf-dep" name="libelf-dep"></a>Libelf + </h3> + <div class="segmentedlist"> + <a id="libelf-depends" name="libelf-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Bzip2, Coreutils, GCC, + Glibc, Make, Xz, Zlib и Zstd</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libelf-rundeps" name="libelf-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bzip2, Glibc, Xz, + Zlib и Zstd</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libelf-testdeps" name="libelf-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libelf-before" name="libelf-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">IProute2 и Linux</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libelf-optdeps" name="libelf-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="libffi-dep" name="libffi-dep"></a>Libffi + </h3> + <div class="segmentedlist"> + <a id="libffi-depends" name="libffi-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc, + Make и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libffi-rundeps" name="libffi-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libffi-testdeps" name="libffi-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">DejaGnu</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libffi-before" name="libffi-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Python</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libffi-optdeps" name="libffi-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="libpipeline-dep" name="libpipeline-dep"></a>Libpipeline + </h3> + <div class="segmentedlist"> + <a id="libpipeline-depends" name="libpipeline-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libpipeline-rundeps" name="libpipeline-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libpipeline-testdeps" name="libpipeline-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Check и Pkgconf</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libpipeline-before" name="libpipeline-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Man-DB</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libpipeline-optdeps" name="libpipeline-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="libtool-dep" name="libtool-dep"></a>Libtool + </h3> + <div class="segmentedlist"> + <a id="libtool-depends" name="libtool-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libtool-rundeps" name="libtool-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Autoconf, + Automake, Bash, Binutils, Coreutils, File, GCC, Glibc, Grep, + Make и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libtool-testdeps" name="libtool-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Autoconf, Automake и Findutils</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libtool-before" name="libtool-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libtool-optdeps" name="libtool-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="libxcrypt-dep" name="libxcrypt-dep"></a>Libxcrypt + </h3> + <div class="segmentedlist"> + <a id="libxcrypt-depends" name="libxcrypt-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Perl и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libxcrypt-rundeps" name="libxcrypt-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libxcrypt-testdeps" name="libxcrypt-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libxcrypt-before" name="libxcrypt-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">GCC, Perl, Python, Shadow и + <span class="phrase">Udev</span></span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="libxcrypt-optdeps" name="libxcrypt-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="linux-dep" name="linux-dep"></a>Linux + </h3> + <div class="segmentedlist"> + <a id="linux-depends" name="linux-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Bc, Binutils, Coreutils, + Diffutils, Findutils, GCC, Glibc, Grep, Gzip, Kmod, Libelf, + Make, Ncurses, OpenSSL, Perl и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="linux-rundeps" name="linux-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="linux-testdeps" name="linux-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="linux-before" name="linux-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="linux-optdeps" name="linux-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/cpio.html"> + cpio</a> и <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/llvm.html"> + LLVM</a> (с Clang)</span> + </div> + </div> + </div> + <h3> + <a id="linux-api-headers-dep" name= + "linux-api-headers-dep"></a>Linux API Headers + </h3> + <div class="segmentedlist"> + <a id="linux-api-headers-depends" name= + "linux-api-headers-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Findutils, + GCC, Glibc, Grep, Gzip, Make, Perl и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="linux-api-headers-rundeps" name= + "linux-api-headers-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="linux-api-headers-testdeps" name= + "linux-api-headers-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="linux-api-headers-before" name= + "linux-api-headers-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="linux-api-headers-optdeps" name= + "linux-api-headers-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="m4-dep" name="m4-dep"></a>M4 + </h3> + <div class="segmentedlist"> + <a id="m4-depends" name="m4-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="m4-rundeps" name="m4-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bash и + Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="m4-testdeps" name="m4-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Diffutils</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="m4-before" name="m4-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Autoconf и Bison</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="m4-optdeps" name="m4-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/libsigsegv.html"> + libsigsegv</a></span> + </div> + </div> + </div> + <h3> + <a id="make-dep" name="make-dep"></a>Make + </h3> + <div class="segmentedlist"> + <a id="make-depends" name="make-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Sed, и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="make-rundeps" name="make-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="make-testdeps" name="make-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Perl и Procps-ng</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="make-before" name="make-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="make-optdeps" name="make-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/guile.html"> + Guile</a></span> + </div> + </div> + </div> + <h3> + <a id="man-db-dep" name="man-db-dep"></a>Man-DB + </h3> + <div class="segmentedlist"> + <a id="man-db-depends" name="man-db-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Bzip2, Coreutils, Flex, + GCC, GDBM, Gettext, Glibc, Grep, Groff, Gzip, Less, + Libpipeline, Make, Pkgconf, Sed, и Xz</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="man-db-rundeps" name="man-db-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bash, GDBM, Groff, + Glibc, Gzip, Less, Libpipeline и Zlib</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="man-db-testdeps" name="man-db-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Util-linux</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="man-db-before" name="man-db-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="man-db-optdeps" name="man-db-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/libseccomp.html"> + libseccomp</a> и <a class="ulink" href= + "https://po4a.org/index.php.en">po4a</a></span> + </div> + </div> + </div> + <h3> + <a id="man-pages-dep" name="man-pages-dep"></a>Man-Pages + </h3> + <div class="segmentedlist"> + <a id="man-pages-depends" name="man-pages-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Coreutils и Make</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="man-pages-rundeps" name="man-pages-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="man-pages-testdeps" name="man-pages-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="man-pages-before" name="man-pages-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="man-pages-optdeps" name="man-pages-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="markupsafe-dep" name="markupsafe-dep"></a>MarkupSafe + </h3> + <div class="segmentedlist"> + <a id="markupsafe-depends" name="markupsafe-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Python, Setuptools и Wheel</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="markupsafe-rundeps" name="markupsafe-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Python</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="markupsafe-testdeps" name="markupsafe-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="markupsafe-before" name="markupsafe-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Jinja2</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="markupsafe-optdeps" name="markupsafe-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="meson-dep" name="meson-dep"></a>Meson + </h3> + <div class="segmentedlist"> + <a id="meson-depends" name="meson-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Ninja, Python, Setuptools и + Wheel</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="meson-rundeps" name="meson-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Python</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="meson-testdeps" name="meson-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="meson-before" name="meson-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody"><span class="phrase">Udev</span></span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="meson-optdeps" name="meson-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="mpc-dep" name="mpc-dep"></a>MPC + </h3> + <div class="segmentedlist"> + <a id="mpc-depends" name="mpc-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, GMP, Make, MPFR, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="mpc-rundeps" name="mpc-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc, GMP и + MPFR</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="mpc-testdeps" name="mpc-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="mpc-before" name="mpc-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">GCC</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="mpc-optdeps" name="mpc-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="mpfr-dep" name="mpfr-dep"></a>MPFR + </h3> + <div class="segmentedlist"> + <a id="mpfr-depends" name="mpfr-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, GMP, Make, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="mpfr-rundeps" name="mpfr-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc и GMP</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="mpfr-testdeps" name="mpfr-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="mpfr-before" name="mpfr-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Gawk и GCC</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="mpfr-optdeps" name="mpfr-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="ncurses-dep" name="ncurses-dep"></a>Ncurses + </h3> + <div class="segmentedlist"> + <a id="ncurses-depends" name="ncurses-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Patch и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="ncurses-rundeps" name="ncurses-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="ncurses-testdeps" name="ncurses-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="ncurses-before" name="ncurses-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Bash, GRUB, Inetutils, Less, Procps-ng, + Psmisc, Readline, Texinfo, Util-linux и Vim</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="ncurses-optdeps" name="ncurses-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="ninja-dep" name="ninja-dep"></a>Ninja + </h3> + <div class="segmentedlist"> + <a id="ninja-depends" name="ninja-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Binutils, Coreutils, GCC и + Python</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="ninja-rundeps" name="ninja-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">GCC и Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="ninja-testdeps" name="ninja-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="ninja-before" name="ninja-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Meson</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="ninja-optdeps" name="ninja-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/asciidoc.html"> + Asciidoc</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/doxygen.html"> + Doxygen</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/emacs.html"> + Emacs</a> и <a class="ulink" href= + "https://re2c.org/">re2c</a></span> + </div> + </div> + </div> + <h3> + <a id="openssl-dep" name="openssl-dep"></a>OpenSSL + </h3> + <div class="segmentedlist"> + <a id="openssl-depends" name="openssl-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Binutils, Coreutils, GCC, Make и + Perl</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="openssl-rundeps" name="openssl-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc и + Perl</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="openssl-testdeps" name="openssl-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="openssl-before" name="openssl-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Coreutils, Kmod, Linux и <span class= + "phrase">Udev</span></span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="openssl-optdeps" name="openssl-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="patch-dep" name="patch-dep"></a>Patch + </h3> + <div class="segmentedlist"> + <a id="patch-depends" name="patch-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Attr, Bash, Binutils, Coreutils, GCC, + Glibc, Grep, Make и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="patch-rundeps" name="patch-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Attr и + Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="patch-testdeps" name="patch-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Diffutils</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="patch-before" name="patch-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="patch-optdeps" name="patch-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/ed.html"> + Ed</a></span> + </div> + </div> + </div> + <h3> + <a id="perl-dep" name="perl-dep"></a>Perl + </h3> + <div class="segmentedlist"> + <a id="perl-depends" name="perl-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Gawk, GCC, + GDBM, Glibc, Grep, Libxcrypt, Make, Sed и Zlib</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="perl-rundeps" name="perl-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">GDBM, Glibc и + Libxcrypt</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="perl-testdeps" name="perl-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Iana-Etc, Less и Procps-ng</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="perl-before" name="perl-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Autoconf</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="perl-optdeps" name="perl-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://www.oracle.com/database/technologies/related/berkeleydb.html"> + Berkeley DB</a></span> + </div> + </div> + </div> + <h3> + <a id="pkgconf-dep" name="pkgconf-dep"></a>Pkgconf + </h3> + <div class="segmentedlist"> + <a id="pkgconf-depends" name="pkgconf-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="pkgconf-rundeps" name="pkgconf-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="pkgconf-testdeps" name="pkgconf-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="pkgconf-before" name="pkgconf-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Binutils, E2fsprogs, IProute2, Kmod, + Man-DB, Procps-ng, Python, <span class="phrase">Udev</span> и + Util-linux</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="pkgconf-optdeps" name="pkgconf-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="procps-dep" name="procps-dep"></a>Procps-ng + </h3> + <div class="segmentedlist"> + <a id="procps-depends" name="procps-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc, + Make, Ncurses, <span class="phrase">и</span> Pkgconf</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="procps-rundeps" name="procps-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="procps-testdeps" name="procps-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">DejaGNU</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="procps-before" name="procps-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="procps-optdeps" name="procps-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><span class="phrase"><a class="ulink" + href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/elogind.html"> + elogind</a></span></span> + </div> + </div> + </div> + <h3> + <a id="psmisc-dep" name="psmisc-dep"></a>Psmisc + </h3> + <div class="segmentedlist"> + <a id="psmisc-depends" name="psmisc-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Ncurses и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="psmisc-rundeps" name="psmisc-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc и + Ncurses</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="psmisc-testdeps" name="psmisc-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="psmisc-before" name="psmisc-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="psmisc-optdeps" name="psmisc-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="python-dep" name="python-dep"></a>Python + </h3> + <div class="segmentedlist"> + <a id="python-depends" name="python-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Expat, GCC, + Gdbm, Gettext, Glibc, Grep, Libffi, Libxcrypt, Make, Ncurses, + OpenSSL, Pkgconf, Sed и Util-linux</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="python-rundeps" name="python-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Bzip2, Expat, + Gdbm, Glibc, Libffi, Libxcrypt, Ncurses, OpenSSL и + Zlib</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="python-testdeps" name="python-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">GDB и Valgrind</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="python-before" name="python-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Ninja</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="python-optdeps" name="python-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://www.oracle.com/database/technologies/related/berkeleydb.html"> + Berkeley DB</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/basicnet/libnsl.html"> + libnsl</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/server/sqlite.html"> + SQLite</a> и <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/tk.html"> + Tk</a></span> + </div> + </div> + </div> + <h3> + <a id="readline-dep" name="readline-dep"></a>Readline + </h3> + <div class="segmentedlist"> + <a id="readline-depends" name="readline-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, Ncurses, Patch, Sed и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="readline-rundeps" name="readline-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc и + Ncurses</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="readline-testdeps" name="readline-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="readline-before" name="readline-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Bash, Bc и Gawk</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="readline-optdeps" name="readline-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="sed-dep" name="sed-dep"></a>Sed + </h3> + <div class="segmentedlist"> + <a id="sed-depends" name="sed-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Sed, и Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="sed-rundeps" name="sed-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Acl, Attr и + Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="sed-testdeps" name="sed-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Diffutils и Gawk</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="sed-before" name="sed-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">E2fsprogs, File, Libtool и + Shadow</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="sed-optdeps" name="sed-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="setuptools-dep" name="setuptools-dep"></a>Setuptools + </h3> + <div class="segmentedlist"> + <a id="setuptools-depends" name="setuptools-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Python и Wheel</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="setuptools-rundeps" name="setuptools-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Python</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="setuptools-testdeps" name="setuptools-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="setuptools-before" name="setuptools-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Jinja2, MarkupSafe и Meson</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="setuptools-optdeps" name="setuptools-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="shadow-dep" name="shadow-dep"></a>Shadow + </h3> + <div class="segmentedlist"> + <a id="shadow-depends" name="shadow-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Acl, Attr, Bash, Binutils, Coreutils, + Diffutils, Findutils, Gawk, GCC, Gettext, Glibc, Grep, + Libcap, Libxcrypt, Make и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="shadow-rundeps" name="shadow-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc и + Libxcrypt</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="shadow-testdeps" name="shadow-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="shadow-before" name="shadow-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Coreutils</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="shadow-optdeps" name="shadow-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/cracklib.html"> + CrackLib</a> и <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/linux-pam.html"> + Linux-PAM</a></span> + </div> + </div> + </div> + <h3> + <a id="sysklogd-dep" name="sysklogd-dep"></a>Sysklogd + </h3> + <div class="segmentedlist"> + <a id="sysklogd-depends" name="sysklogd-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Binutils, Coreutils, GCC, Glibc, Make и + Patch</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="sysklogd-rundeps" name="sysklogd-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="sysklogd-testdeps" name="sysklogd-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="sysklogd-before" name="sysklogd-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="sysklogd-optdeps" name="sysklogd-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="sysvinit-dep" name="sysvinit-dep"></a>Sysvinit + </h3> + <div class="segmentedlist"> + <a id="sysvinit-depends" name="sysvinit-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Binutils, Coreutils, GCC, Glibc, Make и + Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="sysvinit-rundeps" name="sysvinit-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="sysvinit-testdeps" name="sysvinit-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="sysvinit-before" name="sysvinit-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="sysvinit-optdeps" name="sysvinit-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="tar-dep" name="tar-dep"></a>Tar + </h3> + <div class="segmentedlist"> + <a id="tar-depends" name="tar-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Acl, Attr, Bash, Binutils, Bison, + Coreutils, GCC, Gettext, Glibc, Grep, Inetutils, Make, Sed и + Texinfo</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="tar-rundeps" name="tar-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Acl, Attr, Bzip2, + Glibc, Gzip и Xz</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="tar-testdeps" name="tar-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Autoconf, Diffutils, Findutils, Gawk и + Gzip</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="tar-befors" name="tar-befors"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="tar-optdeps" name="tar-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="tcl-dep" name="tcl-dep"></a>Tcl + </h3> + <div class="segmentedlist"> + <a id="tcl-depends" name="tcl-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Grep, Make и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="tcl-rundeps" name="tcl-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc и + Zlib</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="tcl-testdeps" name="tcl-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="tcl-before" name="tcl-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="tcl-optdeps" name="tcl-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="texinfo-dep" name="texinfo-dep"></a>Texinfo + </h3> + <div class="segmentedlist"> + <a id="texinfo-depends" name="texinfo-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Ncurses, Patch и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="texinfo-rundeps" name="texinfo-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc и + Ncurses</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="texinfo-testdeps" name="texinfo-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="texinfo-before" name="texinfo-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="texinfo-optdeps" name="texinfo-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="udev-dep" name="udev-dep"></a>Udev + </h3> + <div class="segmentedlist"> + <a id="udev-depends" name="udev-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Acl, Bash, Binutils, Coreutils, + Diffutils, Gawk, GCC, Glibc, Gperf, Grep, Jinja2, Libcap, + Libxcrypt, Meson, OpenSSL, Pkgconf, Sed, Util-linux и + Zstd</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="udev-rundeps" name="udev-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Acl, Glibc, + Libcap, OpenSSL и Util-linux</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="udev-testdeps" name="udev-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="udev-before" name="udev-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Util-linux</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="udev-optdeps" name="udev-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="util-linux-dep" name="util-linux-dep"></a>Util-linux + </h3> + <div class="segmentedlist"> + <a id="util-linux-depends" name="util-linux-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + File, Findutils, Gawk, GCC, Gettext, Glibc, Grep, Make, + Ncurses, Pkgconf, Sed, <span class="phrase">Udev</span> и + Zlib</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="util-linux-rundeps" name="util-linux-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc, Ncurses, + Readline, <span class="phrase">Udev</span> и Zlib</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="util-linux-testdeps" name="util-linux-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="util-linux-before" name="util-linux-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="util-linux-optdeps" name="util-linux-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/asciidoctor.html"> + Asciidoctor</a>, <a class="ulink" href= + "https://people.redhat.com/sgrubb/libcap-ng/">Libcap-NG</a>, + <a class="ulink" href= + "https://github.com/openSUSE/libeconf">libeconf</a>, + <a class="ulink" href= + "https://pagure.io/libuser/">libuser</a>, <a class="ulink" + href= + "https://github.com/altlinux/libutempter">libutempter</a>, + <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/linux-pam.html"> + Linux-PAM</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/smartmontools.html"> + smartmontools</a>, <a class="ulink" href= + "https://po4a.org/index.php.en">po4a</a> и <a class="ulink" + href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/slang.html"> + slang</a></span> + </div> + </div> + </div> + <h3> + <a id="vim-dep" name="vim-dep"></a>Vim + </h3> + <div class="segmentedlist"> + <a id="vim-depends" name="vim-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Acl, Attr, Bash, Binutils, Coreutils, + Diffutils, GCC, Glibc, Grep, Make, Ncurses и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="vim-rundeps" name="vim-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Acl, Attr, Glibc, + Python, Ncurses и Tcl</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="vim-testdeps" name="vim-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="vim-before" name="vim-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="vim-optdeps" name="vim-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/x/installing.html"> + Xorg</a>, <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/x/gtk2.html"> + GTK+2</a>, <a class="ulink" href= + "https://lesstif.sourceforge.net/">LessTif</a>, <a class= + "ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/ruby.html"> + Ruby</a> и <a class="ulink" href= + "https://mirror.linuxfromscratch.ru/blfs/view/12.1/general/gpm.html"> + GPM</a></span> + </div> + </div> + </div> + <h3> + <a id="wheel-dep" name="wheel-dep"></a>Wheel + </h3> + <div class="segmentedlist"> + <a id="wheel-depends" name="wheel-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Python и Flit-core</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="wheel-rundeps" name="wheel-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Python</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="wheel-testdeps" name="wheel-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Набор тестов недоступен</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="wheel-before" name="wheel-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Jinja2, MarkupSafe, Meson и + Setuptools</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="wheel-optdeps" name="wheel-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="xml-parser-dep" name="xml-parser-dep"></a>XML::Parser + </h3> + <div class="segmentedlist"> + <a id="xml-parser-depends" name="xml-parser-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Expat, GCC, + Glibc, Make и Perl</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="xml-parser-rundeps" name="xml-parser-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Expat, Glibc и + Perl</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="xml-parser-testdeps" name="xml-parser-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Perl</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="xml-parser-before" name="xml-parser-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Intltool</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="xml-parser-optdeps" name="xml-parser-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="xz-dep" name="xz-dep"></a>Xz + </h3> + <div class="segmentedlist"> + <a id="xz-depends" name="xz-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc и Make</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="xz-rundeps" name="xz-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="xz-testdeps" name="xz-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="xz-before" name="xz-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">File, GRUB, Kmod, Libelf, Man-DB и + <span class="phrase">Udev</span></span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="xz-optdeps" name="xz-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="zlib-dep" name="zlib-dep"></a>Zlib + </h3> + <div class="segmentedlist"> + <a id="zlib-depends" name="zlib-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc, + Make и Sed</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="zlib-rundeps" name="zlib-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="zlib-testdeps" name="zlib-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="zlib-before" name="zlib-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">File, Kmod, Libelf, Perl и + Util-linux</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="zlib-optdeps" name="zlib-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <h3> + <a id="zstd-dep" name="zstd-dep"></a>Zstd + </h3> + <div class="segmentedlist"> + <a id="zstd-depends" name="zstd-depends"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установка зависит от:</strong> + <span class="segbody">Binutils, Coreutils, GCC, Glibc, Gzip, + Make, Xz и Zlib</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="zstd-rundeps" name="zstd-rundeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Требуется во время + выполнения:</strong> <span class="segbody">Glibc</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="zstd-testdeps" name="zstd-testdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Набор тестов зависит от:</strong> + <span class="segbody">Нет</span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="zstd-before" name="zstd-before"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Должен быть установлен до:</strong> + <span class="segbody">Binutils, GCC, Libelf и <span class= + "phrase">Udev</span></span> + </div> + </div> + </div> + <div class="segmentedlist"> + <a id="zstd-optdeps" name="zstd-optdeps"></a> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Необязательные зависимости:</strong> + <span class="segbody"><a class="ulink" href= + "https://lz4.github.io/lz4/">LZ4</a></span> + </div> + </div> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="scripts" name="scripts"></a>Приложение D. Скрипты + загрузки и настройки системы-20230728 + </h2> + </div> + </div> + </div> + <div class="appendix"> + <p> + Скрипты в приложении перечислены с указанием каталога, в котором + они обычно находятся. Порядок такой: <code class= + "filename">/etc/rc.d/init.d</code>, <code class= + "filename">/etc/sysconfig</code>, <code class= + "filename">/etc/sysconfig/network-devices</code>, и <code class= + "filename">/etc/sysconfig/network-devices/services</code>. В + каждом разделе файлы перечислены в том порядке, в котором они + обычно вызываются. + </p> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="rc" name="rc"></a>D.1. /etc/rc.d/init.d/rc + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <p> + Скрипт <code class="systemitem">rc</code> это первый скрипт, + вызываемый системой инициализации <span class= + "application">init</span> и инициирующий процесс загрузки. + </p> + <pre class="screen">#!/bin/bash +######################################################################## +# Begin rc +# +# Description : Main Run Level Control Script +# +# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org +# : DJ Lucas - dj AT linuxfromscratch D0T org +# Updates : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# : Pierre Labastie - pierre AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +# Notes : Updates March 24th, 2022: new semantics of S/K files +# - Instead of testing that S scripts were K scripts in the +# previous runlevel, test that they were not S scripts +# - Instead of testing that K scripts were S scripts in the +# previous runlevel, test that they were not K scripts +# - S scripts in runlevel 0 or 6 are now run with +# "script start" (was "script stop" previously). +######################################################################## + +. /lib/lsb/init-functions + +print_error_msg() +{ + log_failure_msg + # $i is set when called + MSG="FAILURE:\n\nYou should not be reading this error message.\n\n" + MSG="${MSG}It means that an unforeseen error took place in\n" + MSG="${MSG}${i},\n" + MSG="${MSG}which exited with a return value of ${error_value}.\n" + + MSG="${MSG}If you're able to track this error down to a bug in one of\n" + MSG="${MSG}the files provided by the ${DISTRO_MINI} book,\n" + MSG="${MSG}please be so kind to inform us at ${DISTRO_CONTACT}.\n" + log_failure_msg "${MSG}" + + log_info_msg "Press Enter to continue..." + wait_for_user +} + +check_script_status() +{ + # $i is set when called + if [ ! -f ${i} ]; then + log_warning_msg "${i} is not a valid symlink." + SCRIPT_STAT="1" + fi + + if [ ! -x ${i} ]; then + log_warning_msg "${i} is not executable, skipping." + SCRIPT_STAT="1" + fi +} + +run() +{ + if [ -z $interactive ]; then + ${1} ${2} + return $? + fi + + while true; do + read -p "Run ${1} ${2} (Yes/no/continue)? " -n 1 runit + echo + + case ${runit} in + c | C) + interactive="" + ${i} ${2} + ret=${?} + break; + ;; + + n | N) + return 0 + ;; + + y | Y) + ${i} ${2} + ret=${?} + break + ;; + esac + done + + return $ret +} + +# Read any local settings/overrides +[ -r /etc/sysconfig/rc.site ] && source /etc/sysconfig/rc.site + +DISTRO=${DISTRO:-"Linux From Scratch"} +DISTRO_CONTACT=${DISTRO_CONTACT:-"lfs-dev@lists.linuxfromscratch.org (Registration required)"} +DISTRO_MINI=${DISTRO_MINI:-"LFS"} +IPROMPT=${IPROMPT:-"no"} + +# These 3 signals will not cause our script to exit +trap "" INT QUIT TSTP + +[ "${1}" != "" ] && runlevel=${1} + +if [ "${runlevel}" == "" ]; then + echo "Usage: ${0} <runlevel>" >&2 + exit 1 +fi + +previous=${PREVLEVEL} +[ "${previous}" == "" ] && previous=N + +if [ ! -d /etc/rc.d/rc${runlevel}.d ]; then + log_info_msg "/etc/rc.d/rc${runlevel}.d does not exist.\n" + exit 1 +fi + +if [ "$runlevel" == "6" -o "$runlevel" == "0" ]; then IPROMPT="no"; fi + +# Note: In ${LOGLEVEL:-7}, it is ':' 'dash' '7', not minus 7 +if [ "$runlevel" == "S" ]; then + [ -r /etc/sysconfig/console ] && source /etc/sysconfig/console + dmesg -n "${LOGLEVEL:-7}" +fi + +if [ "${IPROMPT}" == "yes" -a "${runlevel}" == "S" ]; then + # The total length of the distro welcome string, without escape codes + wlen=${wlen:-$(echo "Welcome to ${DISTRO}" | wc -c )} + welcome_message=${welcome_message:-"Welcome to ${INFO}${DISTRO}${NORMAL}"} + + # The total length of the interactive string, without escape codes + ilen=${ilen:-$(echo "Press 'I' to enter interactive startup" | wc -c )} + i_message=${i_message:-"Press '${FAILURE}I${NORMAL}' to enter interactive startup"} + + + # dcol and icol are spaces before the message to center the message + # on screen. itime is the amount of wait time for the user to press a key + wcol=$(( ( ${COLUMNS} - ${wlen} ) / 2 )) + icol=$(( ( ${COLUMNS} - ${ilen} ) / 2 )) + itime=${itime:-"3"} + + echo -e "\n\n" + echo -e "\\033[${wcol}G${welcome_message}" + echo -e "\\033[${icol}G${i_message}${NORMAL}" + echo "" + read -t "${itime}" -n 1 interactive 2>&1 > /dev/null +fi + +# Make lower case +[ "${interactive}" == "I" ] && interactive="i" +[ "${interactive}" != "i" ] && interactive="" + +# Read the state file if it exists from runlevel S +[ -r /run/interactive ] && source /run/interactive + +# Stop all services marked as K, except if marked as K in the previous +# runlevel: it is the responsibility of the script to not try to kill +# a non running service +if [ "${previous}" != "N" ]; then + for i in $(ls -v /etc/rc.d/rc${runlevel}.d/K* 2> /dev/null) + do + check_script_status + if [ "${SCRIPT_STAT}" == "1" ]; then + SCRIPT_STAT="0" + continue + fi + + suffix=${i#/etc/rc.d/rc${runlevel}.d/K[0-9][0-9]} + [ -e /etc/rc.d/rc${previous}.d/K[0-9][0-9]$suffix ] && continue + + run ${i} stop + error_value=${?} + + if [ "${error_value}" != "0" ]; then print_error_msg; fi + done +fi + +if [ "${previous}" == "N" ]; then export IN_BOOT=1; fi + +if [ "$runlevel" == "6" -a -n "${FASTBOOT}" ]; then + touch /fastboot +fi + + +# Start all services marked as S in this runlevel, except if marked as +# S in the previous runlevel +# it is the responsibility of the script to not try to start an already running +# service +for i in $( ls -v /etc/rc.d/rc${runlevel}.d/S* 2> /dev/null) +do + + if [ "${previous}" != "N" ]; then + suffix=${i#/etc/rc.d/rc${runlevel}.d/S[0-9][0-9]} + [ -e /etc/rc.d/rc${previous}.d/S[0-9][0-9]$suffix ] && continue + fi + + check_script_status + if [ "${SCRIPT_STAT}" == "1" ]; then + SCRIPT_STAT="0" + continue + fi + + run ${i} start + + error_value=${?} + + if [ "${error_value}" != "0" ]; then print_error_msg; fi +done + +# Store interactive variable on switch from runlevel S and remove if not +if [ "${runlevel}" == "S" -a "${interactive}" == "i" ]; then + echo "interactive=\"i\"" > /run/interactive +else + rm -f /run/interactive 2> /dev/null +fi + +# Copy the boot log on initial boot only +if [ "${previous}" == "N" -a "${runlevel}" != "S" ]; then + cat $BOOTLOG >> /var/log/boot.log + + # Mark the end of boot + echo "--------" >> /var/log/boot.log + + # Remove the temporary file + rm -f $BOOTLOG 2> /dev/null +fi + +# End rc +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="init-functions" name="init-functions"></a>D.2. + /lib/lsb/init-functions + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# +# Begin /lib/lsb/init-funtions +# +# Description : Run Level Control Functions +# +# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org +# : DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +# Notes : With code based on Matthias Benkmann's simpleinit-msb +# http://winterdrache.de/linux/newboot/index.html +# +# The file should be located in /lib/lsb +# +######################################################################## + +## Environmental setup +# Setup default values for environment +umask 022 +export PATH="/bin:/usr/bin:/sbin:/usr/sbin" + +## Set color commands, used via echo +# Please consult `man console_codes for more information +# under the "ECMA-48 Set Graphics Rendition" section +# +# Warning: when switching from a 8bit to a 9bit font, +# the linux console will reinterpret the bold (1;) to +# the top 256 glyphs of the 9bit font. This does +# not affect framebuffer consoles + +NORMAL="\\033[0;39m" # Standard console grey +SUCCESS="\\033[1;32m" # Success is green +WARNING="\\033[1;33m" # Warnings are yellow +FAILURE="\\033[1;31m" # Failures are red +INFO="\\033[1;36m" # Information is light cyan +BRACKET="\\033[1;34m" # Brackets are blue + +# Use a colored prefix +BMPREFIX=" " +SUCCESS_PREFIX="${SUCCESS} * ${NORMAL} " +FAILURE_PREFIX="${FAILURE}*****${NORMAL} " +WARNING_PREFIX="${WARNING} *** ${NORMAL} " +SKIP_PREFIX="${INFO} S ${NORMAL}" + +SUCCESS_SUFFIX="${BRACKET}[${SUCCESS} OK ${BRACKET}]${NORMAL}" +FAILURE_SUFFIX="${BRACKET}[${FAILURE} FAIL ${BRACKET}]${NORMAL}" +WARNING_SUFFIX="${BRACKET}[${WARNING} WARN ${BRACKET}]${NORMAL}" +SKIP_SUFFIX="${BRACKET}[${INFO} SKIP ${BRACKET}]${NORMAL}" + +BOOTLOG=/run/bootlog +KILLDELAY=3 +SCRIPT_STAT="0" + +# Set any user specified environment variables e.g. HEADLESS +[ -r /etc/sysconfig/rc.site ] && . /etc/sysconfig/rc.site + +## Screen Dimensions +# Find current screen size +if [ -z "${COLUMNS}" ]; then + COLUMNS=$(stty size) + COLUMNS=${COLUMNS##* } +fi + +# When using remote connections, such as a serial port, stty size returns 0 +if [ "${COLUMNS}" = "0" ]; then + COLUMNS=80 +fi + +## Measurements for positioning result messages +COL=$((${COLUMNS} - 8)) +WCOL=$((${COL} - 2)) + +## Set Cursor Position Commands, used via echo +SET_COL="\\033[${COL}G" # at the $COL char +SET_WCOL="\\033[${WCOL}G" # at the $WCOL char +CURS_UP="\\033[1A\\033[0G" # Up one line, at the 0'th char +CURS_ZERO="\\033[0G" + +################################################################################ +# start_daemon() # +# Usage: start_daemon [-f] [-n nicelevel] [-p pidfile] pathname [args...] # +# # +# Purpose: This runs the specified program as a daemon # +# # +# Inputs: -f: (force) run the program even if it is already running. # +# -n nicelevel: specify a nice level. See 'man nice(1)'. # +# -p pidfile: use the specified file to determine PIDs. # +# pathname: the complete path to the specified program # +# args: additional arguments passed to the program (pathname) # +# # +# Return values (as defined by LSB exit codes): # +# 0 - program is running or service is OK # +# 1 - generic or unspecified error # +# 2 - invalid or excessive argument(s) # +# 5 - program is not installed # +################################################################################ +start_daemon() +{ + local force="" + local nice="0" + local pidfile="" + local pidlist="" + local retval="" + + # Process arguments + while true + do + case "${1}" in + + -f) + force="1" + shift 1 + ;; + + -n) + nice="${2}" + shift 2 + ;; + + -p) + pidfile="${2}" + shift 2 + ;; + + -*) + return 2 + ;; + + *) + program="${1}" + break + ;; + esac + done + + # Check for a valid program + if [ ! -e "${program}" ]; then return 5; fi + + # Execute + if [ -z "${force}" ]; then + if [ -z "${pidfile}" ]; then + # Determine the pid by discovery + pidlist=`pidofproc "${1}"` + retval="${?}" + else + # The PID file contains the needed PIDs + # Note that by LSB requirement, the path must be given to pidofproc, + # however, it is not used by the current implementation or standard. + pidlist=`pidofproc -p "${pidfile}" "${1}"` + retval="${?}" + fi + + # Return a value ONLY + # It is the init script's (or distribution's functions) responsibility + # to log messages! + case "${retval}" in + + 0) + # Program is already running correctly, this is a + # successful start. + return 0 + ;; + + 1) + # Program is not running, but an invalid pid file exists + # remove the pid file and continue + rm -f "${pidfile}" + ;; + + 3) + # Program is not running and no pidfile exists + # do nothing here, let start_deamon continue. + ;; + + *) + # Others as returned by status values shall not be interpreted + # and returned as an unspecified error. + return 1 + ;; + esac + fi + + # Do the start! + nice -n "${nice}" "${@}" +} + +################################################################################ +# killproc() # +# Usage: killproc [-p pidfile] pathname [signal] # +# # +# Purpose: Send control signals to running processes # +# # +# Inputs: -p pidfile, uses the specified pidfile # +# pathname, pathname to the specified program # +# signal, send this signal to pathname # +# # +# Return values (as defined by LSB exit codes): # +# 0 - program (pathname) has stopped/is already stopped or a # +# running program has been sent specified signal and stopped # +# successfully # +# 1 - generic or unspecified error # +# 2 - invalid or excessive argument(s) # +# 5 - program is not installed # +# 7 - program is not running and a signal was supplied # +################################################################################ +killproc() +{ + local pidfile + local program + local prefix + local progname + local signal="-TERM" + local fallback="-KILL" + local nosig + local pidlist + local retval + local pid + local delay="30" + local piddead + local dtime + + # Process arguments + while true; do + case "${1}" in + -p) + pidfile="${2}" + shift 2 + ;; + + *) + program="${1}" + if [ -n "${2}" ]; then + signal="${2}" + fallback="" + else + nosig=1 + fi + + # Error on additional arguments + if [ -n "${3}" ]; then + return 2 + else + break + fi + ;; + esac + done + + # Check for a valid program + if [ ! -e "${program}" ]; then return 5; fi + + # Check for a valid signal + check_signal "${signal}" + if [ "${?}" -ne "0" ]; then return 2; fi + + # Get a list of pids + if [ -z "${pidfile}" ]; then + # determine the pid by discovery + pidlist=`pidofproc "${1}"` + retval="${?}" + else + # The PID file contains the needed PIDs + # Note that by LSB requirement, the path must be given to pidofproc, + # however, it is not used by the current implementation or standard. + pidlist=`pidofproc -p "${pidfile}" "${1}"` + retval="${?}" + fi + + # Return a value ONLY + # It is the init script's (or distribution's functions) responsibility + # to log messages! + case "${retval}" in + + 0) + # Program is running correctly + # Do nothing here, let killproc continue. + ;; + + 1) + # Program is not running, but an invalid pid file exists + # Remove the pid file. + + progname=${program##*/} + + if [[ -e "/run/${progname}.pid" ]]; then + pidfile="/run/${progname}.pid" + rm -f "${pidfile}" + fi + + # This is only a success if no signal was passed. + if [ -n "${nosig}" ]; then + return 0 + else + return 7 + fi + ;; + + 3) + # Program is not running and no pidfile exists + # This is only a success if no signal was passed. + if [ -n "${nosig}" ]; then + return 0 + else + return 7 + fi + ;; + + *) + # Others as returned by status values shall not be interpreted + # and returned as an unspecified error. + return 1 + ;; + esac + + # Perform different actions for exit signals and control signals + check_sig_type "${signal}" + + if [ "${?}" -eq "0" ]; then # Signal is used to terminate the program + + # Account for empty pidlist (pid file still exists and no + # signal was given) + if [ "${pidlist}" != "" ]; then + + # Kill the list of pids + for pid in ${pidlist}; do + + kill -0 "${pid}" 2> /dev/null + + if [ "${?}" -ne "0" ]; then + # Process is dead, continue to next and assume all is well + continue + else + kill "${signal}" "${pid}" 2> /dev/null + + # Wait up to ${delay}/10 seconds to for "${pid}" to + # terminate in 10ths of a second + + while [ "${delay}" -ne "0" ]; do + kill -0 "${pid}" 2> /dev/null || piddead="1" + if [ "${piddead}" = "1" ]; then break; fi + sleep 0.1 + delay="$(( ${delay} - 1 ))" + done + + # If a fallback is set, and program is still running, then + # use the fallback + if [ -n "${fallback}" -a "${piddead}" != "1" ]; then + kill "${fallback}" "${pid}" 2> /dev/null + sleep 1 + # Check again, and fail if still running + kill -0 "${pid}" 2> /dev/null && return 1 + fi + fi + done + fi + + # Check for and remove stale PID files. + if [ -z "${pidfile}" ]; then + # Find the basename of $program + prefix=`echo "${program}" | sed 's/[^/]*$//'` + progname=`echo "${program}" | sed "s@${prefix}@@"` + + if [ -e "/run/${progname}.pid" ]; then + rm -f "/run/${progname}.pid" 2> /dev/null + fi + else + if [ -e "${pidfile}" ]; then rm -f "${pidfile}" 2> /dev/null; fi + fi + + # For signals that do not expect a program to exit, simply + # let kill do its job, and evaluate kill's return for value + + else # check_sig_type - signal is not used to terminate program + for pid in ${pidlist}; do + kill "${signal}" "${pid}" + if [ "${?}" -ne "0" ]; then return 1; fi + done + fi +} + +################################################################################ +# pidofproc() # +# Usage: pidofproc [-p pidfile] pathname # +# # +# Purpose: This function returns one or more pid(s) for a particular daemon # +# # +# Inputs: -p pidfile, use the specified pidfile instead of pidof # +# pathname, path to the specified program # +# # +# Return values (as defined by LSB status codes): # +# 0 - Success (PIDs to stdout) # +# 1 - Program is dead, PID file still exists (remaining PIDs output) # +# 3 - Program is not running (no output) # +################################################################################ +pidofproc() +{ + local pidfile + local program + local prefix + local progname + local pidlist + local lpids + local exitstatus="0" + + # Process arguments + while true; do + case "${1}" in + + -p) + pidfile="${2}" + shift 2 + ;; + + *) + program="${1}" + if [ -n "${2}" ]; then + # Too many arguments + # Since this is status, return unknown + return 4 + else + break + fi + ;; + esac + done + + # If a PID file is not specified, try and find one. + if [ -z "${pidfile}" ]; then + # Get the program's basename + prefix=`echo "${program}" | sed 's/[^/]*$//'` + + if [ -z "${prefix}" ]; then + progname="${program}" + else + progname=`echo "${program}" | sed "s@${prefix}@@"` + fi + + # If a PID file exists with that name, assume that is it. + if [ -e "/run/${progname}.pid" ]; then + pidfile="/run/${progname}.pid" + fi + fi + + # If a PID file is set and exists, use it. + if [ -n "${pidfile}" -a -e "${pidfile}" ]; then + + # Use the value in the first line of the pidfile + pidlist=`/bin/head -n1 "${pidfile}"` + # This can optionally be written as 'sed 1q' to repalce 'head -n1' + # should LFS move /bin/head to /usr/bin/head + else + # Use pidof + pidlist=`pidof "${program}"` + fi + + # Figure out if all listed PIDs are running. + for pid in ${pidlist}; do + kill -0 ${pid} 2> /dev/null + + if [ "${?}" -eq "0" ]; then + lpids="${lpids}${pid} " + else + exitstatus="1" + fi + done + + if [ -z "${lpids}" -a ! -f "${pidfile}" ]; then + return 3 + else + echo "${lpids}" + return "${exitstatus}" + fi +} + +################################################################################ +# statusproc() # +# Usage: statusproc [-p pidfile] pathname # +# # +# Purpose: This function prints the status of a particular daemon to stdout # +# # +# Inputs: -p pidfile, use the specified pidfile instead of pidof # +# pathname, path to the specified program # +# # +# Return values: # +# 0 - Status printed # +# 1 - Input error. The daemon to check was not specified. # +################################################################################ +statusproc() +{ + local pidfile + local pidlist + + if [ "${#}" = "0" ]; then + echo "Usage: statusproc [-p pidfle] {program}" + exit 1 + fi + + # Process arguments + while true; do + case "${1}" in + + -p) + pidfile="${2}" + shift 2 + ;; + + *) + if [ -n "${2}" ]; then + echo "Too many arguments" + return 1 + else + break + fi + ;; + esac + done + + if [ -n "${pidfile}" ]; then + pidlist=`pidofproc -p "${pidfile}" $@` + else + pidlist=`pidofproc $@` + fi + + # Trim trailing blanks + pidlist=`echo "${pidlist}" | sed -r 's/ +$//'` + + base="${1##*/}" + + if [ -n "${pidlist}" ]; then + /bin/echo -e "${INFO}${base} is running with Process" \ + "ID(s) ${pidlist}.${NORMAL}" + else + if [ -n "${base}" -a -e "/run/${base}.pid" ]; then + /bin/echo -e "${WARNING}${1} is not running but" \ + "/run/${base}.pid exists.${NORMAL}" + else + if [ -n "${pidfile}" -a -e "${pidfile}" ]; then + /bin/echo -e "${WARNING}${1} is not running" \ + "but ${pidfile} exists.${NORMAL}" + else + /bin/echo -e "${INFO}${1} is not running.${NORMAL}" + fi + fi + fi +} + +################################################################################ +# timespec() # +# # +# Purpose: An internal utility function to format a timestamp # +# a boot log file. Sets the STAMP variable. # +# # +# Return value: Not used # +################################################################################ +timespec() +{ + STAMP="$(echo `date +"%b %d %T %:z"` `hostname`) " + return 0 +} + +################################################################################ +# log_success_msg() # +# Usage: log_success_msg ["message"] # +# # +# Purpose: Print a successful status message to the screen and # +# a boot log file. # +# # +# Inputs: $@ - Message # +# # +# Return values: Not used # +################################################################################ +log_success_msg() +{ + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}" + + # Strip non-printable characters from log file + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + + timespec + /bin/echo -e "${STAMP} ${logmessage} OK" >> ${BOOTLOG} + + return 0 +} + +log_success_msg2() +{ + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}" + + echo " OK" >> ${BOOTLOG} + + return 0 +} + +################################################################################ +# log_failure_msg() # +# Usage: log_failure_msg ["message"] # +# # +# Purpose: Print a failure status message to the screen and # +# a boot log file. # +# # +# Inputs: $@ - Message # +# # +# Return values: Not used # +################################################################################ +log_failure_msg() +{ + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}" + + # Strip non-printable characters from log file + + timespec + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + /bin/echo -e "${STAMP} ${logmessage} FAIL" >> ${BOOTLOG} + + return 0 +} + +log_failure_msg2() +{ + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}" + + echo "FAIL" >> ${BOOTLOG} + + return 0 +} + +################################################################################ +# log_warning_msg() # +# Usage: log_warning_msg ["message"] # +# # +# Purpose: Print a warning status message to the screen and # +# a boot log file. # +# # +# Return values: Not used # +################################################################################ +log_warning_msg() +{ + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${WARNING_PREFIX}${SET_COL}${WARNING_SUFFIX}" + + # Strip non-printable characters from log file + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + timespec + /bin/echo -e "${STAMP} ${logmessage} WARN" >> ${BOOTLOG} + + return 0 +} + +log_skip_msg() +{ + /bin/echo -n -e "${BMPREFIX}${@}" + /bin/echo -e "${CURS_ZERO}${SKIP_PREFIX}${SET_COL}${SKIP_SUFFIX}" + + # Strip non-printable characters from log file + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + /bin/echo "SKIP" >> ${BOOTLOG} + + return 0 +} + +################################################################################ +# log_info_msg() # +# Usage: log_info_msg message # +# # +# Purpose: Print an information message to the screen and # +# a boot log file. Does not print a trailing newline character. # +# # +# Return values: Not used # +################################################################################ +log_info_msg() +{ + /bin/echo -n -e "${BMPREFIX}${@}" + + # Strip non-printable characters from log file + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + timespec + /bin/echo -n -e "${STAMP} ${logmessage}" >> ${BOOTLOG} + + return 0 +} + +log_info_msg2() +{ + /bin/echo -n -e "${@}" + + # Strip non-printable characters from log file + logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` + /bin/echo -n -e "${logmessage}" >> ${BOOTLOG} + + return 0 +} + +################################################################################ +# evaluate_retval() # +# Usage: Evaluate a return value and print success or failure as appropriate # +# # +# Purpose: Convenience function to terminate an info message # +# # +# Return values: Not used # +################################################################################ +evaluate_retval() +{ + local error_value="${?}" + + if [ ${error_value} = 0 ]; then + log_success_msg2 + else + log_failure_msg2 + fi +} + +################################################################################ +# check_signal() # +# Usage: check_signal [ -{signal} ] # +# # +# Purpose: Check for a valid signal. This is not defined by any LSB draft, # +# however, it is required to check the signals to determine if the # +# signals chosen are invalid arguments to the other functions. # +# # +# Inputs: Accepts a single string value in the form of -{signal} # +# # +# Return values: # +# 0 - Success (signal is valid # +# 1 - Signal is not valid # +################################################################################ +check_signal() +{ + local valsig + + # Add error handling for invalid signals + valsig=" -ALRM -HUP -INT -KILL -PIPE -POLL -PROF -TERM -USR1 -USR2" + valsig="${valsig} -VTALRM -STKFLT -PWR -WINCH -CHLD -URG -TSTP -TTIN" + valsig="${valsig} -TTOU -STOP -CONT -ABRT -FPE -ILL -QUIT -SEGV -TRAP" + valsig="${valsig} -SYS -EMT -BUS -XCPU -XFSZ -0 -1 -2 -3 -4 -5 -6 -8 -9" + valsig="${valsig} -11 -13 -14 -15 " + + echo "${valsig}" | grep -- " ${1} " > /dev/null + + if [ "${?}" -eq "0" ]; then + return 0 + else + return 1 + fi +} + +################################################################################ +# check_sig_type() # +# Usage: check_signal [ -{signal} | {signal} ] # +# # +# Purpose: Check if signal is a program termination signal or a control signal # +# This is not defined by any LSB draft, however, it is required to # +# check the signals to determine if they are intended to end a # +# program or simply to control it. # +# # +# Inputs: Accepts a single string value in the form or -{signal} or {signal} # +# # +# Return values: # +# 0 - Signal is used for program termination # +# 1 - Signal is used for program control # +################################################################################ +check_sig_type() +{ + local valsig + + # The list of termination signals (limited to generally used items) + valsig=" -ALRM -INT -KILL -TERM -PWR -STOP -ABRT -QUIT -2 -3 -6 -9 -14 -15 " + + echo "${valsig}" | grep -- " ${1} " > /dev/null + + if [ "${?}" -eq "0" ]; then + return 0 + else + return 1 + fi +} + +################################################################################ +# wait_for_user() # +# # +# Purpose: Wait for the user to respond if not a headless system # +# # +################################################################################ +wait_for_user() +{ + # Wait for the user by default + [ "${HEADLESS=0}" = "0" ] && read ENTER + return 0 +} + +################################################################################ +# is_true() # +# # +# Purpose: Utility to test if a variable is true | yes | 1 # +# # +################################################################################ +is_true() +{ + [ "$1" = "1" ] || [ "$1" = "yes" ] || [ "$1" = "true" ] || [ "$1" = "y" ] || + [ "$1" = "t" ] +} + +# End /lib/lsb/init-functions +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="mountvirtfs" name="mountvirtfs"></a>D.3. + /etc/rc.d/init.d/mountvirtfs + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin mountvirtfs +# +# Description : Ensure proc, sysfs, run, and dev are mounted +# +# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# Xi Ruoyao - xry111@xry111.site +# +# Version : LFS 12.0 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: mountvirtfs +# Required-Start: $first +# Should-Start: +# Required-Stop: +# Should-Stop: +# Default-Start: S +# Default-Stop: +# Short-Description: Mounts various special fs needed at start +# Description: Mounts /sys and /proc virtual (kernel) filesystems. +# Mounts /run (tmpfs) and /dev (devtmpfs). +# This is done only if they are not already mounted. +# with the kernel config proposed in the book, dev +# should be automatically mounted by the kernel. +# X-LFS-Provided-By: LFS +### END INIT INFO + +. /lib/lsb/init-functions + +case "${1}" in + start) + # Make sure /run is available before logging any messages + if ! mountpoint /run >/dev/null; then + mount /run || failed=1 + fi + + mkdir -p /run/lock + chmod 1777 /run/lock + + log_info_msg "Mounting virtual file systems: ${INFO}/run" + + if ! mountpoint /proc >/dev/null; then + log_info_msg2 " ${INFO}/proc" + mount -o nosuid,noexec,nodev /proc || failed=1 + fi + + if ! mountpoint /sys >/dev/null; then + log_info_msg2 " ${INFO}/sys" + mount -o nosuid,noexec,nodev /sys || failed=1 + fi + + if ! mountpoint /dev >/dev/null; then + log_info_msg2 " ${INFO}/dev" + mount -o mode=0755,nosuid /dev || failed=1 + fi + + mkdir -p /dev/shm + log_info_msg2 " ${INFO}/dev/shm" + mount -o nosuid,nodev /dev/shm || failed=1 + + mkdir -p /sys/fs/cgroup + log_info_msg2 " ${INFO}/sys/fs/cgroup" + mount -o nosuid,noexec,nodev /sys/fs/cgroup || failed=1 + + (exit ${failed}) + evaluate_retval + if [ "${failed}" = 1 ]; then + exit 1 + fi + + log_info_msg "Create symlinks in /dev targeting /proc: ${INFO}/dev/stdin" + ln -sf /proc/self/fd/0 /dev/stdin || failed=1 + + log_info_msg2 " ${INFO}/dev/stdout" + ln -sf /proc/self/fd/1 /dev/stdout || failed=1 + + log_info_msg2 " ${INFO}/dev/stderr" + ln -sf /proc/self/fd/2 /dev/stderr || failed=1 + + log_info_msg2 " ${INFO}/dev/fd" + ln -sf /proc/self/fd /dev/fd || failed=1 + + if [ -e /proc/kcore ]; then + log_info_msg2 " ${INFO}/dev/core" + ln -sf /proc/kcore /dev/core || failed=1 + fi + + (exit ${failed}) + evaluate_retval + exit $failed + ;; + + *) + echo "Usage: ${0} {start}" + exit 1 + ;; +esac + +# End mountvirtfs +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="modules" name="modules"></a>D.4. + /etc/rc.d/init.d/modules + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin modules +# +# Description : Module auto-loading script +# +# Authors : Zack Winkles +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: modules +# Required-Start: mountvirtfs +# Should-Start: +# Required-Stop: +# Should-Stop: +# Default-Start: S +# Default-Stop: +# Short-Description: Loads required modules. +# Description: Loads modules listed in /etc/sysconfig/modules. +# X-LFS-Provided-By: LFS +### END INIT INFO + +# Assure that the kernel has module support. +[ -e /proc/modules ] || exit 0 + +. /lib/lsb/init-functions + +case "${1}" in + start) + # Exit if there's no modules file or there are no + # valid entries + [ -r /etc/sysconfig/modules ] || exit 0 + grep -E -qv '^($|#)' /etc/sysconfig/modules || exit 0 + + log_info_msg "Loading modules:" + + # Only try to load modules if the user has actually given us + # some modules to load. + + while read module args; do + + # Ignore comments and blank lines. + case "$module" in + ""|"#"*) continue ;; + esac + + # Attempt to load the module, passing any arguments provided. + modprobe ${module} ${args} >/dev/null + + # Print the module name if successful, otherwise take note. + if [ $? -eq 0 ]; then + log_info_msg2 " ${module}" + else + failedmod="${failedmod} ${module}" + fi + done < /etc/sysconfig/modules + + # Print a message about successfully loaded modules on the correct line. + log_success_msg2 + + # Print a failure message with a list of any modules that + # may have failed to load. + if [ -n "${failedmod}" ]; then + log_failure_msg "Failed to load modules:${failedmod}" + exit 1 + fi + ;; + + *) + echo "Usage: ${0} {start}" + exit 1 + ;; +esac + +exit 0 + +# End modules +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="udev" name="udev"></a>D.5. /etc/rc.d/init.d/udev + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin udev +# +# Description : Udev cold-plugging script +# +# Authors : Zack Winkles, Alexander E. Patrakov +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# Xi Ruoyao - xry111@xry111.site +# +# Version : LFS 12.0 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: udev $time +# Required-Start: localnet +# Should-Start: modules +# Required-Stop: +# Should-Stop: +# Default-Start: S +# Default-Stop: +# Short-Description: Populates /dev with device nodes. +# Description: Mounts a tempfs on /dev and starts the udevd daemon. +# Device nodes are created as defined by udev. +# X-LFS-Provided-By: LFS +### END INIT INFO + +. /lib/lsb/init-functions + +case "${1}" in + start) + log_info_msg "Populating /dev with device nodes... " + if ! grep -q '[[:space:]]sysfs' /proc/mounts; then + log_failure_msg2 + msg="FAILURE:\n\nUnable to create " + msg="${msg}devices without a SysFS filesystem\n\n" + msg="${msg}After you press Enter, this system " + msg="${msg}will be halted and powered off.\n\n" + log_info_msg "$msg" + log_info_msg "Press Enter to continue..." + wait_for_user + /etc/rc.d/init.d/halt start + fi + + # Start the udev daemon to continually watch for, and act on, + # uevents + SYSTEMD_LOG_TARGET=kmsg /sbin/udevd --daemon + + # Now traverse /sys in order to "coldplug" devices that have + # already been discovered + /bin/udevadm trigger --action=add --type=subsystems + /bin/udevadm trigger --action=add --type=devices + /bin/udevadm trigger --action=change --type=devices + + # Now wait for udevd to process the uevents we triggered + if ! is_true "$OMIT_UDEV_SETTLE"; then + /bin/udevadm settle + fi + + # If any LVM based partitions are on the system, ensure they + # are activated so they can be used. + if [ -x /sbin/vgchange ]; then /sbin/vgchange -a y >/dev/null; fi + + log_success_msg2 + ;; + + *) + echo "Usage ${0} {start}" + exit 1 + ;; +esac + +exit 0 + +# End udev +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="swap" name="swap"></a>D.6. /etc/rc.d/init.d/swap + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin swap +# +# Description : Swap Control Script +# +# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: swap +# Required-Start: udev +# Should-Start: modules +# Required-Stop: localnet +# Should-Stop: $local_fs +# Default-Start: S +# Default-Stop: 0 6 +# Short-Description: Activates and deactivates swap partitions. +# Description: Activates and deactivates swap partitions defined in +# /etc/fstab. +# X-LFS-Provided-By: LFS +### END INIT INFO + +. /lib/lsb/init-functions + +case "${1}" in + start) + log_info_msg "Activating all swap files/partitions..." + swapon -a + evaluate_retval + ;; + + stop) + log_info_msg "Deactivating all swap files/partitions..." + swapoff -a + evaluate_retval + ;; + + restart) + ${0} stop + sleep 1 + ${0} start + ;; + + status) + log_success_msg "Retrieving swap status." + swapon -s + ;; + + *) + echo "Usage: ${0} {start|stop|restart|status}" + exit 1 + ;; +esac + +exit 0 + +# End swap +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="setclock" name="setclock"></a>D.7. + /etc/rc.d/init.d/setclock + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin setclock +# +# Description : Setting Linux Clock +# +# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: +# Required-Start: +# Should-Start: modules +# Required-Stop: +# Should-Stop: $syslog +# Default-Start: S +# Default-Stop: +# Short-Description: Stores and restores time from the hardware clock +# Description: On boot, system time is obtained from hwclock. The +# hardware clock can also be set on shutdown. +# X-LFS-Provided-By: LFS +### END INIT INFO + +. /lib/lsb/init-functions + +[ -r /etc/sysconfig/clock ] && . /etc/sysconfig/clock + + +case "${UTC}" in + yes|true|1) + CLOCKPARAMS="${CLOCKPARAMS} --utc" + ;; + + no|false|0) + CLOCKPARAMS="${CLOCKPARAMS} --localtime" + ;; + +esac + +case ${1} in + start) + hwclock --hctosys ${CLOCKPARAMS} >/dev/null + ;; + + stop) + log_info_msg "Setting hardware clock..." + hwclock --systohc ${CLOCKPARAMS} >/dev/null + evaluate_retval + ;; + + *) + echo "Usage: ${0} {start|stop}" + exit 1 + ;; + +esac + +exit 0 +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="checkfs" name="checkfs"></a>D.8. + /etc/rc.d/init.d/checkfs + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin checkfs +# +# Description : File System Check +# +# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org +# A. Luebke - luebke@users.sourceforge.net +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +# Based on checkfs script from LFS-3.1 and earlier. +# +# From man fsck +# 0 - No errors +# 1 - File system errors corrected +# 2 - System should be rebooted +# 4 - File system errors left uncorrected +# 8 - Operational error +# 16 - Usage or syntax error +# 32 - Fsck canceled by user request +# 128 - Shared library error +# +######################################################################### + +### BEGIN INIT INFO +# Provides: checkfs +# Required-Start: udev swap +# Should-Start: +# Required-Stop: +# Should-Stop: +# Default-Start: S +# Default-Stop: +# Short-Description: Checks local filesystems before mounting. +# Description: Checks local filesystems before mounting. +# X-LFS-Provided-By: LFS +### END INIT INFO + +. /lib/lsb/init-functions + +case "${1}" in + start) + if [ -f /fastboot ]; then + msg="/fastboot found, will omit " + msg="${msg} file system checks as requested.\n" + log_info_msg "${msg}" + exit 0 + fi + + log_info_msg "Mounting root file system in read-only mode... " + mount -n -o remount,ro / >/dev/null + + if [ ${?} != 0 ]; then + log_failure_msg2 + msg="\n\nCannot check root " + msg="${msg}filesystem because it could not be mounted " + msg="${msg}in read-only mode.\n\n" + msg="${msg}After you press Enter, this system will be " + msg="${msg}halted and powered off.\n\n" + log_failure_msg "${msg}" + + log_info_msg "Press Enter to continue..." + wait_for_user + /etc/rc.d/init.d/halt start + else + log_success_msg2 + fi + + if [ -f /forcefsck ]; then + msg="/forcefsck found, forcing file" + msg="${msg} system checks as requested." + log_success_msg "$msg" + options="-f" + else + options="" + fi + + log_info_msg "Checking file systems..." + # Note: -a option used to be -p; but this fails e.g. on fsck.minix + if is_true "$VERBOSE_FSCK"; then + fsck ${options} -a -A -C -T + else + fsck ${options} -a -A -C -T >/dev/null + fi + + error_value=${?} + + if [ "${error_value}" = 0 ]; then + log_success_msg2 + fi + + if [ "${error_value}" = 1 ]; then + msg="\nWARNING:\n\nFile system errors " + msg="${msg}were found and have been corrected.\n" + msg="${msg} You may want to double-check that " + msg="${msg}everything was fixed properly." + log_warning_msg "$msg" + fi + + if [ "${error_value}" = 2 -o "${error_value}" = 3 ]; then + msg="\nWARNING:\n\nFile system errors " + msg="${msg}were found and have been " + msg="${msg}corrected, but the nature of the " + msg="${msg}errors require this system to be rebooted.\n\n" + msg="${msg}After you press enter, " + msg="${msg}this system will be rebooted\n\n" + log_failure_msg "$msg" + + log_info_msg "Press Enter to continue..." + wait_for_user + reboot -f + fi + + if [ "${error_value}" -gt 3 -a "${error_value}" -lt 16 ]; then + msg="\nFAILURE:\n\nFile system errors " + msg="${msg}were encountered that could not be " + msg="${msg}fixed automatically.\nThis system " + msg="${msg}cannot continue to boot and will " + msg="${msg}therefore be halted until those " + msg="${msg}errors are fixed manually by a " + msg="${msg}System Administrator.\n\n" + msg="${msg}After you press Enter, this system will be " + msg="${msg}halted and powered off.\n\n" + log_failure_msg "$msg" + + log_info_msg "Press Enter to continue..." + wait_for_user + /etc/rc.d/init.d/halt start + fi + + if [ "${error_value}" -ge 16 ]; then + msg="FAILURE:\n\nUnexpected failure " + msg="${msg}running fsck. Exited with error " + msg="${msg} code: ${error_value}.\n" + log_info_msg $msg + exit ${error_value} + fi + + exit 0 + ;; + *) + echo "Usage: ${0} {start}" + exit 1 + ;; +esac + +# End checkfs +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="mountfs" name="mountfs"></a>D.9. + /etc/rc.d/init.d/mountfs + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin mountfs +# +# Description : File System Mount Script +# +# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: $local_fs +# Required-Start: udev checkfs +# Should-Start: modules +# Required-Stop: localnet +# Should-Stop: +# Default-Start: S +# Default-Stop: 0 6 +# Short-Description: Mounts/unmounts local filesystems defined in /etc/fstab. +# Description: Remounts root filesystem read/write and mounts all +# remaining local filesystems defined in /etc/fstab on +# start. Remounts root filesystem read-only and unmounts +# remaining filesystems on stop. +# X-LFS-Provided-By: LFS +### END INIT INFO + +. /lib/lsb/init-functions + +case "${1}" in + start) + log_info_msg "Remounting root file system in read-write mode..." + mount --options remount,rw / >/dev/null + evaluate_retval + + # Remove fsck-related file system watermarks. + rm -f /fastboot /forcefsck + + # Make sure /dev/pts exists + mkdir -p /dev/pts + + # This will mount all filesystems that do not have _netdev in + # their option list. _netdev denotes a network filesystem. + + log_info_msg "Mounting remaining file systems..." + failed=0 + mount --all --test-opts no_netdev >/dev/null || failed=1 + evaluate_retval + exit $failed + ;; + + stop) + # Don't unmount virtual file systems like /run + log_info_msg "Unmounting all other currently mounted file systems..." + # Ensure any loop devices are removed + losetup -D + umount --all --detach-loop --read-only \ + --types notmpfs,nosysfs,nodevtmpfs,noproc,nodevpts >/dev/null + evaluate_retval + + # Make sure / is mounted read only (umount bug) + mount --options remount,ro / + + # Make all LVM volume groups unavailable, if appropriate + # This fails if swap or / are on an LVM partition + #if [ -x /sbin/vgchange ]; then /sbin/vgchange -an > /dev/null; fi + if [ -r /etc/mdadm.conf ]; then + log_info_msg "Mark arrays as clean..." + mdadm --wait-clean --scan + evaluate_retval + fi + ;; + + *) + echo "Usage: ${0} {start|stop}" + exit 1 + ;; +esac + +# End mountfs +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="udev_retry" name="udev_retry"></a>D.10. + /etc/rc.d/init.d/udev_retry + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin udev_retry +# +# Description : Udev cold-plugging script (retry) +# +# Authors : Alexander E. Patrakov +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# Bryan Kadzban - +# +# Version : LFS 7.0 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: udev_retry +# Required-Start: udev +# Should-Start: $local_fs cleanfs +# Required-Stop: +# Should-Stop: +# Default-Start: S +# Default-Stop: +# Short-Description: Replays failed uevents and creates additional devices. +# Description: Replays any failed uevents that were skipped due to +# slow hardware initialization, and creates those needed +# device nodes +# X-LFS-Provided-By: LFS +### END INIT INFO + +. /lib/lsb/init-functions + +case "${1}" in + start) + log_info_msg "Retrying failed uevents, if any..." + + rundir=/run/udev + # From Debian: "copy the rules generated before / was mounted + # read-write": + + for file in ${rundir}/tmp-rules--*; do + dest=${file##*tmp-rules--} + [ "$dest" = '*' ] && break + cat $file >> /etc/udev/rules.d/$dest + rm -f $file + done + + # Re-trigger the uevents that may have failed, + # in hope they will succeed now + /bin/sed -e 's/#.*$//' /etc/sysconfig/udev_retry | /bin/grep -v '^$' | \ + while read line ; do + for subsystem in $line ; do + /bin/udevadm trigger --subsystem-match=$subsystem --action=add + done + done + + # Now wait for udevd to process the uevents we triggered + if ! is_true "$OMIT_UDEV_RETRY_SETTLE"; then + /bin/udevadm settle + fi + + evaluate_retval + ;; + + *) + echo "Usage ${0} {start}" + exit 1 + ;; +esac + +exit 0 + +# End udev_retry +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="cleanfs" name="cleanfs"></a>D.11. + /etc/rc.d/init.d/cleanfs + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin cleanfs +# +# Description : Clean file system +# +# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: cleanfs +# Required-Start: $local_fs +# Should-Start: +# Required-Stop: +# Should-Stop: +# Default-Start: S +# Default-Stop: +# Short-Description: Cleans temporary directories early in the boot process. +# Description: Cleans temporary directories /run, /var/lock, and +# optionally, /tmp. cleanfs also creates /run/utmp +# and any files defined in /etc/sysconfig/createfiles. +# X-LFS-Provided-By: LFS +### END INIT INFO + +. /lib/lsb/init-functions + +# Function to create files/directory on boot. +create_files() +{ + # Input to file descriptor 9 and output to stdin (redirection) + exec 9>&0 < /etc/sysconfig/createfiles + + while read name type perm usr grp dtype maj min junk + do + # Ignore comments and blank lines. + case "${name}" in + ""|\#*) continue ;; + esac + + # Ignore existing files. + if [ ! -e "${name}" ]; then + # Create stuff based on its type. + case "${type}" in + dir) + mkdir "${name}" + ;; + file) + :> "${name}" + ;; + dev) + case "${dtype}" in + char) + mknod "${name}" c ${maj} ${min} + ;; + block) + mknod "${name}" b ${maj} ${min} + ;; + pipe) + mknod "${name}" p + ;; + *) + log_warning_msg "\nUnknown device type: ${dtype}" + ;; + esac + ;; + *) + log_warning_msg "\nUnknown type: ${type}" + continue + ;; + esac + + # Set up the permissions, too. + chown ${usr}:${grp} "${name}" + chmod ${perm} "${name}" + fi + done + + # Close file descriptor 9 (end redirection) + exec 0>&9 9>&- + return 0 +} + +case "${1}" in + start) + log_info_msg "Cleaning file systems:" + + if [ "${SKIPTMPCLEAN}" = "" ]; then + log_info_msg2 " /tmp" + cd /tmp && + find . -xdev -mindepth 1 ! -name lost+found -delete || failed=1 + fi + + > /run/utmp + + if grep -q '^utmp:' /etc/group ; then + chmod 664 /run/utmp + chgrp utmp /run/utmp + fi + + (exit ${failed}) + evaluate_retval + + if grep -E -qv '^(#|$)' /etc/sysconfig/createfiles 2>/dev/null; then + log_info_msg "Creating files and directories... " + create_files # Always returns 0 + evaluate_retval + fi + + exit $failed + ;; + *) + echo "Usage: ${0} {start}" + exit 1 + ;; +esac + +# End cleanfs +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="console" name="console"></a>D.12. + /etc/rc.d/init.d/console + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin console +# +# Description : Sets keymap and screen font +# +# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org +# Alexander E. Patrakov +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: console +# Required-Start: $local_fs +# Should-Start: udev_retry +# Required-Stop: +# Should-Stop: +# Default-Start: S +# Default-Stop: +# Short-Description: Sets up a localised console. +# Description: Sets up fonts and language settings for the user's +# local as defined by /etc/sysconfig/console. +# X-LFS-Provided-By: LFS +### END INIT INFO + +. /lib/lsb/init-functions + +# Native English speakers probably don't have /etc/sysconfig/console at all +[ -r /etc/sysconfig/console ] && . /etc/sysconfig/console + +failed=0 + +case "${1}" in + start) + # See if we need to do anything + if [ -z "${KEYMAP}" ] && [ -z "${KEYMAP_CORRECTIONS}" ] && + [ -z "${FONT}" ] && [ -z "${LEGACY_CHARSET}" ] && + ! is_true "${UNICODE}"; then + exit 0 + fi + + # There should be no bogus failures below this line! + log_info_msg "Setting up Linux console..." + + # Figure out if a framebuffer console is used + [ -d /sys/class/graphics/fb0 ] && use_fb=1 || use_fb=0 + + # Figure out the command to set the console into the + # desired mode + is_true "${UNICODE}" && + MODE_COMMAND="echo -en '\033%G' && kbd_mode -u" || + MODE_COMMAND="echo -en '\033%@\033(K' && kbd_mode -a" + + # On framebuffer consoles, font has to be set for each vt in + # UTF-8 mode. This doesn't hurt in non-UTF-8 mode also. + + ! is_true "${use_fb}" || [ -z "${FONT}" ] || + MODE_COMMAND="${MODE_COMMAND} && setfont ${FONT}" + + # Apply that command to all consoles mentioned in + # /etc/inittab. Important: in the UTF-8 mode this should + # happen before setfont, otherwise a kernel bug will + # show up and the unicode map of the font will not be + # used. + + for TTY in `grep '^[^#].*respawn:/sbin/agetty' /etc/inittab | + grep -o '\btty[[:digit:]]*\b'` + do + openvt -f -w -c ${TTY#tty} -- \ + /bin/sh -c "${MODE_COMMAND}" || failed=1 + done + + # Set the font (if not already set above) and the keymap + [ "${use_fb}" == "1" ] || [ -z "${FONT}" ] || setfont $FONT || failed=1 + + [ -z "${KEYMAP}" ] || + loadkeys ${KEYMAP} >/dev/null 2>&1 || + failed=1 + + [ -z "${KEYMAP_CORRECTIONS}" ] || + loadkeys ${KEYMAP_CORRECTIONS} >/dev/null 2>&1 || + failed=1 + + # Convert the keymap from $LEGACY_CHARSET to UTF-8 + [ -z "$LEGACY_CHARSET" ] || + dumpkeys -c "$LEGACY_CHARSET" | loadkeys -u >/dev/null 2>&1 || + failed=1 + + # If any of the commands above failed, the trap at the + # top would set $failed to 1 + ( exit $failed ) + evaluate_retval + + exit $failed + ;; + + *) + echo "Usage: ${0} {start}" + exit 1 + ;; +esac + +# End console +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="localnet" name="localnet"></a>D.13. + /etc/rc.d/init.d/localnet + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin localnet +# +# Description : Loopback device +# +# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: localnet +# Required-Start: mountvirtfs +# Should-Start: modules +# Required-Stop: +# Should-Stop: +# Default-Start: S +# Default-Stop: 0 6 +# Short-Description: Starts the local network. +# Description: Sets the hostname of the machine and starts the +# loopback interface. +# X-LFS-Provided-By: LFS +### END INIT INFO + +. /lib/lsb/init-functions +[ -r /etc/sysconfig/network ] && . /etc/sysconfig/network +[ -r /etc/hostname ] && HOSTNAME=`cat /etc/hostname` + +case "${1}" in + start) + log_info_msg "Bringing up the loopback interface..." + ip addr add 127.0.0.1/8 label lo dev lo + ip link set lo up + evaluate_retval + + log_info_msg "Setting hostname to ${HOSTNAME}..." + hostname ${HOSTNAME} + evaluate_retval + ;; + + stop) + log_info_msg "Bringing down the loopback interface..." + ip link set lo down + evaluate_retval + ;; + + restart) + ${0} stop + sleep 1 + ${0} start + ;; + + status) + echo "Hostname is: $(hostname)" + ip link show lo + ;; + + *) + echo "Usage: ${0} {start|stop|restart|status}" + exit 1 + ;; +esac + +exit 0 + +# End localnet +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="sysctlscript" name="sysctlscript"></a>D.14. + /etc/rc.d/init.d/sysctl + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin sysctl +# +# Description : File uses /etc/sysctl.conf to set kernel runtime +# parameters +# +# Authors : Nathan Coulson (nathan AT linuxfromscratch D0T org) +# Matthew Burgress (matthew AT linuxfromscratch D0T org) +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: sysctl +# Required-Start: mountvirtfs +# Should-Start: console +# Required-Stop: +# Should-Stop: +# Default-Start: S +# Default-Stop: +# Short-Description: Makes changes to the proc filesystem +# Description: Makes changes to the proc filesystem as defined in +# /etc/sysctl.conf. See 'man sysctl(8)'. +# X-LFS-Provided-By: LFS +### END INIT INFO + +. /lib/lsb/init-functions + +case "${1}" in + start) + if [ -f "/etc/sysctl.conf" ]; then + log_info_msg "Setting kernel runtime parameters..." + sysctl -q -p + evaluate_retval + fi + ;; + + status) + sysctl -a + ;; + + *) + echo "Usage: ${0} {start|status}" + exit 1 + ;; +esac + +exit 0 + +# End sysctl +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="sysklogd" name="sysklogd"></a>D.15. + /etc/rc.d/init.d/sysklogd + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin sysklogd +# +# Description : Sysklogd loader +# +# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: $syslog +# Required-Start: $first localnet +# Should-Start: +# Required-Stop: $local_fs +# Should-Stop: sendsignals +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Starts kernel and system log daemons. +# Description: Starts kernel and system log daemons. +# /etc/fstab. +# X-LFS-Provided-By: LFS +### END INIT INFO + +. /lib/lsb/init-functions + +case "${1}" in + start) + log_info_msg "Starting system log daemon..." + parms=${SYSKLOGD_PARMS-'-m 0'} + start_daemon /sbin/syslogd $parms + evaluate_retval + + log_info_msg "Starting kernel log daemon..." + start_daemon /sbin/klogd + evaluate_retval + ;; + + stop) + log_info_msg "Stopping kernel log daemon..." + killproc /sbin/klogd + evaluate_retval + + log_info_msg "Stopping system log daemon..." + killproc /sbin/syslogd + evaluate_retval + ;; + + reload) + log_info_msg "Reloading system log daemon config file..." + pid=`pidofproc syslogd` + kill -HUP "${pid}" + evaluate_retval + ;; + + restart) + ${0} stop + sleep 1 + ${0} start + ;; + + status) + statusproc /sbin/syslogd + statusproc klogd + ;; + + *) + echo "Usage: ${0} {start|stop|reload|restart|status}" + exit 1 + ;; +esac + +exit 0 + +# End sysklogd +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="network" name="network"></a>D.16. + /etc/rc.d/init.d/network + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin network +# +# Description : Network Control Script +# +# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org +# Nathan Coulson - nathan AT linuxfromscratch D0T org +# Kevin P. Fleming - kpfleming@linuxfromscratch.org +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: $network +# Required-Start: $local_fs localnet swap +# Should-Start: $syslog firewalld iptables nftables +# Required-Stop: $local_fs localnet swap +# Should-Stop: $syslog firewalld iptables nftables +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Starts and configures network interfaces. +# Description: Starts and configures network interfaces. +# X-LFS-Provided-By: LFS +### END INIT INFO + +case "${1}" in + start) + # if the default route exists, network is already configured + if ip route | grep -q "^default"; then return 0; fi + # Start all network interfaces + for file in /etc/sysconfig/ifconfig.* + do + interface=${file##*/ifconfig.} + + # Skip if $file is * (because nothing was found) + if [ "${interface}" = "*" ]; then continue; fi + + /sbin/ifup ${interface} + done + ;; + + stop) + # Unmount any network mounted file systems + umount --all --force --types nfs,cifs,nfs4 + + # Reverse list + net_files="" + for file in /etc/sysconfig/ifconfig.* + do + net_files="${file} ${net_files}" + done + + # Stop all network interfaces + for file in ${net_files} + do + interface=${file##*/ifconfig.} + + # Skip if $file is * (because nothing was found) + if [ "${interface}" = "*" ]; then continue; fi + + # See if interface exists + if [ ! -e /sys/class/net/$interface ]; then continue; fi + + # Is interface UP? + ip link show $interface 2>/dev/null | grep -q "state UP" + if [ $? -ne 0 ]; then continue; fi + + /sbin/ifdown ${interface} + done + ;; + + restart) + ${0} stop + sleep 1 + ${0} start + ;; + + *) + echo "Usage: ${0} {start|stop|restart}" + exit 1 + ;; +esac + +exit 0 + +# End network +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="sendsignals" name="sendsignals"></a>D.17. + /etc/rc.d/init.d/sendsignals + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin sendsignals +# +# Description : Sendsignals Script +# +# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +######################################################################## + +### BEGIN INIT INFO +# Provides: sendsignals +# Required-Start: +# Should-Start: +# Required-Stop: $local_fs swap localnet +# Should-Stop: +# Default-Start: +# Default-Stop: 0 6 +# Short-Description: Attempts to kill remaining processes. +# Description: Attempts to kill remaining processes. +# X-LFS-Provided-By: LFS +### END INIT INFO + +. /lib/lsb/init-functions + +case "${1}" in + stop) + omit=$(pidof mdmon) + [ -n "$omit" ] && omit="-o $omit" + + log_info_msg "Sending all processes the TERM signal..." + killall5 -15 $omit + error_value=${?} + + sleep ${KILLDELAY} + + if [ "${error_value}" = 0 -o "${error_value}" = 2 ]; then + log_success_msg + else + log_failure_msg + fi + + log_info_msg "Sending all processes the KILL signal..." + killall5 -9 $omit + error_value=${?} + + sleep ${KILLDELAY} + + if [ "${error_value}" = 0 -o "${error_value}" = 2 ]; then + log_success_msg + else + log_failure_msg + fi + ;; + + *) + echo "Usage: ${0} {stop}" + exit 1 + ;; + +esac + +exit 0 + +# End sendsignals +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="rebootscript" name="rebootscript"></a>D.18. + /etc/rc.d/init.d/reboot + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin reboot +# +# Description : Reboot Scripts +# +# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org +# DJ Lucas - dj AT linuxfromscratch D0T org +# Updates : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# : Pierre Labastie - pierre AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +# Notes : Update March 24th, 2022: change "stop" to "start". +# Add the $last facility to Required-start +# +######################################################################## + +### BEGIN INIT INFO +# Provides: reboot +# Required-Start: $last +# Should-Start: +# Required-Stop: +# Should-Stop: +# Default-Start: 6 +# Default-Stop: +# Short-Description: Reboots the system. +# Description: Reboots the System. +# X-LFS-Provided-By: LFS +### END INIT INFO + +. /lib/lsb/init-functions + +case "${1}" in + start) + log_info_msg "Restarting system..." + reboot -d -f -i + ;; + + *) + echo "Usage: ${0} {start}" + exit 1 + ;; + +esac + +# End reboot +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="haltscript" name="haltscript"></a>D.19. + /etc/rc.d/init.d/halt + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin halt +# +# Description : Halt Script +# +# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# : Pierre Labastie - pierre AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +# Notes : Update March 24th, 2022: change "stop" to "start". +# Add the $last facility to Required-start +# +######################################################################## + +### BEGIN INIT INFO +# Provides: halt +# Required-Start: $last +# Should-Start: +# Required-Stop: +# Should-Stop: +# Default-Start: 0 +# Default-Stop: +# Short-Description: Halts the system. +# Description: Halts the System. +# X-LFS-Provided-By: LFS +### END INIT INFO + +case "${1}" in + start) + halt -d -f -i -p + ;; + + *) + echo "Usage: {start}" + exit 1 + ;; +esac + +# End halt +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="template" name="template"></a>D.20. + /etc/rc.d/init.d/template + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin scriptname +# +# Description : +# +# Authors : +# +# Version : LFS x.x +# +# Notes : +# +######################################################################## + +### BEGIN INIT INFO +# Provides: template +# Required-Start: +# Should-Start: +# Required-Stop: +# Should-Stop: +# Default-Start: +# Default-Stop: +# Short-Description: +# Description: +# X-LFS-Provided-By: +### END INIT INFO + +. /lib/lsb/init-functions + +case "${1}" in + start) + log_info_msg "Starting..." + # if it is possible to use start_daemon + start_daemon fully_qualified_path + # if it is not possible to use start_daemon + # (command to start the daemon is not simple enough) + if ! pidofproc daemon_name_as_reported_by_ps >/dev/null; then + command_to_start_the_service + fi + evaluate_retval + ;; + + stop) + log_info_msg "Stopping..." + # if it is possible to use killproc + killproc fully_qualified_path + # if it is not possible to use killproc + # (the daemon shouldn't be stopped by killing it) + if pidofproc daemon_name_as_reported_by_ps >/dev/null; then + command_to_stop_the_service + fi + evaluate_retval + ;; + + restart) + ${0} stop + sleep 1 + ${0} start + ;; + + *) + echo "Usage: ${0} {start|stop|restart}" + exit 1 + ;; +esac + +exit 0 + +# End scriptname +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="modulessys" name="modulessys"></a>D.21. + /etc/sysconfig/modules + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class= + "screen">######################################################################## +# Begin /etc/sysconfig/modules +# +# Description : Module auto-loading configuration +# +# Authors : +# +# Version : 00.00 +# +# Notes : The syntax of this file is as follows: +# <module> [<arg1> <arg2> ...] +# +# Each module should be on its own line, and any options that you want +# passed to the module should follow it. The line deliminator is either +# a space or a tab. +######################################################################## + +# End /etc/sysconfig/modules +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="createfiles" name="createfiles"></a>D.22. + /etc/sysconfig/createfiles + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class= + "screen">######################################################################## +# Begin /etc/sysconfig/createfiles +# +# Description : Createfiles script config file +# +# Authors : +# +# Version : 00.00 +# +# Notes : The syntax of this file is as follows: +# if type is equal to "file" or "dir" +# <filename> <type> <permissions> <user> <group> +# if type is equal to "dev" +# <filename> <type> <permissions> <user> <group> <devtype> +# <major> <minor> +# +# <filename> is the name of the file which is to be created +# <type> is either file, dir, or dev. +# file creates a new file +# dir creates a new directory +# dev creates a new device +# <devtype> is either block, char or pipe +# block creates a block device +# char creates a character device +# pipe creates a pipe, this will ignore the <major> and +# <minor> fields +# <major> and <minor> are the major and minor numbers used for +# the device. +######################################################################## + +# End /etc/sysconfig/createfiles +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="config-udev-retry" name= + "config-udev-retry"></a>D.23. /etc/sysconfig/udev-retry + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class= + "screen">######################################################################## +# Begin /etc/sysconfig/udev_retry +# +# Description : udev_retry script configuration +# +# Authors : +# +# Version : 00.00 +# +# Notes : Each subsystem that may need to be re-triggered after mountfs +# runs should be listed in this file. Probable subsystems to be +# listed here are rtc (due to /var/lib/hwclock/adjtime) and sound +# (due to both /var/lib/alsa/asound.state and /usr/sbin/alsactl). +# Entries are whitespace-separated. +######################################################################## + +rtc + +# End /etc/sysconfig/udev_retry +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ifup" name="ifup"></a>D.24. /sbin/ifup + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin /sbin/ifup +# +# Description : Interface Up +# +# Authors : Nathan Coulson - nathan AT linuxfromscratch D0T org +# Kevin P. Fleming - kpfleming@linuxfromscratch.org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# DJ Lucas - dj AT linuxfromscratch D0T org +# +# Version : LFS 7.7 +# +# Notes : The IFCONFIG variable is passed to the SERVICE script +# in the /lib/services directory, to indicate what file the +# service should source to get interface specifications. +# +######################################################################## + +up() +{ + log_info_msg "Bringing up the ${1} interface..." + + if ip link show $1 > /dev/null 2>&1; then + link_status=`ip link show $1` + + if [ -n "${link_status}" ]; then + if ! echo "${link_status}" | grep -q UP; then + ip link set $1 up + fi + fi + + else + log_failure_msg "Interface ${IFACE} doesn't exist." + exit 1 + fi + + evaluate_retval +} + +RELEASE="7.7" + +USAGE="Usage: $0 [ -hV ] [--help] [--version] interface" +VERSTR="LFS ifup, version ${RELEASE}" + +while [ $# -gt 0 ]; do + case "$1" in + --help | -h) help="y"; break ;; + + --version | -V) echo "${VERSTR}"; exit 0 ;; + + -*) echo "ifup: ${1}: invalid option" >&2 + echo "${USAGE}" >& 2 + exit 2 ;; + + *) break ;; + esac +done + +if [ -n "$help" ]; then + echo "${VERSTR}" + echo "${USAGE}" + echo + cat << HERE_EOF +ifup is used to bring up a network interface. The interface +parameter, e.g. eth0 or eth0:2, must match the trailing part of the +interface specifications file, e.g. /etc/sysconfig/ifconfig.eth0:2. + +HERE_EOF + exit 0 +fi + +file=/etc/sysconfig/ifconfig.${1} + +# Skip backup files +[ "${file}" = "${file%""~""}" ] || exit 0 + +. /lib/lsb/init-functions + +if [ ! -r "${file}" ]; then + log_failure_msg "Unable to bring up ${1} interface! ${file} is missing or cannot be accessed." + exit 1 +fi + +. $file + +if [ "$IFACE" = "" ]; then + log_failure_msg "Unable to bring up ${1} interface! ${file} does not define an interface [IFACE]." + exit 1 +fi + +# Do not process this service if started by boot, and ONBOOT +# is not set to yes +if [ "${IN_BOOT}" = "1" -a "${ONBOOT}" != "yes" ]; then + exit 0 +fi + +# Bring up the interface +if [ "$VIRTINT" != "yes" ]; then + up ${IFACE} +fi + +for S in ${SERVICE}; do + if [ ! -x "/lib/services/${S}" ]; then + MSG="\nUnable to process ${file}. Either " + MSG="${MSG}the SERVICE '${S} was not present " + MSG="${MSG}or cannot be executed." + log_failure_msg "$MSG" + exit 1 + fi +done + +if [ "${SERVICE}" = "wpa" ]; then log_success_msg; fi + +# Create/configure the interface +for S in ${SERVICE}; do + IFCONFIG=${file} /lib/services/${S} ${IFACE} up +done + +# Set link up virtual interfaces +if [ "${VIRTINT}" == "yes" ]; then + up ${IFACE} +fi + +# Bring up any additional interface components +for I in $INTERFACE_COMPONENTS; do up $I; done + +# Set MTU if requested. Check if MTU has a "good" value. +if test -n "${MTU}"; then + if [[ ${MTU} =~ ^[0-9]+$ ]] && [[ $MTU -ge 68 ]] ; then + for I in $IFACE $INTERFACE_COMPONENTS; do + ip link set dev $I mtu $MTU; + done + else + log_info_msg2 "Invalid MTU $MTU" + fi +fi + +# Set the route default gateway if requested +if [ -n "${GATEWAY}" ]; then + if ip route | grep -q default; then + log_warning_msg "Gateway already setup; skipping." + else + log_info_msg "Adding default gateway ${GATEWAY} to the ${IFACE} interface..." + ip route add default via ${GATEWAY} dev ${IFACE} + evaluate_retval + fi +fi + +# End /sbin/ifup +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ifdown" name="ifdown"></a>D.25. /sbin/ifdown + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/bash +######################################################################## +# Begin /sbin/ifdown +# +# Description : Interface Down +# +# Authors : Nathan Coulson - nathan AT linuxfromscratch D0T org +# Kevin P. Fleming - kpfleming@linuxfromscratch.org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +# Notes : the IFCONFIG variable is passed to the scripts found +# in the /lib/services directory, to indicate what file the +# service should source to get interface specifications. +# +######################################################################## + +RELEASE="7.0" + +USAGE="Usage: $0 [ -hV ] [--help] [--version] interface" +VERSTR="LFS ifdown, version ${RELEASE}" + +while [ $# -gt 0 ]; do + case "$1" in + --help | -h) help="y"; break ;; + + --version | -V) echo "${VERSTR}"; exit 0 ;; + + -*) echo "ifup: ${1}: invalid option" >&2 + echo "${USAGE}" >& 2 + exit 2 ;; + + *) break ;; + esac +done + +if [ -n "$help" ]; then + echo "${VERSTR}" + echo "${USAGE}" + echo + cat << HERE_EOF +ifdown is used to bring down a network interface. The interface +parameter, e.g. eth0 or eth0:2, must match the trailing part of the +interface specifications file, e.g. /etc/sysconfig/ifconfig.eth0:2. + +HERE_EOF + exit 0 +fi + +file=/etc/sysconfig/ifconfig.${1} + +# Skip backup files +[ "${file}" = "${file%""~""}" ] || exit 0 + +. /lib/lsb/init-functions + +if [ ! -r "${file}" ]; then + log_warning_msg "${file} is missing or cannot be accessed." + exit 1 +fi + +. ${file} + +if [ "$IFACE" = "" ]; then + log_failure_msg "${file} does not define an interface [IFACE]." + exit 1 +fi + +# We only need to first service to bring down the interface +S=`echo ${SERVICE} | cut -f1 -d" "` + +if ip link show ${IFACE} > /dev/null 2>&1; then + if [ -n "${S}" -a -x "/lib/services/${S}" ]; then + IFCONFIG=${file} /lib/services/${S} ${IFACE} down + else + MSG="Unable to process ${file}. Either " + MSG="${MSG}the SERVICE variable was not set " + MSG="${MSG}or the specified service cannot be executed." + log_failure_msg "$MSG" + exit 1 + fi +else + log_warning_msg "Interface ${1} doesn't exist." +fi + +# Leave the interface up if there are additional interfaces in the device +link_status=`ip link show ${IFACE} 2>/dev/null` + +if [ -n "${link_status}" ]; then + if [ "$(echo "${link_status}" | grep UP)" != "" ]; then + if [ "$(ip addr show ${IFACE} | grep 'inet ')" == "" ]; then + log_info_msg "Bringing down the ${IFACE} interface..." + ip link set ${IFACE} down + evaluate_retval + fi + fi +fi + +# End /sbin/ifdown +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ipv4static" name="ipv4static"></a>D.26. + /lib/services/ipv4-static + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin /lib/services/ipv4-static +# +# Description : IPV4 Static Boot Script +# +# Authors : Nathan Coulson - nathan AT linuxfromscratch D0T org +# Kevin P. Fleming - kpfleming@linuxfromscratch.org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +######################################################################## + +. /lib/lsb/init-functions +. ${IFCONFIG} + +if [ -z "${IP}" ]; then + log_failure_msg "\nIP variable missing from ${IFCONFIG}, cannot continue." + exit 1 +fi + +if [ -z "${PREFIX}" -a -z "${PEER}" ]; then + log_warning_msg "\nPREFIX variable missing from ${IFCONFIG}, assuming 24." + PREFIX=24 + args="${args} ${IP}/${PREFIX}" + +elif [ -n "${PREFIX}" -a -n "${PEER}" ]; then + log_failure_msg "\nPREFIX and PEER both specified in ${IFCONFIG}, cannot continue." + exit 1 + +elif [ -n "${PREFIX}" ]; then + args="${args} ${IP}/${PREFIX}" + +elif [ -n "${PEER}" ]; then + args="${args} ${IP} peer ${PEER}" +fi + +if [ -n "${LABEL}" ]; then + args="${args} label ${LABEL}" +fi + +if [ -n "${BROADCAST}" ]; then + args="${args} broadcast ${BROADCAST}" +fi + +case "${2}" in + up) + if [ "$(ip addr show ${1} 2>/dev/null | grep ${IP}/)" = "" ]; then + log_info_msg "Adding IPv4 address ${IP} to the ${1} interface..." + ip addr add ${args} dev ${1} + evaluate_retval + else + log_warning_msg "Cannot add IPv4 address ${IP} to ${1}. Already present." + fi + ;; + + down) + if [ "$(ip addr show ${1} 2>/dev/null | grep ${IP}/)" != "" ]; then + log_info_msg "Removing IPv4 address ${IP} from the ${1} interface..." + ip addr del ${args} dev ${1} + evaluate_retval + fi + + if [ -n "${GATEWAY}" ]; then + # Only remove the gateway if there are no remaining ipv4 addresses + if [ "$(ip addr show ${1} 2>/dev/null | grep 'inet ')" != "" ]; then + log_info_msg "Removing default gateway..." + ip route del default + evaluate_retval + fi + fi + ;; + + *) + echo "Usage: ${0} [interface] {up|down}" + exit 1 + ;; +esac + +# End /lib/services/ipv4-static +</pre> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="ipv4route" name="ipv4route"></a>D.27. + /lib/services/ipv4-static-route + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class="screen">#!/bin/sh +######################################################################## +# Begin /lib/services/ipv4-static-route +# +# Description : IPV4 Static Route Script +# +# Authors : Kevin P. Fleming - kpfleming@linuxfromscratch.org +# DJ Lucas - dj AT linuxfromscratch D0T org +# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org +# +# Version : LFS 7.0 +# +######################################################################## + +. /lib/lsb/init-functions +. ${IFCONFIG} + +case "${TYPE}" in + ("" | "network") + need_ip=1 + need_gateway=1 + ;; + + ("default") + need_gateway=1 + args="${args} default" + desc="default" + ;; + + ("host") + need_ip=1 + ;; + + ("unreachable") + need_ip=1 + args="${args} unreachable" + desc="unreachable " + ;; + + (*) + log_failure_msg "Unknown route type (${TYPE}) in ${IFCONFIG}, cannot continue." + exit 1 + ;; +esac + +if [ -n "${GATEWAY}" ]; then + MSG="The GATEWAY variable cannot be set in ${IFCONFIG} for static routes.\n" + log_failure_msg "$MSG Use STATIC_GATEWAY only, cannot continue" + exit 1 +fi + +if [ -n "${need_ip}" ]; then + if [ -z "${IP}" ]; then + log_failure_msg "IP variable missing from ${IFCONFIG}, cannot continue." + exit 1 + fi + + if [ -z "${PREFIX}" ]; then + log_failure_msg "PREFIX variable missing from ${IFCONFIG}, cannot continue." + exit 1 + fi + + args="${args} ${IP}/${PREFIX}" + desc="${desc}${IP}/${PREFIX}" +fi + +if [ -n "${need_gateway}" ]; then + if [ -z "${STATIC_GATEWAY}" ]; then + log_failure_msg "STATIC_GATEWAY variable missing from ${IFCONFIG}, cannot continue." + exit 1 + fi + args="${args} via ${STATIC_GATEWAY}" +fi + +if [ -n "${SOURCE}" ]; then + args="${args} src ${SOURCE}" +fi + +case "${2}" in + up) + log_info_msg "Adding '${desc}' route to the ${1} interface..." + ip route add ${args} dev ${1} + evaluate_retval + ;; + + down) + log_info_msg "Removing '${desc}' route from the ${1} interface..." + ip route del ${args} dev ${1} + evaluate_retval + ;; + + *) + echo "Usage: ${0} [interface] {up|down}" + exit 1 + ;; +esac + +# End /lib/services/ipv4-static-route +</pre> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="rules" name="rules"></a>Приложение E. Правила + настройки Udev + </h2> + </div> + </div> + </div> + <div class="appendix"> + <p> + Правила в этом приложении перечислены для удобства. Установка + обычно выполняются с помощью инструкций приведенных в <a class= + "xref" href="#ch-system-udev" title= + "8.75. Udev из Systemd-255">Раздел 8.75, «Udev из + Systemd-255»</a>. + </p> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="lfsrules" name="lfsrules"></a>E.1. 55-lfs.rules + </h2> + </div> + </div> + </div> + <div class="wrap" lang="ru" xml:lang="ru"> + <pre class= + "screen"># /etc/udev/rules.d/55-lfs.rules: Rule definitions for LFS. + +# Core kernel devices + +# This causes the system clock to be set as soon as /dev/rtc becomes available. +SUBSYSTEM=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start" +KERNEL=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start" + +</pre> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="Licenses" name="Licenses"></a>Приложение F. Лицензии + LFS + </h2> + </div> + </div> + </div> + <div class="appendix"> + <p> + Настоящая книга распространяется на условиях лицензии Creative + Commons Attribution-NonCommercial-ShareAlike 2.0 License. + </p> + <p> + Инструкции, предназначенные для использования на компьютере, + могут использоваться отдельно от книги на условиях лицензии MIT. + </p> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="CC" name="CC"></a>F.1. Лицензия Creative Commons + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p class="title"> + Creative Commons Legal Code + </p> + <p class="title"> + Attribution-NonCommercial-ShareAlike 2.0 + </p> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT + PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT + CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS + PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE + COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION + PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + ITS USE. + </p> + </div> + <p class="title"> + License + </p> + <p> + THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS + CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK + IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE + OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR + COPYRIGHT LAW IS PROHIBITED. + </p> + <p> + BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT + AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE + LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION + OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. + </p> + <div class="orderedlist"> + <ol> + <li class="listitem"> + <p> + Definitions + </p> + <div class="orderedlist"> + <ol> + <li class="listitem"> + <p> + "Collective Work" means a work, such as a + periodical issue, anthology or encyclopedia, in + which the Work in its entirety in unmodified form, + along with a number of other contributions, + constituting separate and independent works in + themselves, are assembled into a collective whole. + A work that constitutes a Collective Work will not + be considered a Derivative Work (as defined below) + for the purposes of this License. + </p> + </li> + <li class="listitem"> + <p> + "Derivative Work" means a work based upon the Work + or upon the Work and other pre-existing works, such + as a translation, musical arrangement, + dramatization, fictionalization, motion picture + version, sound recording, art reproduction, + abridgment, condensation, or any other form in + which the Work may be recast, transformed, or + adapted, except that a work that constitutes a + Collective Work will not be considered a Derivative + Work for the purpose of this License. For the + avoidance of doubt, where the Work is a musical + composition or sound recording, the synchronization + of the Work in timed-relation with a moving image + ("synching") will be considered a Derivative Work + for the purpose of this License. + </p> + </li> + <li class="listitem"> + <p> + "Licensor" means the individual or entity that + offers the Work under the terms of this License. + </p> + </li> + <li class="listitem"> + <p> + "Original Author" means the individual or entity + who created the Work. + </p> + </li> + <li class="listitem"> + <p> + "Work" means the copyrightable work of authorship + offered under the terms of this License. + </p> + </li> + <li class="listitem"> + <p> + "You" means an individual or entity exercising + rights under this License who has not previously + violated the terms of this License with respect to + the Work, or who has received express permission + from the Licensor to exercise rights under this + License despite a previous violation. + </p> + </li> + <li class="listitem"> + <p> + "License Elements" means the following high-level + license attributes as selected by Licensor and + indicated in the title of this License: + Attribution, Noncommercial, ShareAlike. + </p> + </li> + </ol> + </div> + </li> + <li class="listitem"> + <p> + Fair Use Rights. Nothing in this license is intended to + reduce, limit, or restrict any rights arising from fair + use, first sale or other limitations on the exclusive + rights of the copyright owner under copyright law or + other applicable laws. + </p> + </li> + <li class="listitem"> + <p> + License Grant. Subject to the terms and conditions of + this License, Licensor hereby grants You a worldwide, + royalty-free, non-exclusive, perpetual (for the duration + of the applicable copyright) license to exercise the + rights in the Work as stated below: + </p> + <div class="orderedlist"> + <ol> + <li class="listitem"> + <p> + to reproduce the Work, to incorporate the Work into + one or more Collective Works, and to reproduce the + Work as incorporated in the Collective Works; + </p> + </li> + <li class="listitem"> + <p> + to create and reproduce Derivative Works; + </p> + </li> + <li class="listitem"> + <p> + to distribute copies or phonorecords of, display + publicly, perform publicly, and perform publicly by + means of a digital audio transmission the Work + including as incorporated in Collective Works; + </p> + </li> + <li class="listitem"> + <p> + to distribute copies or phonorecords of, display + publicly, perform publicly, and perform publicly by + means of a digital audio transmission Derivative + Works; + </p> + </li> + </ol> + </div> + <p> + The above rights may be exercised in all media and + formats whether now known or hereafter devised. The above + rights include the right to make such modifications as + are technically necessary to exercise the rights in other + media and formats. All rights not expressly granted by + Licensor are hereby reserved, including but not limited + to the rights set forth in Sections 4(e) and 4(f). + </p> + </li> + <li class="listitem"> + <p> + Restrictions.The license granted in Section 3 above is + expressly made subject to and limited by the following + restrictions: + </p> + <div class="orderedlist"> + <ol> + <li class="listitem"> + <p> + You may distribute, publicly display, publicly + perform, or publicly digitally perform the Work + only under the terms of this License, and You must + include a copy of, or the Uniform Resource + Identifier for, this License with every copy or + phonorecord of the Work You distribute, publicly + display, publicly perform, or publicly digitally + perform. You may not offer or impose any terms on + the Work that alter or restrict the terms of this + License or the recipients' exercise of the rights + granted hereunder. You may not sublicense the Work. + You must keep intact all notices that refer to this + License and to the disclaimer of warranties. You + may not distribute, publicly display, publicly + perform, or publicly digitally perform the Work + with any technological measures that control access + or use of the Work in a manner inconsistent with + the terms of this License Agreement. The above + applies to the Work as incorporated in a Collective + Work, but this does not require the Collective Work + apart from the Work itself to be made subject to + the terms of this License. If You create a + Collective Work, upon notice from any Licensor You + must, to the extent practicable, remove from the + Collective Work any reference to such Licensor or + the Original Author, as requested. If You create a + Derivative Work, upon notice from any Licensor You + must, to the extent practicable, remove from the + Derivative Work any reference to such Licensor or + the Original Author, as requested. + </p> + </li> + <li class="listitem"> + <p> + You may distribute, publicly display, publicly + perform, or publicly digitally perform a Derivative + Work only under the terms of this License, a later + version of this License with the same License + Elements as this License, or a Creative Commons + iCommons license that contains the same License + Elements as this License (e.g. + Attribution-NonCommercial-ShareAlike 2.0 Japan). + You must include a copy of, or the Uniform Resource + Identifier for, this License or other license + specified in the previous sentence with every copy + or phonorecord of each Derivative Work You + distribute, publicly display, publicly perform, or + publicly digitally perform. You may not offer or + impose any terms on the Derivative Works that alter + or restrict the terms of this License or the + recipients' exercise of the rights granted + hereunder, and You must keep intact all notices + that refer to this License and to the disclaimer of + warranties. You may not distribute, publicly + display, publicly perform, or publicly digitally + perform the Derivative Work with any technological + measures that control access or use of the Work in + a manner inconsistent with the terms of this + License Agreement. The above applies to the + Derivative Work as incorporated in a Collective + Work, but this does not require the Collective Work + apart from the Derivative Work itself to be made + subject to the terms of this License. + </p> + </li> + <li class="listitem"> + <p> + You may not exercise any of the rights granted to + You in Section 3 above in any manner that is + primarily intended for or directed toward + commercial advantage or private monetary + compensation. The exchange of the Work for other + copyrighted works by means of digital file-sharing + or otherwise shall not be considered to be intended + for or directed toward commercial advantage or + private monetary compensation, provided there is no + payment of any monetary compensation in connection + with the exchange of copyrighted works. + </p> + </li> + <li class="listitem"> + <p> + If you distribute, publicly display, publicly + perform, or publicly digitally perform the Work or + any Derivative Works or Collective Works, You must + keep intact all copyright notices for the Work and + give the Original Author credit reasonable to the + medium or means You are utilizing by conveying the + name (or pseudonym if applicable) of the Original + Author if supplied; the title of the Work if + supplied; to the extent reasonably practicable, the + Uniform Resource Identifier, if any, that Licensor + specifies to be associated with the Work, unless + such URI does not refer to the copyright notice or + licensing information for the Work; and in the case + of a Derivative Work, a credit identifying the use + of the Work in the Derivative Work (e.g., "French + translation of the Work by Original Author," or + "Screenplay based on original Work by Original + Author"). Such credit may be implemented in any + reasonable manner; provided, however, that in the + case of a Derivative Work or Collective Work, at a + minimum such credit will appear where any other + comparable authorship credit appears and in a + manner at least as prominent as such other + comparable authorship credit. + </p> + </li> + <li class="listitem"> + <p> + For the avoidance of doubt, where the Work is a + musical composition: + </p> + <div class="orderedlist"> + <ol> + <li class="listitem"> + <p> + Performance Royalties Under Blanket Licenses. + Licensor reserves the exclusive right to + collect, whether individually or via a + performance rights society (e.g. ASCAP, BMI, + SESAC), royalties for the public performance + or public digital performance (e.g. webcast) + of the Work if that performance is primarily + intended for or directed toward commercial + advantage or private monetary compensation. + </p> + </li> + <li class="listitem"> + <p> + Mechanical Rights and Statutory Royalties. + Licensor reserves the exclusive right to + collect, whether individually or via a music + rights agency or designated agent (e.g. Harry + Fox Agency), royalties for any phonorecord + You create from the Work ("cover version") + and distribute, subject to the compulsory + license created by 17 USC Section 115 of the + US Copyright Act (or the equivalent in other + jurisdictions), if Your distribution of such + cover version is primarily intended for or + directed toward commercial advantage or + private monetary compensation. 6. Webcasting + Rights and Statutory Royalties. For the + avoidance of doubt, where the Work is a sound + recording, Licensor reserves the exclusive + right to collect, whether individually or via + a performance-rights society (e.g. + SoundExchange), royalties for the public + digital performance (e.g. webcast) of the + Work, subject to the compulsory license + created by 17 USC Section 114 of the US + Copyright Act (or the equivalent in other + jurisdictions), if Your public digital + performance is primarily intended for or + directed toward commercial advantage or + private monetary compensation. + </p> + </li> + </ol> + </div> + </li> + <li class="listitem"> + <p> + Webcasting Rights and Statutory Royalties. For the + avoidance of doubt, where the Work is a sound + recording, Licensor reserves the exclusive right to + collect, whether individually or via a + performance-rights society (e.g. SoundExchange), + royalties for the public digital performance (e.g. + webcast) of the Work, subject to the compulsory + license created by 17 USC Section 114 of the US + Copyright Act (or the equivalent in other + jurisdictions), if Your public digital performance + is primarily intended for or directed toward + commercial advantage or private monetary + compensation. + </p> + </li> + </ol> + </div> + </li> + <li class="listitem"> + <p> + Representations, Warranties and Disclaimer + </p> + <p> + UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN + WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO + REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE + WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, + INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, + MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, + NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER + DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, + WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT + ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH + EXCLUSION MAY NOT APPLY TO YOU. + </p> + </li> + <li class="listitem"> + <p> + Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY + APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO + YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, + CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT + OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR + HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + </p> + </li> + <li class="listitem"> + <p> + Termination + </p> + <div class="orderedlist"> + <ol> + <li class="listitem"> + <p> + This License and the rights granted hereunder will + terminate automatically upon any breach by You of + the terms of this License. Individuals or entities + who have received Derivative Works or Collective + Works from You under this License, however, will + not have their licenses terminated provided such + individuals or entities remain in full compliance + with those licenses. Sections 1, 2, 5, 6, 7, and 8 + will survive any termination of this License. + </p> + </li> + <li class="listitem"> + <p> + Subject to the above terms and conditions, the + license granted here is perpetual (for the duration + of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the + right to release the Work under different license + terms or to stop distributing the Work at any time; + provided, however that any such election will not + serve to withdraw this License (or any other + license that has been, or is required to be, + granted under the terms of this License), and this + License will continue in full force and effect + unless terminated as stated above. + </p> + </li> + </ol> + </div> + </li> + <li class="listitem"> + <p> + Miscellaneous + </p> + <div class="orderedlist"> + <ol> + <li class="listitem"> + <p> + Each time You distribute or publicly digitally + perform the Work or a Collective Work, the Licensor + offers to the recipient a license to the Work on + the same terms and conditions as the license + granted to You under this License. + </p> + </li> + <li class="listitem"> + <p> + Each time You distribute or publicly digitally + perform a Derivative Work, Licensor offers to the + recipient a license to the original Work on the + same terms and conditions as the license granted to + You under this License. + </p> + </li> + <li class="listitem"> + <p> + If any provision of this License is invalid or + unenforceable under applicable law, it shall not + affect the validity or enforceability of the + remainder of the terms of this License, and without + further action by the parties to this agreement, + such provision shall be reformed to the minimum + extent necessary to make such provision valid and + enforceable. + </p> + </li> + <li class="listitem"> + <p> + No term or provision of this License shall be + deemed waived and no breach consented to unless + such waiver or consent shall be in writing and + signed by the party to be charged with such waiver + or consent. + </p> + </li> + <li class="listitem"> + <p> + This License constitutes the entire agreement + between the parties with respect to the Work + licensed here. There are no understandings, + agreements or representations with respect to the + Work not specified here. Licensor shall not be + bound by any additional provisions that may appear + in any communication from You. This License may not + be modified without the mutual written agreement of + the Licensor and You. + </p> + </li> + </ol> + </div> + </li> + </ol> + </div> + <div class="admon important"> + <h3> + Важно + </h3> + <p> + Creative Commons is not a party to this License, and makes no + warranty whatsoever in connection with the Work. Creative + Commons will not be liable to You or any party on any legal + theory for any damages whatsoever, including without + limitation any general, special, incidental or consequential + damages arising in connection to this license. + Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor + hereunder, it shall have all rights and obligations of + Licensor. + </p> + <p> + Except for the limited purpose of indicating to the public + that the Work is licensed under the CCPL, neither party will + use the trademark "Creative Commons" or any related trademark + or logo of Creative Commons without the prior written consent + of Creative Commons. Any permitted use will be in compliance + with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise + made available upon request from time to time. + </p> + <p> + Creative Commons may be contacted at <a class="ulink" href= + "http://creativecommons.org/">http://creativecommons.org/</a>. + </p> + </div> + </div> + <div class="titlepage"> + <div> + <div> + <h2 class="title"> + <a id="MIT" name="MIT"></a>F.2. Лицензия MIT + </h2> + </div> + </div> + </div> + <div class="sect1" lang="ru" xml:lang="ru"> + <p> + Copyright © 1999-2024 Gerard Beekmans + </p> + <p> + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: + </p> + <p> + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + </p> + <p> + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + </p> + </div> + </div> + </div> + <div class="index"> + <div class="titlepage"> + <div> + <div> + <h1 class="title"> + <a id="idm20040" name="idm20040"></a>Предметный указатель + </h1> + </div> + </div> + </div> + <div class="index"> + <h2> + <a id="package-index" name="package-index"></a>Пакеты + </h2> + <ul> + <li> + <strong class="item">Acl:</strong> <span class= + "indexref"><a href="#ch-system-acl">Acl-2.3.2</a></span> + </li> + <li> + <strong class="item">Attr:</strong> <span class= + "indexref"><a href="#ch-system-attr">Attr-2.5.2</a></span> + </li> + <li> + <strong class="item">Autoconf:</strong> <span class= + "indexref"><a href= + "#ch-system-autoconf">Autoconf-2.72</a></span> + </li> + <li> + <strong class="item">Automake:</strong> <span class= + "indexref"><a href= + "#ch-system-automake">Automake-1.16.5</a></span> + </li> + <li> + <strong class="item">Bash:</strong> <span class= + "indexref"><a href="#ch-system-bash">Bash-5.2.21</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href="#ch-tools-bash">Bash-5.2.21</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Bc:</strong> <span class= + "indexref"><a href="#ch-system-bc">Bc-6.7.5</a></span> + </li> + <li> + <strong class="item">Binutils:</strong> <span class= + "indexref"><a href= + "#ch-system-binutils">Binutils-2.42</a></span> + <ul> + <li> + <strong class="secitem">tools, pass 1:</strong> + <span class="indexref"><a href= + "#ch-tools-binutils-pass1">Binutils-2.42 - Проход + 1</a></span> + </li> + <li> + <strong class="secitem">tools, pass 2:</strong> + <span class="indexref"><a href= + "#ch-tools-binutils-pass2">Binutils-2.42 - Проход + 2</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Bison:</strong> <span class= + "indexref"><a href="#ch-system-bison">Bison-3.8.2</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href="#ch-tools-bison">Bison-3.8.2</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Bootscripts:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a></span> + <ul> + <li> + <strong class="secitem">usage:</strong> <span class= + "indexref"><a href="#ch-config-usage">Настройка и + использование загрузочных скриптов System V</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Bzip2:</strong> <span class= + "indexref"><a href="#ch-system-bzip2">Bzip2-1.0.8</a></span> + </li> + <li> + <strong class="item">Check:</strong> <span class= + "indexref"><a href="#ch-system-check">Check-0.15.2</a></span> + </li> + <li> + <strong class="item">Coreutils:</strong> <span class= + "indexref"><a href= + "#ch-system-coreutils">Coreutils-9.4</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href= + "#ch-tools-coreutils">Coreutils-9.4</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">DejaGNU:</strong> <span class= + "indexref"><a href= + "#ch-system-dejagnu">DejaGNU-1.6.3</a></span> + </li> + <li> + <strong class="item">Diffutils:</strong> <span class= + "indexref"><a href= + "#ch-system-diffutils">Diffutils-3.10</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href= + "#ch-tools-diffutils">Diffutils-3.10</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">E2fsprogs:</strong> <span class= + "indexref"><a href= + "#ch-system-e2fsprogs">E2fsprogs-1.47.0</a></span> + </li> + <li> + <strong class="item">Expat:</strong> <span class= + "indexref"><a href="#ch-system-expat">Expat-2.6.0</a></span> + </li> + <li> + <strong class="item">Expect:</strong> <span class= + "indexref"><a href="#ch-system-expect">Expect-5.45.4</a></span> + </li> + <li> + <strong class="item">File:</strong> <span class= + "indexref"><a href="#ch-system-file">File-5.45</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href="#ch-tools-file">File-5.45</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Findutils:</strong> <span class= + "indexref"><a href= + "#ch-system-findutils">Findutils-4.9.0</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href= + "#ch-tools-findutils">Findutils-4.9.0</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Flex:</strong> <span class= + "indexref"><a href="#ch-system-flex">Flex-2.6.4</a></span> + </li> + <li> + <strong class="item">Flit-core:</strong> <span class= + "indexref"><a href= + "#ch-system-flit-core">Flit-Core-3.9.0</a></span> + </li> + <li> + <strong class="item">Gawk:</strong> <span class= + "indexref"><a href="#ch-system-gawk">Gawk-5.3.0</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href="#ch-tools-gawk">Gawk-5.3.0</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">GCC:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a></span> + <ul> + <li> + <strong class="secitem">tools, libstdc++ Проход 1:</strong> + <span class="indexref"><a href= + "#ch-tools-libstdcpp">Libstdc++ из GCC-13.2.0</a></span> + </li> + <li> + <strong class="secitem">tools, pass 1:</strong> + <span class="indexref"><a href= + "#ch-tools-gcc-pass1">GCC-13.2.0 - Проход 1</a></span> + </li> + <li> + <strong class="secitem">tools, pass 2:</strong> + <span class="indexref"><a href= + "#ch-tools-gcc-pass2">GCC-13.2.0 - Проход 2</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">GDBM:</strong> <span class= + "indexref"><a href="#ch-system-gdbm">GDBM-1.23</a></span> + </li> + <li> + <strong class="item">Gettext:</strong> <span class= + "indexref"><a href= + "#ch-system-gettext">Gettext-0.22.4</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href= + "#ch-tools-gettext">Gettext-0.22.4</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Glibc:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href="#ch-tools-glibc">Glibc-2.39</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">GMP:</strong> <span class= + "indexref"><a href="#ch-system-gmp">GMP-6.3.0</a></span> + </li> + <li> + <strong class="item">Gperf:</strong> <span class= + "indexref"><a href="#ch-system-gperf">Gperf-3.1</a></span> + </li> + <li> + <strong class="item">Grep:</strong> <span class= + "indexref"><a href="#ch-system-grep">Grep-3.11</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href="#ch-tools-grep">Grep-3.11</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Groff:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a></span> + </li> + <li> + <strong class="item">GRUB:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a></span> + </li> + <li> + <strong class="item">Gzip:</strong> <span class= + "indexref"><a href="#ch-system-gzip">Gzip-1.13</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href="#ch-tools-gzip">Gzip-1.13</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Iana-Etc:</strong> <span class= + "indexref"><a href= + "#ch-system-iana-etc">Iana-Etc-20240125</a></span> + </li> + <li> + <strong class="item">Inetutils:</strong> <span class= + "indexref"><a href= + "#ch-system-inetutils">Inetutils-2.5</a></span> + </li> + <li> + <strong class="item">Intltool:</strong> <span class= + "indexref"><a href= + "#ch-system-intltool">Intltool-0.51.0</a></span> + </li> + <li> + <strong class="item">IPRoute2:</strong> <span class= + "indexref"><a href= + "#ch-system-iproute2">IPRoute2-6.7.0</a></span> + </li> + <li> + <strong class="item">Jinja2:</strong> <span class= + "indexref"><a href="#ch-system-jinja2">Jinja2-3.1.3</a></span> + </li> + <li> + <strong class="item">Kbd:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a></span> + </li> + <li> + <strong class="item">Kmod:</strong> <span class= + "indexref"><a href="#ch-system-kmod">Kmod-31</a></span> + </li> + <li> + <strong class="item">Less:</strong> <span class= + "indexref"><a href="#ch-system-less">Less-643</a></span> + </li> + <li> + <strong class="item">Libcap:</strong> <span class= + "indexref"><a href="#ch-system-libcap">Libcap-2.69</a></span> + </li> + <li> + <strong class="item">Libelf:</strong> <span class= + "indexref"><a href="#ch-system-libelf">Libelf из + Elfutils-0.190</a></span> + </li> + <li> + <strong class="item">libffi:</strong> <span class= + "indexref"><a href="#ch-system-libffi">Libffi-3.4.4</a></span> + </li> + <li> + <strong class="item">Libpipeline:</strong> <span class= + "indexref"><a href= + "#ch-system-libpipeline">Libpipeline-1.5.7</a></span> + </li> + <li> + <strong class="item">Libtool:</strong> <span class= + "indexref"><a href= + "#ch-system-libtool">Libtool-2.4.7</a></span> + </li> + <li> + <strong class="item">Libxcrypt:</strong> <span class= + "indexref"><a href= + "#ch-system-libxcrypt">Libxcrypt-4.4.36</a></span> + </li> + <li> + <strong class="item">Linux:</strong> <span class= + "indexref"><a href="#ch-bootable-kernel">Linux-6.7.4</a></span> + <ul> + <li> + <strong class="secitem">tools, API headers:</strong> + <span class="indexref"><a href= + "#ch-tools-linux-headers">Заголовочные файлы Linux-6.7.4 + API</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">M4:</strong> <span class= + "indexref"><a href="#ch-system-m4">M4-1.4.19</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href="#ch-tools-m4">M4-1.4.19</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Make:</strong> <span class= + "indexref"><a href="#ch-system-make">Make-4.4.1</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href="#ch-tools-make">Make-4.4.1</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Man-DB:</strong> <span class= + "indexref"><a href="#ch-system-man-db">Man-DB-2.12.0</a></span> + </li> + <li> + <strong class="item">Man-pages:</strong> <span class= + "indexref"><a href= + "#ch-system-man-pages">Man-pages-6.06</a></span> + </li> + <li> + <strong class="item">MarkupSafe:</strong> <span class= + "indexref"><a href= + "#ch-system-markupsafe">MarkupSafe-2.1.5</a></span> + </li> + <li> + <strong class="item">Meson:</strong> <span class= + "indexref"><a href="#ch-system-meson">Meson-1.3.2</a></span> + </li> + <li> + <strong class="item">MPC:</strong> <span class= + "indexref"><a href="#ch-system-mpc">MPC-1.3.1</a></span> + </li> + <li> + <strong class="item">MPFR:</strong> <span class= + "indexref"><a href="#ch-system-mpfr">MPFR-4.2.1</a></span> + </li> + <li> + <strong class="item">Ncurses:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href= + "#ch-tools-ncurses">Ncurses-6.4-20230520</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Ninja:</strong> <span class= + "indexref"><a href="#ch-system-ninja">Ninja-1.11.1</a></span> + </li> + <li> + <strong class="item">OpenSSL:</strong> <span class= + "indexref"><a href= + "#ch-system-openssl">OpenSSL-3.2.1</a></span> + </li> + <li> + <strong class="item">Patch:</strong> <span class= + "indexref"><a href="#ch-system-patch">Patch-2.7.6</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href="#ch-tools-patch">Patch-2.7.6</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Perl:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href="#ch-tools-perl">Perl-5.38.2</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Pkgconf:</strong> <span class= + "indexref"><a href= + "#ch-system-pkgconf">Pkgconf-2.1.1</a></span> + </li> + <li> + <strong class="item">Procps-ng:</strong> <span class= + "indexref"><a href= + "#ch-system-procps">Procps-ng-4.0.4</a></span> + </li> + <li> + <strong class="item">Psmisc:</strong> <span class= + "indexref"><a href="#ch-system-psmisc">Psmisc-23.6</a></span> + </li> + <li> + <strong class="item">Python:</strong> <span class= + "indexref"><a href="#ch-system-Python">Python-3.12.2</a></span> + <ul> + <li> + <strong class="secitem">temporary:</strong> <span class= + "indexref"><a href= + "#ch-tools-Python">Python-3.12.2</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">rc.site:</strong> <span class= + "indexref"><a href="#ch-config-site">Файл rc.site</a></span> + </li> + <li> + <strong class="item">Readline:</strong> <span class= + "indexref"><a href= + "#ch-system-readline">Readline-8.2</a></span> + </li> + <li> + <strong class="item">Sed:</strong> <span class= + "indexref"><a href="#ch-system-sed">Sed-4.9</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href="#ch-tools-sed">Sed-4.9</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Setuptools:</strong> <span class= + "indexref"><a href= + "#ch-system-setuptools">Setuptools-69.1.0</a></span> + </li> + <li> + <strong class="item">Shadow:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a></span> + <ul> + <li> + <strong class="secitem">configuring:</strong> <span class= + "indexref"><a href="#conf-shadow">Настройка + Shadow</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Sysklogd:</strong> <span class= + "indexref"><a href= + "#ch-system-sysklogd">Sysklogd-1.5.1</a></span> + <ul> + <li> + <strong class="secitem">configuring:</strong> <span class= + "indexref"><a href="#conf-sysklogd">Настройка + Sysklogd</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Sysvinit:</strong> <span class= + "indexref"><a href= + "#ch-system-sysvinit">Sysvinit-3.08</a></span> + <ul> + <li> + <strong class="secitem">configuring:</strong> <span class= + "indexref"><a href="#conf-sysvinit">Настройка + Sysvinit</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Tar:</strong> <span class= + "indexref"><a href="#ch-system-tar">Tar-1.35</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href="#ch-tools-tar">Tar-1.35</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Tcl:</strong> <span class= + "indexref"><a href="#ch-system-tcl">Tcl-8.6.13</a></span> + </li> + <li> + <strong class="item">Texinfo:</strong> <span class= + "indexref"><a href="#ch-system-texinfo">Texinfo-7.1</a></span> + <ul> + <li> + <strong class="secitem">temporary:</strong> <span class= + "indexref"><a href= + "#ch-tools-texinfo">Texinfo-7.1</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Udev:</strong> <span class= + "indexref"><a href="#ch-system-udev">Udev из + Systemd-255</a></span> + <ul> + <li> + <strong class="secitem">configuring:</strong> <span class= + "indexref"><a href="#conf-udev">Настройка Udev</a></span> + </li> + <li> + <strong class="secitem">usage:</strong> <span class= + "indexref"><a href="#ch-config-udev">Взаимодействие с + устройствами и модулями</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Util-linux:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href= + "#ch-tools-util-linux">Util-linux-2.39.3</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Vim:</strong> <span class= + "indexref"><a href="#ch-system-vim">Vim-9.1.0041</a></span> + </li> + <li> + <strong class="item">wheel:</strong> <span class= + "indexref"><a href="#ch-system-wheel">Wheel-0.42.0</a></span> + </li> + <li> + <strong class="item">XML::Parser:</strong> <span class= + "indexref"><a href= + "#ch-system-xml-parser">XML::Parser-2.47</a></span> + </li> + <li> + <strong class="item">Xz:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a></span> + <ul> + <li> + <strong class="secitem">tools:</strong> <span class= + "indexref"><a href="#ch-tools-xz">Xz-5.4.6</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">Zlib:</strong> <span class= + "indexref"><a href="#ch-system-zlib">Zlib-1.3.1</a></span> + </li> + <li> + <strong class="item">zstd:</strong> <span class= + "indexref"><a href="#ch-system-zstd">Zstd-1.5.5</a></span> + </li> + </ul> + <h2> + <a id="program-index" name="program-index"></a>Программы + </h2> + <ul> + <li> + <strong class="item">[:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#lbracket">Описание</a><br /></span> + </li> + <li> + <strong class="item">2to3:</strong> <span class= + "indexref"><a href="#ch-system-Python">Python-3.12.2</a></span> + </li> + <li> + <strong class="item">accessdb:</strong> <span class= + "indexref"><a href="#ch-system-man-db">Man-DB-2.12.0</a> -- + <a href="#accessdb">Описание</a><br /></span> + </li> + <li> + <strong class="item">aclocal:</strong> <span class= + "indexref"><a href="#ch-system-automake">Automake-1.16.5</a> -- + <a href="#aclocal">Описание</a><br /></span> + </li> + <li> + <strong class="item">aclocal-1.16:</strong> <span class= + "indexref"><a href="#ch-system-automake">Automake-1.16.5</a> -- + <a href="#aclocalversion">Описание</a><br /></span> + </li> + <li> + <strong class="item">addftinfo:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#addftinfo">Описание</a><br /></span> + </li> + <li> + <strong class="item">addpart:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#addpart">Описание</a><br /></span> + </li> + <li> + <strong class="item">addr2line:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#addr2line">Описание</a><br /></span> + </li> + <li> + <strong class="item">afmtodit:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#afmtodit">Описание</a><br /></span> + </li> + <li> + <strong class="item">agetty:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#agetty">Описание</a><br /></span> + </li> + <li> + <strong class="item">apropos:</strong> <span class= + "indexref"><a href="#ch-system-man-db">Man-DB-2.12.0</a> -- + <a href="#apropos">Описание</a><br /></span> + </li> + <li> + <strong class="item">ar:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#ar">Описание</a><br /></span> + </li> + <li> + <strong class="item">as:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#as">Описание</a><br /></span> + </li> + <li> + <strong class="item">attr:</strong> <span class= + "indexref"><a href="#ch-system-attr">Attr-2.5.2</a> -- <a href= + "#attr">Описание</a><br /></span> + </li> + <li> + <strong class="item">autoconf:</strong> <span class= + "indexref"><a href="#ch-system-autoconf">Autoconf-2.72</a> -- + <a href="#autoconf">Описание</a><br /></span> + </li> + <li> + <strong class="item">autoheader:</strong> <span class= + "indexref"><a href="#ch-system-autoconf">Autoconf-2.72</a> -- + <a href="#autoheader">Описание</a><br /></span> + </li> + <li> + <strong class="item">autom4te:</strong> <span class= + "indexref"><a href="#ch-system-autoconf">Autoconf-2.72</a> -- + <a href="#autom4te">Описание</a><br /></span> + </li> + <li> + <strong class="item">automake:</strong> <span class= + "indexref"><a href="#ch-system-automake">Automake-1.16.5</a> -- + <a href="#automake">Описание</a><br /></span> + </li> + <li> + <strong class="item">automake-1.16:</strong> <span class= + "indexref"><a href="#ch-system-automake">Automake-1.16.5</a> -- + <a href="#automake-version">Описание</a><br /></span> + </li> + <li> + <strong class="item">autopoint:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#autopoint">Описание</a><br /></span> + </li> + <li> + <strong class="item">autoreconf:</strong> <span class= + "indexref"><a href="#ch-system-autoconf">Autoconf-2.72</a> -- + <a href="#autoreconf">Описание</a><br /></span> + </li> + <li> + <strong class="item">autoscan:</strong> <span class= + "indexref"><a href="#ch-system-autoconf">Autoconf-2.72</a> -- + <a href="#autoscan">Описание</a><br /></span> + </li> + <li> + <strong class="item">autoupdate:</strong> <span class= + "indexref"><a href="#ch-system-autoconf">Autoconf-2.72</a> -- + <a href="#autoupdate">Описание</a><br /></span> + </li> + <li> + <strong class="item">awk:</strong> <span class= + "indexref"><a href="#ch-system-gawk">Gawk-5.3.0</a> -- <a href= + "#awk">Описание</a><br /></span> + </li> + <li> + <strong class="item">b2sum:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#b2sum">Описание</a><br /></span> + </li> + <li> + <strong class="item">badblocks:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#badblocks">Описание</a><br /></span> + </li> + <li> + <strong class="item">base64:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#base64">Описание</a><br /></span> + </li> + <li> + <strong class="item">basename:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#basename">Описание</a><br /></span> + </li> + <li> + <strong class="item">basenc:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#basenc">Описание</a><br /></span> + </li> + <li> + <strong class="item">bash:</strong> <span class= + "indexref"><a href="#ch-system-bash">Bash-5.2.21</a> -- + <a href="#bash">Описание</a><br /></span> + </li> + <li> + <strong class="item">bashbug:</strong> <span class= + "indexref"><a href="#ch-system-bash">Bash-5.2.21</a> -- + <a href="#bashbug">Описание</a><br /></span> + </li> + <li> + <strong class="item">bc:</strong> <span class= + "indexref"><a href="#ch-system-bc">Bc-6.7.5</a> -- <a href= + "#bc">Описание</a><br /></span> + </li> + <li> + <strong class="item">bison:</strong> <span class= + "indexref"><a href="#ch-system-bison">Bison-3.8.2</a> -- + <a href="#bison">Описание</a><br /></span> + </li> + <li> + <strong class="item">blkdiscard:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#blkdiscard">Описание</a><br /></span> + </li> + <li> + <strong class="item">blkid:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#blkid">Описание</a><br /></span> + </li> + <li> + <strong class="item">blkzone:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#blkzone">Описание</a><br /></span> + </li> + <li> + <strong class="item">blockdev:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#blockdev">Описание</a><br /></span> + </li> + <li> + <strong class="item">bomtool:</strong> <span class= + "indexref"><a href="#ch-system-pkgconf">Pkgconf-2.1.1</a> -- + <a href="#bomtool">Описание</a><br /></span> + </li> + <li> + <strong class="item">bootlogd:</strong> <span class= + "indexref"><a href="#ch-system-sysvinit">Sysvinit-3.08</a> -- + <a href="#bootlogd">Описание</a><br /></span> + </li> + <li> + <strong class="item">bridge:</strong> <span class= + "indexref"><a href="#ch-system-iproute2">IPRoute2-6.7.0</a> -- + <a href="#bridge">Описание</a><br /></span> + </li> + <li> + <strong class="item">bunzip2:</strong> <span class= + "indexref"><a href="#ch-system-bzip2">Bzip2-1.0.8</a> -- + <a href="#bunzip2">Описание</a><br /></span> + </li> + <li> + <strong class="item">bzcat:</strong> <span class= + "indexref"><a href="#ch-system-bzip2">Bzip2-1.0.8</a> -- + <a href="#bzcat">Описание</a><br /></span> + </li> + <li> + <strong class="item">bzcmp:</strong> <span class= + "indexref"><a href="#ch-system-bzip2">Bzip2-1.0.8</a> -- + <a href="#bzcmp">Описание</a><br /></span> + </li> + <li> + <strong class="item">bzdiff:</strong> <span class= + "indexref"><a href="#ch-system-bzip2">Bzip2-1.0.8</a> -- + <a href="#bzdiff">Описание</a><br /></span> + </li> + <li> + <strong class="item">bzegrep:</strong> <span class= + "indexref"><a href="#ch-system-bzip2">Bzip2-1.0.8</a> -- + <a href="#bzegrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">bzfgrep:</strong> <span class= + "indexref"><a href="#ch-system-bzip2">Bzip2-1.0.8</a> -- + <a href="#bzfgrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">bzgrep:</strong> <span class= + "indexref"><a href="#ch-system-bzip2">Bzip2-1.0.8</a> -- + <a href="#bzgrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">bzip2:</strong> <span class= + "indexref"><a href="#ch-system-bzip2">Bzip2-1.0.8</a> -- + <a href="#bzip2">Описание</a><br /></span> + </li> + <li> + <strong class="item">bzip2recover:</strong> <span class= + "indexref"><a href="#ch-system-bzip2">Bzip2-1.0.8</a> -- + <a href="#bzip2recover">Описание</a><br /></span> + </li> + <li> + <strong class="item">bzless:</strong> <span class= + "indexref"><a href="#ch-system-bzip2">Bzip2-1.0.8</a> -- + <a href="#bzless">Описание</a><br /></span> + </li> + <li> + <strong class="item">bzmore:</strong> <span class= + "indexref"><a href="#ch-system-bzip2">Bzip2-1.0.8</a> -- + <a href="#bzmore">Описание</a><br /></span> + </li> + <li> + <strong class="item">c++:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#c">Описание</a><br /></span> + </li> + <li> + <strong class="item">c++filt:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#c-filt">Описание</a><br /></span> + </li> + <li> + <strong class="item">cal:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#cal">Описание</a><br /></span> + </li> + <li> + <strong class="item">capsh:</strong> <span class= + "indexref"><a href="#ch-system-libcap">Libcap-2.69</a> -- + <a href="#capsh">Описание</a><br /></span> + </li> + <li> + <strong class="item">captoinfo:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#captoinfo">Описание</a><br /></span> + </li> + <li> + <strong class="item">cat:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#cat">Описание</a><br /></span> + </li> + <li> + <strong class="item">catman:</strong> <span class= + "indexref"><a href="#ch-system-man-db">Man-DB-2.12.0</a> -- + <a href="#catman">Описание</a><br /></span> + </li> + <li> + <strong class="item">cc:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#cc">Описание</a><br /></span> + </li> + <li> + <strong class="item">cfdisk:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#cfdisk">Описание</a><br /></span> + </li> + <li> + <strong class="item">chacl:</strong> <span class= + "indexref"><a href="#ch-system-acl">Acl-2.3.2</a> -- <a href= + "#chacl">Описание</a><br /></span> + </li> + <li> + <strong class="item">chage:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#chage">Описание</a><br /></span> + </li> + <li> + <strong class="item">chattr:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#chattr">Описание</a><br /></span> + </li> + <li> + <strong class="item">chcon:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#chcon">Описание</a><br /></span> + </li> + <li> + <strong class="item">chcpu:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#chcpu">Описание</a><br /></span> + </li> + <li> + <strong class="item">checkmk:</strong> <span class= + "indexref"><a href="#ch-system-check">Check-0.15.2</a> -- + <a href="#checkmk">Описание</a><br /></span> + </li> + <li> + <strong class="item">chem:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#chem">Описание</a><br /></span> + </li> + <li> + <strong class="item">chfn:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#chfn">Описание</a><br /></span> + </li> + <li> + <strong class="item">chgpasswd:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#chgpasswd">Описание</a><br /></span> + </li> + <li> + <strong class="item">chgrp:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#chgrp">Описание</a><br /></span> + </li> + <li> + <strong class="item">chmem:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#chmem">Описание</a><br /></span> + </li> + <li> + <strong class="item">chmod:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#chmod">Описание</a><br /></span> + </li> + <li> + <strong class="item">choom:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#choom">Описание</a><br /></span> + </li> + <li> + <strong class="item">chown:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#chown">Описание</a><br /></span> + </li> + <li> + <strong class="item">chpasswd:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#chpasswd">Описание</a><br /></span> + </li> + <li> + <strong class="item">chroot:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#chroot">Описание</a><br /></span> + </li> + <li> + <strong class="item">chrt:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#chrt">Описание</a><br /></span> + </li> + <li> + <strong class="item">chsh:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#chsh">Описание</a><br /></span> + </li> + <li> + <strong class="item">chvt:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#chvt">Описание</a><br /></span> + </li> + <li> + <strong class="item">cksum:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#cksum">Описание</a><br /></span> + </li> + <li> + <strong class="item">clear:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#clear">Описание</a><br /></span> + </li> + <li> + <strong class="item">cmp:</strong> <span class= + "indexref"><a href="#ch-system-diffutils">Diffutils-3.10</a> -- + <a href="#cmp">Описание</a><br /></span> + </li> + <li> + <strong class="item">col:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#col">Описание</a><br /></span> + </li> + <li> + <strong class="item">colcrt:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#colcrt">Описание</a><br /></span> + </li> + <li> + <strong class="item">colrm:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#colrm">Описание</a><br /></span> + </li> + <li> + <strong class="item">column:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#column">Описание</a><br /></span> + </li> + <li> + <strong class="item">comm:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#comm">Описание</a><br /></span> + </li> + <li> + <strong class="item">compile_et:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#compile_et">Описание</a><br /></span> + </li> + <li> + <strong class="item">corelist:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#corelist">Описание</a><br /></span> + </li> + <li> + <strong class="item">cp:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#cp">Описание</a><br /></span> + </li> + <li> + <strong class="item">cpan:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#cpan">Описание</a><br /></span> + </li> + <li> + <strong class="item">cpp:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#cpp">Описание</a><br /></span> + </li> + <li> + <strong class="item">csplit:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#csplit">Описание</a><br /></span> + </li> + <li> + <strong class="item">ctrlaltdel:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#ctrlaltdel">Описание</a><br /></span> + </li> + <li> + <strong class="item">ctstat:</strong> <span class= + "indexref"><a href="#ch-system-iproute2">IPRoute2-6.7.0</a> -- + <a href="#ctstat">Описание</a><br /></span> + </li> + <li> + <strong class="item">cut:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#cut">Описание</a><br /></span> + </li> + <li> + <strong class="item">c_rehash:</strong> <span class= + "indexref"><a href="#ch-system-openssl">OpenSSL-3.2.1</a> -- + <a href="#c_rehash">Описание</a><br /></span> + </li> + <li> + <strong class="item">date:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#date">Описание</a><br /></span> + </li> + <li> + <strong class="item">dc:</strong> <span class= + "indexref"><a href="#ch-system-bc">Bc-6.7.5</a> -- <a href= + "#dc">Описание</a><br /></span> + </li> + <li> + <strong class="item">dd:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#dd">Описание</a><br /></span> + </li> + <li> + <strong class="item">deallocvt:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#deallocvt">Описание</a><br /></span> + </li> + <li> + <strong class="item">debugfs:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#debugfs">Описание</a><br /></span> + </li> + <li> + <strong class="item">dejagnu:</strong> <span class= + "indexref"><a href="#ch-system-dejagnu">DejaGNU-1.6.3</a> -- + <a href="#dejagnu">Описание</a><br /></span> + </li> + <li> + <strong class="item">delpart:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#delpart">Описание</a><br /></span> + </li> + <li> + <strong class="item">depmod:</strong> <span class= + "indexref"><a href="#ch-system-kmod">Kmod-31</a> -- <a href= + "#depmod">Описание</a><br /></span> + </li> + <li> + <strong class="item">df:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#df">Описание</a><br /></span> + </li> + <li> + <strong class="item">diff:</strong> <span class= + "indexref"><a href="#ch-system-diffutils">Diffutils-3.10</a> -- + <a href="#diff">Описание</a><br /></span> + </li> + <li> + <strong class="item">diff3:</strong> <span class= + "indexref"><a href="#ch-system-diffutils">Diffutils-3.10</a> -- + <a href="#diff3">Описание</a><br /></span> + </li> + <li> + <strong class="item">dir:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#dir">Описание</a><br /></span> + </li> + <li> + <strong class="item">dircolors:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#dircolors">Описание</a><br /></span> + </li> + <li> + <strong class="item">dirname:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#dirname">Описание</a><br /></span> + </li> + <li> + <strong class="item">dmesg:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#dmesg">Описание</a><br /></span> + </li> + <li> + <strong class="item">dnsdomainname:</strong> <span class= + "indexref"><a href="#ch-system-inetutils">Inetutils-2.5</a> -- + <a href="#dnsdomainname">Описание</a><br /></span> + </li> + <li> + <strong class="item">du:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#du">Описание</a><br /></span> + </li> + <li> + <strong class="item">dumpe2fs:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#dumpe2fs">Описание</a><br /></span> + </li> + <li> + <strong class="item">dumpkeys:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#dumpkeys">Описание</a><br /></span> + </li> + <li> + <strong class="item">e2freefrag:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#e2freefrag">Описание</a><br /></span> + </li> + <li> + <strong class="item">e2fsck:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#e2fsck">Описание</a><br /></span> + </li> + <li> + <strong class="item">e2image:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#e2image">Описание</a><br /></span> + </li> + <li> + <strong class="item">e2label:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#e2label">Описание</a><br /></span> + </li> + <li> + <strong class="item">e2mmpstatus:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#e2mmpstatus">Описание</a><br /></span> + </li> + <li> + <strong class="item">e2scrub:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#e2scrub">Описание</a><br /></span> + </li> + <li> + <strong class="item">e2scrub_all:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#e2scrub_all">Описание</a><br /></span> + </li> + <li> + <strong class="item">e2undo:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#e2undo">Описание</a><br /></span> + </li> + <li> + <strong class="item">e4crypt:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#e4crypt">Описание</a><br /></span> + </li> + <li> + <strong class="item">e4defrag:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#e4defrag">Описание</a><br /></span> + </li> + <li> + <strong class="item">echo:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#echo">Описание</a><br /></span> + </li> + <li> + <strong class="item">egrep:</strong> <span class= + "indexref"><a href="#ch-system-grep">Grep-3.11</a> -- <a href= + "#egrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">eject:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#eject">Описание</a><br /></span> + </li> + <li> + <strong class="item">elfedit:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#elfedit">Описание</a><br /></span> + </li> + <li> + <strong class="item">enc2xs:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#enc2xs">Описание</a><br /></span> + </li> + <li> + <strong class="item">encguess:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#encguess">Описание</a><br /></span> + </li> + <li> + <strong class="item">env:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#env">Описание</a><br /></span> + </li> + <li> + <strong class="item">envsubst:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#envsubst">Описание</a><br /></span> + </li> + <li> + <strong class="item">eqn:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#eqn">Описание</a><br /></span> + </li> + <li> + <strong class="item">eqn2graph:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#eqn2graph">Описание</a><br /></span> + </li> + <li> + <strong class="item">ex:</strong> <span class= + "indexref"><a href="#ch-system-vim">Vim-9.1.0041</a> -- + <a href="#ex">Описание</a><br /></span> + </li> + <li> + <strong class="item">expand:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#expand">Описание</a><br /></span> + </li> + <li> + <strong class="item">expect:</strong> <span class= + "indexref"><a href="#ch-system-expect">Expect-5.45.4</a> -- + <a href="#expect">Описание</a><br /></span> + </li> + <li> + <strong class="item">expiry:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#expiry">Описание</a><br /></span> + </li> + <li> + <strong class="item">expr:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#expr">Описание</a><br /></span> + </li> + <li> + <strong class="item">factor:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#factor">Описание</a><br /></span> + </li> + <li> + <strong class="item">faillog:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#faillog">Описание</a><br /></span> + </li> + <li> + <strong class="item">fallocate:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#fallocate">Описание</a><br /></span> + </li> + <li> + <strong class="item">false:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#false">Описание</a><br /></span> + </li> + <li> + <strong class="item">fdisk:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#fdisk">Описание</a><br /></span> + </li> + <li> + <strong class="item">fgconsole:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#fgconsole">Описание</a><br /></span> + </li> + <li> + <strong class="item">fgrep:</strong> <span class= + "indexref"><a href="#ch-system-grep">Grep-3.11</a> -- <a href= + "#fgrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">file:</strong> <span class= + "indexref"><a href="#ch-system-file">File-5.45</a> -- <a href= + "#file">Описание</a><br /></span> + </li> + <li> + <strong class="item">filefrag:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#filefrag">Описание</a><br /></span> + </li> + <li> + <strong class="item">fincore:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#fincore">Описание</a><br /></span> + </li> + <li> + <strong class="item">find:</strong> <span class= + "indexref"><a href="#ch-system-findutils">Findutils-4.9.0</a> + -- <a href="#find">Описание</a><br /></span> + </li> + <li> + <strong class="item">findfs:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#findfs">Описание</a><br /></span> + </li> + <li> + <strong class="item">findmnt:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#findmnt">Описание</a><br /></span> + </li> + <li> + <strong class="item">flex:</strong> <span class= + "indexref"><a href="#ch-system-flex">Flex-2.6.4</a> -- <a href= + "#flex">Описание</a><br /></span> + </li> + <li> + <strong class="item">flex++:</strong> <span class= + "indexref"><a href="#ch-system-flex">Flex-2.6.4</a> -- <a href= + "#flexpp">Описание</a><br /></span> + </li> + <li> + <strong class="item">flock:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#flock">Описание</a><br /></span> + </li> + <li> + <strong class="item">fmt:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#fmt">Описание</a><br /></span> + </li> + <li> + <strong class="item">fold:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#fold">Описание</a><br /></span> + </li> + <li> + <strong class="item">free:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#free">Описание</a><br /></span> + </li> + <li> + <strong class="item">fsck:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#fsck">Описание</a><br /></span> + </li> + <li> + <strong class="item">fsck.cramfs:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#fsck.cramfs">Описание</a><br /></span> + </li> + <li> + <strong class="item">fsck.ext2:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#fsck.ext2">Описание</a><br /></span> + </li> + <li> + <strong class="item">fsck.ext3:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#fsck.ext3">Описание</a><br /></span> + </li> + <li> + <strong class="item">fsck.ext4:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#fsck.ext4">Описание</a><br /></span> + </li> + <li> + <strong class="item">fsck.minix:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#fsck.minix">Описание</a><br /></span> + </li> + <li> + <strong class="item">fsfreeze:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#fsfreeze">Описание</a><br /></span> + </li> + <li> + <strong class="item">fstab-decode:</strong> <span class= + "indexref"><a href="#ch-system-sysvinit">Sysvinit-3.08</a> -- + <a href="#fstab-decode">Описание</a><br /></span> + </li> + <li> + <strong class="item">fstrim:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#fstrim">Описание</a><br /></span> + </li> + <li> + <strong class="item">ftp:</strong> <span class= + "indexref"><a href="#ch-system-inetutils">Inetutils-2.5</a> -- + <a href="#ftp">Описание</a><br /></span> + </li> + <li> + <strong class="item">fuser:</strong> <span class= + "indexref"><a href="#ch-system-psmisc">Psmisc-23.6</a> -- + <a href="#fuser">Описание</a><br /></span> + </li> + <li> + <strong class="item">g++:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#g">Описание</a><br /></span> + </li> + <li> + <strong class="item">gawk:</strong> <span class= + "indexref"><a href="#ch-system-gawk">Gawk-5.3.0</a> -- <a href= + "#gawk">Описание</a><br /></span> + </li> + <li> + <strong class="item">gawk-5.3.0:</strong> <span class= + "indexref"><a href="#ch-system-gawk">Gawk-5.3.0</a> -- <a href= + "#gawk-version">Описание</a><br /></span> + </li> + <li> + <strong class="item">gcc:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#gcc">Описание</a><br /></span> + </li> + <li> + <strong class="item">gc-ar:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#gcc-ar">Описание</a><br /></span> + </li> + <li> + <strong class="item">gc-nm:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#gcc-nm">Описание</a><br /></span> + </li> + <li> + <strong class="item">gc-ranlib:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#gcc-ranlib">Описание</a><br /></span> + </li> + <li> + <strong class="item">gcov:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#gcov">Описание</a><br /></span> + </li> + <li> + <strong class="item">gcov-dump:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#gcov-dump">Описание</a><br /></span> + </li> + <li> + <strong class="item">gcov-tool:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#gcov-tool">Описание</a><br /></span> + </li> + <li> + <strong class="item">gdbmtool:</strong> <span class= + "indexref"><a href="#ch-system-gdbm">GDBM-1.23</a> -- <a href= + "#gdbmtool">Описание</a><br /></span> + </li> + <li> + <strong class="item">gdbm_dump:</strong> <span class= + "indexref"><a href="#ch-system-gdbm">GDBM-1.23</a> -- <a href= + "#gdbm_dump">Описание</a><br /></span> + </li> + <li> + <strong class="item">gdbm_load:</strong> <span class= + "indexref"><a href="#ch-system-gdbm">GDBM-1.23</a> -- <a href= + "#gdbm_load">Описание</a><br /></span> + </li> + <li> + <strong class="item">gdiffmk:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#gdiffmk">Описание</a><br /></span> + </li> + <li> + <strong class="item">gencat:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#gencat">Описание</a><br /></span> + </li> + <li> + <strong class="item">genl:</strong> <span class= + "indexref"><a href="#ch-system-iproute2">IPRoute2-6.7.0</a> -- + <a href="#genl">Описание</a><br /></span> + </li> + <li> + <strong class="item">getcap:</strong> <span class= + "indexref"><a href="#ch-system-libcap">Libcap-2.69</a> -- + <a href="#getcap">Описание</a><br /></span> + </li> + <li> + <strong class="item">getconf:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#getconf">Описание</a><br /></span> + </li> + <li> + <strong class="item">getent:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#getent">Описание</a><br /></span> + </li> + <li> + <strong class="item">getfacl:</strong> <span class= + "indexref"><a href="#ch-system-acl">Acl-2.3.2</a> -- <a href= + "#getfacl">Описание</a><br /></span> + </li> + <li> + <strong class="item">getfattr:</strong> <span class= + "indexref"><a href="#ch-system-attr">Attr-2.5.2</a> -- <a href= + "#getfattr">Описание</a><br /></span> + </li> + <li> + <strong class="item">getkeycodes:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#getkeycodes">Описание</a><br /></span> + </li> + <li> + <strong class="item">getopt:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#getopt">Описание</a><br /></span> + </li> + <li> + <strong class="item">getpcaps:</strong> <span class= + "indexref"><a href="#ch-system-libcap">Libcap-2.69</a> -- + <a href="#getpcaps">Описание</a><br /></span> + </li> + <li> + <strong class="item">getsubids:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#getsubids">Описание</a><br /></span> + </li> + <li> + <strong class="item">gettext:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#gettext">Описание</a><br /></span> + </li> + <li> + <strong class="item">gettext.sh:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#gettext.sh">Описание</a><br /></span> + </li> + <li> + <strong class="item">gettextize:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#gettextize">Описание</a><br /></span> + </li> + <li> + <strong class="item">glilypond:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#glilypond">Описание</a><br /></span> + </li> + <li> + <strong class="item">gpasswd:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#gpasswd">Описание</a><br /></span> + </li> + <li> + <strong class="item">gperf:</strong> <span class= + "indexref"><a href="#ch-system-gperf">Gperf-3.1</a> -- <a href= + "#gperf">Описание</a><br /></span> + </li> + <li> + <strong class="item">gperl:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#gperl">Описание</a><br /></span> + </li> + <li> + <strong class="item">gpinyin:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#gpinyin">Описание</a><br /></span> + </li> + <li> + <strong class="item">gprof:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#gprof">Описание</a><br /></span> + </li> + <li> + <strong class="item">gprofng:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#gprofng">Описание</a><br /></span> + </li> + <li> + <strong class="item">grap2graph:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#grap2graph">Описание</a><br /></span> + </li> + <li> + <strong class="item">grep:</strong> <span class= + "indexref"><a href="#ch-system-grep">Grep-3.11</a> -- <a href= + "#grep">Описание</a><br /></span> + </li> + <li> + <strong class="item">grn:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#grn">Описание</a><br /></span> + </li> + <li> + <strong class="item">grodvi:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#grodvi">Описание</a><br /></span> + </li> + <li> + <strong class="item">groff:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#groff">Описание</a><br /></span> + </li> + <li> + <strong class="item">groffer:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#groffer">Описание</a><br /></span> + </li> + <li> + <strong class="item">grog:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#grog">Описание</a><br /></span> + </li> + <li> + <strong class="item">grolbp:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#grolbp">Описание</a><br /></span> + </li> + <li> + <strong class="item">grolj4:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#grolj4">Описание</a><br /></span> + </li> + <li> + <strong class="item">gropdf:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#gropdf">Описание</a><br /></span> + </li> + <li> + <strong class="item">grops:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#grops">Описание</a><br /></span> + </li> + <li> + <strong class="item">grotty:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#grotty">Описание</a><br /></span> + </li> + <li> + <strong class="item">groupadd:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#groupadd">Описание</a><br /></span> + </li> + <li> + <strong class="item">groupdel:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#groupdel">Описание</a><br /></span> + </li> + <li> + <strong class="item">groupmems:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#groupmems">Описание</a><br /></span> + </li> + <li> + <strong class="item">groupmod:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#groupmod">Описание</a><br /></span> + </li> + <li> + <strong class="item">groups:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#groups">Описание</a><br /></span> + </li> + <li> + <strong class="item">grpck:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#grpck">Описание</a><br /></span> + </li> + <li> + <strong class="item">grpconv:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#grpconv">Описание</a><br /></span> + </li> + <li> + <strong class="item">grpunconv:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#grpunconv">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-bios-setup:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-bios-setup">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-editenv:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-editenv">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-file:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-file">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-fstest:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-fstest">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-glue-efi:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-glue-efi">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-install:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-install">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-kbdcomp:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-kbdcomp">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-macbless:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-macbless">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-menulst2cfg:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-menulst2cfg">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-mkconfig:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-mkconfig">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-mkimage:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-mkimage">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-mklayout:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-mklayout">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-mknetdir:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-mknetdir">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-mkpasswd-pbkdf2:</strong> + <span class="indexref"><a href="#ch-system-grub">GRUB-2.12</a> + -- <a href="#grub-mkpasswd-pbkdf2">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-mkrelpath:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-mkrelpath">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-mkrescue:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-mkrescue">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-mkstandalone:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-mkstandalone">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-ofpathname:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-ofpathname">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-probe:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-probe">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-reboot:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-reboot">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-render-label:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-render-label">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-script-check:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-script-check">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-set-default:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-set-default">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-setup:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-sparc64-setup">Описание</a><br /></span> + </li> + <li> + <strong class="item">grub-syslinux2cfg:</strong> <span class= + "indexref"><a href="#ch-system-grub">GRUB-2.12</a> -- <a href= + "#grub-syslinux2cfg">Описание</a><br /></span> + </li> + <li> + <strong class="item">gunzip:</strong> <span class= + "indexref"><a href="#ch-system-gzip">Gzip-1.13</a> -- <a href= + "#gunzip">Описание</a><br /></span> + </li> + <li> + <strong class="item">gzexe:</strong> <span class= + "indexref"><a href="#ch-system-gzip">Gzip-1.13</a> -- <a href= + "#gzexe">Описание</a><br /></span> + </li> + <li> + <strong class="item">gzip:</strong> <span class= + "indexref"><a href="#ch-system-gzip">Gzip-1.13</a> -- <a href= + "#gzip">Описание</a><br /></span> + </li> + <li> + <strong class="item">h2ph:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#h2ph">Описание</a><br /></span> + </li> + <li> + <strong class="item">h2xs:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#h2xs">Описание</a><br /></span> + </li> + <li> + <strong class="item">halt:</strong> <span class= + "indexref"><a href="#ch-system-sysvinit">Sysvinit-3.08</a> -- + <a href="#halt-sysv">Описание</a><br /></span> + </li> + <li> + <strong class="item">hardlink:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#hardlink">Описание</a><br /></span> + </li> + <li> + <strong class="item">head:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#head">Описание</a><br /></span> + </li> + <li> + <strong class="item">hexdump:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#hexdump">Описание</a><br /></span> + </li> + <li> + <strong class="item">hostid:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#hostid">Описание</a><br /></span> + </li> + <li> + <strong class="item">hostname:</strong> <span class= + "indexref"><a href="#ch-system-inetutils">Inetutils-2.5</a> -- + <a href="#hostname">Описание</a><br /></span> + </li> + <li> + <strong class="item">hpftodit:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#hpftodit">Описание</a><br /></span> + </li> + <li> + <strong class="item">hwclock:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#hwclock">Описание</a><br /></span> + </li> + <li> + <strong class="item">i386:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#i386">Описание</a><br /></span> + </li> + <li> + <strong class="item">iconv:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#iconv">Описание</a><br /></span> + </li> + <li> + <strong class="item">iconvconfig:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#iconvconfig">Описание</a><br /></span> + </li> + <li> + <strong class="item">id:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#id">Описание</a><br /></span> + </li> + <li> + <strong class="item">idle3:</strong> <span class= + "indexref"><a href="#ch-system-Python">Python-3.12.2</a></span> + </li> + <li> + <strong class="item">ifconfig:</strong> <span class= + "indexref"><a href="#ch-system-inetutils">Inetutils-2.5</a> -- + <a href="#ifconfig">Описание</a><br /></span> + </li> + <li> + <strong class="item">ifnames:</strong> <span class= + "indexref"><a href="#ch-system-autoconf">Autoconf-2.72</a> -- + <a href="#ifnames">Описание</a><br /></span> + </li> + <li> + <strong class="item">ifstat:</strong> <span class= + "indexref"><a href="#ch-system-iproute2">IPRoute2-6.7.0</a> -- + <a href="#ifstat">Описание</a><br /></span> + </li> + <li> + <strong class="item">indxbib:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#indxbib">Описание</a><br /></span> + </li> + <li> + <strong class="item">info:</strong> <span class= + "indexref"><a href="#ch-system-texinfo">Texinfo-7.1</a> -- + <a href="#info">Описание</a><br /></span> + </li> + <li> + <strong class="item">infocmp:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#infocmp">Описание</a><br /></span> + </li> + <li> + <strong class="item">infotocap:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#infotocap">Описание</a><br /></span> + </li> + <li> + <strong class="item">init:</strong> <span class= + "indexref"><a href="#ch-system-sysvinit">Sysvinit-3.08</a> -- + <a href="#init-sysv">Описание</a><br /></span> + </li> + <li> + <strong class="item">insmod:</strong> <span class= + "indexref"><a href="#ch-system-kmod">Kmod-31</a> -- <a href= + "#insmod">Описание</a><br /></span> + </li> + <li> + <strong class="item">install:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#install">Описание</a><br /></span> + </li> + <li> + <strong class="item">install-info:</strong> <span class= + "indexref"><a href="#ch-system-texinfo">Texinfo-7.1</a> -- + <a href="#install-info">Описание</a><br /></span> + </li> + <li> + <strong class="item">instmodsh:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#instmodsh">Описание</a><br /></span> + </li> + <li> + <strong class="item">intltool-extract:</strong> <span class= + "indexref"><a href="#ch-system-intltool">Intltool-0.51.0</a> -- + <a href="#intltool-extract">Описание</a><br /></span> + </li> + <li> + <strong class="item">intltool-merge:</strong> <span class= + "indexref"><a href="#ch-system-intltool">Intltool-0.51.0</a> -- + <a href="#intltool-merge">Описание</a><br /></span> + </li> + <li> + <strong class="item">intltool-prepare:</strong> <span class= + "indexref"><a href="#ch-system-intltool">Intltool-0.51.0</a> -- + <a href="#intltool-prepare">Описание</a><br /></span> + </li> + <li> + <strong class="item">intltool-update:</strong> <span class= + "indexref"><a href="#ch-system-intltool">Intltool-0.51.0</a> -- + <a href="#intltool-update">Описание</a><br /></span> + </li> + <li> + <strong class="item">intltoolize:</strong> <span class= + "indexref"><a href="#ch-system-intltool">Intltool-0.51.0</a> -- + <a href="#intltoolize">Описание</a><br /></span> + </li> + <li> + <strong class="item">ionice:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#ionice">Описание</a><br /></span> + </li> + <li> + <strong class="item">ip:</strong> <span class= + "indexref"><a href="#ch-system-iproute2">IPRoute2-6.7.0</a> -- + <a href="#ip">Описание</a><br /></span> + </li> + <li> + <strong class="item">ipcmk:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#ipcmk">Описание</a><br /></span> + </li> + <li> + <strong class="item">ipcrm:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#ipcrm">Описание</a><br /></span> + </li> + <li> + <strong class="item">ipcs:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#ipcs">Описание</a><br /></span> + </li> + <li> + <strong class="item">irqtop:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#irqtop">Описание</a><br /></span> + </li> + <li> + <strong class="item">isosize:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#isosize">Описание</a><br /></span> + </li> + <li> + <strong class="item">join:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#join">Описание</a><br /></span> + </li> + <li> + <strong class="item">json_pp:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#json_pp">Описание</a><br /></span> + </li> + <li> + <strong class="item">kbdinfo:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#kbdinfo">Описание</a><br /></span> + </li> + <li> + <strong class="item">kbdrate:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#kbdrate">Описание</a><br /></span> + </li> + <li> + <strong class="item">kbd_mode:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#kbd_mode">Описание</a><br /></span> + </li> + <li> + <strong class="item">kill:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#kill">Описание</a><br /></span> + </li> + <li> + <strong class="item">killall:</strong> <span class= + "indexref"><a href="#ch-system-psmisc">Psmisc-23.6</a> -- + <a href="#killall">Описание</a><br /></span> + </li> + <li> + <strong class="item">killall5:</strong> <span class= + "indexref"><a href="#ch-system-sysvinit">Sysvinit-3.08</a> -- + <a href="#killall5">Описание</a><br /></span> + </li> + <li> + <strong class="item">klogd:</strong> <span class= + "indexref"><a href="#ch-system-sysklogd">Sysklogd-1.5.1</a> -- + <a href="#klogd">Описание</a><br /></span> + </li> + <li> + <strong class="item">kmod:</strong> <span class= + "indexref"><a href="#ch-system-kmod">Kmod-31</a> -- <a href= + "#kmod">Описание</a><br /></span> + </li> + <li> + <strong class="item">last:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#last">Описание</a><br /></span> + </li> + <li> + <strong class="item">lastb:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#lastb">Описание</a><br /></span> + </li> + <li> + <strong class="item">ld:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#ld">Описание</a><br /></span> + </li> + <li> + <strong class="item">ld.bfd:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#ld.bfd">Описание</a><br /></span> + </li> + <li> + <strong class="item">ld.gold:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#ld.gold">Описание</a><br /></span> + </li> + <li> + <strong class="item">ldattach:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#ldattach">Описание</a><br /></span> + </li> + <li> + <strong class="item">ldconfig:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#ldconfig">Описание</a><br /></span> + </li> + <li> + <strong class="item">ldd:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#ldd">Описание</a><br /></span> + </li> + <li> + <strong class="item">lddlibc4:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#lddlibc4">Описание</a><br /></span> + </li> + <li> + <strong class="item">less:</strong> <span class= + "indexref"><a href="#ch-system-less">Less-643</a> -- <a href= + "#less">Описание</a><br /></span> + </li> + <li> + <strong class="item">lessecho:</strong> <span class= + "indexref"><a href="#ch-system-less">Less-643</a> -- <a href= + "#lessecho">Описание</a><br /></span> + </li> + <li> + <strong class="item">lesskey:</strong> <span class= + "indexref"><a href="#ch-system-less">Less-643</a> -- <a href= + "#lesskey">Описание</a><br /></span> + </li> + <li> + <strong class="item">lex:</strong> <span class= + "indexref"><a href="#ch-system-flex">Flex-2.6.4</a> -- <a href= + "#lex">Описание</a><br /></span> + </li> + <li> + <strong class="item">lexgrog:</strong> <span class= + "indexref"><a href="#ch-system-man-db">Man-DB-2.12.0</a> -- + <a href="#lexgrog">Описание</a><br /></span> + </li> + <li> + <strong class="item">lfskernel-6.7.4:</strong> <span class= + "indexref"><a href="#ch-bootable-kernel">Linux-6.7.4</a> -- + <a href="#lfskernel">Описание</a><br /></span> + </li> + <li> + <strong class="item">libasan:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libasan">Описание</a><br /></span> + </li> + <li> + <strong class="item">libatomic:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libatomic">Описание</a><br /></span> + </li> + <li> + <strong class="item">libcc1:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libcc1">Описание</a><br /></span> + </li> + <li> + <strong class="item">libnetcfg:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#libnetcfg">Описание</a><br /></span> + </li> + <li> + <strong class="item">libtool:</strong> <span class= + "indexref"><a href="#ch-system-libtool">Libtool-2.4.7</a> -- + <a href="#libtool">Описание</a><br /></span> + </li> + <li> + <strong class="item">libtoolize:</strong> <span class= + "indexref"><a href="#ch-system-libtool">Libtool-2.4.7</a> -- + <a href="#libtoolize">Описание</a><br /></span> + </li> + <li> + <strong class="item">link:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#link">Описание</a><br /></span> + </li> + <li> + <strong class="item">linux32:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#linux32">Описание</a><br /></span> + </li> + <li> + <strong class="item">linux64:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#linux64">Описание</a><br /></span> + </li> + <li> + <strong class="item">lkbib:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#lkbib">Описание</a><br /></span> + </li> + <li> + <strong class="item">ln:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#ln">Описание</a><br /></span> + </li> + <li> + <strong class="item">lnstat:</strong> <span class= + "indexref"><a href="#ch-system-iproute2">IPRoute2-6.7.0</a> -- + <a href="#lnstat">Описание</a><br /></span> + </li> + <li> + <strong class="item">loadkeys:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#loadkeys">Описание</a><br /></span> + </li> + <li> + <strong class="item">loadunimap:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#loadunimap">Описание</a><br /></span> + </li> + <li> + <strong class="item">locale:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#locale">Описание</a><br /></span> + </li> + <li> + <strong class="item">localedef:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#localedef">Описание</a><br /></span> + </li> + <li> + <strong class="item">locate:</strong> <span class= + "indexref"><a href="#ch-system-findutils">Findutils-4.9.0</a> + -- <a href="#locate">Описание</a><br /></span> + </li> + <li> + <strong class="item">logger:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#logger">Описание</a><br /></span> + </li> + <li> + <strong class="item">login:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#login">Описание</a><br /></span> + </li> + <li> + <strong class="item">logname:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#logname">Описание</a><br /></span> + </li> + <li> + <strong class="item">logoutd:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#logoutd">Описание</a><br /></span> + </li> + <li> + <strong class="item">logsave:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#logsave">Описание</a><br /></span> + </li> + <li> + <strong class="item">look:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#look">Описание</a><br /></span> + </li> + <li> + <strong class="item">lookbib:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#lookbib">Описание</a><br /></span> + </li> + <li> + <strong class="item">losetup:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#losetup">Описание</a><br /></span> + </li> + <li> + <strong class="item">ls:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#ls">Описание</a><br /></span> + </li> + <li> + <strong class="item">lsattr:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#lsattr">Описание</a><br /></span> + </li> + <li> + <strong class="item">lsblk:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#lsblk">Описание</a><br /></span> + </li> + <li> + <strong class="item">lscpu:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#lscpu">Описание</a><br /></span> + </li> + <li> + <strong class="item">lsfd:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#lsfd">Описание</a><br /></span> + </li> + <li> + <strong class="item">lsipc:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#lsipc">Описание</a><br /></span> + </li> + <li> + <strong class="item">lsirq:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#lsirq">Описание</a><br /></span> + </li> + <li> + <strong class="item">lslocks:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#lslocks">Описание</a><br /></span> + </li> + <li> + <strong class="item">lslogins:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#lslogins">Описание</a><br /></span> + </li> + <li> + <strong class="item">lsmem:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#lsmem">Описание</a><br /></span> + </li> + <li> + <strong class="item">lsmod:</strong> <span class= + "indexref"><a href="#ch-system-kmod">Kmod-31</a> -- <a href= + "#lsmod">Описание</a><br /></span> + </li> + <li> + <strong class="item">lsns:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#lsns">Описание</a><br /></span> + </li> + <li> + <strong class="item">lto-dump:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#lto-dump">Описание</a><br /></span> + </li> + <li> + <strong class="item">lzcat:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#lzcat">Описание</a><br /></span> + </li> + <li> + <strong class="item">lzcmp:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#lzcmp">Описание</a><br /></span> + </li> + <li> + <strong class="item">lzdiff:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#lzdiff">Описание</a><br /></span> + </li> + <li> + <strong class="item">lzegrep:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#lzegrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">lzfgrep:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#lzfgrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">lzgrep:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#lzgrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">lzless:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#lzless">Описание</a><br /></span> + </li> + <li> + <strong class="item">lzma:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#lzma">Описание</a><br /></span> + </li> + <li> + <strong class="item">lzmadec:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#lzmadec">Описание</a><br /></span> + </li> + <li> + <strong class="item">lzmainfo:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#lzmainfo">Описание</a><br /></span> + </li> + <li> + <strong class="item">lzmore:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#lzmore">Описание</a><br /></span> + </li> + <li> + <strong class="item">m4:</strong> <span class= + "indexref"><a href="#ch-system-m4">M4-1.4.19</a> -- <a href= + "#m4">Описание</a><br /></span> + </li> + <li> + <strong class="item">make:</strong> <span class= + "indexref"><a href="#ch-system-make">Make-4.4.1</a> -- <a href= + "#make">Описание</a><br /></span> + </li> + <li> + <strong class="item">makedb:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#makedb">Описание</a><br /></span> + </li> + <li> + <strong class="item">makeinfo:</strong> <span class= + "indexref"><a href="#ch-system-texinfo">Texinfo-7.1</a> -- + <a href="#makeinfo">Описание</a><br /></span> + </li> + <li> + <strong class="item">man:</strong> <span class= + "indexref"><a href="#ch-system-man-db">Man-DB-2.12.0</a> -- + <a href="#man">Описание</a><br /></span> + </li> + <li> + <strong class="item">man-recode:</strong> <span class= + "indexref"><a href="#ch-system-man-db">Man-DB-2.12.0</a> -- + <a href="#man-recode">Описание</a><br /></span> + </li> + <li> + <strong class="item">mandb:</strong> <span class= + "indexref"><a href="#ch-system-man-db">Man-DB-2.12.0</a> -- + <a href="#mandb">Описание</a><br /></span> + </li> + <li> + <strong class="item">manpath:</strong> <span class= + "indexref"><a href="#ch-system-man-db">Man-DB-2.12.0</a> -- + <a href="#manpath">Описание</a><br /></span> + </li> + <li> + <strong class="item">mapscrn:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#mapscrn">Описание</a><br /></span> + </li> + <li> + <strong class="item">mcookie:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#mcookie">Описание</a><br /></span> + </li> + <li> + <strong class="item">md5sum:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#md5sum">Описание</a><br /></span> + </li> + <li> + <strong class="item">mesg:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#mesg">Описание</a><br /></span> + </li> + <li> + <strong class="item">meson:</strong> <span class= + "indexref"><a href="#ch-system-meson">Meson-1.3.2</a> -- + <a href="#meson">Описание</a><br /></span> + </li> + <li> + <strong class="item">mkdir:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#mkdir">Описание</a><br /></span> + </li> + <li> + <strong class="item">mke2fs:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#mke2fs">Описание</a><br /></span> + </li> + <li> + <strong class="item">mkfifo:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#mkfifo">Описание</a><br /></span> + </li> + <li> + <strong class="item">mkfs:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#mkfs">Описание</a><br /></span> + </li> + <li> + <strong class="item">mkfs.bfs:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#mkfs.bfs">Описание</a><br /></span> + </li> + <li> + <strong class="item">mkfs.cramfs:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#mkfs.cramfs">Описание</a><br /></span> + </li> + <li> + <strong class="item">mkfs.ext2:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#mkfs.ext2">Описание</a><br /></span> + </li> + <li> + <strong class="item">mkfs.ext3:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#mkfs.ext3">Описание</a><br /></span> + </li> + <li> + <strong class="item">mkfs.ext4:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#mkfs.ext4">Описание</a><br /></span> + </li> + <li> + <strong class="item">mkfs.minix:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#mkfs.minix">Описание</a><br /></span> + </li> + <li> + <strong class="item">mklost+found:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#mklost-found">Описание</a><br /></span> + </li> + <li> + <strong class="item">mknod:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#mknod">Описание</a><br /></span> + </li> + <li> + <strong class="item">mkswap:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#mkswap">Описание</a><br /></span> + </li> + <li> + <strong class="item">mktemp:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#mktemp">Описание</a><br /></span> + </li> + <li> + <strong class="item">mk_cmds:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#mk_cmds">Описание</a><br /></span> + </li> + <li> + <strong class="item">mmroff:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#mmroff">Описание</a><br /></span> + </li> + <li> + <strong class="item">modinfo:</strong> <span class= + "indexref"><a href="#ch-system-kmod">Kmod-31</a> -- <a href= + "#modinfo">Описание</a><br /></span> + </li> + <li> + <strong class="item">modprobe:</strong> <span class= + "indexref"><a href="#ch-system-kmod">Kmod-31</a> -- <a href= + "#modprobe">Описание</a><br /></span> + </li> + <li> + <strong class="item">more:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#more">Описание</a><br /></span> + </li> + <li> + <strong class="item">mount:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#mount">Описание</a><br /></span> + </li> + <li> + <strong class="item">mountpoint:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#mountpoint">Описание</a><br /></span> + </li> + <li> + <strong class="item">msgattrib:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#msgattrib">Описание</a><br /></span> + </li> + <li> + <strong class="item">msgcat:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#msgcat">Описание</a><br /></span> + </li> + <li> + <strong class="item">msgcmp:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#msgcmp">Описание</a><br /></span> + </li> + <li> + <strong class="item">msgcomm:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#msgcomm">Описание</a><br /></span> + </li> + <li> + <strong class="item">msgconv:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#msgconv">Описание</a><br /></span> + </li> + <li> + <strong class="item">msgen:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#msgen">Описание</a><br /></span> + </li> + <li> + <strong class="item">msgexec:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#msgexec">Описание</a><br /></span> + </li> + <li> + <strong class="item">msgfilter:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#msgfilter">Описание</a><br /></span> + </li> + <li> + <strong class="item">msgfmt:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#msgfmt">Описание</a><br /></span> + </li> + <li> + <strong class="item">msggrep:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#msggrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">msginit:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#msginit">Описание</a><br /></span> + </li> + <li> + <strong class="item">msgmerge:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#msgmerge">Описание</a><br /></span> + </li> + <li> + <strong class="item">msgunfmt:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#msgunfmt">Описание</a><br /></span> + </li> + <li> + <strong class="item">msguniq:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#msguniq">Описание</a><br /></span> + </li> + <li> + <strong class="item">mtrace:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#mtrace">Описание</a><br /></span> + </li> + <li> + <strong class="item">mv:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#mv">Описание</a><br /></span> + </li> + <li> + <strong class="item">namei:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#namei">Описание</a><br /></span> + </li> + <li> + <strong class="item">ncursesw6-config:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#ncursesw6-config">Описание</a><br /></span> + </li> + <li> + <strong class="item">neqn:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#neqn">Описание</a><br /></span> + </li> + <li> + <strong class="item">newgidmap:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#newgidmap">Описание</a><br /></span> + </li> + <li> + <strong class="item">newgrp:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#newgrp">Описание</a><br /></span> + </li> + <li> + <strong class="item">newuidmap:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#newuidmap">Описание</a><br /></span> + </li> + <li> + <strong class="item">newusers:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#newusers">Описание</a><br /></span> + </li> + <li> + <strong class="item">ngettext:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#ngettext">Описание</a><br /></span> + </li> + <li> + <strong class="item">nice:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#nice">Описание</a><br /></span> + </li> + <li> + <strong class="item">ninja:</strong> <span class= + "indexref"><a href="#ch-system-ninja">Ninja-1.11.1</a> -- + <a href="#ninja">Описание</a><br /></span> + </li> + <li> + <strong class="item">nl:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#nl">Описание</a><br /></span> + </li> + <li> + <strong class="item">nm:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#nm">Описание</a><br /></span> + </li> + <li> + <strong class="item">nohup:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#nohup">Описание</a><br /></span> + </li> + <li> + <strong class="item">nologin:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#nologin">Описание</a><br /></span> + </li> + <li> + <strong class="item">nproc:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#nproc">Описание</a><br /></span> + </li> + <li> + <strong class="item">nroff:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#nroff">Описание</a><br /></span> + </li> + <li> + <strong class="item">nsenter:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#nsenter">Описание</a><br /></span> + </li> + <li> + <strong class="item">nstat:</strong> <span class= + "indexref"><a href="#ch-system-iproute2">IPRoute2-6.7.0</a> -- + <a href="#nstat">Описание</a><br /></span> + </li> + <li> + <strong class="item">numfmt:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#numfmt">Описание</a><br /></span> + </li> + <li> + <strong class="item">objcopy:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#objcopy">Описание</a><br /></span> + </li> + <li> + <strong class="item">objdump:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#objdump">Описание</a><br /></span> + </li> + <li> + <strong class="item">od:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#od">Описание</a><br /></span> + </li> + <li> + <strong class="item">openssl:</strong> <span class= + "indexref"><a href="#ch-system-openssl">OpenSSL-3.2.1</a> -- + <a href="#openssl-prog">Описание</a><br /></span> + </li> + <li> + <strong class="item">openvt:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#openvt">Описание</a><br /></span> + </li> + <li> + <strong class="item">partx:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#partx">Описание</a><br /></span> + </li> + <li> + <strong class="item">passwd:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#passwd">Описание</a><br /></span> + </li> + <li> + <strong class="item">paste:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#paste">Описание</a><br /></span> + </li> + <li> + <strong class="item">patch:</strong> <span class= + "indexref"><a href="#ch-system-patch">Patch-2.7.6</a> -- + <a href="#patch">Описание</a><br /></span> + </li> + <li> + <strong class="item">pathchk:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#pathchk">Описание</a><br /></span> + </li> + <li> + <strong class="item">pcprofiledump:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#pcprofiledump">Описание</a><br /></span> + </li> + <li> + <strong class="item">pdfmom:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#pdfmom">Описание</a><br /></span> + </li> + <li> + <strong class="item">pdfroff:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#pdfroff">Описание</a><br /></span> + </li> + <li> + <strong class="item">pdftexi2dvi:</strong> <span class= + "indexref"><a href="#ch-system-texinfo">Texinfo-7.1</a> -- + <a href="#pdftexi2dvi">Описание</a><br /></span> + </li> + <li> + <strong class="item">peekfd:</strong> <span class= + "indexref"><a href="#ch-system-psmisc">Psmisc-23.6</a> -- + <a href="#peekfd">Описание</a><br /></span> + </li> + <li> + <strong class="item">perl:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#perl">Описание</a><br /></span> + </li> + <li> + <strong class="item">perl5.38.2:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#perl-version">Описание</a><br /></span> + </li> + <li> + <strong class="item">perlbug:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#perlbug">Описание</a><br /></span> + </li> + <li> + <strong class="item">perldoc:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#perldoc">Описание</a><br /></span> + </li> + <li> + <strong class="item">perlivp:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#perlivp">Описание</a><br /></span> + </li> + <li> + <strong class="item">perlthanks:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#perlthanks">Описание</a><br /></span> + </li> + <li> + <strong class="item">pfbtops:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#pfbtops">Описание</a><br /></span> + </li> + <li> + <strong class="item">pgrep:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#pgrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">pic:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#pic">Описание</a><br /></span> + </li> + <li> + <strong class="item">pic2graph:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#pic2graph">Описание</a><br /></span> + </li> + <li> + <strong class="item">piconv:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#piconv">Описание</a><br /></span> + </li> + <li> + <strong class="item">pidof:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#pidof">Описание</a><br /></span> + </li> + <li> + <strong class="item">ping:</strong> <span class= + "indexref"><a href="#ch-system-inetutils">Inetutils-2.5</a> -- + <a href="#ping">Описание</a><br /></span> + </li> + <li> + <strong class="item">ping6:</strong> <span class= + "indexref"><a href="#ch-system-inetutils">Inetutils-2.5</a> -- + <a href="#ping6">Описание</a><br /></span> + </li> + <li> + <strong class="item">pinky:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#pinky">Описание</a><br /></span> + </li> + <li> + <strong class="item">pip3:</strong> <span class= + "indexref"><a href="#ch-system-Python">Python-3.12.2</a></span> + </li> + <li> + <strong class="item">pivot_root:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#pivot_root">Описание</a><br /></span> + </li> + <li> + <strong class="item">pkgconf:</strong> <span class= + "indexref"><a href="#ch-system-pkgconf">Pkgconf-2.1.1</a> -- + <a href="#pkgconf">Описание</a><br /></span> + </li> + <li> + <strong class="item">pkill:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#pkill">Описание</a><br /></span> + </li> + <li> + <strong class="item">pl2pm:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#pl2pm">Описание</a><br /></span> + </li> + <li> + <strong class="item">pldd:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#pldd">Описание</a><br /></span> + </li> + <li> + <strong class="item">pmap:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#pmap">Описание</a><br /></span> + </li> + <li> + <strong class="item">pod2html:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#pod2html">Описание</a><br /></span> + </li> + <li> + <strong class="item">pod2man:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#pod2man">Описание</a><br /></span> + </li> + <li> + <strong class="item">pod2texi:</strong> <span class= + "indexref"><a href="#ch-system-texinfo">Texinfo-7.1</a> -- + <a href="#pod2texi">Описание</a><br /></span> + </li> + <li> + <strong class="item">pod2text:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#pod2text">Описание</a><br /></span> + </li> + <li> + <strong class="item">pod2usage:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#pod2usage">Описание</a><br /></span> + </li> + <li> + <strong class="item">podchecker:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#podchecker">Описание</a><br /></span> + </li> + <li> + <strong class="item">podselect:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#podselect">Описание</a><br /></span> + </li> + <li> + <strong class="item">post-grohtml:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#post-grohtml">Описание</a><br /></span> + </li> + <li> + <strong class="item">poweroff:</strong> <span class= + "indexref"><a href="#ch-system-sysvinit">Sysvinit-3.08</a> -- + <a href="#poweroff-sysv">Описание</a><br /></span> + </li> + <li> + <strong class="item">pr:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#pr">Описание</a><br /></span> + </li> + <li> + <strong class="item">pre-grohtml:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#pre-grohtml">Описание</a><br /></span> + </li> + <li> + <strong class="item">preconv:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#preconv">Описание</a><br /></span> + </li> + <li> + <strong class="item">printenv:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#printenv">Описание</a><br /></span> + </li> + <li> + <strong class="item">printf:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#printf">Описание</a><br /></span> + </li> + <li> + <strong class="item">prlimit:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#prlimit">Описание</a><br /></span> + </li> + <li> + <strong class="item">prove:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#prove">Описание</a><br /></span> + </li> + <li> + <strong class="item">prtstat:</strong> <span class= + "indexref"><a href="#ch-system-psmisc">Psmisc-23.6</a> -- + <a href="#prtstat">Описание</a><br /></span> + </li> + <li> + <strong class="item">ps:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#ps">Описание</a><br /></span> + </li> + <li> + <strong class="item">psfaddtable:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#psfaddtable">Описание</a><br /></span> + </li> + <li> + <strong class="item">psfgettable:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#psfgettable">Описание</a><br /></span> + </li> + <li> + <strong class="item">psfstriptable:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#psfstriptable">Описание</a><br /></span> + </li> + <li> + <strong class="item">psfxtable:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#psfxtable">Описание</a><br /></span> + </li> + <li> + <strong class="item">pslog:</strong> <span class= + "indexref"><a href="#ch-system-psmisc">Psmisc-23.6</a> -- + <a href="#pslog">Описание</a><br /></span> + </li> + <li> + <strong class="item">pstree:</strong> <span class= + "indexref"><a href="#ch-system-psmisc">Psmisc-23.6</a> -- + <a href="#pstree">Описание</a><br /></span> + </li> + <li> + <strong class="item">pstree.x11:</strong> <span class= + "indexref"><a href="#ch-system-psmisc">Psmisc-23.6</a> -- + <a href="#pstree.x11">Описание</a><br /></span> + </li> + <li> + <strong class="item">ptar:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#ptar">Описание</a><br /></span> + </li> + <li> + <strong class="item">ptardiff:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#ptardiff">Описание</a><br /></span> + </li> + <li> + <strong class="item">ptargrep:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#ptargrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">ptx:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#ptx">Описание</a><br /></span> + </li> + <li> + <strong class="item">pwck:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#pwck">Описание</a><br /></span> + </li> + <li> + <strong class="item">pwconv:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#pwconv">Описание</a><br /></span> + </li> + <li> + <strong class="item">pwd:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#pwd">Описание</a><br /></span> + </li> + <li> + <strong class="item">pwdx:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#pwdx">Описание</a><br /></span> + </li> + <li> + <strong class="item">pwunconv:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#pwunconv">Описание</a><br /></span> + </li> + <li> + <strong class="item">pydoc3:</strong> <span class= + "indexref"><a href="#ch-system-Python">Python-3.12.2</a></span> + </li> + <li> + <strong class="item">python3:</strong> <span class= + "indexref"><a href="#ch-system-Python">Python-3.12.2</a></span> + </li> + <li> + <strong class="item">ranlib:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#ranlib">Описание</a><br /></span> + </li> + <li> + <strong class="item">readelf:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#readelf">Описание</a><br /></span> + </li> + <li> + <strong class="item">readlink:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#readlink">Описание</a><br /></span> + </li> + <li> + <strong class="item">readprofile:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#readprofile">Описание</a><br /></span> + </li> + <li> + <strong class="item">realpath:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#realpath">Описание</a><br /></span> + </li> + <li> + <strong class="item">reboot:</strong> <span class= + "indexref"><a href="#ch-system-sysvinit">Sysvinit-3.08</a> -- + <a href="#reboot-sysv">Описание</a><br /></span> + </li> + <li> + <strong class="item">recode-sr-latin:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#recode-sr-latin">Описание</a><br /></span> + </li> + <li> + <strong class="item">refer:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#refer">Описание</a><br /></span> + </li> + <li> + <strong class="item">rename:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#rename">Описание</a><br /></span> + </li> + <li> + <strong class="item">renice:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#renice">Описание</a><br /></span> + </li> + <li> + <strong class="item">reset:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#reset">Описание</a><br /></span> + </li> + <li> + <strong class="item">resize2fs:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#resize2fs">Описание</a><br /></span> + </li> + <li> + <strong class="item">resizepart:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#resizepart">Описание</a><br /></span> + </li> + <li> + <strong class="item">rev:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#rev">Описание</a><br /></span> + </li> + <li> + <strong class="item">rfkill:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#rfkill">Описание</a><br /></span> + </li> + <li> + <strong class="item">rm:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#rm">Описание</a><br /></span> + </li> + <li> + <strong class="item">rmdir:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#rmdir">Описание</a><br /></span> + </li> + <li> + <strong class="item">rmmod:</strong> <span class= + "indexref"><a href="#ch-system-kmod">Kmod-31</a> -- <a href= + "#rmmod">Описание</a><br /></span> + </li> + <li> + <strong class="item">roff2dvi:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#roff2dvi">Описание</a><br /></span> + </li> + <li> + <strong class="item">roff2html:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#roff2html">Описание</a><br /></span> + </li> + <li> + <strong class="item">roff2pdf:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#roff2pdf">Описание</a><br /></span> + </li> + <li> + <strong class="item">roff2ps:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#roff2ps">Описание</a><br /></span> + </li> + <li> + <strong class="item">roff2text:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#roff2text">Описание</a><br /></span> + </li> + <li> + <strong class="item">roff2x:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#roff2x">Описание</a><br /></span> + </li> + <li> + <strong class="item">routel:</strong> <span class= + "indexref"><a href="#ch-system-iproute2">IPRoute2-6.7.0</a> -- + <a href="#routel">Описание</a><br /></span> + </li> + <li> + <strong class="item">rtacct:</strong> <span class= + "indexref"><a href="#ch-system-iproute2">IPRoute2-6.7.0</a> -- + <a href="#rtacct">Описание</a><br /></span> + </li> + <li> + <strong class="item">rtcwake:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#rtcwake">Описание</a><br /></span> + </li> + <li> + <strong class="item">rtmon:</strong> <span class= + "indexref"><a href="#ch-system-iproute2">IPRoute2-6.7.0</a> -- + <a href="#rtmon">Описание</a><br /></span> + </li> + <li> + <strong class="item">rtpr:</strong> <span class= + "indexref"><a href="#ch-system-iproute2">IPRoute2-6.7.0</a> -- + <a href="#rtpr">Описание</a><br /></span> + </li> + <li> + <strong class="item">rtstat:</strong> <span class= + "indexref"><a href="#ch-system-iproute2">IPRoute2-6.7.0</a> -- + <a href="#rtstat">Описание</a><br /></span> + </li> + <li> + <strong class="item">runcon:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#runcon">Описание</a><br /></span> + </li> + <li> + <strong class="item">runlevel:</strong> <span class= + "indexref"><a href="#ch-system-sysvinit">Sysvinit-3.08</a> -- + <a href="#runlevel-sysv">Описание</a><br /></span> + </li> + <li> + <strong class="item">runtest:</strong> <span class= + "indexref"><a href="#ch-system-dejagnu">DejaGNU-1.6.3</a> -- + <a href="#runtest">Описание</a><br /></span> + </li> + <li> + <strong class="item">rview:</strong> <span class= + "indexref"><a href="#ch-system-vim">Vim-9.1.0041</a> -- + <a href="#rview">Описание</a><br /></span> + </li> + <li> + <strong class="item">rvim:</strong> <span class= + "indexref"><a href="#ch-system-vim">Vim-9.1.0041</a> -- + <a href="#rvim">Описание</a><br /></span> + </li> + <li> + <strong class="item">script:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#script">Описание</a><br /></span> + </li> + <li> + <strong class="item">scriptlive:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#scriptlive">Описание</a><br /></span> + </li> + <li> + <strong class="item">scriptreplay:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#scriptreplay">Описание</a><br /></span> + </li> + <li> + <strong class="item">sdiff:</strong> <span class= + "indexref"><a href="#ch-system-diffutils">Diffutils-3.10</a> -- + <a href="#sdiff">Описание</a><br /></span> + </li> + <li> + <strong class="item">sed:</strong> <span class= + "indexref"><a href="#ch-system-sed">Sed-4.9</a> -- <a href= + "#sed">Описание</a><br /></span> + </li> + <li> + <strong class="item">seq:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#seq">Описание</a><br /></span> + </li> + <li> + <strong class="item">setarch:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#setarch">Описание</a><br /></span> + </li> + <li> + <strong class="item">setcap:</strong> <span class= + "indexref"><a href="#ch-system-libcap">Libcap-2.69</a> -- + <a href="#setcap">Описание</a><br /></span> + </li> + <li> + <strong class="item">setfacl:</strong> <span class= + "indexref"><a href="#ch-system-acl">Acl-2.3.2</a> -- <a href= + "#setfacl">Описание</a><br /></span> + </li> + <li> + <strong class="item">setfattr:</strong> <span class= + "indexref"><a href="#ch-system-attr">Attr-2.5.2</a> -- <a href= + "#setfattr">Описание</a><br /></span> + </li> + <li> + <strong class="item">setfont:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#setfont">Описание</a><br /></span> + </li> + <li> + <strong class="item">setkeycodes:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#setkeycodes">Описание</a><br /></span> + </li> + <li> + <strong class="item">setleds:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#setleds">Описание</a><br /></span> + </li> + <li> + <strong class="item">setmetamode:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#setmetamode">Описание</a><br /></span> + </li> + <li> + <strong class="item">setsid:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#setsid">Описание</a><br /></span> + </li> + <li> + <strong class="item">setterm:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#setterm">Описание</a><br /></span> + </li> + <li> + <strong class="item">setvtrgb:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#setvtrgb">Описание</a><br /></span> + </li> + <li> + <strong class="item">sfdisk:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#sfdisk">Описание</a><br /></span> + </li> + <li> + <strong class="item">sg:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#sg">Описание</a><br /></span> + </li> + <li> + <strong class="item">sh:</strong> <span class= + "indexref"><a href="#ch-system-bash">Bash-5.2.21</a> -- + <a href="#sh">Описание</a><br /></span> + </li> + <li> + <strong class="item">sha1sum:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#sha1sum">Описание</a><br /></span> + </li> + <li> + <strong class="item">sha224sum:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#sha224sum">Описание</a><br /></span> + </li> + <li> + <strong class="item">sha256sum:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#sha256sum">Описание</a><br /></span> + </li> + <li> + <strong class="item">sha384sum:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#sha384sum">Описание</a><br /></span> + </li> + <li> + <strong class="item">sha512sum:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#sha512sum">Описание</a><br /></span> + </li> + <li> + <strong class="item">shasum:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#shasum">Описание</a><br /></span> + </li> + <li> + <strong class="item">showconsolefont:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#showconsolefont">Описание</a><br /></span> + </li> + <li> + <strong class="item">showkey:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#showkey">Описание</a><br /></span> + </li> + <li> + <strong class="item">shred:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#shred">Описание</a><br /></span> + </li> + <li> + <strong class="item">shuf:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#shuf">Описание</a><br /></span> + </li> + <li> + <strong class="item">shutdown:</strong> <span class= + "indexref"><a href="#ch-system-sysvinit">Sysvinit-3.08</a> -- + <a href="#shutdown-sysv">Описание</a><br /></span> + </li> + <li> + <strong class="item">size:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#size">Описание</a><br /></span> + </li> + <li> + <strong class="item">slabtop:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#slabtop">Описание</a><br /></span> + </li> + <li> + <strong class="item">sleep:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#sleep">Описание</a><br /></span> + </li> + <li> + <strong class="item">sln:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#sln">Описание</a><br /></span> + </li> + <li> + <strong class="item">soelim:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#soelim">Описание</a><br /></span> + </li> + <li> + <strong class="item">sort:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#sort">Описание</a><br /></span> + </li> + <li> + <strong class="item">sotruss:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#sotruss">Описание</a><br /></span> + </li> + <li> + <strong class="item">splain:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#splain">Описание</a><br /></span> + </li> + <li> + <strong class="item">split:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#split">Описание</a><br /></span> + </li> + <li> + <strong class="item">sprof:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#sprof">Описание</a><br /></span> + </li> + <li> + <strong class="item">ss:</strong> <span class= + "indexref"><a href="#ch-system-iproute2">IPRoute2-6.7.0</a> -- + <a href="#ss">Описание</a><br /></span> + </li> + <li> + <strong class="item">stat:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#stat">Описание</a><br /></span> + </li> + <li> + <strong class="item">stdbuf:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#stdbuf">Описание</a><br /></span> + </li> + <li> + <strong class="item">strings:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#strings">Описание</a><br /></span> + </li> + <li> + <strong class="item">strip:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#strip">Описание</a><br /></span> + </li> + <li> + <strong class="item">stty:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#stty">Описание</a><br /></span> + </li> + <li> + <strong class="item">su:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#su">Описание</a><br /></span> + </li> + <li> + <strong class="item">sulogin:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#sulogin">Описание</a><br /></span> + </li> + <li> + <strong class="item">sum:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#sum">Описание</a><br /></span> + </li> + <li> + <strong class="item">swaplabel:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#swaplabel">Описание</a><br /></span> + </li> + <li> + <strong class="item">swapoff:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#swapoff">Описание</a><br /></span> + </li> + <li> + <strong class="item">swapon:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#swapon">Описание</a><br /></span> + </li> + <li> + <strong class="item">switch_root:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#switch_root">Описание</a><br /></span> + </li> + <li> + <strong class="item">sync:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#sync">Описание</a><br /></span> + </li> + <li> + <strong class="item">sysctl:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#sysctl">Описание</a><br /></span> + </li> + <li> + <strong class="item">syslogd:</strong> <span class= + "indexref"><a href="#ch-system-sysklogd">Sysklogd-1.5.1</a> -- + <a href="#syslogd">Описание</a><br /></span> + </li> + <li> + <strong class="item">tabs:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#tabs">Описание</a><br /></span> + </li> + <li> + <strong class="item">tac:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#tac">Описание</a><br /></span> + </li> + <li> + <strong class="item">tail:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#tail">Описание</a><br /></span> + </li> + <li> + <strong class="item">talk:</strong> <span class= + "indexref"><a href="#ch-system-inetutils">Inetutils-2.5</a> -- + <a href="#talk">Описание</a><br /></span> + </li> + <li> + <strong class="item">tar:</strong> <span class= + "indexref"><a href="#ch-system-tar">Tar-1.35</a> -- <a href= + "#tar">Описание</a><br /></span> + </li> + <li> + <strong class="item">taskset:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#taskset">Описание</a><br /></span> + </li> + <li> + <strong class="item">tbl:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#tbl">Описание</a><br /></span> + </li> + <li> + <strong class="item">tc:</strong> <span class= + "indexref"><a href="#ch-system-iproute2">IPRoute2-6.7.0</a> -- + <a href="#ss">Описание</a><br /></span> + </li> + <li> + <strong class="item">tclsh:</strong> <span class= + "indexref"><a href="#ch-system-tcl">Tcl-8.6.13</a> -- <a href= + "#tclsh">Описание</a><br /></span> + </li> + <li> + <strong class="item">tclsh8.6:</strong> <span class= + "indexref"><a href="#ch-system-tcl">Tcl-8.6.13</a> -- <a href= + "#tclsh8.6">Описание</a><br /></span> + </li> + <li> + <strong class="item">tee:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#tee">Описание</a><br /></span> + </li> + <li> + <strong class="item">telinit:</strong> <span class= + "indexref"><a href="#ch-system-sysvinit">Sysvinit-3.08</a> -- + <a href="#telinit-sysv">Описание</a><br /></span> + </li> + <li> + <strong class="item">telnet:</strong> <span class= + "indexref"><a href="#ch-system-inetutils">Inetutils-2.5</a> -- + <a href="#telnet">Описание</a><br /></span> + </li> + <li> + <strong class="item">test:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#test">Описание</a><br /></span> + </li> + <li> + <strong class="item">texi2dvi:</strong> <span class= + "indexref"><a href="#ch-system-texinfo">Texinfo-7.1</a> -- + <a href="#texi2dvi">Описание</a><br /></span> + </li> + <li> + <strong class="item">texi2pdf:</strong> <span class= + "indexref"><a href="#ch-system-texinfo">Texinfo-7.1</a> -- + <a href="#texi2pdf">Описание</a><br /></span> + </li> + <li> + <strong class="item">texi2any:</strong> <span class= + "indexref"><a href="#ch-system-texinfo">Texinfo-7.1</a> -- + <a href="#texi2any">Описание</a><br /></span> + </li> + <li> + <strong class="item">texindex:</strong> <span class= + "indexref"><a href="#ch-system-texinfo">Texinfo-7.1</a> -- + <a href="#texindex">Описание</a><br /></span> + </li> + <li> + <strong class="item">tfmtodit:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#tfmtodit">Описание</a><br /></span> + </li> + <li> + <strong class="item">tftp:</strong> <span class= + "indexref"><a href="#ch-system-inetutils">Inetutils-2.5</a> -- + <a href="#tftp">Описание</a><br /></span> + </li> + <li> + <strong class="item">tic:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#tic">Описание</a><br /></span> + </li> + <li> + <strong class="item">timeout:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#timeout">Описание</a><br /></span> + </li> + <li> + <strong class="item">tload:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#tload">Описание</a><br /></span> + </li> + <li> + <strong class="item">toe:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#toe">Описание</a><br /></span> + </li> + <li> + <strong class="item">top:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#top">Описание</a><br /></span> + </li> + <li> + <strong class="item">touch:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#touch">Описание</a><br /></span> + </li> + <li> + <strong class="item">tput:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#tput">Описание</a><br /></span> + </li> + <li> + <strong class="item">tr:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#tr">Описание</a><br /></span> + </li> + <li> + <strong class="item">traceroute:</strong> <span class= + "indexref"><a href="#ch-system-inetutils">Inetutils-2.5</a> -- + <a href="#traceroute">Описание</a><br /></span> + </li> + <li> + <strong class="item">troff:</strong> <span class= + "indexref"><a href="#ch-system-groff">Groff-1.23.0</a> -- + <a href="#troff">Описание</a><br /></span> + </li> + <li> + <strong class="item">true:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#true">Описание</a><br /></span> + </li> + <li> + <strong class="item">truncate:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#truncate">Описание</a><br /></span> + </li> + <li> + <strong class="item">tset:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#tset">Описание</a><br /></span> + </li> + <li> + <strong class="item">tsort:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#tsort">Описание</a><br /></span> + </li> + <li> + <strong class="item">tty:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#tty">Описание</a><br /></span> + </li> + <li> + <strong class="item">tune2fs:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#tune2fs">Описание</a><br /></span> + </li> + <li> + <strong class="item">tzselect:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#tzselect">Описание</a><br /></span> + </li> + <li> + <strong class="item">uclampset:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#uclampset">Описание</a><br /></span> + </li> + <li> + <strong class="item">udev-hwdb:</strong> <span class= + "indexref"><a href="#ch-system-udev">Udev из Systemd-255</a> -- + <a href="#udev-hwdb">Описание</a><br /></span> + </li> + <li> + <strong class="item">udevadm:</strong> <span class= + "indexref"><a href="#ch-system-udev">Udev из Systemd-255</a> -- + <a href="#udevadm">Описание</a><br /></span> + </li> + <li> + <strong class="item">udevd:</strong> <span class= + "indexref"><a href="#ch-system-udev">Udev из Systemd-255</a> -- + <a href="#udevd">Описание</a><br /></span> + </li> + <li> + <strong class="item">ul:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#ul">Описание</a><br /></span> + </li> + <li> + <strong class="item">umount:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#umount">Описание</a><br /></span> + </li> + <li> + <strong class="item">uname:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#uname">Описание</a><br /></span> + </li> + <li> + <strong class="item">uname26:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#uname26">Описание</a><br /></span> + </li> + <li> + <strong class="item">uncompress:</strong> <span class= + "indexref"><a href="#ch-system-gzip">Gzip-1.13</a> -- <a href= + "#uncompress">Описание</a><br /></span> + </li> + <li> + <strong class="item">unexpand:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#unexpand">Описание</a><br /></span> + </li> + <li> + <strong class="item">unicode_start:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#unicode_start">Описание</a><br /></span> + </li> + <li> + <strong class="item">unicode_stop:</strong> <span class= + "indexref"><a href="#ch-system-kbd">Kbd-2.6.4</a> -- <a href= + "#unicode_stop">Описание</a><br /></span> + </li> + <li> + <strong class="item">uniq:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#uniq">Описание</a><br /></span> + </li> + <li> + <strong class="item">unlink:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#unlink">Описание</a><br /></span> + </li> + <li> + <strong class="item">unlzma:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#unlzma">Описание</a><br /></span> + </li> + <li> + <strong class="item">unshare:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#unshare">Описание</a><br /></span> + </li> + <li> + <strong class="item">unxz:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#unxz">Описание</a><br /></span> + </li> + <li> + <strong class="item">updatedb:</strong> <span class= + "indexref"><a href="#ch-system-findutils">Findutils-4.9.0</a> + -- <a href="#updatedb">Описание</a><br /></span> + </li> + <li> + <strong class="item">uptime:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#uptime">Описание</a><br /></span> + </li> + <li> + <strong class="item">useradd:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#useradd">Описание</a><br /></span> + </li> + <li> + <strong class="item">userdel:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#userdel">Описание</a><br /></span> + </li> + <li> + <strong class="item">usermod:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#usermod">Описание</a><br /></span> + </li> + <li> + <strong class="item">users:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#users">Описание</a><br /></span> + </li> + <li> + <strong class="item">utmpdump:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#utmpdump">Описание</a><br /></span> + </li> + <li> + <strong class="item">uuidd:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#uuidd">Описание</a><br /></span> + </li> + <li> + <strong class="item">uuidgen:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#uuidgen">Описание</a><br /></span> + </li> + <li> + <strong class="item">uuidparse:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#uuidparse">Описание</a><br /></span> + </li> + <li> + <strong class="item">vdir:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#vdir">Описание</a><br /></span> + </li> + <li> + <strong class="item">vi:</strong> <span class= + "indexref"><a href="#ch-system-vim">Vim-9.1.0041</a> -- + <a href="#vi">Описание</a><br /></span> + </li> + <li> + <strong class="item">view:</strong> <span class= + "indexref"><a href="#ch-system-vim">Vim-9.1.0041</a> -- + <a href="#view">Описание</a><br /></span> + </li> + <li> + <strong class="item">vigr:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#vigr">Описание</a><br /></span> + </li> + <li> + <strong class="item">vim:</strong> <span class= + "indexref"><a href="#ch-system-vim">Vim-9.1.0041</a> -- + <a href="#vim">Описание</a><br /></span> + </li> + <li> + <strong class="item">vimdiff:</strong> <span class= + "indexref"><a href="#ch-system-vim">Vim-9.1.0041</a> -- + <a href="#vimdiff">Описание</a><br /></span> + </li> + <li> + <strong class="item">vimtutor:</strong> <span class= + "indexref"><a href="#ch-system-vim">Vim-9.1.0041</a> -- + <a href="#vimtutor">Описание</a><br /></span> + </li> + <li> + <strong class="item">vipw:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#vipw">Описание</a><br /></span> + </li> + <li> + <strong class="item">vmstat:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#vmstat">Описание</a><br /></span> + </li> + <li> + <strong class="item">w:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#w">Описание</a><br /></span> + </li> + <li> + <strong class="item">wall:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#wall">Описание</a><br /></span> + </li> + <li> + <strong class="item">watch:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#watch">Описание</a><br /></span> + </li> + <li> + <strong class="item">wc:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#wc">Описание</a><br /></span> + </li> + <li> + <strong class="item">wdctl:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#wdctl">Описание</a><br /></span> + </li> + <li> + <strong class="item">whatis:</strong> <span class= + "indexref"><a href="#ch-system-man-db">Man-DB-2.12.0</a> -- + <a href="#whatis">Описание</a><br /></span> + </li> + <li> + <strong class="item">wheel:</strong> <span class= + "indexref"><a href="#ch-system-wheel">Wheel-0.42.0</a></span> + </li> + <li> + <strong class="item">whereis:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#whereis">Описание</a><br /></span> + </li> + <li> + <strong class="item">who:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#who">Описание</a><br /></span> + </li> + <li> + <strong class="item">whoami:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#whoami">Описание</a><br /></span> + </li> + <li> + <strong class="item">wipefs:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#wipefs">Описание</a><br /></span> + </li> + <li> + <strong class="item">x86_64:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#x86_64">Описание</a><br /></span> + </li> + <li> + <strong class="item">xargs:</strong> <span class= + "indexref"><a href="#ch-system-findutils">Findutils-4.9.0</a> + -- <a href="#xargs">Описание</a><br /></span> + </li> + <li> + <strong class="item">xgettext:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#xgettext">Описание</a><br /></span> + </li> + <li> + <strong class="item">xmlwf:</strong> <span class= + "indexref"><a href="#ch-system-expat">Expat-2.6.0</a> -- + <a href="#xmlwf">Описание</a><br /></span> + </li> + <li> + <strong class="item">xsubpp:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#xsubpp">Описание</a><br /></span> + </li> + <li> + <strong class="item">xtrace:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#xtrace">Описание</a><br /></span> + </li> + <li> + <strong class="item">xxd:</strong> <span class= + "indexref"><a href="#ch-system-vim">Vim-9.1.0041</a> -- + <a href="#xxd">Описание</a><br /></span> + </li> + <li> + <strong class="item">xz:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#xz">Описание</a><br /></span> + </li> + <li> + <strong class="item">xzcat:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#xzcat">Описание</a><br /></span> + </li> + <li> + <strong class="item">xzcmp:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#xzcmp">Описание</a><br /></span> + </li> + <li> + <strong class="item">xzdec:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#xzdec">Описание</a><br /></span> + </li> + <li> + <strong class="item">xzdiff:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#xzdiff">Описание</a><br /></span> + </li> + <li> + <strong class="item">xzegrep:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#xzegrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">xzfgrep:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#xzfgrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">xzgrep:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#xzgrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">xzless:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#xzless">Описание</a><br /></span> + </li> + <li> + <strong class="item">xzmore:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#xzmore">Описание</a><br /></span> + </li> + <li> + <strong class="item">yacc:</strong> <span class= + "indexref"><a href="#ch-system-bison">Bison-3.8.2</a> -- + <a href="#yacc">Описание</a><br /></span> + </li> + <li> + <strong class="item">yes:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#yes">Описание</a><br /></span> + </li> + <li> + <strong class="item">zcat:</strong> <span class= + "indexref"><a href="#ch-system-gzip">Gzip-1.13</a> -- <a href= + "#zcat">Описание</a><br /></span> + </li> + <li> + <strong class="item">zcmp:</strong> <span class= + "indexref"><a href="#ch-system-gzip">Gzip-1.13</a> -- <a href= + "#zcmp">Описание</a><br /></span> + </li> + <li> + <strong class="item">zdiff:</strong> <span class= + "indexref"><a href="#ch-system-gzip">Gzip-1.13</a> -- <a href= + "#zdiff">Описание</a><br /></span> + </li> + <li> + <strong class="item">zdump:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#zdump">Описание</a><br /></span> + </li> + <li> + <strong class="item">zegrep:</strong> <span class= + "indexref"><a href="#ch-system-gzip">Gzip-1.13</a> -- <a href= + "#zegrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">zfgrep:</strong> <span class= + "indexref"><a href="#ch-system-gzip">Gzip-1.13</a> -- <a href= + "#zfgrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">zforce:</strong> <span class= + "indexref"><a href="#ch-system-gzip">Gzip-1.13</a> -- <a href= + "#zforce">Описание</a><br /></span> + </li> + <li> + <strong class="item">zgrep:</strong> <span class= + "indexref"><a href="#ch-system-gzip">Gzip-1.13</a> -- <a href= + "#zgrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">zic:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#zic">Описание</a><br /></span> + </li> + <li> + <strong class="item">zipdetails:</strong> <span class= + "indexref"><a href="#ch-system-perl">Perl-5.38.2</a> -- + <a href="#zipdetails">Описание</a><br /></span> + </li> + <li> + <strong class="item">zless:</strong> <span class= + "indexref"><a href="#ch-system-gzip">Gzip-1.13</a> -- <a href= + "#zless">Описание</a><br /></span> + </li> + <li> + <strong class="item">zmore:</strong> <span class= + "indexref"><a href="#ch-system-gzip">Gzip-1.13</a> -- <a href= + "#zmore">Описание</a><br /></span> + </li> + <li> + <strong class="item">znew:</strong> <span class= + "indexref"><a href="#ch-system-gzip">Gzip-1.13</a> -- <a href= + "#znew">Описание</a><br /></span> + </li> + <li> + <strong class="item">zramctl:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#zramctl">Описание</a><br /></span> + </li> + <li> + <strong class="item">zstd:</strong> <span class= + "indexref"><a href="#ch-system-zstd">Zstd-1.5.5</a> -- <a href= + "#zstd">Описание</a><br /></span> + </li> + <li> + <strong class="item">zstdgrep:</strong> <span class= + "indexref"><a href="#ch-system-zstd">Zstd-1.5.5</a> -- <a href= + "#zstdgrep">Описание</a><br /></span> + </li> + <li> + <strong class="item">zstdless:</strong> <span class= + "indexref"><a href="#ch-system-zstd">Zstd-1.5.5</a> -- <a href= + "#zstdless">Описание</a><br /></span> + </li> + </ul> + <h2> + <a id="library-index" name="library-index"></a>Библиотеки + </h2> + <ul> + <li> + <strong class="item">Expat:</strong> <span class= + "indexref"><a href="#ch-system-xml-parser">XML::Parser-2.47</a> + -- <a href="#Expat">Описание</a><br /></span> + </li> + <li> + <strong class="item">ld-2.39.so:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#ld.so">Описание</a><br /></span> + </li> + <li> + <strong class="item">libacl:</strong> <span class= + "indexref"><a href="#ch-system-acl">Acl-2.3.2</a> -- <a href= + "#libacl">Описание</a><br /></span> + </li> + <li> + <strong class="item">libanl:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libanl">Описание</a><br /></span> + </li> + <li> + <strong class="item">libasprintf:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#libasprintf">Описание</a><br /></span> + </li> + <li> + <strong class="item">libattr:</strong> <span class= + "indexref"><a href="#ch-system-attr">Attr-2.5.2</a> -- <a href= + "#libattr">Описание</a><br /></span> + </li> + <li> + <strong class="item">libbfd:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#libbfd">Описание</a><br /></span> + </li> + <li> + <strong class="item">libblkid:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#libblkid">Описание</a><br /></span> + </li> + <li> + <strong class="item">libBrokenLocale:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libBrokenLocale">Описание</a><br /></span> + </li> + <li> + <strong class="item">libbz2:</strong> <span class= + "indexref"><a href="#ch-system-bzip2">Bzip2-1.0.8</a> -- + <a href="#libbz2">Описание</a><br /></span> + </li> + <li> + <strong class="item">libc:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libc">Описание</a><br /></span> + </li> + <li> + <strong class="item">libcap:</strong> <span class= + "indexref"><a href="#ch-system-libcap">Libcap-2.69</a> -- + <a href="#libcap">Описание</a><br /></span> + </li> + <li> + <strong class="item">libcheck:</strong> <span class= + "indexref"><a href="#ch-system-check">Check-0.15.2</a> -- + <a href="#libcheck">Описание</a><br /></span> + </li> + <li> + <strong class="item">libcom_err:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#libcom_err">Описание</a><br /></span> + </li> + <li> + <strong class="item">libcrypt:</strong> <span class= + "indexref"><a href="#ch-system-libxcrypt">Libxcrypt-4.4.36</a> + -- <a href="#libcrypt">Описание</a><br /></span> + </li> + <li> + <strong class="item">libcrypto.so:</strong> <span class= + "indexref"><a href="#ch-system-openssl">OpenSSL-3.2.1</a> -- + <a href="#libcrypto">Описание</a><br /></span> + </li> + <li> + <strong class="item">libctf:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#libctf">Описание</a><br /></span> + </li> + <li> + <strong class="item">libctf-nobfd:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#libctf-nobfd">Описание</a><br /></span> + </li> + <li> + <strong class="item">libc_malloc_debug:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libc_malloc_debug">Описание</a><br /></span> + </li> + <li> + <strong class="item">libdl:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libdl">Описание</a><br /></span> + </li> + <li> + <strong class="item">libe2p:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#libe2p">Описание</a><br /></span> + </li> + <li> + <strong class="item">libelf:</strong> <span class= + "indexref"><a href="#ch-system-libelf">Libelf из + Elfutils-0.190</a> -- <a href= + "#libelf">Описание</a><br /></span> + </li> + <li> + <strong class="item">libexpat:</strong> <span class= + "indexref"><a href="#ch-system-expat">Expat-2.6.0</a> -- + <a href="#libexpat">Описание</a><br /></span> + </li> + <li> + <strong class="item">libexpect-5.45.4:</strong> <span class= + "indexref"><a href="#ch-system-expect">Expect-5.45.4</a> -- + <a href="#libexpect">Описание</a><br /></span> + </li> + <li> + <strong class="item">libext2fs:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#libext2fs">Описание</a><br /></span> + </li> + <li> + <strong class="item">libfdisk:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#libfdisk">Описание</a><br /></span> + </li> + <li> + <strong class="item">libffi:</strong> <span class= + "indexref"><a href="#ch-system-libffi">Libffi-3.4.4</a></span> + </li> + <li> + <strong class="item">libfl:</strong> <span class= + "indexref"><a href="#ch-system-flex">Flex-2.6.4</a> -- <a href= + "#libfl">Описание</a><br /></span> + </li> + <li> + <strong class="item">libformw:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#libformw">Описание</a><br /></span> + </li> + <li> + <strong class="item">libg:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libg">Описание</a><br /></span> + </li> + <li> + <strong class="item">libgcc:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libgcc">Описание</a><br /></span> + </li> + <li> + <strong class="item">libgcov:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libgcov">Описание</a><br /></span> + </li> + <li> + <strong class="item">libgdbm:</strong> <span class= + "indexref"><a href="#ch-system-gdbm">GDBM-1.23</a> -- <a href= + "#libgdbm">Описание</a><br /></span> + </li> + <li> + <strong class="item">libgdbm_compat:</strong> <span class= + "indexref"><a href="#ch-system-gdbm">GDBM-1.23</a> -- <a href= + "#libgdbm_compat">Описание</a><br /></span> + </li> + <li> + <strong class="item">libgettextlib:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#libgettextlib">Описание</a><br /></span> + </li> + <li> + <strong class="item">libgettextpo:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#libgettextpo">Описание</a><br /></span> + </li> + <li> + <strong class="item">libgettextsrc:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#libgettextsrc">Описание</a><br /></span> + </li> + <li> + <strong class="item">libgmp:</strong> <span class= + "indexref"><a href="#ch-system-gmp">GMP-6.3.0</a> -- <a href= + "#libgmp">Описание</a><br /></span> + </li> + <li> + <strong class="item">libgmpxx:</strong> <span class= + "indexref"><a href="#ch-system-gmp">GMP-6.3.0</a> -- <a href= + "#libgmpxx">Описание</a><br /></span> + </li> + <li> + <strong class="item">libgomp:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libgomp">Описание</a><br /></span> + </li> + <li> + <strong class="item">libgprofng:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#libgprofng">Описание</a><br /></span> + </li> + <li> + <strong class="item">libhistory:</strong> <span class= + "indexref"><a href="#ch-system-readline">Readline-8.2</a> -- + <a href="#libhistory">Описание</a><br /></span> + </li> + <li> + <strong class="item">libhwasan:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libhwasan">Описание</a><br /></span> + </li> + <li> + <strong class="item">libitm:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libitm">Описание</a><br /></span> + </li> + <li> + <strong class="item">libkmod:</strong> <span class= + "indexref"><a href="#ch-system-kmod">Kmod-31</a></span> + </li> + <li> + <strong class="item">liblsan:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#liblsan">Описание</a><br /></span> + </li> + <li> + <strong class="item">libltdl:</strong> <span class= + "indexref"><a href="#ch-system-libtool">Libtool-2.4.7</a> -- + <a href="#libltdl">Описание</a><br /></span> + </li> + <li> + <strong class="item">liblto_plugin:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#liblto_plugin">Описание</a><br /></span> + </li> + <li> + <strong class="item">liblzma:</strong> <span class= + "indexref"><a href="#ch-system-xz">Xz-5.4.6</a> -- <a href= + "#liblzma">Описание</a><br /></span> + </li> + <li> + <strong class="item">libm:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libm">Описание</a><br /></span> + </li> + <li> + <strong class="item">libmagic:</strong> <span class= + "indexref"><a href="#ch-system-file">File-5.45</a> -- <a href= + "#libmagic">Описание</a><br /></span> + </li> + <li> + <strong class="item">libman:</strong> <span class= + "indexref"><a href="#ch-system-man-db">Man-DB-2.12.0</a> -- + <a href="#libman">Описание</a><br /></span> + </li> + <li> + <strong class="item">libmandb:</strong> <span class= + "indexref"><a href="#ch-system-man-db">Man-DB-2.12.0</a> -- + <a href="#libmandb">Описание</a><br /></span> + </li> + <li> + <strong class="item">libmcheck:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libmcheck">Описание</a><br /></span> + </li> + <li> + <strong class="item">libmemusage:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libmemusage">Описание</a><br /></span> + </li> + <li> + <strong class="item">libmenuw:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#libmenuw">Описание</a><br /></span> + </li> + <li> + <strong class="item">libmount:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#libmount">Описание</a><br /></span> + </li> + <li> + <strong class="item">libmpc:</strong> <span class= + "indexref"><a href="#ch-system-mpc">MPC-1.3.1</a> -- <a href= + "#libmpc">Описание</a><br /></span> + </li> + <li> + <strong class="item">libmpfr:</strong> <span class= + "indexref"><a href="#ch-system-mpfr">MPFR-4.2.1</a> -- <a href= + "#libmpfr">Описание</a><br /></span> + </li> + <li> + <strong class="item">libmvec:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libmvec">Описание</a><br /></span> + </li> + <li> + <strong class="item">libncurses++w:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#libncurses__w">Описание</a><br /></span> + </li> + <li> + <strong class="item">libncursesw:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#libncursesw">Описание</a><br /></span> + </li> + <li> + <strong class="item">libnsl:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libnsl">Описание</a><br /></span> + </li> + <li> + <strong class="item">libnss_*:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libnss">Описание</a><br /></span> + </li> + <li> + <strong class="item">libopcodes:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#libopcodes">Описание</a><br /></span> + </li> + <li> + <strong class="item">libpanelw:</strong> <span class= + "indexref"><a href= + "#ch-system-ncurses">Ncurses-6.4-20230520</a> -- <a href= + "#libpanelw">Описание</a><br /></span> + </li> + <li> + <strong class="item">libpcprofile:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libpcprofile">Описание</a><br /></span> + </li> + <li> + <strong class="item">libpipeline:</strong> <span class= + "indexref"><a href= + "#ch-system-libpipeline">Libpipeline-1.5.7</a></span> + </li> + <li> + <strong class="item">libpkgconf:</strong> <span class= + "indexref"><a href="#ch-system-pkgconf">Pkgconf-2.1.1</a> -- + <a href="#libpkgconf">Описание</a><br /></span> + </li> + <li> + <strong class="item">libproc-2:</strong> <span class= + "indexref"><a href="#ch-system-procps">Procps-ng-4.0.4</a> -- + <a href="#libproc-2">Описание</a><br /></span> + </li> + <li> + <strong class="item">libpsx:</strong> <span class= + "indexref"><a href="#ch-system-libcap">Libcap-2.69</a> -- + <a href="#libpsx">Описание</a><br /></span> + </li> + <li> + <strong class="item">libpthread:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libpthread">Описание</a><br /></span> + </li> + <li> + <strong class="item">libquadmath:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libquadmath">Описание</a><br /></span> + </li> + <li> + <strong class="item">libreadline:</strong> <span class= + "indexref"><a href="#ch-system-readline">Readline-8.2</a> -- + <a href="#libreadline">Описание</a><br /></span> + </li> + <li> + <strong class="item">libresolv:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libresolv">Описание</a><br /></span> + </li> + <li> + <strong class="item">librt:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#librt">Описание</a><br /></span> + </li> + <li> + <strong class="item">libsframe:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#libsframe">Описание</a><br /></span> + </li> + <li> + <strong class="item">libsmartcols:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#libsmartcols">Описание</a><br /></span> + </li> + <li> + <strong class="item">libss:</strong> <span class= + "indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.47.0</a> + -- <a href="#libss">Описание</a><br /></span> + </li> + <li> + <strong class="item">libssl.so:</strong> <span class= + "indexref"><a href="#ch-system-openssl">OpenSSL-3.2.1</a> -- + <a href="#libssl">Описание</a><br /></span> + </li> + <li> + <strong class="item">libssp:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libssp">Описание</a><br /></span> + </li> + <li> + <strong class="item">libstdbuf:</strong> <span class= + "indexref"><a href="#ch-system-coreutils">Coreutils-9.4</a> -- + <a href="#libstdbuf">Описание</a><br /></span> + </li> + <li> + <strong class="item">libstdc++:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libstdc">Описание</a><br /></span> + </li> + <li> + <strong class="item">libstdc++exp:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libstdcexp">Описание</a><br /></span> + </li> + <li> + <strong class="item">libstdc++fs:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libstdcfs">Описание</a><br /></span> + </li> + <li> + <strong class="item">libsubid:</strong> <span class= + "indexref"><a href="#ch-system-shadow">Shadow-4.14.5</a> -- + <a href="#libsubid">Описание</a><br /></span> + </li> + <li> + <strong class="item">libsupc++:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libsupc">Описание</a><br /></span> + </li> + <li> + <strong class="item">libtcl8.6.so:</strong> <span class= + "indexref"><a href="#ch-system-tcl">Tcl-8.6.13</a> -- <a href= + "#libtcl8.6.so">Описание</a><br /></span> + </li> + <li> + <strong class="item">libtclstub8.6.a:</strong> <span class= + "indexref"><a href="#ch-system-tcl">Tcl-8.6.13</a> -- <a href= + "#libtclstub8.6.a">Описание</a><br /></span> + </li> + <li> + <strong class="item">libtextstyle:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#libtextstyle">Описание</a><br /></span> + </li> + <li> + <strong class="item">libthread_db:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libthread_db">Описание</a><br /></span> + </li> + <li> + <strong class="item">libtsan:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libtsan">Описание</a><br /></span> + </li> + <li> + <strong class="item">libubsan:</strong> <span class= + "indexref"><a href="#ch-system-gcc">GCC-13.2.0</a> -- <a href= + "#libubsan">Описание</a><br /></span> + </li> + <li> + <strong class="item">libudev:</strong> <span class= + "indexref"><a href="#ch-system-udev">Udev из Systemd-255</a> -- + <a href="#libudev">Описание</a><br /></span> + </li> + <li> + <strong class="item">libutil:</strong> <span class= + "indexref"><a href="#ch-system-glibc">Glibc-2.39</a> -- + <a href="#libutil">Описание</a><br /></span> + </li> + <li> + <strong class="item">libuuid:</strong> <span class= + "indexref"><a href= + "#ch-system-util-linux">Util-linux-2.39.3</a> -- <a href= + "#libuuid">Описание</a><br /></span> + </li> + <li> + <strong class="item">liby:</strong> <span class= + "indexref"><a href="#ch-system-bison">Bison-3.8.2</a> -- + <a href="#liby">Описание</a><br /></span> + </li> + <li> + <strong class="item">libz:</strong> <span class= + "indexref"><a href="#ch-system-zlib">Zlib-1.3.1</a> -- <a href= + "#libz">Описание</a><br /></span> + </li> + <li> + <strong class="item">libzstd:</strong> <span class= + "indexref"><a href="#ch-system-zstd">Zstd-1.5.5</a> -- <a href= + "#libzstd">Описание</a><br /></span> + </li> + <li> + <strong class="item">preloadable_libintl:</strong> <span class= + "indexref"><a href="#ch-system-gettext">Gettext-0.22.4</a> -- + <a href="#preloadable_libintl">Описание</a><br /></span> + </li> + </ul> + <h2> + <a id="scripts-index" name="scripts-index"></a>Скрипты + </h2> + <ul> + <li> + <strong class="item">checkfs:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#checkfs-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">cleanfs:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#cleanfs-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">console:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#console-bootscripts">Описание</a><br /></span> + <ul> + <li> + <strong class="secitem">configuring:</strong> <span class= + "indexref"><a href="#ch-config-console">Настройка консоли + Linux</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">File creation at boot:</strong> + <ul> + <li> + <strong class="secitem">configuring:</strong> <span class= + "indexref"><a href="#ch-config-createfiles">Создание файлов + при загрузке</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">functions:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#functions-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">halt:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#halt-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">hostname:</strong> + <ul> + <li> + <strong class="secitem">configuring:</strong> <span class= + "indexref"><a href="#ch-config-hostname">Настройка имени + хоста</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">ifdown:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#ifdown-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">ifup:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#ifup-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">ipv4-static:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#ipv4-static-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">localnet:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#localnet-bootscripts">Описание</a><br /></span> + <ul> + <li> + <strong class="secitem">/etc/hosts:</strong> <span class= + "indexref"><a href="#ch-config-hosts">Настройка файла + /etc/hosts</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">modules:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#modules-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">mountfs:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#mountfs-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">mountvirtfs:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#mountvirtfs-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">network:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#network-bootscripts">Описание</a><br /></span> + <ul> + <li> + <strong class="secitem">/etc/hosts:</strong> <span class= + "indexref"><a href="#ch-config-hosts">Настройка файла + /etc/hosts</a></span> + </li> + <li> + <strong class="secitem">configuring:</strong> <span class= + "indexref"><a href="#ch-config-network">Настройка + сети</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">rc:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#rc-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">reboot:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#reboot-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">sendsignals:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#sendsignals-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">setclock:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#setclock-bootscripts">Описание</a><br /></span> + <ul> + <li> + <strong class="secitem">configuring:</strong> <span class= + "indexref"><a href="#ch-config-clock">Настройка системного + времени</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">swap:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#swap-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">sysctl:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#sysctl-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">sysklogd:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#sysklogd-bootscripts">Описание</a><br /></span> + <ul> + <li> + <strong class="secitem">configuring:</strong> <span class= + "indexref"><a href="#ch-config-sysklogd">Настройка скрипта + Sysklogd</a></span> + </li> + </ul> + </li> + <li> + <strong class="item">template:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#template-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">udev:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#udev-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">udev_retry:</strong> <span class= + "indexref"><a href= + "#ch-config-bootscripts">LFS-Bootscripts-20230728</a> -- + <a href="#udev-retry-bootscripts">Описание</a><br /></span> + </li> + <li> + <strong class="item">dwp:</strong> <span class= + "indexref"><a href="#ch-system-binutils">Binutils-2.42</a> -- + <a href="#dwp">Описание</a><br /></span> + </li> + </ul> + <h2> + <a id="other-index" name="other-index"></a>Разное + </h2> + <ul> + <li> + <strong class="item">/boot/config-6.7.4:</strong> <span class= + "indexref"><a href="#ch-bootable-kernel">Linux-6.7.4</a> -- + <a href="#config">Описание</a><br /></span> + </li> + <li> + <strong class="item">/boot/System.map-6.7.4:</strong> + <span class="indexref"><a href= + "#ch-bootable-kernel">Linux-6.7.4</a> -- <a href= + "#System.map">Описание</a><br /></span> + </li> + <li> + <strong class="item">/dev/*:</strong> <span class= + "indexref"><a href="#ch-tools-kernfs">Подготовка виртуальных + файловых систем ядра</a></span> + </li> + <li> + <strong class="item">/etc/fstab:</strong> <span class= + "indexref"><a href="#ch-bootable-fstab">Создание файла + /etc/fstab</a></span> + </li> + <li> + <strong class="item">/etc/group:</strong> <span class= + "indexref"><a href="#ch-tools-createfiles">Создание основных + файлов и символических ссылок</a></span> + </li> + <li> + <strong class="item">/etc/hosts:</strong> <span class= + "indexref"><a href="#ch-config-hosts">Настройка файла + /etc/hosts</a></span> + </li> + <li> + <strong class="item">/etc/inittab:</strong> <span class= + "indexref"><a href="#conf-sysvinit">Настройка + Sysvinit</a></span> + </li> + <li> + <strong class="item">/etc/inputrc:</strong> <span class= + "indexref"><a href="#ch-config-inputrc">Создание файла + /etc/inputrc</a></span> + </li> + <li> + <strong class="item">/etc/ld.so.conf:</strong> <span class= + "indexref"><a href="#conf-ld">Настройка динамического + загрузчика</a></span> + </li> + <li> + <strong class="item">/etc/lfs-release:</strong> <span class= + "indexref"><a href="#ch-finish-theend">Заключение</a></span> + </li> + <li> + <strong class="item">/etc/localtime:</strong> <span class= + "indexref"><a href="#conf-glibc">Настройка Glibc</a></span> + </li> + <li> + <strong class="item">/etc/lsb-release:</strong> <span class= + "indexref"><a href="#ch-finish-theend">Заключение</a></span> + </li> + <li> + <strong class="item">/etc/mke2fs.conf:</strong> <span class= + "indexref"><a href="#conf-e2fsprogs">Настройка + E2fsprogs</a></span> + </li> + <li> + <strong class="item">/etc/modprobe.d/usb.conf:</strong> + <span class="indexref"><a href="#conf-modprobe">Настройка + порядка загрузки модулей Linux</a></span> + </li> + <li> + <strong class="item">/etc/nsswitch.conf:</strong> <span class= + "indexref"><a href="#conf-glibc">Настройка Glibc</a></span> + </li> + <li> + <strong class="item">/etc/os-release:</strong> <span class= + "indexref"><a href="#ch-finish-theend">Заключение</a></span> + </li> + <li> + <strong class="item">/etc/passwd:</strong> <span class= + "indexref"><a href="#ch-tools-createfiles">Создание основных + файлов и символических ссылок</a></span> + </li> + <li> + <strong class="item">/etc/profile:</strong> <span class= + "indexref"><a href="#ch-config-locale">Настройка системной + локали</a></span> + </li> + <li> + <strong class="item">/etc/protocols:</strong> <span class= + "indexref"><a href= + "#ch-system-iana-etc">Iana-Etc-20240125</a></span> + </li> + <li> + <strong class="item">/etc/resolv.conf:</strong> <span class= + "indexref"><a href="#resolv.conf">Создание файла + /etc/resolv.conf</a></span> + </li> + <li> + <strong class="item">/etc/services:</strong> <span class= + "indexref"><a href= + "#ch-system-iana-etc">Iana-Etc-20240125</a></span> + </li> + <li> + <strong class="item">/etc/syslog.conf:</strong> <span class= + "indexref"><a href="#conf-sysklogd">Настройка + Sysklogd</a></span> + </li> + <li> + <strong class="item">/etc/udev:</strong> <span class= + "indexref"><a href="#ch-system-udev">Udev из Systemd-255</a> -- + <a href="#etc-udev">Описание</a><br /></span> + </li> + <li> + <strong class="item">/etc/udev/hwdb.bin:</strong> <span class= + "indexref"><a href="#conf-udev">Настройка Udev</a></span> + </li> + <li> + <strong class="item">/etc/vimrc:</strong> <span class= + "indexref"><a href="#conf-vim">Настройка Vim</a></span> + </li> + <li> + <strong class="item">/run/utmp:</strong> <span class= + "indexref"><a href="#ch-tools-createfiles">Создание основных + файлов и символических ссылок</a></span> + </li> + <li> + <strong class="item">/usr/include/asm-generic/*.h:</strong> + <span class="indexref"><a href= + "#ch-tools-linux-headers">Заголовочные файлы Linux-6.7.4 + API</a> -- <a href="#asm-generic">Описание</a><br /></span> + </li> + <li> + <strong class="item">/usr/include/asm/*.h:</strong> + <span class="indexref"><a href= + "#ch-tools-linux-headers">Заголовочные файлы Linux-6.7.4 + API</a> -- <a href="#asm">Описание</a><br /></span> + </li> + <li> + <strong class="item">/usr/include/drm/*.h:</strong> + <span class="indexref"><a href= + "#ch-tools-linux-headers">Заголовочные файлы Linux-6.7.4 + API</a> -- <a href="#drm">Описание</a><br /></span> + </li> + <li> + <strong class="item">/usr/include/linux/*.h:</strong> + <span class="indexref"><a href= + "#ch-tools-linux-headers">Заголовочные файлы Linux-6.7.4 + API</a> -- <a href="#linux">Описание</a><br /></span> + </li> + <li> + <strong class="item">/usr/include/misc/*.h:</strong> + <span class="indexref"><a href= + "#ch-tools-linux-headers">Заголовочные файлы Linux-6.7.4 + API</a> -- <a href="#misc">Описание</a><br /></span> + </li> + <li> + <strong class="item">/usr/include/mtd/*.h:</strong> + <span class="indexref"><a href= + "#ch-tools-linux-headers">Заголовочные файлы Linux-6.7.4 + API</a> -- <a href="#mtd">Описание</a><br /></span> + </li> + <li> + <strong class="item">/usr/include/rdma/*.h:</strong> + <span class="indexref"><a href= + "#ch-tools-linux-headers">Заголовочные файлы Linux-6.7.4 + API</a> -- <a href="#rdma">Описание</a><br /></span> + </li> + <li> + <strong class="item">/usr/include/scsi/*.h:</strong> + <span class="indexref"><a href= + "#ch-tools-linux-headers">Заголовочные файлы Linux-6.7.4 + API</a> -- <a href="#scsi">Описание</a><br /></span> + </li> + <li> + <strong class="item">/usr/include/sound/*.h:</strong> + <span class="indexref"><a href= + "#ch-tools-linux-headers">Заголовочные файлы Linux-6.7.4 + API</a> -- <a href="#sound">Описание</a><br /></span> + </li> + <li> + <strong class="item">/usr/include/video/*.h:</strong> + <span class="indexref"><a href= + "#ch-tools-linux-headers">Заголовочные файлы Linux-6.7.4 + API</a> -- <a href="#video">Описание</a><br /></span> + </li> + <li> + <strong class="item">/usr/include/xen/*.h:</strong> + <span class="indexref"><a href= + "#ch-tools-linux-headers">Заголовочные файлы Linux-6.7.4 + API</a> -- <a href="#xen">Описание</a><br /></span> + </li> + <li> + <strong class="item">/var/log/btmp:</strong> <span class= + "indexref"><a href="#ch-tools-createfiles">Создание основных + файлов и символических ссылок</a></span> + </li> + <li> + <strong class="item">/var/log/lastlog:</strong> <span class= + "indexref"><a href="#ch-tools-createfiles">Создание основных + файлов и символических ссылок</a></span> + </li> + <li> + <strong class="item">/var/log/wtmp:</strong> <span class= + "indexref"><a href="#ch-tools-createfiles">Создание основных + файлов и символических ссылок</a></span> + </li> + <li> + <strong class="item">/etc/shells:</strong> <span class= + "indexref"><a href="#ch-config-shells">Создание файла + /etc/shells</a></span> + </li> + <li> + <strong class="item">man pages:</strong> <span class= + "indexref"><a href="#ch-system-man-pages">Man-pages-6.06</a> -- + <a href="#man-pages">Описание</a><br /></span> + </li> + </ul> + </div> + </div> + </div> + </body> +</html> |