summaryrefslogtreecommitdiff
path: root/lfs-12.1-sysv/LFS-BOOK.html
diff options
context:
space:
mode:
Diffstat (limited to 'lfs-12.1-sysv/LFS-BOOK.html')
-rw-r--r--lfs-12.1-sysv/LFS-BOOK.html59294
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&nbsp;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 &gt; $LFS/etc/group &lt;&lt; "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>&lt;ЗАМЕНЯЕМЫЙ
+ ТЕКСТ&gt;</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>&lt;имя
+ программы&gt;</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>Часть&nbsp;I.&nbsp;Введение
+ </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. Подготовка хост-системы">Глава&nbsp;2</a> этой книги
+ содержит информацию, о том, как создать новые разделы Linux и
+ файловую систему, где будет скомпилирована и установлена новая
+ система LFS. <a class="xref" href="#chapter-getting-materials"
+ title="Глава 3. Пакеты и патчи">Глава&nbsp;3</a> содержит
+ информацию, о том, какие пакеты и исправления необходимо
+ загрузить для сборки системы LFS и как их хранить на файловой
+ системе. <a class="xref" href="#chapter-final-preps" title=
+ "Глава 4. Заключительный этап подготовки">Глава&nbsp;4</a>
+ освещает вопросы настройки рабочего окружения. Пожалуйста,
+ внимательно прочитайте <a class="xref" href=
+ "#chapter-final-preps" title=
+ "Глава 4. Заключительный этап подготовки">Глава&nbsp;4</a>, так
+ как в ней объясняется несколько важных моментов, о которых вам
+ необходимо знать, прежде чем вы начнёте работать со следующими
+ главами.
+ </p>
+ <p>
+ <a class="xref" href="#chapter-cross-tools" title=
+ "Глава 5. Сборка кросс-тулчейна">Глава&nbsp;5</a> содержит
+ информацию об установке первоначального набора инструментов
+ (binutils, gcc и glibc) с использованием методов
+ кросс-компиляции для изоляции новых инструментов от
+ хост-системы.
+ </p>
+ <p>
+ <a class="xref" href="#chapter-temporary-tools" title=
+ "Глава 6. Кросс-Компиляция временных инструментов">Глава&nbsp;6</a>
+ рассказывает, как выполнить кросс-компиляцию базовых утилит с
+ использованием только что собранного временного набора
+ инструментов.
+ </p>
+ <p>
+ В <a class="xref" href="#chapter-chroot-temporary-tools" title=
+ "Глава 7. Вход в окружение Chroot и создание дополнительных временных инструментов">
+ Глава&nbsp;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. Установка базового системного программного обеспечения">
+ Глава&nbsp;8</a> будет собрана полноценная система LFS. Еще
+ одно преимущество среды chroot заключается в том, что она
+ позволяет вам продолжать использовать хост-систему во время
+ сборки LFS. Ожидая завершения компиляции пакетов, вы можете
+ продолжать пользоваться своим компьютером в обычном режиме.
+ </p>
+ <p>
+ Чтобы завершить установку, в <a class="xref" href=
+ "#chapter-config" title=
+ "Глава 9. Системные настройки">Глава&nbsp;9</a> происходит
+ настройка базовой конфигурации системы, в <a class="xref" href=
+ "#chapter-bootable" title=
+ "Глава 10. Делаем систему LFS загрузочной">Глава&nbsp;10</a>
+ настраиваются ядро и загрузчик. <a class="xref" href=
+ "#chapter-finalizing" title=
+ "Глава 11. Заключение">Глава&nbsp;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. Ресурсы">Раздел&nbsp;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. Ресурсы">Раздел&nbsp;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>Часть&nbsp;II.&nbsp;Подготовка к
+ сборке
+ </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>&lt;package-name&gt;</code></em>-devel</code>
+ или <code class="literal"><em class=
+ "replaceable"><code>&lt;package-name&gt;</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. Сборка кросс-тулчейна">Глава&nbsp;5</a> и
+ <a class="xref" href="#chapter-building-system" title=
+ "Глава 8. Установка базового системного программного обеспечения">
+ Глава&nbsp;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 загрузочной">Глава&nbsp;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 &gt; version-check.sh &lt;&lt; "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 &gt; /dev/null 2&gt; /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 &amp;&gt;/dev/null
+ then
+ echo "ERROR: Cannot find $2 ($1)"; return 1;
+ fi
+ v=$($2 --version 2&gt;&amp;1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1)
+ if printf '%s\n' $3 $v | sort --version-sort --check &amp;&gt;/dev/null
+ then
+ printf "OK: %-9s %-6s &gt;= $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 &amp;&gt;/dev/null
+ then
+ printf "OK: Linux Kernel $kver &gt;= $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 &gt;= 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' &amp;&amp; [ -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&gt;&amp;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. Главы&nbsp;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. Главы&nbsp;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. Главы&nbsp;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">Раздел&nbsp;7.3.1,
+ «Монтирование и заполнение /dev»</a> и <a class="xref"
+ href="#ch-tools-kernfsmount" title=
+ "7.3.2. Монтирование виртуальных файловых систем ядра">Раздел&nbsp;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">Раздел&nbsp;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>&lt;xxx&gt;</code></em></kbd></pre>
+ <p>
+ Замените <em class="replaceable"><code>&lt;xxx&gt;</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>&lt;yyy&gt;</code></em></kbd></pre>
+ <p>
+ Замените <em class="replaceable"><code>&lt;yyy&gt;</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>&lt;xxx&gt;</code></em> $LFS</kbd></pre>
+ <p>
+ Замените <em class="replaceable"><code>&lt;xxx&gt;</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>&lt;xxx&gt;</code></em> $LFS
+mkdir -v $LFS/home
+mount -v -t ext4 /dev/<em class=
+"replaceable"><code>&lt;yyy&gt;</code></em> $LFS/home</kbd></pre>
+ <p>
+ Замените <em class="replaceable"><code>&lt;xxx&gt;</code></em>
+ и <em class="replaceable"><code>&lt;yyy&gt;</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>&lt;xxx&gt;</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>&lt;zzz&gt;</code></em></kbd></pre>
+ <p>
+ Замените <em class="replaceable"><code>&lt;zzz&gt;</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. Кросс-Компиляция временных инструментов">Глава&nbsp;6</a>
+ (а также glibc и libstdc++ в <a class="xref" href=
+ "#chapter-cross-tools" title=
+ "Глава 5. Сборка кросс-тулчейна">Глава&nbsp;5</a>), могли быть
+ установлены в их конечном расположении. Это необходимо для
+ того, чтобы эти временные программы были перезаписаны при
+ сборке окончательных версий в <a class="xref" href=
+ "#chapter-building-system" title=
+ "Глава 8. Установка базового системного программного обеспечения">
+ Глава&nbsp;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. Кросс-Компиляция временных инструментов">Глава&nbsp;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 &gt; ~/.bash_profile &lt;&lt; "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 &gt; ~/.bashrc &lt;&lt; "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. Кросс-Компиляция временных инструментов">Глава&nbsp;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. Сборка кросс-тулчейна">Глава&nbsp;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. Сборка кросс-тулчейна">Глава&nbsp;5</a> и
+ <a class="xref" href="#chapter-temporary-tools" title=
+ "Глава 6. Кросс-Компиляция временных инструментов">Глава&nbsp;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 и создание дополнительных временных инструментов">
+ Глава&nbsp;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">Раздел&nbsp;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. Сборка кросс-тулчейна">Глава&nbsp;5</a> и <a class=
+ "xref" href="#chapter-temporary-tools" title=
+ "Глава 6. Кросс-Компиляция временных инструментов">Глава&nbsp;6</a>,
+ укажите параметр <code class="envar">MAKEFLAGS</code> в
+ <code class="filename">.bashrc сейчас</code>:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt;&gt; ~/.bashrc &lt;&lt; "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. Сборка кросс-тулчейна">Глава&nbsp;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. Сборка кросс-тулчейна">Глава&nbsp;5</a> и <a class=
+ "xref" href="#chapter-temporary-tools" title=
+ "Глава 6. Кросс-Компиляция временных инструментов">Глава&nbsp;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>Часть&nbsp;III.&nbsp;Сборка
+ кросс-компилятора и набора временных инструментов
+ </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. Сборка кросс-тулчейна">Глава&nbsp;5</a> и
+ <a class="xref" href="#chapter-temporary-tools" title=
+ "Глава 6. Кросс-Компиляция временных инструментов">Глава&nbsp;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 &lt;имя исполняемого файла&gt; | 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. Кросс-Компиляция временных инструментов">Глава&nbsp;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. Установка базового системного программного обеспечения">
+ Глава&nbsp;8</a> (или <span class="quote">«<span class=
+ "quote">этап 3</span>»</span>) собраны все пакеты,
+ необходимые для системы LFS. Даже если пакет уже был
+ установлен в системе LFS в предыдущей главе, мы все равно
+ пересобираем пакет. Основная причина пересборки этих пакетов
+ состоит в том, чтобы сделать их стабильными: если мы
+ переустанавливаем пакет LFS в готовой системе LFS, содержимое
+ пакета должно совпадать с содержимым того же пакета при
+ первой установке в <a class="xref" href=
+ "#chapter-building-system" title=
+ "Глава 8. Установка базового системного программного обеспечения">
+ Глава&nbsp;8</a>. Временные пакеты, установленные в <a class=
+ "xref" href="#chapter-temporary-tools" title=
+ "Глава 6. Кросс-Компиляция временных инструментов">Глава&nbsp;6</a>
+ или <a class="xref" href="#chapter-chroot-temporary-tools"
+ title=
+ "Глава 7. Вход в окружение Chroot и создание дополнительных временных инструментов">
+ Глава&nbsp;7</a> не могут удовлетворять этому требованию,
+ потому что некоторые из них собраны без необязательных
+ зависимостей и autoconf не может выполнить некоторые проверки
+ функций в <a class="xref" href="#chapter-temporary-tools"
+ title=
+ "Глава 6. Кросс-Компиляция временных инструментов">Глава&nbsp;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&gt;&amp;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. Кросс-Компиляция временных инструментов">Глава&nbsp;6</a>
+ все остальные программы, которым необходимо разрешить
+ проблему циклических зависимостей во время сборки. На этапе
+ установки всех этих пакетов используется переменная DESTDIR,
+ для принудительной установки в файловую систему LFS.
+ </p>
+ <p>
+ В конце <a class="xref" href="#chapter-temporary-tools"
+ title="Глава 6. Кросс-Компиляция временных инструментов">Глава&nbsp;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 и создание дополнительных временных инструментов">
+ Глава&nbsp;7</a> первой задачей является установка libstdc++.
+ Затем выполняется установка временных программ, необходимых
+ для правильной работы тулчейна. С этого момента основной
+ набор инструментов является самодостаточным и автономным. В
+ <a class="xref" href="#chapter-building-system" title=
+ "Глава 8. Установка базового системного программного обеспечения">
+ Глава&nbsp;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. Сборка кросс-тулчейна">Глава&nbsp;5</a>
+ и <a class="xref" href=
+ "#chapter-temporary-tools" title=
+ "Глава 6. Кросс-Компиляция временных инструментов">
+ Глава&nbsp;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 ... &amp;&amp; make
+ &amp;&amp; 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">Раздел&nbsp;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 &gt; \
+ `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">Раздел&nbsp;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" &gt; 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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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. Настройка окружения">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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. Создание узла устройства">Раздел&nbsp;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. Установка базового системного программного обеспечения">
+ Глава&nbsp;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">Раздел&nbsp;7.3.1,
+ «Монтирование и заполнение /dev»</a> и <a class="xref" href=
+ "#ch-tools-kernfsmount" title=
+ "7.3.2. Монтирование виртуальных файловых систем ядра">Раздел&nbsp;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 &gt; /etc/hosts &lt;&lt; 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 &gt; /etc/passwd &lt;&lt; "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 &gt; /etc/group &lt;&lt; "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. Установка базового системного программного обеспечения">
+ Глава&nbsp;8</a> требуется обычный пользователь. Добавим такого
+ пользователя здесь и удалим эту учетную запись в конце главы.
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">echo "tester:x:101:101::/home/tester:/bin/bash" &gt;&gt; /etc/passwd
+echo "tester:x:101:" &gt;&gt; /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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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. Установка базового системного программного обеспечения">
+ Глава&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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. Установка базового системного программного обеспечения">
+ Глава&nbsp;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">Раздел&nbsp;2.6,
+ «Установка переменной $LFS»</a>.
+ </p>
+ </div>
+ <p>
+ Перед созданием резервной копии размонтируйте виртуальные
+ файловые системы:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">mountpoint -q $LFS/dev/shm &amp;&amp; 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. Подготовка виртуальных файловых систем ядра">Раздел&nbsp;7.3,
+ «Подготовка виртуальных файловых систем ядра»</a>, и
+ повторно войдите в среду chroot (см. <a class="xref" href=
+ "#ch-tools-chroot" title=
+ "7.4. Вход в окружение Chroot">Раздел&nbsp;7.4, «Вход в
+ окружение Chroot»</a>), прежде чем продолжить.
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="titlepage">
+ <div>
+ <div>
+ <h1 class="title">
+ <a id="part4" name="part4"></a>Часть&nbsp;IV.&nbsp;Сборка
+ системы 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. Установка базового системного программного обеспечения">
+ Глава&nbsp;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">Раздел&nbsp;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 для настройки процесса загрузки">Раздел&nbsp;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" &gt; 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>&lt;factor&gt;</code></em> make
+ test t=<em class="replaceable"><code>&lt;test
+ name&gt;</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">Раздел&nbsp;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">Раздел&nbsp;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">Раздел&nbsp;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&gt; /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&gt; /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 &gt; /etc/nsswitch.conf &lt;&lt; "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>&lt;xxx&gt;</code></em> /etc/localtime</kbd></pre>
+ <p>
+ Замените <em class=
+ "replaceable"><code>&lt;xxx&gt;</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 &gt; /etc/ld.so.conf &lt;&lt; "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 &gt;&gt; /etc/ld.so.conf &lt;&lt; "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 приводит к перемещению старых
+ библиотек в &lt;libraryname&gt;.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>
+ &gt;Установите заголовочные файлы 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. Подготовка виртуальных файловых систем ядра">Раздел&nbsp;7.3,
+ «Подготовка виртуальных файловых систем ядра»</a> и
+ убедиться, что файловая система <code class=
+ "systemitem">devpts</code> (и другие файловые системы
+ виртуального ядра) смонтирована правильно. Затем повторно
+ войдите в среду chroot, следуя инструкции <a class="xref"
+ href="#ch-tools-chroot" title=
+ "7.4. Вход в окружение Chroot">Раздел&nbsp;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&gt;&amp;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">Раздел&nbsp;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. Создание основных файлов и символических ссылок">Раздел&nbsp;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(){}' &gt; dummy.c
+cc dummy.c -v -Wl,--verbose &amp;&gt; 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 &lt;...&gt; 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">Раздел&nbsp;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>&lt;string&gt;</em></span> и
+ потоками <span class=
+ "emphasis"><em>&lt;iostream&gt;</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 &lt;&lt; "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">&lt;</code> и <code class=
+ "computeroutput">&gt;</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)&gt;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. Проблемы с обновлением">Раздел&nbsp;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 &gt; /etc/pip.conf &lt;&lt; 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 &gt; 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.*|//&amp;|' \
+ -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">Раздел&nbsp;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>&lt;paper_size&gt;</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> &gt; 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 для настройки процесса загрузки">Раздел&nbsp;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>&lt;device&gt;</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&gt;/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"' &gt;&gt; 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" \
+ &amp;&gt; 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 &gt; /etc/vimrc &lt;&lt; "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 (&amp;term == "xterm") || (&amp;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 \
+ &gt; /usr/share/man/man5/udev.link.5
+
+sed 's/systemd\(\\\?-\)/udev\1/' /usr/share/man/man8/systemd-hwdb.8 \
+ &gt; /usr/share/man/man8/udev-hwdb.8
+
+sed 's|lib.*udevd|sbin/udevd|' \
+ /usr/share/man/man8/systemd-udevd.service.8 \
+ &gt; /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/&lt;ll&gt;</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>
+ &nbsp;
+ </td>
+ <td>
+ &nbsp;
+ </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 &gt; /etc/syslog.conf &lt;&lt; "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. Проблемы с обновлением">Раздел&nbsp;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. Кросс-Компиляция временных инструментов">Глава&nbsp;6</a>
+ и <a class="xref" href="#chapter-chroot-temporary-tools" title=
+ "Глава 7. Вход в окружение Chroot и создание дополнительных временных инструментов">
+ Глава&nbsp;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&nbsp;—&nbsp;выключение<br />
+ 1&nbsp;—&nbsp;Однопользовательский&nbsp;режим<br />
+ 2&nbsp;—&nbsp;Определяемый&nbsp;пользователем<br />
+ 3&nbsp;—&nbsp;Полный&nbsp;многопользовательский&nbsp;режим<br />
+
+ 4&nbsp;—&nbsp;Определяемый&nbsp;пользователем<br />
+ 5&nbsp;—&nbsp;Полный&nbsp;многопользовательский&nbsp;режим&nbsp;с&nbsp;дисплей-менеджером<br />
+
+ 6&nbsp;—&nbsp;перезагрузка
+ </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. Установка базового системного программного обеспечения">
+ Глава&nbsp;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>&lt;filename&gt;</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. Управление устройствами">Раздел&nbsp;9.4, «Управление
+ устройствами»</a> и <a class="xref" href=
+ "#ch-config-network" title=
+ "9.5. Настройка сети">Раздел&nbsp;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">Раздел&nbsp;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 \
+ &gt; /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. Взаимодействие с устройствами и модулями">Раздел&nbsp;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. Настройка сети">Раздел&nbsp;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 &gt; /etc/udev/rules.d/83-duplicate_devs.rules &lt;&lt; "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">Раздел&nbsp;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 &gt; ifconfig.<em class=
+"replaceable"><code>eth0</code></em> &lt;&lt; "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 &gt; /etc/resolv.conf &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/resolv.conf
+
+domain <em class="replaceable"><code>&lt;Ваше доменное имя&gt;</code></em>
+nameserver <em class=
+"replaceable"><code>&lt;IP-адрес вашего основного DNS-сервера&gt;</code></em>
+nameserver <em class=
+"replaceable"><code>&lt;IP-адрес вашего дополнительного DNS-сервера&gt;</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>&lt;IP-адрес вашего
+ основного DNS-сервера&gt;</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>&lt;lfs&gt;</code></em>" &gt; /etc/hostname</kbd></pre>
+ <p>
+ <em class="replaceable"><code>&lt;lfs&gt;</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 &gt; /etc/hosts &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/hosts
+
+127.0.0.1 localhost.localdomain localhost
+127.0.1.1 <em class="replaceable"><code>&lt;FQDN&gt;</code></em> <em class=
+"replaceable"><code>&lt;HOSTNAME&gt;</code></em>
+<em class="replaceable"><code>&lt;192.168.1.1&gt;</code></em> <em class=
+"replaceable"><code>&lt;FQDN&gt;</code></em> <em class=
+"replaceable"><code>&lt;HOSTNAME&gt;</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>&lt;192.168.1.1&gt;</code></em>,
+ <em class="replaceable"><code>&lt;FQDN&gt;</code></em>, и
+ <em class="replaceable"><code>&lt;HOSTNAME&gt;</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:&nbsp;выключение&nbsp;компьютера<br />
+ 1:&nbsp;однопользовательский&nbsp;режим<br />
+ 2:&nbsp;зарезервировано&nbsp;для&nbsp;настройки,&nbsp;в&nbsp;остальном&nbsp;аналогично&nbsp;3<br />
+
+ 3:&nbsp;многопользовательский&nbsp;режим&nbsp;с&nbsp;поддержкой&nbsp;сети<br />
+
+ 4:&nbsp;зарезервировано&nbsp;для&nbsp;настройки,&nbsp;в&nbsp;остальном&nbsp;аналогично&nbsp;3<br />
+
+ 5:&nbsp;то&nbsp;же,&nbsp;что&nbsp;и&nbsp;4,&nbsp;обычно&nbsp;используется&nbsp;для&nbsp;входа&nbsp;в&nbsp;систему&nbsp;с&nbsp;графическим&nbsp;интерфейсом&nbsp;(например,&nbsp;<br />
+
+ <span class=
+ "command"><strong>gdm</strong></span>&nbsp;от&nbsp;GNOME&nbsp;или&nbsp;<span class="command"><strong>lxdm</strong></span>&nbsp;от&nbsp;LXDE)<br />
+
+ 6:&nbsp;перезагрузка&nbsp;компьютера
+ </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 &gt; /etc/inittab &lt;&lt; "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>&lt;runlevel&gt;</code></em></strong></span>,
+ где <em class=
+ "replaceable"><code>&lt;runlevel&gt;</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
+ &lt;device&gt;</strong></span>, где &lt;device&gt; - это
+ абсолютный путь в /dev или /sys, такой как /dev/sr0 или
+ /sys/class/rtc.
+ </p>
+ <p>
+ Для получения информации о загрузке модуля ядра и udev
+ смотрите <a class="xref" href="#module-loading" title=
+ "9.3.2.3. Загрузка модуля">Раздел&nbsp;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 &gt; /etc/sysconfig/clock &lt;&lt; "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. Настройка системной локали">Раздел&nbsp;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 &gt; /etc/sysconfig/console &lt;&lt; "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 &gt; /etc/sysconfig/console &lt;&lt; "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 &gt; /etc/sysconfig/console &lt;&lt; "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 &gt; /etc/sysconfig/console &lt;&lt; "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 &gt; /etc/sysconfig/console &lt;&lt; "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 &gt; /etc/sysconfig/console &lt;&lt; "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 &gt; /etc/sysconfig/console &lt;&lt; "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>&lt;ll&gt;</code></em> двухбуквенным кодом
+ нужного вам языка (например <code class="literal">en</code>), а
+ <em class="replaceable"><code>&lt;CC&gt;</code></em>
+ двухбуквенным кодом соответствующей страны (например
+ <code class="literal">GB</code>). <em class=
+ "replaceable"><code>&lt;charmap&gt;</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>&lt;locale
+ name&gt;</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>&lt;locale name&gt;</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=&lt;locale name&gt; locale language
+LC_ALL=&lt;locale name&gt; locale charmap
+LC_ALL=&lt;locale name&gt; locale int_curr_symbol
+LC_ALL=&lt;locale name&gt; 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 &gt; /etc/profile &lt;&lt; "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>&lt;ll&gt;_&lt;CC&gt;.&lt;charmap&gt;&lt;@modifiers&gt;</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 &gt; /etc/inputrc &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/inputrc
+# Modified by Chris Lynn &lt;roryo@roryo.dynup.net&gt;
+
+# Разрешить перенос приглашения оболочки на следующую строку
+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 &gt; /etc/shells &lt;&lt; "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 &gt; /etc/fstab &lt;&lt; "EOF"
+<code class="literal"># Begin /etc/fstab
+
+# file system mount-point type options dump fsck
+# order
+
+/dev/<em class=
+"replaceable"><code>&lt;xxx&gt;</code></em> / <em class=
+"replaceable"><code>&lt;fff&gt;</code></em> defaults 1 1
+/dev/<em class=
+"replaceable"><code>&lt;yyy&gt;</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>&lt;xxx&gt;</code></em>,
+ <em class="replaceable"><code>&lt;yyy&gt;</code></em>, и
+ <em class="replaceable"><code>&lt;fff&gt;</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
+ -&gt; 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. Перезагрузка системы">Раздел&nbsp;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=&lt;переменная_LANG_хоста&gt;
+ LC_ALL=</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Устанавливает значение локали на то, которое
+ используется на хосте. Это может понадобиться для
+ правильного отображения интерфейса menuconfig с помощью
+ ncurses в текстовой консоли Linux с UTF-8.
+ </p>
+ <p>
+ Если это необходимо, обязательно замените значение
+ <em class=
+ "replaceable"><code>&lt;переменной_LANG&gt;</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 ---&gt;
+ [ ] <span class=
+"blue">C</span>ompile the kernel with warnings as errors [WERROR]
+ <span class="blue">C</span>PU/Task time and stats accounting ---&gt;
+ [*] <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]
+ &lt; &gt; <span class=
+"blue">E</span>nable kernel headers through /sys/kernel/kheaders.tar.xz [IKHEADERS]
+ [*] <span class=
+"blue">C</span>ontrol Group support ---&gt; [CGROUPS]
+ [*] M<span class=
+"blue">e</span>mory controller [MEMCG]
+ [ ] <span class=
+"blue">C</span>onfigure standard kernel features (expert users) ---&gt; [EXPERT]
+
+<span class="blue">P</span>rocessor type and features ---&gt;
+ [*] <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 ---&gt;
+ [*] <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 ---&gt;
+ <span class="blue">G</span>eneric Driver Options ---&gt;
+ [ ] <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 ---&gt;
+ &lt; /*/M&gt; <span class=
+"blue">D</span>irect Rendering Manager (XFree86 4.1.0 and higher DRI support) ---&gt;
+ ... [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 ---&gt;
+ # 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 ---&gt;
+ [*] <span class=
+"blue">S</span>upport x2apic [X86_X2APIC]
+
+<span class="blue">D</span>evice Drivers ---&gt;
+ [*] <span class=
+"blue">P</span>CI support ---&gt; [PCI]
+ [*] M<span class=
+"blue">e</span>ssage Signaled Interrupts (MSI and MSI-X) [PCI_MSI]
+ [*] <span class=
+"blue">I</span>OMMU Hardware Support ---&gt; [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 ---&gt;
+ H<span class="blue">i</span>gh Memory Support ---&gt;
+ (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 ---&gt;
+ N<span class="blue">V</span>ME Support ---&gt;
+ &lt;*&gt; 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. Взаимодействие с устройствами и модулями">Раздел&nbsp;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">Раздел&nbsp;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 &gt; /etc/modprobe.d/usb.conf &lt;&lt; "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. Установка базового системного программного обеспечения">
+ Глава&nbsp;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 &gt; /boot/grub/grub.cfg &lt;&lt; "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>&lt;UUID файловой системы, в
+ которой установлено ядро&gt;</code></em></code>, и замените
+ <code class="literal">root=/dev/sda2</code> на <code class=
+ "literal">root=PARTUUID=<em class=
+ "replaceable"><code>&lt;UUID раздела, в котором собрана
+ LFS&gt;</code></em></code>.
+ </p>
+ <p>
+ Обратите внимание, что UUID раздела и UUID файловой системы
+ на этом разделе это совершенно разные вещи. Некоторые
+ онлайн-ресурсы могут предлагать вам использовать
+ <code class="literal">root=UUID=<em class=
+ "replaceable"><code>&lt;UUID файловой
+ системы&gt;</code></em></code> вместо <code class=
+ "literal">root=PARTUUID=<em class=
+ "replaceable"><code>&lt;UUID
+ раздела&gt;</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>&lt;UUID
+ раздела&gt;</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 &gt; /etc/lfs-release</kbd></pre>
+ <p>
+ Следующие два файла, содержащие описание установленной системы,
+ могут использоваться пакетами, устанавливаемыми позже, либо в
+ бинарном виде, либо путем их сборки.
+ </p>
+ <p>
+ Первый показывает статус вашей новой системы по отношению к
+ стандарту LSB. Чтобы создать этот файл, выполните:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/lsb-release &lt;&lt; "EOF"
+DISTRIB_ID="Linux From Scratch"
+DISTRIB_RELEASE="12.1"
+DISTRIB_CODENAME="&lt;your name here&gt;"
+DISTRIB_DESCRIPTION="Linux From Scratch"
+EOF</kbd></pre>
+ <p>
+ Второй содержит примерно ту же информацию и используется
+ systemd и некоторыми графическими средами рабочего стола. Чтобы
+ создать этот файл, выполните:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; /etc/os-release &lt;&lt; "EOF"
+NAME="Linux From Scratch"
+VERSION="12.1"
+ID=lfs
+PRETTY_NAME="Linux From Scratch 12.1"
+VERSION_CODENAME="&lt;your name here&gt;"
+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 &amp;&amp; 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. Списки рассылки">Глава&nbsp;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 &gt; ~/mount-virt.sh &lt;&lt; "EOF"
+#!/bin/bash
+
+function mountbind
+{
+ if ! mountpoint $LFS/$1 &gt;/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 &gt;/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>Часть&nbsp;V.&nbsp;Приложения
+ </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:&#103;&#101;&#114;&#97;&#114;&#100;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Gerard Beekmans</a>
+ &lt;gerard AT linuxfromscratch D0T org&gt; – Основатель проекта
+ LFS
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#98;&#100;&#117;&#98;&#98;&#115;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Bruce Dubbs</a>
+ &lt;bdubbs AT linuxfromscratch D0T org&gt; – Главный редактор LFS
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#106;&#105;&#109;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Jim
+ Gifford</a> &lt;jim AT linuxfromscratch D0T org&gt; – Второй
+ руководитель проекта CLFS
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#112;&#105;&#101;&#114;&#114;&#101;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Pierre Labastie</a>
+ &lt;pierre AT linuxfromscratch D0T org&gt; – Редактор BLFS и
+ руководитель ALFS
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#100;&#106;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">DJ
+ Lucas</a> &lt;dj AT linuxfromscratch D0T org&gt; – Редактор
+ проектов LFS и BLFS
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#107;&#101;&#110;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Ken
+ Moffat</a> &lt;ken AT linuxfromscratch D0T org&gt; – Редактор 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:&#109;&#97;&#99;&#97;&#110;&#97;&#64;&#109;&#97;&#99;&#97;&#110;&#97;&#45;&#101;&#115;&#46;&#99;&#111;&#109;">Manuel
+ Canales Esparcia</a> &lt;macana AT macana-es D0T com&gt; – Перевод
+ проекта LFS на испанский язык
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#106;&#111;&#104;&#97;&#110;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Johan Lenglet</a>
+ &lt;johan AT linuxfromscratch D0T org&gt; – Перевод проекта LFS на
+ французский язык до 2008 г.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#106;&#109;&#101;&#110;&#103;&#117;&#97;&#108;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Jean-Philippe
+ Mengual</a> &lt;jmengual AT linuxfromscratch D0T org&gt; – Перевод
+ проекта LFS на французский язык 2008-2016 гг
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#106;&#108;&#101;&#112;&#105;&#108;&#108;&#101;&#114;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Julien Lepiller</a>
+ &lt;jlepiller AT linuxfromscratch D0T org&gt; – Перевод проекта
+ LFS на французский язык с 2017-по настоящее время
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#108;&#105;&#122;&#97;&#114;&#100;&#111;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Anderson Lizardo</a>
+ &lt;lizardo AT linuxfromscratch D0T org&gt; – Перевод проекта LFS
+ на португальский язык до 2022 г.
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#106;&#97;&#102;&#101;&#115;&#112;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">Jamenson
+ Espindula</a> &lt;jafesp AT gmail D0T com&gt; – Перевод проекта
+ LFS на португальский язык 2022-по настоящее время
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#116;&#114;&#64;&#101;&#114;&#100;&#102;&#117;&#110;&#107;&#115;&#116;&#101;&#108;&#108;&#101;&#46;&#100;&#101;">Thomas
+ Reitelbach</a> &lt;tr AT erdfunkstelle D0T de&gt; – Перевод
+ проекта LFS на немецкий язык
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#105;&#110;&#102;&#111;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;&#46;&#114;&#117;">Anton Maisak</a>
+ &lt;info AT linuxfromscratch D0T ru&gt; – Перевод проекта LFS на
+ русский язык 2018-2020 гг
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#104;&#101;&#108;&#101;&#110;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;&#46;&#114;&#117;">Elena Shevcova</a>
+ &lt;info AT linuxfromscratch D0T ru&gt; – Перевод проекта LFS на
+ русский язык 2018-2020 гг
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#105;&#110;&#102;&#111;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#114;&#117;">Vladimir Pertsev</a>
+ &lt;info AT linuxfromscratch D0T ru&gt; – Перевод проекта 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:&#115;&#99;&#111;&#116;&#116;&#64;&#111;&#115;&#117;&#111;&#115;&#108;&#46;&#111;&#114;&#103;">Scott
+ Kveton</a> &lt;scott AT osuosl D0T org&gt; – зеркало
+ lfs.oregonstate.edu
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#108;&#111;&#115;&#116;&#64;&#108;&#45;&#119;&#46;&#110;&#101;&#116;">William
+ Astle</a> &lt;lost AT l-w D0T net&gt; – зеркало
+ ca.linuxfromscratch.org
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#101;&#117;&#106;&#111;&#110;&#46;&#115;&#101;&#108;&#108;&#101;&#114;&#115;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">Eujon Sellers</a>
+ &lt;jpolen@rackspace.com&gt; – зеркало lfs.introspeed.com
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#106;&#117;&#115;&#116;&#105;&#110;&#64;&#107;&#110;&#105;&#101;&#114;&#105;&#109;&#46;&#111;&#114;&#103;">Justin
+ Knierim</a> &lt;tim@idge.net&gt; – зеркало 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:&#109;&#97;&#110;&#117;&#101;&#108;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Manuel Canales
+ Esparcia</a> &lt;manuel AT linuxfromscratch D0T org&gt; – зеркало
+ lfsmirror.lfs-es.info
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#108;&#102;&#97;&#108;&#99;&#111;&#110;&#64;&#116;&#104;&#121;&#109;&#98;&#114;&#97;&#46;&#99;&#111;&#109;">Luis
+ Falcon</a> &lt;Luis Falcon&gt; – зеркало 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:&#103;&#117;&#105;&#100;&#111;&#64;&#112;&#114;&#105;&#109;&#101;&#114;&#101;&#108;&#97;&#121;&#46;&#110;&#101;&#116;">Guido
+ Passet</a> &lt;guido AT primerelay D0T net&gt; – зеркало
+ nl.linuxfromscratch.org
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#98;&#97;&#97;&#102;&#105;&#101;&#64;&#112;&#108;&#97;&#110;&#101;&#116;&#46;&#110;&#108;">Bastiaan
+ Jacques</a> &lt;baafie AT planet D0T nl&gt; – зеркало
+ lfs.pagefault.net
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#115;&#118;&#101;&#110;&#46;&#99;&#114;&#97;&#110;&#115;&#104;&#111;&#102;&#102;&#64;&#108;&#105;&#110;&#101;&#111;&#46;&#98;&#101;">Sven
+ Cranshoff</a> &lt;sven D0T cranshoff AT lineo D0T be&gt; – зеркало
+ 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:&#105;&#110;&#102;&#111;&#64;&#97;&#108;&#105;&#101;&#110;&#115;&#111;&#102;&#116;&#46;&#111;&#114;&#103;">Sebastian
+ Faulborn</a> &lt;info AT aliensoft D0T org&gt; – зеркало
+ lfs.aliensoft.org
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#115;&#116;&#117;&#97;&#114;&#116;&#64;&#100;&#111;&#110;&#116;&#117;&#115;&#101;&#46;&#109;&#115;">Stuart
+ Fox</a> &lt;stuart AT dontuse D0T ms&gt; – зеркало lfs.dontuse.ms
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#97;&#100;&#109;&#105;&#110;&#64;&#114;&#101;&#97;&#108;&#104;&#111;&#115;&#116;&#46;&#100;&#101;">Ralf
+ Uhlemann</a> &lt;admin AT realhost D0T de&gt; – зеркало
+ lfs.oss-mirror.org
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#65;&#110;&#116;&#111;&#110;&#105;&#110;&#46;&#83;&#112;&#114;&#105;&#110;&#122;&#108;&#64;&#116;&#117;&#119;&#105;&#101;&#110;&#46;&#97;&#99;&#46;&#97;&#116;">Antonin Sprinzl</a>
+ &lt;Antonin D0T Sprinzl AT tuwien D0T ac D0T at&gt; – зеркало
+ at.linuxfromscratch.org
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#102;&#114;&#101;&#100;&#97;&#110;&#45;&#108;&#102;&#115;&#64;&#102;&#114;&#101;&#100;&#97;&#110;&#46;&#111;&#114;&#103;">Fredrik Danerklint</a>
+ &lt;fredan-lfs AT fredan D0T org&gt; – зеркало
+ se.linuxfromscratch.org
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#102;&#114;&#97;&#110;&#99;&#107;&#64;&#108;&#105;&#110;&#117;&#120;&#112;&#111;&#117;&#114;&#116;&#111;&#117;&#115;&#46;&#99;&#111;&#109;">Franck</a>
+ &lt;franck AT linuxpourtous D0T com&gt; – зеркало
+ lfs.linuxpourtous.com
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#98;&#97;&#113;&#117;&#101;&#64;&#99;&#105;&#99;&#116;&#46;&#102;&#114;">Philippe
+ Baque</a> &lt;baque AT cict D0T fr&gt; – зеркало lfs.cict.fr
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#107;&#111;&#110;&#116;&#97;&#107;&#116;&#64;&#119;&#97;&#110;&#107;&#111;&#111;&#46;&#111;&#114;&#103;">Benjamin
+ Heil</a> &lt;kontakt AT wankoo D0T org&gt; – зеркало
+ lfs.wankoo.org
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#105;&#110;&#102;&#111;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#114;&#117;">Vladimir Pertsev</a>
+ &lt;info AT linuxfromscratch D0T ru&gt; – зеркало
+ 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:&#115;&#97;&#116;&#105;&#116;&#64;&#119;&#98;&#97;&#99;&#46;&#97;&#99;&#46;&#116;&#104;">Satit
+ Phermsawang</a> &lt;satit AT wbac D0T ac D0T th&gt; – зеркало
+ lfs.phayoune.org
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#105;&#110;&#102;&#111;&#64;&#115;&#104;&#105;&#122;&#117;&#45;&#110;&#101;&#116;&#46;&#106;&#112;">Shizunet
+ Co.,Ltd.</a> &lt;info AT shizu-net D0T jp&gt; – зеркало
+ 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:&#106;&#97;&#115;&#111;&#110;&#64;&#100;&#115;&#116;&#99;&#46;&#101;&#100;&#117;&#46;&#97;&#117;">Jason
+ Andrade</a> &lt;jason AT dstc D0T edu D0T au&gt; – зеркало
+ 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:&#116;&#104;&#101;&#108;&#97;&#100;&#121;&#115;&#107;&#121;&#101;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Christine
+ Barczak</a> &lt;theladyskye AT linuxfromscratch D0T org&gt; –
+ Редактор книги LFS
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Archaic &lt;archaic@linuxfromscratch.org&gt; – Технический
+ писатель/редактор LFS, руководитель проекта HLFS, редактор
+ BLFS, Сопровождающий проекта Советы и патчи
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#109;&#97;&#116;&#116;&#104;&#101;&#119;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Matthew Burgess</a>
+ &lt;matthew AT linuxfromscratch D0T org&gt; – Руководитель проекта
+ LFS, технический писатель/редактор LFS
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#110;&#97;&#116;&#104;&#97;&#110;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Nathan Coulson</a>
+ &lt;nathan AT linuxfromscratch D0T org&gt; – Сопровождающий
+ 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:&#106;&#101;&#114;&#111;&#101;&#110;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Jeroen Coumans</a>
+ &lt;jeroen AT linuxfromscratch D0T org&gt; – Разработчик
+ веб-сайта, сопровождающий FAQ
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#109;&#97;&#110;&#117;&#101;&#108;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Manuel Canales
+ Esparcia</a> &lt;manuel AT linuxfromscratch D0T org&gt; –
+ Сопровождающий 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:&#106;&#104;&#117;&#110;&#116;&#119;&#111;&#114;&#107;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Jeremy Huntwork</a>
+ &lt;jhuntwork AT linuxfromscratch D0T org&gt; – Технический
+ писатель LFS, сопровождающий LFS LiveCD
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#98;&#114;&#121;&#97;&#110;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Bryan Kadzban</a>
+ &lt;bryan AT linuxfromscratch D0T org&gt; – Технический писатель
+ 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:&#110;&#105;&#99;&#104;&#111;&#108;&#97;&#115;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Nicholas Leippe</a>
+ &lt;nicholas AT linuxfromscratch D0T org&gt; – Сопровождающий Wiki
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#108;&#105;&#122;&#97;&#114;&#100;&#111;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Anderson Lizardo</a>
+ &lt;lizardo AT linuxfromscratch D0T org&gt; – Сопровождающий
+ движка сайта
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#114;&#97;&#110;&#100;&#121;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Randy McMurchy</a>
+ &lt;randy AT linuxfromscratch D0T org&gt; – Руководитель проекта
+ BLFS, редактор LFS
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#100;&#110;&#105;&#99;&#104;&#111;&#108;&#115;&#111;&#110;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Dan Nicholson</a>
+ &lt;dnicholson AT linuxfromscratch D0T org&gt; – Редактор LFS и
+ BLFS
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#97;&#108;&#101;&#120;&#97;&#110;&#100;&#101;&#114;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Alexander E.
+ Patrakov</a> &lt;alexander AT linuxfromscratch D0T org&gt; –
+ Технический писатель LFS, редактор интернационализации LFS,
+ сопровождающий LFS Live CD
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Simon Perreault
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#115;&#99;&#111;&#116;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Scot Mc Pherson</a>
+ &lt;scot AT linuxfromscratch D0T org&gt; – Сопровождающий шлюза
+ NNTP для проекта LFS
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#114;&#101;&#110;&#111;&#100;&#114;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Douglas R. Reno</a>
+ &lt;renodr AT linuxfromscratch D0T org&gt; – Редактор Systemd
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#114;&#121;&#97;&#110;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Ryan Oliver</a>
+ &lt;ryan AT linuxfromscratch D0T org&gt; – Один из руководителей
+ проекта CLFS
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#103;&#115;&#99;&#104;&#97;&#102;&#101;&#114;&#64;&#122;&#105;&#112;&#46;&#99;&#111;&#109;&#46;&#97;&#117;">Greg
+ Schafer</a> &lt;gschafer AT zip D0T com D0T au&gt; – Технический
+ писатель проекта LFS и архитектор методов сборки пакетов
+ следующего поколения, предназначенных для 64-битной
+ архитектуры
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ Jesse Tie-Ten-Quee – Технический писатель LFS
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#106;&#119;&#114;&#111;&#98;&#101;&#114;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">James Robertson</a>
+ &lt;jwrober AT linuxfromscratch D0T org&gt; – Сопровождающий
+ Bugzilla
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#116;&#117;&#115;&#104;&#97;&#114;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Tushar Teredesai</a>
+ &lt;tushar AT linuxfromscratch D0T org&gt; – Редактор книги BLFS,
+ руководитель проекта Советы и Патчи
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href=
+ "mailto:&#106;&#101;&#114;&#101;&#109;&#121;&#64;&#108;&#105;&#110;&#117;&#120;&#102;&#114;&#111;&#109;&#115;&#99;&#114;&#97;&#116;&#99;&#104;&#46;&#111;&#114;&#103;">Jeremy Utley</a>
+ &lt;jeremy AT linuxfromscratch D0T org&gt; – Технический писатель
+ проекта LFS, сопровождающий Bugzilla, сопровождающий
+ LFS-Bootscripts
+ </p>
+ </li>
+ <li class="listitem">
+ <p>
+ <a class="ulink" href="mailto:&#122;&#119;&#105;&#110;&#107;&#108;&#101;&#115;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">Zack
+ Winkles</a> &lt;zwinkles AT gmail D0T com&gt; – Технический
+ писатель проекта 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 ] &amp;&amp; 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}" != "" ] &amp;&amp; runlevel=${1}
+
+if [ "${runlevel}" == "" ]; then
+ echo "Usage: ${0} &lt;runlevel&gt;" &gt;&amp;2
+ exit 1
+fi
+
+previous=${PREVLEVEL}
+[ "${previous}" == "" ] &amp;&amp; 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 ] &amp;&amp; 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&gt;&amp;1 &gt; /dev/null
+fi
+
+# Make lower case
+[ "${interactive}" == "I" ] &amp;&amp; interactive="i"
+[ "${interactive}" != "i" ] &amp;&amp; interactive=""
+
+# Read the state file if it exists from runlevel S
+[ -r /run/interactive ] &amp;&amp; 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&gt; /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 ] &amp;&amp; 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&gt; /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 ] &amp;&amp; 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\"" &gt; /run/interactive
+else
+ rm -f /run/interactive 2&gt; /dev/null
+fi
+
+# Copy the boot log on initial boot only
+if [ "${previous}" == "N" -a "${runlevel}" != "S" ]; then
+ cat $BOOTLOG &gt;&gt; /var/log/boot.log
+
+ # Mark the end of boot
+ echo "--------" &gt;&gt; /var/log/boot.log
+
+ # Remove the temporary file
+ rm -f $BOOTLOG 2&gt; /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 ] &amp;&amp; . /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&gt; /dev/null
+
+ if [ "${?}" -ne "0" ]; then
+ # Process is dead, continue to next and assume all is well
+ continue
+ else
+ kill "${signal}" "${pid}" 2&gt; /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&gt; /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&gt; /dev/null
+ sleep 1
+ # Check again, and fail if still running
+ kill -0 "${pid}" 2&gt; /dev/null &amp;&amp; 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&gt; /dev/null
+ fi
+ else
+ if [ -e "${pidfile}" ]; then rm -f "${pidfile}" 2&gt; /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&gt; /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" &gt;&gt; ${BOOTLOG}
+
+ return 0
+}
+
+log_success_msg2()
+{
+ /bin/echo -n -e "${BMPREFIX}${@}"
+ /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"
+
+ echo " OK" &gt;&gt; ${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" &gt;&gt; ${BOOTLOG}
+
+ return 0
+}
+
+log_failure_msg2()
+{
+ /bin/echo -n -e "${BMPREFIX}${@}"
+ /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"
+
+ echo "FAIL" &gt;&gt; ${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" &gt;&gt; ${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" &gt;&gt; ${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}" &gt;&gt; ${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}" &gt;&gt; ${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} " &gt; /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} " &gt; /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" ] &amp;&amp; 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 &gt;/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 &gt;/dev/null; then
+ log_info_msg2 " ${INFO}/proc"
+ mount -o nosuid,noexec,nodev /proc || failed=1
+ fi
+
+ if ! mountpoint /sys &gt;/dev/null; then
+ log_info_msg2 " ${INFO}/sys"
+ mount -o nosuid,noexec,nodev /sys || failed=1
+ fi
+
+ if ! mountpoint /dev &gt;/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} &gt;/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 &lt; /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 &gt;/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 ] &amp;&amp; . /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} &gt;/dev/null
+ ;;
+
+ stop)
+ log_info_msg "Setting hardware clock..."
+ hwclock --systohc ${CLOCKPARAMS} &gt;/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 / &gt;/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 &gt;/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 / &gt;/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 &gt;/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 &gt;/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 &gt; /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" = '*' ] &amp;&amp; break
+ cat $file &gt;&gt; /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&gt;&amp;0 &lt; /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)
+ :&gt; "${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&gt;&amp;9 9&gt;&amp;-
+ return 0
+}
+
+case "${1}" in
+ start)
+ log_info_msg "Cleaning file systems:"
+
+ if [ "${SKIPTMPCLEAN}" = "" ]; then
+ log_info_msg2 " /tmp"
+ cd /tmp &amp;&amp;
+ find . -xdev -mindepth 1 ! -name lost+found -delete || failed=1
+ fi
+
+ &gt; /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&gt;/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 ] &amp;&amp; . /etc/sysconfig/console
+
+failed=0
+
+case "${1}" in
+ start)
+ # See if we need to do anything
+ if [ -z "${KEYMAP}" ] &amp;&amp; [ -z "${KEYMAP_CORRECTIONS}" ] &amp;&amp;
+ [ -z "${FONT}" ] &amp;&amp; [ -z "${LEGACY_CHARSET}" ] &amp;&amp;
+ ! 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 ] &amp;&amp; use_fb=1 || use_fb=0
+
+ # Figure out the command to set the console into the
+ # desired mode
+ is_true "${UNICODE}" &amp;&amp;
+ MODE_COMMAND="echo -en '\033%G' &amp;&amp; kbd_mode -u" ||
+ MODE_COMMAND="echo -en '\033%@\033(K' &amp;&amp; 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} &amp;&amp; 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} &gt;/dev/null 2&gt;&amp;1 ||
+ failed=1
+
+ [ -z "${KEYMAP_CORRECTIONS}" ] ||
+ loadkeys ${KEYMAP_CORRECTIONS} &gt;/dev/null 2&gt;&amp;1 ||
+ failed=1
+
+ # Convert the keymap from $LEGACY_CHARSET to UTF-8
+ [ -z "$LEGACY_CHARSET" ] ||
+ dumpkeys -c "$LEGACY_CHARSET" | loadkeys -u &gt;/dev/null 2&gt;&amp;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 ] &amp;&amp; . /etc/sysconfig/network
+[ -r /etc/hostname ] &amp;&amp; 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&gt;/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" ] &amp;&amp; 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 &gt;/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 &gt;/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:
+# &lt;module&gt; [&lt;arg1&gt; &lt;arg2&gt; ...]
+#
+# 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"
+# &lt;filename&gt; &lt;type&gt; &lt;permissions&gt; &lt;user&gt; &lt;group&gt;
+# if type is equal to "dev"
+# &lt;filename&gt; &lt;type&gt; &lt;permissions&gt; &lt;user&gt; &lt;group&gt; &lt;devtype&gt;
+# &lt;major&gt; &lt;minor&gt;
+#
+# &lt;filename&gt; is the name of the file which is to be created
+# &lt;type&gt; is either file, dir, or dev.
+# file creates a new file
+# dir creates a new directory
+# dev creates a new device
+# &lt;devtype&gt; is either block, char or pipe
+# block creates a block device
+# char creates a character device
+# pipe creates a pipe, this will ignore the &lt;major&gt; and
+# &lt;minor&gt; fields
+# &lt;major&gt; and &lt;minor&gt; 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 &gt; /dev/null 2&gt;&amp;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" &gt;&amp;2
+ echo "${USAGE}" &gt;&amp; 2
+ exit 2 ;;
+
+ *) break ;;
+ esac
+done
+
+if [ -n "$help" ]; then
+ echo "${VERSTR}"
+ echo "${USAGE}"
+ echo
+ cat &lt;&lt; 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]+$ ]] &amp;&amp; [[ $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" &gt;&amp;2
+ echo "${USAGE}" &gt;&amp; 2
+ exit 2 ;;
+
+ *) break ;;
+ esac
+done
+
+if [ -n "$help" ]; then
+ echo "${VERSTR}"
+ echo "${USAGE}"
+ echo
+ cat &lt;&lt; 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} &gt; /dev/null 2&gt;&amp;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&gt;/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&gt;/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&gt;/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&gt;/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">Раздел&nbsp;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>