54132 lines
2.1 MiB
54132 lines
2.1 MiB
<!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=iso-8859-1" />
|
||
<title>
|
||
Linux From Scratch
|
||
</title>
|
||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
|
||
<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-9.1">
|
||
<div class="book">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h1 class="title">
|
||
<a id="idm46504937145440" name="idm46504937145440"></a>Linux
|
||
From Scratch
|
||
</h1>
|
||
</div>
|
||
<div>
|
||
<h2 class="subtitle">
|
||
Version 9.1
|
||
</h2>
|
||
</div>
|
||
<div>
|
||
<h2 class="subtitle">
|
||
Published March 1st, 2020
|
||
</h2>
|
||
</div>
|
||
<div>
|
||
<div class="authorgroup">
|
||
<div class="author">
|
||
<h3 class="author">
|
||
<span class="firstname">Created by Gerard</span>
|
||
<span class="surname">Beekmans</span>
|
||
</h3>
|
||
</div>
|
||
<div class="author">
|
||
<h3 class="author">
|
||
<span class="firstname">Managing Editor: Bruce</span>
|
||
<span class="surname">Dubbs</span>
|
||
</h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div>
|
||
<p class="copyright">
|
||
Copyright © 1999-2020 Gerard Beekmans
|
||
</p>
|
||
</div>
|
||
<div>
|
||
<div class="legalnotice">
|
||
<a id="idm46504933519392" name="idm46504933519392"></a>
|
||
<p>
|
||
Copyright © 1999-2020, Gerard Beekmans
|
||
</p>
|
||
<p>
|
||
All rights reserved.
|
||
</p>
|
||
<p>
|
||
This book is licensed under a <a class="xref" href="#CC"
|
||
title="F.1. Creative Commons License">Creative Commons
|
||
License</a>.
|
||
</p>
|
||
<p>
|
||
Computer instructions may be extracted from the book under
|
||
the <a class="xref" href="#MIT" title=
|
||
"F.2. The MIT License">MIT License</a>.
|
||
</p>
|
||
<p>
|
||
<span class="trademark">Linux</span><3E> is a registered
|
||
trademark of Linus Torvalds.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<hr />
|
||
</div>
|
||
<div class="toc">
|
||
<h3>
|
||
Table of Contents
|
||
</h3>
|
||
<ul>
|
||
<li class="preface">
|
||
<h4>
|
||
Preface
|
||
</h4>
|
||
<ul>
|
||
<li class="sect1">
|
||
<a href="#pre-foreword">Foreword</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#pre-audience">Audience</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#pre-architecture">LFS Target Architectures</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#pre-prerequisites">Prerequisites</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#pre-standards">LFS and Standards</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#pre-why">Rationale for Packages in the Book</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#pre-typography">Typography</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#pre-organization">Structure</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#pre-errata">Errata</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="part">
|
||
<h3>
|
||
I. Introduction
|
||
</h3>
|
||
<ul>
|
||
<li class="chapter">
|
||
<h4>
|
||
1. Introduction
|
||
</h4>
|
||
<ul>
|
||
<li class="sect1">
|
||
<a href="#ch-intro-how">How to Build an LFS System</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-intro-whatsnew">What's new since the last
|
||
release</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-intro-changelog">Changelog</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-intro-resources">Resources</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-intro-askforhelp">Help</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="part">
|
||
<h3>
|
||
II. Preparing for the Build
|
||
</h3>
|
||
<ul>
|
||
<li class="chapter">
|
||
<h4>
|
||
2. Preparing the Host System
|
||
</h4>
|
||
<ul>
|
||
<li class="sect1">
|
||
<a href="#ch-partitioning-introduction">Introduction</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-partitioning-hostreqs">Host System
|
||
Requirements</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-partitioning-stages">Building LFS in
|
||
Stages</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-partitioning-creatingpartition">Creating a
|
||
New Partition</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-partitioning-creatingfilesystem">Creating a
|
||
File System on the Partition</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-partitioning-aboutlfs">Setting The $LFS
|
||
Variable</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-partitioning-mounting">Mounting the New
|
||
Partition</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="chapter">
|
||
<h4>
|
||
3. Packages and Patches
|
||
</h4>
|
||
<ul>
|
||
<li class="sect1">
|
||
<a href="#ch-materials-introduction">Introduction</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-materials-packages">All Packages</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-materials-patches">Needed Patches</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="chapter">
|
||
<h4>
|
||
4. Final Preparations
|
||
</h4>
|
||
<ul>
|
||
<li class="sect1">
|
||
<a href="#ch-preps-introduction">Introduction</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-preps-creatingtoolsdir">Creating the
|
||
$LFS/tools Directory</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-preps-addinguser">Adding the LFS User</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-preps-settingenviron">Setting Up the
|
||
Environment</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-preps-aboutsbus">About SBUs</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-preps-abouttestsuites">About the Test
|
||
Suites</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="chapter">
|
||
<h4>
|
||
5. Constructing a Temporary System
|
||
</h4>
|
||
<ul>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-introduction">Introduction</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-toolchaintechnotes">Toolchain
|
||
Technical Notes</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-generalinstructions">General
|
||
Compilation Instructions</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-binutils-pass1">Binutils-2.34 - Pass
|
||
1</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-gcc-pass1">GCC-9.2.0 - Pass 1</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-linux-headers">Linux-5.5.3 API
|
||
Headers</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-glibc">Glibc-2.31</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-libstdcpp">Libstdc++ from
|
||
GCC-9.2.0</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-binutils-pass2">Binutils-2.34 - Pass
|
||
2</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-gcc-pass2">GCC-9.2.0 - Pass 2</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-tcl">Tcl-8.6.10</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-expect">Expect-5.45.4</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-dejagnu">DejaGNU-1.6.2</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-m4">M4-1.4.18</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-ncurses">Ncurses-6.2</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-bash">Bash-5.0</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-bison">Bison-3.5.2</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-bzip2">Bzip2-1.0.8</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-coreutils">Coreutils-8.31</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-diffutils">Diffutils-3.7</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-file">File-5.38</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-findutils">Findutils-4.7.0</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-gawk">Gawk-5.0.1</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-gettext">Gettext-0.20.1</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-grep">Grep-3.4</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-gzip">Gzip-1.10</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-make">Make-4.3</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-patch">Patch-2.7.6</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-perl">Perl-5.30.1</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-Python">Python-3.8.1</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-sed">Sed-4.8</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-tar">Tar-1.32</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-texinfo">Texinfo-6.7</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-xz">Xz-5.2.4</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-stripping">Stripping</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-tools-changingowner">Changing Ownership</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="part">
|
||
<h3>
|
||
III. Building the LFS System
|
||
</h3>
|
||
<ul>
|
||
<li class="chapter">
|
||
<h4>
|
||
6. Installing Basic System Software
|
||
</h4>
|
||
<ul>
|
||
<li class="sect1">
|
||
<a href="#ch-system-introduction">Introduction</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-kernfs">Preparing Virtual Kernel File
|
||
Systems</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-pkgmgt">Package Management</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-chroot">Entering the Chroot
|
||
Environment</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-creatingdirs">Creating
|
||
Directories</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-createfiles">Creating Essential Files
|
||
and Symlinks</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-linux-headers">Linux-5.5.3 API
|
||
Headers</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-man-pages">Man-pages-5.05</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-glibc">Glibc-2.31</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-adjusting">Adjusting the
|
||
Toolchain</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-zlib">Zlib-1.2.11</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.2.4</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-file">File-5.38</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-readline">Readline-8.0</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-m4">M4-1.4.18</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-bc">Bc-2.5.3</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-binutils">Binutils-2.34</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-gmp">GMP-6.2.0</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-mpfr">MPFR-4.0.2</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-mpc">MPC-1.1.0</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-attr">Attr-2.4.48</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-acl">Acl-2.2.53</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-shadow">Shadow-4.8.1</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-gcc">GCC-9.2.0</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-pkgconfig">Pkg-config-0.29.2</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-ncurses">Ncurses-6.2</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-libcap">Libcap-2.31</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-sed">Sed-4.8</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-psmisc">Psmisc-23.2</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-iana-etc">Iana-Etc-2.30</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-bison">Bison-3.5.2</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-flex">Flex-2.6.4</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-grep">Grep-3.4</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-bash">Bash-5.0</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-libtool">Libtool-2.4.6</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-gdbm">GDBM-1.18.1</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.2.9</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-inetutils">Inetutils-1.9.4</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-perl">Perl-5.30.1</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-xml-parser">XML::Parser-2.46</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.69</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-automake">Automake-1.16.1</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-kmod">Kmod-26</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-gettext">Gettext-0.20.1</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-libelf">Libelf from
|
||
Elfutils-0.178</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-libffi">Libffi-3.3</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-openssl">OpenSSL-1.1.1d</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-Python">Python-3.8.1</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-ninja">Ninja-1.10.0</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-meson">Meson-0.53.1</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-coreutils">Coreutils-8.31</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-check">Check-0.14.0</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-diffutils">Diffutils-3.7</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-gawk">Gawk-5.0.1</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-findutils">Findutils-4.7.0</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-groff">Groff-1.22.4</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-grub">GRUB-2.04</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-less">Less-551</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-gzip">Gzip-1.10</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-zstd">Zstd-1.4.4</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-iproute2">IPRoute2-5.5.0</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-kbd">Kbd-2.2.0</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-libpipeline">Libpipeline-1.5.2</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-make">Make-4.3</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-patch">Patch-2.7.6</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-man-db">Man-DB-2.9.0</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-tar">Tar-1.32</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-texinfo">Texinfo-6.7</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-vim">Vim-8.2.0190</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-procps">Procps-ng-3.3.15</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-util-linux">Util-linux-2.35.1</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</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-2.96</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-eudev">Eudev-3.2.9</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-aboutdebug">About Debugging
|
||
Symbols</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-strippingagain">Stripping Again</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-system-revisedchroot">Cleaning Up</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="chapter">
|
||
<h4>
|
||
7. System Configuration
|
||
</h4>
|
||
<ul>
|
||
<li class="sect1">
|
||
<a href="#ch-config-introduction">Introduction</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-config-udev">Overview of Device and Module
|
||
Handling</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-config-symlinks">Managing Devices</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-config-network">General Network
|
||
Configuration</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-config-usage">System V Bootscript Usage and
|
||
Configuration</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-config-profile">The Bash Shell Startup
|
||
Files</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-config-inputrc">Creating the /etc/inputrc
|
||
File</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-config-shells">Creating the /etc/shells
|
||
File</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="chapter">
|
||
<h4>
|
||
8. Making the LFS System Bootable
|
||
</h4>
|
||
<ul>
|
||
<li class="sect1">
|
||
<a href="#ch-bootable-introduction">Introduction</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-bootable-fstab">Creating the /etc/fstab
|
||
File</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-bootable-kernel">Linux-5.5.3</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-bootable-grub">Using GRUB to Set Up the Boot
|
||
Process</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="chapter">
|
||
<h4>
|
||
9. The End
|
||
</h4>
|
||
<ul>
|
||
<li class="sect1">
|
||
<a href="#ch-finish-theend">The End</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-finish-getcounted">Get Counted</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-finish-reboot">Rebooting the System</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#ch-finish-whatnow">What Now?</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="part">
|
||
<h3>
|
||
IV. Appendices
|
||
</h3>
|
||
<ul>
|
||
<li class="appendix">
|
||
<a href="#appendixa">A. Acronyms and Terms</a>
|
||
</li>
|
||
<li class="appendix">
|
||
<a href="#appendixb">B. Acknowledgments</a>
|
||
</li>
|
||
<li class="appendix">
|
||
<a href="#appendixc">C. Dependencies</a>
|
||
</li>
|
||
<li class="appendix">
|
||
<a href="#scripts">D. Boot and sysconfig scripts
|
||
version-20191031</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 configuration rules</a>
|
||
<ul>
|
||
<li class="sect1">
|
||
<a href="#lfsrules">55-lfs.rules</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="appendix">
|
||
<a href="#Licenses">F. LFS Licenses</a>
|
||
<ul>
|
||
<li class="sect1">
|
||
<a href="#CC">Creative Commons License</a>
|
||
</li>
|
||
<li class="sect1">
|
||
<a href="#MIT">The MIT License</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="index">
|
||
<h3>
|
||
<a href="#idm46504920870448">Index</a>
|
||
</h3>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="preface" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h1 class="title">
|
||
<a id="preface" name="preface"></a>Preface
|
||
</h1>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="pre-foreword" name="pre-foreword"></a>Foreword
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
My journey to learn and better understand Linux began back in
|
||
1998. I had just installed my first Linux distribution and had
|
||
quickly become intrigued with the whole concept and philosophy
|
||
behind Linux.
|
||
</p>
|
||
<p>
|
||
There are always many ways to accomplish a single task. The same
|
||
can be said about Linux distributions. A great many have existed
|
||
over the years. Some still exist, some have morphed into
|
||
something else, yet others have been relegated to our memories.
|
||
They all do things differently to suit the needs of their target
|
||
audience. Because so many different ways to accomplish the same
|
||
end goal exist, I began to realize I no longer had to be limited
|
||
by any one implementation. Prior to discovering Linux, we simply
|
||
put up with issues in other Operating Systems as you had no
|
||
choice. It was what it was, whether you liked it or not. With
|
||
Linux, the concept of choice began to emerge. If you didn't like
|
||
something, you were free, even encouraged, to change it.
|
||
</p>
|
||
<p>
|
||
I tried a number of distributions and could not decide on any
|
||
one. They were great systems in their own right. It wasn't a
|
||
matter of right and wrong anymore. It had become a matter of
|
||
personal taste. With all that choice available, it became
|
||
apparent that there would not be a single system that would be
|
||
perfect for me. So I set out to create my own Linux system that
|
||
would fully conform to my personal preferences.
|
||
</p>
|
||
<p>
|
||
To truly make it my own system, I resolved to compile everything
|
||
from source code instead of using pre-compiled binary packages.
|
||
This <span class="quote">“<span class=
|
||
"quote">perfect</span>”</span> Linux system would have the
|
||
strengths of various systems without their perceived weaknesses.
|
||
At first, the idea was rather daunting. I remained committed to
|
||
the idea that such a system could be built.
|
||
</p>
|
||
<p>
|
||
After sorting through issues such as circular dependencies and
|
||
compile-time errors, I finally built a custom-built Linux system.
|
||
It was fully operational and perfectly usable like any of the
|
||
other Linux systems out there at the time. But it was my own
|
||
creation. It was very satisfying to have put together such a
|
||
system myself. The only thing better would have been to create
|
||
each piece of software myself. This was the next best thing.
|
||
</p>
|
||
<p>
|
||
As I shared my goals and experiences with other members of the
|
||
Linux community, it became apparent that there was a sustained
|
||
interest in these ideas. It quickly became plain that such
|
||
custom-built Linux systems serve not only to meet user specific
|
||
requirements, but also serve as an ideal learning opportunity for
|
||
programmers and system administrators to enhance their (existing)
|
||
Linux skills. Out of this broadened interest, the <span class=
|
||
"emphasis"><em>Linux From Scratch Project</em></span> was born.
|
||
</p>
|
||
<p>
|
||
This Linux From Scratch book is the central core around that
|
||
project. It provides the background and instructions necessary
|
||
for you to design and build your own system. While this book
|
||
provides a template that will result in a correctly working
|
||
system, you are free to alter the instructions to suit yourself,
|
||
which is, in part, an important part of this project. You remain
|
||
in control; we just lend a helping hand to get you started on
|
||
your own journey.
|
||
</p>
|
||
<p>
|
||
I sincerely hope you will have a great time working on your own
|
||
Linux From Scratch system and enjoy the numerous benefits of
|
||
having a system that is truly your own.
|
||
</p>
|
||
<div class="literallayout">
|
||
<p>
|
||
--<br />
|
||
Gerard Beekmans<br />
|
||
gerard AT linuxfromscratch D0T org
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="pre-audience" name="pre-audience"></a>Audience
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
There are many reasons why you would want to read this book. One
|
||
of the questions many people raise is, <span class=
|
||
"quote">“<span class="quote">why go through all the hassle
|
||
of manually building a Linux system from scratch when you can
|
||
just download and install an existing one?</span>”</span>
|
||
</p>
|
||
<p>
|
||
One important reason for this project's existence is to help you
|
||
learn how a Linux system works from the inside out. Building an
|
||
LFS system helps demonstrate what makes Linux tick, and how
|
||
things work together and depend on each other. One of the best
|
||
things that this learning experience can provide is the ability
|
||
to customize a Linux system to suit your own unique needs.
|
||
</p>
|
||
<p>
|
||
Another key benefit of LFS is that it allows you to have more
|
||
control over the system without relying on someone else's Linux
|
||
implementation. With LFS, you are in the driver's seat and
|
||
dictate every aspect of the system.
|
||
</p>
|
||
<p>
|
||
LFS allows you to create very compact Linux systems. When
|
||
installing regular distributions, you are often forced to install
|
||
a great many programs which are probably never used or
|
||
understood. These programs waste resources. You may argue that
|
||
with today's hard drive and CPUs, such resources are no longer a
|
||
consideration. Sometimes, however, you are still constrained by
|
||
size considerations if nothing else. Think about bootable CDs,
|
||
USB sticks, and embedded systems. Those are areas where LFS can
|
||
be beneficial.
|
||
</p>
|
||
<p>
|
||
Another advantage of a custom built Linux system is security. By
|
||
compiling the entire system from source code, you are empowered
|
||
to audit everything and apply all the security patches desired.
|
||
It is no longer necessary to wait for somebody else to compile
|
||
binary packages that fix a security hole. Unless you examine the
|
||
patch and implement it yourself, you have no guarantee that the
|
||
new binary package was built correctly and adequately fixes the
|
||
problem.
|
||
</p>
|
||
<p>
|
||
The goal of Linux From Scratch is to build a complete and usable
|
||
foundation-level system. If you do not wish to build your own
|
||
Linux system from scratch, you may nevertheless benefit from the
|
||
information in this book.
|
||
</p>
|
||
<p>
|
||
There are too many other good reasons to build your own LFS
|
||
system to list them all here. In the end, education is by far the
|
||
most powerful of reasons. As you continue in your LFS experience,
|
||
you will discover the power that information and knowledge truly
|
||
bring.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="pre-architecture" name="pre-architecture"></a>LFS
|
||
Target Architectures
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The primary target architectures of LFS are the AMD/Intel x86
|
||
(32-bit) and x86_64 (64-bit) CPUs. On the other hand, the
|
||
instructions in this book are also known to work, with some
|
||
modifications, with the Power PC and ARM CPUs. To build a system
|
||
that utilizes one of these CPUs, the main prerequisite, in
|
||
addition to those on the next page, is an existing Linux system
|
||
such as an earlier LFS installation, Ubuntu, Red Hat/Fedora,
|
||
SuSE, or other distribution that targets the architecture that
|
||
you have. Also note that a 32-bit distribution can be installed
|
||
and used as a host system on a 64-bit AMD/Intel computer.
|
||
</p>
|
||
<p>
|
||
For building LFS, the gain of building on a 64-bit system
|
||
compared to a 32-bit system is minimal. For example, in a test
|
||
build of LFS-9.1 on a Core i7-4790 CPU based system, using 4
|
||
cores, the following statistics were measured:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="computeroutput">Architecture Build Time Build Size
|
||
32-bit 239.9 minutes 3.6 GB
|
||
64-bit 233.2 minutes 4.4 GB</code>
|
||
</pre>
|
||
<p>
|
||
As you can see, on the same hardware, the 64-bit build is only 3%
|
||
faster and is 22% larger than the 32-bit build. If you plan to
|
||
use LFS as a LAMP server, or a firewall, a 32-bit CPU may be
|
||
largely sufficient. On the other hand, several packages in BLFS
|
||
now need more that 4GB of RAM to be built and/or to run, so that
|
||
if you plan to use LFS as a desktop, the LFS authors recommend
|
||
building on a 64-bit system.
|
||
</p>
|
||
<p>
|
||
The default 64-bit build that results from LFS is considered a
|
||
<span class="quote">“<span class=
|
||
"quote">pure</span>”</span> 64-bit system. That is, it
|
||
supports 64-bit executables only. Building a <span class=
|
||
"quote">“<span class="quote">multi-lib</span>”</span>
|
||
system requires compiling many applications twice, once for a
|
||
32-bit system and once for a 64-bit system. This is not directly
|
||
supported in LFS because it would interfere with the educational
|
||
objective of providing the instructions needed for a
|
||
straightforward base Linux system. Some LFS/BLFS editors maintain
|
||
a fork of LFS for multilib, which is accessible at <a class=
|
||
"ulink" href=
|
||
"http://www.linuxfromscratch.org/~thomas/multilib/index.html">http://www.linuxfromscratch.org/~thomas/multilib/index.html</a>.
|
||
But it is an advanced topic.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="pre-prerequisites" name=
|
||
"pre-prerequisites"></a>Prerequisites
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Building an LFS system is not a simple task. It requires a
|
||
certain level of existing knowledge of Unix system administration
|
||
in order to resolve problems and correctly execute the commands
|
||
listed. In particular, as an absolute minimum, you should already
|
||
have the ability to use the command line (shell) to copy or move
|
||
files and directories, list directory and file contents, and
|
||
change the current directory. It is also expected that you have a
|
||
reasonable knowledge of using and installing Linux software.
|
||
</p>
|
||
<p>
|
||
Because the LFS book assumes <span class="emphasis"><em>at
|
||
least</em></span> this basic level of skill, the various LFS
|
||
support forums are unlikely to be able to provide you with much
|
||
assistance in these areas. You will find that your questions
|
||
regarding such basic knowledge will likely go unanswered or you
|
||
will simply be referred to the LFS essential pre-reading list.
|
||
</p>
|
||
<p>
|
||
Before building an LFS system, we recommend reading the
|
||
following:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
Software-Building-HOWTO <a class="ulink" href=
|
||
"http://www.tldp.org/HOWTO/Software-Building-HOWTO.html">http://www.tldp.org/HOWTO/Software-Building-HOWTO.html</a>
|
||
</p>
|
||
<p>
|
||
This is a comprehensive guide to building and installing
|
||
<span class="quote">“<span class=
|
||
"quote">generic</span>”</span> Unix software packages
|
||
under Linux. Although it was written some time ago, it
|
||
still provides a good summary of the basic techniques
|
||
needed to build and install software.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Beginner's Guide to Installing from Source <a class="ulink"
|
||
href=
|
||
"http://moi.vonos.net/linux/beginners-installing-from-source/">
|
||
http://moi.vonos.net/linux/beginners-installing-from-source/</a>
|
||
</p>
|
||
<p>
|
||
This guide provides a good summary of basic skills and
|
||
techniques needed to build software from source code.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="pre-standards" name="pre-standards"></a>LFS and
|
||
Standards
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The structure of LFS follows Linux standards as closely as
|
||
possible. The primary standards are:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"http://pubs.opengroup.org/onlinepubs/9699919799/">POSIX.1-2008</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"http://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=
|
||
"http://refspecs.linuxfoundation.org/lsb.shtml">Linux
|
||
Standard Base (LSB) Version 5.0 (2015)</a>
|
||
</p>
|
||
<p>
|
||
The LSB has four separate standards: Core, Desktop, Runtime
|
||
Languages, and Imaging. In addition to generic requirements
|
||
there are also architecture specific requirements. There
|
||
are also two areas for trial use: Gtk3 and Graphics. LFS
|
||
attempts to conform to the architectures discussed in the
|
||
previous section.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
Many people do not agree with the requirements of the
|
||
LSB. The main purpose of defining it is to ensure that
|
||
proprietary software will be able to be installed and run
|
||
properly on a compliant system. Since LFS is source
|
||
based, the user has complete control over what packages
|
||
are desired and many choose not to install some packages
|
||
that are specified by the LSB.
|
||
</p>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<p>
|
||
Creating a complete LFS system capable of passing the LSB
|
||
certifications tests is possible, but not without many additional
|
||
packages that are beyond the scope of LFS. These additional
|
||
packages have installation instructions in BLFS.
|
||
</p>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504937327648" name="idm46504937327648"></a>Packages
|
||
supplied by LFS needed to satisfy the LSB Requirements
|
||
</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>
|
||
None
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<span class="term"><span class="emphasis"><em>LSB
|
||
Runtime Languages:</em></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Perl
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<span class="term"><span class="emphasis"><em>LSB
|
||
Imaging:</em></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
None
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<span class="term"><span class="emphasis"><em>LSB Gtk3
|
||
and LSB Graphics (Trial Use):</em></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
None
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504937316976" name="idm46504937316976"></a>Packages
|
||
supplied by BLFS needed to satisfy the LSB Requirements
|
||
</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 (a part of At), Cpio, Ed, Fcrontab,
|
||
LSB-Tools, NSPR, NSS, PAM, Pax, Sendmail (or Postfix or
|
||
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>
|
||
Python, 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
|
||
and LSB Graphics (Trial Use):</em></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
GTK+3
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504931756992" name="idm46504931756992"></a>Packages
|
||
not supplied by LFS or BLFS needed to satisfy the LSB
|
||
Requirements
|
||
</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>
|
||
None
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<span class="term"><span class="emphasis"><em>LSB
|
||
Desktop:</em></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Qt4 (but Qt5 is provided)
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<span class="term"><span class="emphasis"><em>LSB
|
||
Runtime Languages:</em></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
None
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<span class="term"><span class="emphasis"><em>LSB
|
||
Imaging:</em></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
None
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<span class="term"><span class="emphasis"><em>LSB Gtk3
|
||
and LSB Graphics (Trial Use):</em></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
None
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="pre-why" name="pre-why"></a>Rationale for Packages
|
||
in the Book
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
As stated earlier, the goal of LFS is to build a complete and
|
||
usable foundation-level system. This includes all packages needed
|
||
to replicate itself while providing a relatively minimal base
|
||
from which to customize a more complete system based on the
|
||
choices of the user. This does not mean that LFS is the smallest
|
||
system possible. Several important packages are included that are
|
||
not strictly required. The lists below document the rationale for
|
||
each package in the book.
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
Acl
|
||
</p>
|
||
<p>
|
||
This package contains utilities to administer Access
|
||
Control Lists, which are used to define more fine-grained
|
||
discretionary access rights for files and directories.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Attr
|
||
</p>
|
||
<p>
|
||
This package contains programs for administering extended
|
||
attributes on filesystem objects.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Autoconf
|
||
</p>
|
||
<p>
|
||
This package contains programs for producing shell scripts
|
||
that can automatically configure source code from a
|
||
developer's template. It is often needed to rebuild a
|
||
package after updates to the build procedures.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Automake
|
||
</p>
|
||
<p>
|
||
This package contains programs for generating Make files
|
||
from a template. It is often needed to rebuild a package
|
||
after updates to the build procedures.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Bash
|
||
</p>
|
||
<p>
|
||
This package satisfies an LSB core requirement to provide a
|
||
Bourne Shell interface to the system. It was chosen over
|
||
other shell packages because of its common usage and
|
||
extensive capabilities beyond basic shell functions.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Bc
|
||
</p>
|
||
<p>
|
||
This package provides an arbitrary precision numeric
|
||
processing language. It satisfies a requirement needed when
|
||
building the Linux kernel.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Binutils
|
||
</p>
|
||
<p>
|
||
This package contains a linker, an assembler, and other
|
||
tools for handling object files. The programs in this
|
||
package are needed to compile most of the packages in an
|
||
LFS system and beyond.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Bison
|
||
</p>
|
||
<p>
|
||
This package contains the GNU version of yacc (Yet Another
|
||
Compiler Compiler) needed to build several other LFS
|
||
programs.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Bzip2
|
||
</p>
|
||
<p>
|
||
This package contains programs for compressing and
|
||
decompressing files. It is required to decompress many LFS
|
||
packages.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Check
|
||
</p>
|
||
<p>
|
||
This package contains a test harness for other programs.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Coreutils
|
||
</p>
|
||
<p>
|
||
This package contains a number of essential programs for
|
||
viewing and manipulating files and directories. These
|
||
programs are needed for command line file management, and
|
||
are necessary for the installation procedures of every
|
||
package in LFS.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
DejaGNU
|
||
</p>
|
||
<p>
|
||
This package contains a framework for testing other
|
||
programs. It is only installed in the temporary toolchain.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Diffutils
|
||
</p>
|
||
<p>
|
||
This package contains programs that show the differences
|
||
between files or directories. These programs can be used to
|
||
create patches, and are also used in many packages' build
|
||
procedures.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
E2fsprogs
|
||
</p>
|
||
<p>
|
||
This package contains the utilities for handling the ext2,
|
||
ext3 and ext4 file systems. These are the most common and
|
||
thoroughly tested file systems that Linux supports.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Eudev
|
||
</p>
|
||
<p>
|
||
This package is a device manager. It dynamically controls
|
||
the entries in the /dev directory as devices are added or
|
||
removed from the system.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Expat
|
||
</p>
|
||
<p>
|
||
This package contains a relatively small XML parsing
|
||
library. It is required by the XML::Parser Perl module.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Expect
|
||
</p>
|
||
<p>
|
||
This package contains a program for carrying out scripted
|
||
dialogues with other interactive programs. It is commonly
|
||
used for testing other packages. It is only installed in
|
||
the temporary toolchain.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
File
|
||
</p>
|
||
<p>
|
||
This package contains a utility for determining the type of
|
||
a given file or files. A few packages need it to build.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Findutils
|
||
</p>
|
||
<p>
|
||
This package contains programs to find files in a file
|
||
system. It is used in many packages' build scripts.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Flex
|
||
</p>
|
||
<p>
|
||
This package contains a utility for generating programs
|
||
that recognize patterns in text. It is the GNU version of
|
||
the lex (lexical analyzer) program. It is required to build
|
||
several LFS packages.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Gawk
|
||
</p>
|
||
<p>
|
||
This package contains programs for manipulating text files.
|
||
It is the GNU version of awk (Aho-Weinberg-Kernighan). It
|
||
is used in many other packages' build scripts.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Gcc
|
||
</p>
|
||
<p>
|
||
This package is the Gnu Compiler Collection. It contains
|
||
the C and C++ compilers as well as several others not built
|
||
by LFS.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
GDBM
|
||
</p>
|
||
<p>
|
||
This package contains the GNU Database Manager library. It
|
||
is used by one other LFS package, Man-DB.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Gettext
|
||
</p>
|
||
<p>
|
||
This package contains utilities and libraries for
|
||
internationalization and localization of numerous packages.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Glibc
|
||
</p>
|
||
<p>
|
||
This package contains the main C library. Linux programs
|
||
would not run without it.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
GMP
|
||
</p>
|
||
<p>
|
||
This package contains math libraries that provide useful
|
||
functions for arbitrary precision arithmetic. It is
|
||
required to build Gcc.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Gperf
|
||
</p>
|
||
<p>
|
||
This package contains a program that generates a perfect
|
||
hash function from a key set. It is required for Eudev.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Grep
|
||
</p>
|
||
<p>
|
||
This package contains programs for searching through files.
|
||
These programs are used by most packages' build scripts.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Groff
|
||
</p>
|
||
<p>
|
||
This package contains programs for processing and
|
||
formatting text. One important function of these programs
|
||
is to format man pages.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
GRUB
|
||
</p>
|
||
<p>
|
||
This package is the Grand Unified Boot Loader. It is one of
|
||
several boot loaders available, but is the most flexible.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Gzip
|
||
</p>
|
||
<p>
|
||
This package contains programs for compressing and
|
||
decompressing files. It is needed to decompress many
|
||
packages in LFS and beyond.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Iana-etc
|
||
</p>
|
||
<p>
|
||
This package provides data for network services and
|
||
protocols. It is needed to enable proper networking
|
||
capabilities.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Inetutils
|
||
</p>
|
||
<p>
|
||
This package contains programs for basic network
|
||
administration.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Intltool
|
||
</p>
|
||
<p>
|
||
This package contains tools for extracting translatable
|
||
strings from source files.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
IProute2
|
||
</p>
|
||
<p>
|
||
This package contains programs for basic and advanced IPv4
|
||
and IPv6 networking. It was chosen over the other common
|
||
network tools package (net-tools) for its IPv6
|
||
capabilities.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Kbd
|
||
</p>
|
||
<p>
|
||
This package contains key-table files, keyboard utilities
|
||
for non-US keyboards, and a number of console fonts.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Kmod
|
||
</p>
|
||
<p>
|
||
This package contains programs needed to administer Linux
|
||
kernel modules.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Less
|
||
</p>
|
||
<p>
|
||
This package contains a very nice text file viewer that
|
||
allows scrolling up or down when viewing a file. It is also
|
||
used by Man-DB for viewing manpages.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Libcap
|
||
</p>
|
||
<p>
|
||
This package implements the user-space interfaces to the
|
||
POSIX 1003.1e capabilities available in Linux kernels.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Libelf
|
||
</p>
|
||
<p>
|
||
The elfutils project provides libraries and tools for ELF
|
||
files and DWARF data. Most utilities in this package are
|
||
available in other packages, but the library is needed to
|
||
build the Linux kernel using the default (and most
|
||
efficient) configuration.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Libffi
|
||
</p>
|
||
<p>
|
||
This package implements a portable, high level programming
|
||
interface to various calling conventions. Some programs may
|
||
not know at the time of compilation what arguments are to
|
||
be passed to a function. For instance, an interpreter may
|
||
be told at run-time about the number and types of arguments
|
||
used to call a given function. Libffi can be used in such
|
||
programs to provide a bridge from the interpreter program
|
||
to compiled code.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Libpipeline
|
||
</p>
|
||
<p>
|
||
The Libpipeline package contains a library for manipulating
|
||
pipelines of subprocesses in a flexible and convenient way.
|
||
It is required by the Man-DB package.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Libtool
|
||
</p>
|
||
<p>
|
||
This package contains the GNU generic library support
|
||
script. It wraps the complexity of using shared libraries
|
||
in a consistent, portable interface. It is needed by the
|
||
test suites in other LFS packages.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Linux Kernel
|
||
</p>
|
||
<p>
|
||
This package is the Operating System. It is the Linux in
|
||
the GNU/Linux environment.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
M4
|
||
</p>
|
||
<p>
|
||
This package contains a general text macro processor useful
|
||
as a build tool for other programs.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Make
|
||
</p>
|
||
<p>
|
||
This package contains a program for directing the building
|
||
of packages. It is required by almost every package in LFS.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Man-DB
|
||
</p>
|
||
<p>
|
||
This package contains programs for finding and viewing man
|
||
pages. It was chosen instead of the <span class=
|
||
"application">man</span> package due to superior
|
||
internationalization capabilities. It supplies the man
|
||
program.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Man-pages
|
||
</p>
|
||
<p>
|
||
This package contains the actual contents of the basic
|
||
Linux man pages.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Meson
|
||
</p>
|
||
<p>
|
||
This package provides a software tool for automating the
|
||
building of software. The main goal for Meson is to
|
||
minimize the amount of time that software developers need
|
||
to spend configuring their build system.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
MPC
|
||
</p>
|
||
<p>
|
||
This package contains functions for the arithmetic of
|
||
complex numbers. It is required by Gcc.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
MPFR
|
||
</p>
|
||
<p>
|
||
This package contains functions for multiple precision
|
||
arithmetic. It is required by Gcc.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Ninja
|
||
</p>
|
||
<p>
|
||
This package contains a small build system with a focus on
|
||
speed. It is designed to have its input files generated by
|
||
a higher-level build system, and to run builds as fast as
|
||
possible.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Ncurses
|
||
</p>
|
||
<p>
|
||
This package contains libraries for terminal-independent
|
||
handling of character screens. It is often used to provide
|
||
cursor control for a menuing system. It is needed by a
|
||
number of packages in LFS.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Openssl
|
||
</p>
|
||
<p>
|
||
This package provides management tools and libraries
|
||
relating to cryptography. These are useful for providing
|
||
cryptographic functions to other packages, including the
|
||
Linux kernel.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Patch
|
||
</p>
|
||
<p>
|
||
This package contains a program for modifying or creating
|
||
files by applying a <span class=
|
||
"emphasis"><em>patch</em></span> file typically created by
|
||
the <span class="application">diff</span> program. It is
|
||
needed by the build procedure for several LFS packages.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Perl
|
||
</p>
|
||
<p>
|
||
This package is an interpreter for the runtime language
|
||
PERL. It is needed for the installation and test suites of
|
||
several LFS packages.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Pkg-config
|
||
</p>
|
||
<p>
|
||
This package provides a program to return meta-data about
|
||
an installed library or package.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Procps-NG
|
||
</p>
|
||
<p>
|
||
This package contains programs for monitoring processes.
|
||
These programs are useful for system administration, and
|
||
are also used by the LFS Bootscripts.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Psmisc
|
||
</p>
|
||
<p>
|
||
This package contains programs for displaying information
|
||
about running processes. These programs are useful for
|
||
system administration.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Python 3
|
||
</p>
|
||
<p>
|
||
This package provides an interpreted language that has a
|
||
design philosophy that emphasizes code readability.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Readline
|
||
</p>
|
||
<p>
|
||
This package is a set of libraries that offers command-line
|
||
editing and history capabilities. It is used by Bash.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Sed
|
||
</p>
|
||
<p>
|
||
This package allows editing of text without opening it in a
|
||
text editor. It is also needed by most LFS packages'
|
||
configure scripts.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Shadow
|
||
</p>
|
||
<p>
|
||
This package contains programs for handling passwords in a
|
||
secure way.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Sysklogd
|
||
</p>
|
||
<p>
|
||
This package contains programs for logging system messages,
|
||
such as those given by the kernel or daemon processes when
|
||
unusual events occur.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Sysvinit
|
||
</p>
|
||
<p>
|
||
This package provides the <span class=
|
||
"application">init</span> program, which is the parent of
|
||
all other processes on the Linux system.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Tar
|
||
</p>
|
||
<p>
|
||
This package provides archiving and extraction capabilities
|
||
of virtually all packages used in LFS.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Tcl
|
||
</p>
|
||
<p>
|
||
This package contains the Tool Command Language used in
|
||
many test suites in LFS packages. It is only installed in
|
||
the temporary toolchain.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Texinfo
|
||
</p>
|
||
<p>
|
||
This package contains programs for reading, writing, and
|
||
converting info pages. It is used in the installation
|
||
procedures of many LFS packages.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Util-linux
|
||
</p>
|
||
<p>
|
||
This package contains miscellaneous utility programs. Among
|
||
them are utilities for handling file systems, consoles,
|
||
partitions, and messages.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Vim
|
||
</p>
|
||
<p>
|
||
This package contains an editor. It was chosen because of
|
||
its compatibility with the classic vi editor and its huge
|
||
number of powerful capabilities. An editor is a very
|
||
personal choice for many users and any other editor could
|
||
be substituted if desired.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
XML::Parser
|
||
</p>
|
||
<p>
|
||
This package is a Perl module that interfaces with Expat.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
XZ Utils
|
||
</p>
|
||
<p>
|
||
This package contains programs for compressing and
|
||
decompressing files. It provides the highest compression
|
||
generally available and is useful for decompressing
|
||
packages in XZ or LZMA format.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Zlib
|
||
</p>
|
||
<p>
|
||
This package contains compression and decompression
|
||
routines used by some programs.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Zstd
|
||
</p>
|
||
<p>
|
||
This package contains compression and decompression
|
||
routines used by some programs. It provide high compression
|
||
ratios and a very wide range of compression / speed
|
||
trade-offs.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="pre-typography" name="pre-typography"></a>Typography
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
To make things easier to follow, there are a few typographical
|
||
conventions used throughout this book. This section contains some
|
||
examples of the typographical format found throughout Linux From
|
||
Scratch.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
This form of text is designed to be typed exactly as seen unless
|
||
otherwise noted in the surrounding text. It is also used in the
|
||
explanation sections to identify which of the commands is being
|
||
referenced.
|
||
</p>
|
||
<p>
|
||
In some cases, a logical line is extended to two or more physical
|
||
lines with a backslash at the end of the line.
|
||
</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>
|
||
Note that the backslash must be followed by an immediate return.
|
||
Other whitespace characters like spaces or tab characters will
|
||
create incorrect results.
|
||
</p>
|
||
<pre class="screen">
|
||
<code class=
|
||
"computeroutput">install-info: unknown option '--dir-file=/mnt/lfs/usr/info/dir'</code>
|
||
</pre>
|
||
<p>
|
||
This form of text (fixed-width text) shows screen output, usually
|
||
as the result of commands issued. This format is also used to
|
||
show filenames, such as <code class=
|
||
"filename">/etc/ld.so.conf</code>.
|
||
</p>
|
||
<p>
|
||
<span class="emphasis"><em>Emphasis</em></span>
|
||
</p>
|
||
<p>
|
||
This form of text is used for several purposes in the book. Its
|
||
main purpose is to emphasize important points or items.
|
||
</p>
|
||
<p>
|
||
<a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/">http://www.linuxfromscratch.org/</a>
|
||
</p>
|
||
<p>
|
||
This format is used for hyperlinks both within the LFS community
|
||
and to external pages. It includes HOWTOs, download locations,
|
||
and websites.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > $LFS/etc/group << "EOF"
|
||
<code class="literal">root:x:0:
|
||
bin:x:1:
|
||
......</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
This format is used when creating configuration files. The first
|
||
command tells the system to create the file <code class=
|
||
"filename">$LFS/etc/group</code> from whatever is typed on the
|
||
following lines until the sequence End Of File (EOF) is
|
||
encountered. Therefore, this entire section is generally typed as
|
||
seen.
|
||
</p>
|
||
<p>
|
||
<em class="replaceable"><code><REPLACED TEXT></code></em>
|
||
</p>
|
||
<p>
|
||
This format is used to encapsulate text that is not to be typed
|
||
as seen or for copy-and-paste operations.
|
||
</p>
|
||
<p>
|
||
<em class="replaceable"><code>[OPTIONAL TEXT]</code></em>
|
||
</p>
|
||
<p>
|
||
This format is used to encapsulate text that is optional.
|
||
</p>
|
||
<p>
|
||
<code class="filename">passwd(5)</code>
|
||
</p>
|
||
<p>
|
||
This format is used to refer to a specific manual (man) page. The
|
||
number inside parentheses indicates a specific section inside the
|
||
manuals. For example, <span class=
|
||
"command"><strong>passwd</strong></span> has two man pages. Per
|
||
LFS installation instructions, those two man pages will be
|
||
located at <code class=
|
||
"filename">/usr/share/man/man1/passwd.1</code> and <code class=
|
||
"filename">/usr/share/man/man5/passwd.5</code>. When the book
|
||
uses <code class="filename">passwd(5)</code> it is specifically
|
||
referring to <code class=
|
||
"filename">/usr/share/man/man5/passwd.5</code>. <span class=
|
||
"command"><strong>man passwd</strong></span> will print the first
|
||
man page it finds that matches <span class=
|
||
"quote">“<span class="quote">passwd</span>”</span>,
|
||
which will be <code class=
|
||
"filename">/usr/share/man/man1/passwd.1</code>. For this example,
|
||
you will need to run <span class="command"><strong>man 5
|
||
passwd</strong></span> in order to read the specific page being
|
||
referred to. It should be noted that most man pages do not have
|
||
duplicate page names in different sections. Therefore,
|
||
<span class="command"><strong>man <em class=
|
||
"replaceable"><code><program
|
||
name></code></em></strong></span> is generally sufficient.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="pre-organization" name=
|
||
"pre-organization"></a>Structure
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
This book is divided into the following parts.
|
||
</p>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
Part I - Introduction
|
||
</h3>
|
||
<p>
|
||
Part I explains a few important notes on how to proceed with
|
||
the LFS installation. This section also provides
|
||
meta-information about the book.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
Part II - Preparing for the Build
|
||
</h3>
|
||
<p>
|
||
Part II describes how to prepare for the building
|
||
process—making a partition, downloading the packages, and
|
||
compiling temporary tools.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
Part III - Building the LFS System
|
||
</h3>
|
||
<p>
|
||
Part III guides the reader through the building of the LFS
|
||
system—compiling and installing all the packages one by
|
||
one, setting up the boot scripts, and installing the kernel.
|
||
The resulting Linux system is the foundation on which other
|
||
software can be built to expand the system as desired. At the
|
||
end of this book, there is an easy to use reference listing all
|
||
of the programs, libraries, and important files that have been
|
||
installed.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="pre-errata" name="pre-errata"></a>Errata
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The software used to create an LFS system is constantly being
|
||
updated and enhanced. Security warnings and bug fixes may become
|
||
available after the LFS book has been released. To check whether
|
||
the package versions or instructions in this release of LFS need
|
||
any modifications to accommodate security vulnerabilities or
|
||
other bug fixes, please visit <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/lfs/errata/9.1/">http://www.linuxfromscratch.org/lfs/errata/9.1/</a>
|
||
before proceeding with your build. You should note any changes
|
||
shown and apply them to the relevant section of the book as you
|
||
progress with building the LFS system.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="part">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h1 class="title">
|
||
<a id="part1" name="part1"></a>Part I. Introduction
|
||
</h1>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="chapter" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="chapter-intro" name=
|
||
"chapter-intro"></a>Chapter 1. Introduction
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-intro-how" name=
|
||
"ch-intro-how"></a>1.1. How to Build an LFS System
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The LFS system will be built by using an already installed
|
||
Linux distribution (such as Debian, OpenMandriva, Fedora, or
|
||
openSUSE). This existing Linux system (the host) will be used
|
||
as a starting point to provide necessary programs, including a
|
||
compiler, linker, and shell, to build the new system. Select
|
||
the <span class="quote">“<span class=
|
||
"quote">development</span>”</span> option during the
|
||
distribution installation to be able to access these tools.
|
||
</p>
|
||
<p>
|
||
As an alternative to installing a separate distribution onto
|
||
your machine, you may wish to use a LiveCD from a commercial
|
||
distribution.
|
||
</p>
|
||
<p>
|
||
<a class="xref" href="#chapter-partitioning" title=
|
||
"Chapter 2. Preparing the Host System">Chapter 2</a>
|
||
of this book describes how to create a new Linux native
|
||
partition and file system. This is the place where the new LFS
|
||
system will be compiled and installed. <a class="xref" href=
|
||
"#chapter-getting-materials" title=
|
||
"Chapter 3. Packages and Patches">Chapter 3</a>
|
||
explains which packages and patches need to be downloaded to
|
||
build an LFS system and how to store them on the new file
|
||
system. <a class="xref" href="#chapter-final-preps" title=
|
||
"Chapter 4. Final Preparations">Chapter 4</a>
|
||
discusses the setup of an appropriate working environment.
|
||
Please read <a class="xref" href="#chapter-final-preps" title=
|
||
"Chapter 4. Final Preparations">Chapter 4</a>
|
||
carefully as it explains several important issues you need be
|
||
aware of before beginning to work your way through <a class=
|
||
"xref" href="#chapter-temporary-tools" title=
|
||
"Chapter 5. Constructing a Temporary System">Chapter 5</a>
|
||
and beyond.
|
||
</p>
|
||
<p>
|
||
<a class="xref" href="#chapter-temporary-tools" title=
|
||
"Chapter 5. Constructing a Temporary System">Chapter 5</a>
|
||
explains the installation of a number of packages that will
|
||
form the basic development suite (or toolchain) which is used
|
||
to build the actual system in <a class="xref" href=
|
||
"#chapter-building-system" title=
|
||
"Chapter 6. Installing Basic System Software">Chapter 6</a>.
|
||
Some of these packages are needed to resolve circular
|
||
dependencies—for example, to compile a compiler, you need
|
||
a compiler.
|
||
</p>
|
||
<p>
|
||
<a class="xref" href="#chapter-temporary-tools" title=
|
||
"Chapter 5. Constructing a Temporary System">Chapter 5</a>
|
||
also shows you how to build a first pass of the toolchain,
|
||
including Binutils and GCC (first pass basically means these
|
||
two core packages will be reinstalled). The next step is to
|
||
build Glibc, the C library. Glibc will be compiled by the
|
||
toolchain programs built in the first pass. Then, a second pass
|
||
of the toolchain will be built. This time, the toolchain will
|
||
be dynamically linked against the newly built Glibc. The
|
||
remaining <a class="xref" href="#chapter-temporary-tools"
|
||
title="Chapter 5. Constructing a Temporary System">Chapter 5</a>
|
||
packages are built using this second pass toolchain. When this
|
||
is done, the LFS installation process will no longer depend on
|
||
the host distribution, with the exception of the running
|
||
kernel.
|
||
</p>
|
||
<p>
|
||
This effort to isolate the new system from the host
|
||
distribution may seem excessive. A full technical explanation
|
||
as to why this is done is provided in <a class="xref" href=
|
||
"#ch-tools-toolchaintechnotes" title=
|
||
"5.2. Toolchain Technical Notes">Section 5.2,
|
||
“Toolchain Technical Notes”</a>.
|
||
</p>
|
||
<p>
|
||
In <a class="xref" href="#chapter-building-system" title=
|
||
"Chapter 6. Installing Basic System Software">Chapter 6</a>,
|
||
the full LFS system is built. The <span class=
|
||
"command"><strong>chroot</strong></span> (change root) program
|
||
is used to enter a virtual environment and start a new shell
|
||
whose root directory will be set to the LFS partition. This is
|
||
very similar to rebooting and instructing the kernel to mount
|
||
the LFS partition as the root partition. The system does not
|
||
actually reboot, but instead uses <span class=
|
||
"command"><strong>chroot</strong></span> because creating a
|
||
bootable system requires additional work which is not necessary
|
||
just yet. The major advantage is that <span class=
|
||
"quote">“<span class=
|
||
"quote">chrooting</span>”</span> allows you to continue
|
||
using the host system while LFS is being built. While waiting
|
||
for package compilations to complete, you can continue using
|
||
your computer as normal.
|
||
</p>
|
||
<p>
|
||
To finish the installation, the basic system configuration is
|
||
set up in <a class="xref" href="#chapter-config" title=
|
||
"Chapter 7. System Configuration">Chapter 7</a>,
|
||
and the kernel and boot loader are set up in <a class="xref"
|
||
href="#chapter-bootable" title=
|
||
"Chapter 8. Making the LFS System Bootable">Chapter 8</a>.
|
||
<a class="xref" href="#chapter-finalizing" title=
|
||
"Chapter 9. The End">Chapter 9</a> contains
|
||
information on continuing the LFS experience beyond this book.
|
||
After the steps in this book have been implemented, the
|
||
computer will be ready to reboot into the new LFS system.
|
||
</p>
|
||
<p>
|
||
This is the process in a nutshell. Detailed information on each
|
||
step is discussed in the following chapters and package
|
||
descriptions. Items that may seem complicated will be
|
||
clarified, and everything will fall into place as you embark on
|
||
the LFS adventure.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-intro-whatsnew" name=
|
||
"ch-intro-whatsnew"></a>1.2. What's new since the
|
||
last release
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Below is a list of package updates made since the previous
|
||
release of the book.
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<p class="title">
|
||
<strong>Upgraded to:</strong>
|
||
</p>
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
Bc 2.5.3
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Binutils-2.34
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Bison-3.5.2
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Check-0.14.0
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
E2fsprogs-1.45.5
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Eudev-3.2.9
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Expat-2.2.9
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
File-5.38
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Findutils-4.7.0
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Glibc-2.31
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
GMP-6.2.0
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Grep-3.4
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
IPRoute2-5.5.0
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Libcap-2.31
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Libelf-0.178 (from elfutils)
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Libffi-3.3
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Libpipeline-1.5.2
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Linux-5.5.3
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Make-4.3
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Man-DB-2.9.0
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Man-pages-5.05
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Meson-0.53.1
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Ncurses-6.2
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Ninja-1.10.0
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Openssl-1.1.1d
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Perl-5.30.1
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Python-3.8.1
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Sed-4.8
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Shadow-4.8.1
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
SysVinit-2.96
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Tcl-8.6.10
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Texinfo-6.7
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Tzdata-2019c
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Util-Linux-2.35.1
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Vim-8.2.0190
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="itemizedlist">
|
||
<p class="title">
|
||
<strong>Added:</strong>
|
||
</p>
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
Zstd-1.4.4
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="itemizedlist">
|
||
<p class="title">
|
||
<strong>Removed:</strong>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-intro-changelog" name=
|
||
"ch-intro-changelog"></a>1.3. Changelog
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
This is version <span class="phrase">9.1</span> of the Linux
|
||
From Scratch book, dated March 1st, 2020. If this book is more
|
||
than six months old, a newer and better version is probably
|
||
already available. To find out, please check one of the mirrors
|
||
via <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/mirrors.html">http://www.linuxfromscratch.org/mirrors.html</a>.
|
||
</p>
|
||
<p>
|
||
Below is a list of changes made since the previous release of
|
||
the book.
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<p class="title">
|
||
<strong>Changelog Entries:</strong>
|
||
</p>
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
2020-03-01
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - LFS-9.1 released.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2020-02-14
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to bison-3.5.2. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4597">#4597</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2020-02-13
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to ncurses-6.2. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4596">#4596</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to man-pages-5.05. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4595">#4595</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to linux-5.5.3.tar.xz. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4592">#4592</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2020-01-27
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to vim-8.2.0190. Addresses
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4500">#4500</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to binutils-2.34. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4590">#4590</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to glibc-2.31. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4589">#4589</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to linux-5.5.1. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4588">#4588</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to bc-2.5.3. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4587">#4587</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to iproute2-5.5.0. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4586">#4586</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to util-linux 2.35.1. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4560">#4560</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2020-01-27
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to ninja-1.10.0. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4585">#4585</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to check-0.14.0. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4583">#4583</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to shadow-4.8.1. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4582">#4582</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to meson-0.53.1. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4581">#4581</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to linux-5.5. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4580">#4580</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to bison-3.5.1. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4579">#4579</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2020-01-19
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to make-4.3. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4578">#4578</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to vim-8.2.0129. Addresses
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4500">#4500</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to gmp-6.2.0. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4577">#4577</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to sed-4.8. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4576">#4576</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to bc-2.5.1. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4575">#4575</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to linux-5.4.13. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4572">#4572</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2020-01-16
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[pierre] - Update to libcap-2.31. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4574">#4574</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2020-01-13
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Ensure zstd libraries are installed in
|
||
the correct location.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2020-01-12
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Added zstd-1.4.4.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2020-01-09
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to meson-0.53.0. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4571">#4571</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to e2fsprogs-1.45.5. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4570">#4570</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to grep-3.4. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4568">#4568</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to libpipeline-1.5.2. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4567">#4567</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to linux-5.4.8. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4566">#4566</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[pierre] - Add <code class=
|
||
"filename">/etc/os-release</code> to the sysV
|
||
version, as it is required by some packages in
|
||
BLFS.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2020-01-06
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[pierre] - Update to libcap-2.30. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4569">#4569</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2020-01-04
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[pierre] - Fix various issues in libcap-2.29, and
|
||
update dependencies.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2020-01-01
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to libcap-2.29. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4564">#4564</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-12-22
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[pierre] - Update to python3-3.8.1. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4564">#4564</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[pierre] - Update to file-5.38. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4563">#4563</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[pierre] - Update to linux-5.4.6. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4562">#4562</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[pierre] - Update to vim-8.2.0024. Part of
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4500">#4500</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-12-12
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to libcap-2.28. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4559">#4559</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to bison-3.5. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4561">#4561</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-12-10
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[renodr] - Fix a regression in meson that was
|
||
causing problems in dependent packages.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-12-05
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[renodr] - Update to bc-2.4.0. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4556">#4556</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[renodr] - Update to shadow-4.8. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4557">#4557</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[renodr] - Update to linux-5.4.2. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4558">#4558</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-12-01
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Add upstream fixes patch for bash. Also
|
||
add a note about possible problems when changing to
|
||
the lfs user.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to vim-8.1.2361. Updates
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4500">#4500</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to meson-0.52.1. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4555">#4555</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to elfutils-0.178. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4553">#4553</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to iproute2-5.4.0. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4551">#4551</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to libffi-3.3. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4550">#4550</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to tcl-8.6.10. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4549">#4549</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to man-pages-5.04. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4548">#4548</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to perl-5.30.1. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4547">#4547</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to linux-5.4.1. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4546">#4546</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to bc-2.3.2. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4545">#4545</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-11-08
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[renodr] - Update to Linux-5.3.9. Resolves a
|
||
regression with restarting systems with HD Audio
|
||
(hda), data corruption on btrfs, and a security
|
||
vulnerability with systems that use the RTLWIFI
|
||
driver. Fixes <a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4544">#4544</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-10-31
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[dj] - Update to lfs-bootscripts-20191031.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-10-25
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[dj] - Update to lfs-bootscripts-20191025.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-11-01
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to linux-5.3.8. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4539">#4539</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to bc-2.2.0. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4543">#4543</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to check-0.13.0. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4540">#4540</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to eudev-3.2.9. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4542">#4542</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to man-db-2.9.0. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4541">#4541</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-10-17
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Move attr and acl to be before shadow.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to linux-5.3.6. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4534">#4534</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to man-pages-5.03. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4536">#4536</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to meson-0.52.0. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4535">#4535</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to Python-3.8.0. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4538">#4538</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to binutils-2.33.1. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4537">#4537</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-09-29
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to texinfo-6.7. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4529">#4529</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to e2fsprogs-1.45.4. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4530">#4530</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to XML-Parser-2.46. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4531">#4531</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to expat-2.2.9. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4532">#4532</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to iproute2-5.3.0. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4533">#4533</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-09-24
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[pierre] - Update to linux-5.3.1. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4528">#4528</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-09-14
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to expat-2.2.8. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4527">#4527</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to bison-3.4.2. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4526">#4526</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to linux-5.2.14. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4522">#4522</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to openssl-1.1.1d. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4523">#4523</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to sysvinit-2.96. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4524">#4524</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to tzdata-2019c. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4525">#4525</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-09-02
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[dj] - Update to lfs-bootscripts-20190908.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-09-02
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to linux-5.2.11. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4517">#4517</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to man-db-2.8.7. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4518">#4518</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to meson-0.51.2. Fixes <a class=
|
||
"ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4519">#4519</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - Update to findutils-4.7.0. Fixes
|
||
<a class="ulink" href=
|
||
"http://wiki.linuxfromscratch.org/lfs/ticket/4520">#4520</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
[dj] - Update to LFS-Bootscripts-20190902 - correct
|
||
LSB dependency information in bootscripts and
|
||
update standards page for new LSB-Tools package.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
2019-09-01
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
[bdubbs] - LFS-9.0 released.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-intro-resources" name=
|
||
"ch-intro-resources"></a>1.4. Resources
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="ch-intro-faq" name="ch-intro-faq"></a>1.4.1. FAQ
|
||
</h3>
|
||
<p>
|
||
If during the building of the LFS system you encounter any
|
||
errors, have any questions, or think there is a typo in the
|
||
book, please start by consulting the Frequently Asked
|
||
Questions (FAQ) that is located at <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/faq/">http://www.linuxfromscratch.org/faq/</a>.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="ch-intro-maillists" name=
|
||
"ch-intro-maillists"></a>1.4.2. Mailing Lists
|
||
</h3>
|
||
<p>
|
||
The <code class="uri">linuxfromscratch.org</code> server
|
||
hosts a number of mailing lists used for the development of
|
||
the LFS project. These lists include the main development and
|
||
support lists, among others. If the FAQ does not solve the
|
||
problem you are having, the next step would be to search the
|
||
mailing lists at <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/search.html">http://www.linuxfromscratch.org/search.html</a>.
|
||
</p>
|
||
<p>
|
||
For information on the different lists, how to subscribe,
|
||
archive locations, and additional information, visit
|
||
<a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/mail.html">http://www.linuxfromscratch.org/mail.html</a>.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="ch-intro-irc" name="ch-intro-irc"></a>1.4.3. IRC
|
||
</h3>
|
||
<p>
|
||
Several members of the LFS community offer assistance on
|
||
Internet Relay Chat (IRC). Before using this support, please
|
||
make sure that your question is not already answered in the
|
||
LFS FAQ or the mailing list archives. You can find the IRC
|
||
network at <code class="uri">irc.freenode.net</code>. The
|
||
support channel is named #LFS-support.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="ch-intro-mirrors" name="ch-intro-mirrors"></a>1.4.4.
|
||
Mirror Sites
|
||
</h3>
|
||
<p>
|
||
The LFS project has a number of world-wide mirrors to make
|
||
accessing the website and downloading the required packages
|
||
more convenient. Please visit the LFS website at <a class=
|
||
"ulink" href=
|
||
"http://www.linuxfromscratch.org/mirrors.html">http://www.linuxfromscratch.org/mirrors.html</a>
|
||
for a list of current mirrors.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="ch-intro-contactinfo" name=
|
||
"ch-intro-contactinfo"></a>1.4.5. Contact Information
|
||
</h3>
|
||
<p>
|
||
Please direct all your questions and comments to one of the
|
||
LFS mailing lists (see above).
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-intro-askforhelp" name=
|
||
"ch-intro-askforhelp"></a>1.5. Help
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
If an issue or a question is encountered while working through
|
||
this book, please check the FAQ page at <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/faq/#generalfaq">http://www.linuxfromscratch.org/faq/#generalfaq</a>.
|
||
Questions are often already answered there. If your question is
|
||
not answered on this page, try to find the source of the
|
||
problem. The following hint will give you some guidance for
|
||
troubleshooting: <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/hints/downloads/files/errors.txt">
|
||
http://www.linuxfromscratch.org/hints/downloads/files/errors.txt</a>.
|
||
</p>
|
||
<p>
|
||
If you cannot find your problem listed in the FAQ, search the
|
||
mailing lists at <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/search.html">http://www.linuxfromscratch.org/search.html</a>.
|
||
</p>
|
||
<p>
|
||
We also have a wonderful LFS community that is willing to offer
|
||
assistance through the mailing lists and IRC (see the <a class=
|
||
"xref" href="#ch-intro-resources" title=
|
||
"1.4. Resources">Section 1.4,
|
||
“Resources”</a> section of this book). However, we
|
||
get several support questions every day and many of them can be
|
||
easily answered by going to the FAQ and by searching the
|
||
mailing lists first. So, for us to offer the best assistance
|
||
possible, you need to do some research on your own first. That
|
||
allows us to focus on the more unusual support needs. If your
|
||
searches do not produce a solution, please include all relevant
|
||
information (mentioned below) in your request for help.
|
||
</p>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
1.5.1. Things to Mention
|
||
</h3>
|
||
<p>
|
||
Apart from a brief explanation of the problem being
|
||
experienced, the essential things to include in any request
|
||
for help are:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
The version of the book being used (in this case
|
||
<span class="phrase">9.1</span> )
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The host distribution and version being used to create
|
||
LFS
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The output from the <a class="xref" href=
|
||
"#version-check">Host System Requirements</a> script
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The package or section the problem was encountered in
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The exact error message or symptom being received
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Note whether you have deviated from the book at all
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
Deviating from this book does <span class=
|
||
"emphasis"><em>not</em></span> mean that we will not help
|
||
you. After all, LFS is about personal preference. Being
|
||
upfront about any changes to the established procedure
|
||
helps us evaluate and determine possible causes of your
|
||
problem.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
1.5.2. Configure Script Problems
|
||
</h3>
|
||
<p>
|
||
If something goes wrong while running the <span class=
|
||
"command"><strong>configure</strong></span> script, review
|
||
the <code class="filename">config.log</code> file. This file
|
||
may contain errors encountered during <span class=
|
||
"command"><strong>configure</strong></span> which were not
|
||
printed to the screen. Include the <span class=
|
||
"emphasis"><em>relevant</em></span> lines if you need to ask
|
||
for help.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
1.5.3. Compilation Problems
|
||
</h3>
|
||
<p>
|
||
Both the screen output and the contents of various files are
|
||
useful in determining the cause of compilation problems. The
|
||
screen output from the <span class=
|
||
"command"><strong>configure</strong></span> script and the
|
||
<span class="command"><strong>make</strong></span> run can be
|
||
helpful. It is not necessary to include the entire output,
|
||
but do include enough of the relevant information. Below is
|
||
an example of the type of information to include from the
|
||
screen output from <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>
|
||
In this case, many people would just include the bottom
|
||
section:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="computeroutput">make [2]: *** [make] Error 1</code>
|
||
</pre>
|
||
<p>
|
||
This is not enough information to properly diagnose the
|
||
problem because it only notes that something went wrong, not
|
||
<span class="emphasis"><em>what</em></span> went wrong. The
|
||
entire section, as in the example above, is what should be
|
||
saved because it includes the command that was executed and
|
||
the associated error message(s).
|
||
</p>
|
||
<p>
|
||
An excellent article about asking for help on the Internet is
|
||
available online at <a class="ulink" href=
|
||
"http://catb.org/~esr/faqs/smart-questions.html">http://catb.org/~esr/faqs/smart-questions.html</a>.
|
||
Read and follow the hints in this document to increase the
|
||
likelihood of getting the help you need.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="part">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h1 class="title">
|
||
<a id="part2" name="part2"></a>Part II. Preparing
|
||
for the Build
|
||
</h1>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="chapter" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="chapter-partitioning" name=
|
||
"chapter-partitioning"></a>Chapter 2. Preparing
|
||
the Host System
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-partitioning-introduction" name=
|
||
"ch-partitioning-introduction"></a>2.1. Introduction
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
In this chapter, the host tools needed for building LFS are
|
||
checked and, if necessary, installed. Then a partition which
|
||
will host the LFS system is prepared. We will create the
|
||
partition itself, create a file system on it, and mount it.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-partitioning-hostreqs" name=
|
||
"ch-partitioning-hostreqs"></a>2.2. Host System
|
||
Requirements
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Your host system should have the following software with the
|
||
minimum versions indicated. This should not be an issue for
|
||
most modern Linux distributions. Also note that many
|
||
distributions will place software headers into separate
|
||
packages, often in the form of <span class=
|
||
"quote">“<span class=
|
||
"quote"><package-name>-devel</span>”</span> or
|
||
<span class="quote">“<span class=
|
||
"quote"><package-name>-dev</span>”</span>. Be sure
|
||
to install those if your distribution provides them.
|
||
</p>
|
||
<p>
|
||
Earlier versions of the listed software packages may work, but
|
||
have not been tested.
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul class="compact">
|
||
<li class="listitem">
|
||
<p>
|
||
<span class="strong"><strong>Bash-3.2</strong></span>
|
||
(/bin/sh should be a symbolic or hard link to bash)
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<span class=
|
||
"strong"><strong>Binutils-2.25</strong></span> (Versions
|
||
greater than 2.34 are not recommended as they have not
|
||
been tested)
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<span class="strong"><strong>Bison-2.7</strong></span>
|
||
(/usr/bin/yacc should be a link to bison or small script
|
||
that executes bison)
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<span class="strong"><strong>Bzip2-1.0.4</strong></span>
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<span class=
|
||
"strong"><strong>Coreutils-6.9</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 should be a link to gawk)
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<span class="strong"><strong>GCC-6.2</strong></span>
|
||
including the C++ compiler, <span class=
|
||
"command"><strong>g++</strong></span> (Versions greater
|
||
than 9.2.0 are not recommended as they have not been
|
||
tested)
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<span class="strong"><strong>Glibc-2.11</strong></span>
|
||
(Versions greater than 2.31 are not recommended as they
|
||
have not been tested)
|
||
</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-3.2</strong></span>
|
||
</p>
|
||
<p>
|
||
The reason for the kernel version requirement is that we
|
||
specify that version when building <span class=
|
||
"application">glibc</span> in Chapter 6 at the
|
||
recommendation of the developers. It is also required by
|
||
udev.
|
||
</p>
|
||
<p>
|
||
If the host kernel is earlier than 3.2 you will need to
|
||
replace the kernel with a more up to date version. There
|
||
are two ways you can go about this. First, see if your
|
||
Linux vendor provides a 3.2 or later kernel package. If
|
||
so, you may wish to install it. If your vendor doesn't
|
||
offer an acceptable kernel package, or you would prefer
|
||
not to install it, you can compile a kernel yourself.
|
||
Instructions for compiling the kernel and configuring the
|
||
boot loader (assuming the host uses GRUB) are located in
|
||
<a class="xref" href="#chapter-bootable" title=
|
||
"Chapter 8. Making the LFS System Bootable">Chapter 8</a>.
|
||
</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-4.7</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>
|
||
Important
|
||
</h3>
|
||
<p>
|
||
Note that the symlinks mentioned above are required to build
|
||
an LFS system using the instructions contained within this
|
||
book. Symlinks that point to other software (such as dash,
|
||
mawk, etc.) may work, but are not tested or supported by the
|
||
LFS development team, and may require either deviation from
|
||
the instructions or additional patches to some packages.
|
||
</p>
|
||
</div>
|
||
<h3>
|
||
<a id="version-check" name="version-check"></a>
|
||
</h3>
|
||
<p>
|
||
To see whether your host system has all the appropriate
|
||
versions, and the ability to compile programs, run the
|
||
following:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > version-check.sh << "EOF"
|
||
<code class="literal">#!/bin/bash
|
||
# Simple script to list version numbers of critical development tools
|
||
export LC_ALL=C
|
||
bash --version | head -n1 | cut -d" " -f2-4
|
||
MYSH=$(readlink -f /bin/sh)
|
||
echo "/bin/sh -> $MYSH"
|
||
echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash"
|
||
unset MYSH
|
||
|
||
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
|
||
bison --version | head -n1
|
||
|
||
if [ -h /usr/bin/yacc ]; then
|
||
echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
|
||
elif [ -x /usr/bin/yacc ]; then
|
||
echo yacc is `/usr/bin/yacc --version | head -n1`
|
||
else
|
||
echo "yacc not found"
|
||
fi
|
||
|
||
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
|
||
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
|
||
diff --version | head -n1
|
||
find --version | head -n1
|
||
gawk --version | head -n1
|
||
|
||
if [ -h /usr/bin/awk ]; then
|
||
echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
|
||
elif [ -x /usr/bin/awk ]; then
|
||
echo awk is `/usr/bin/awk --version | head -n1`
|
||
else
|
||
echo "awk not found"
|
||
fi
|
||
|
||
gcc --version | head -n1
|
||
g++ --version | head -n1
|
||
ldd --version | head -n1 | cut -d" " -f2- # glibc version
|
||
grep --version | head -n1
|
||
gzip --version | head -n1
|
||
cat /proc/version
|
||
m4 --version | head -n1
|
||
make --version | head -n1
|
||
patch --version | head -n1
|
||
echo Perl `perl -V:version`
|
||
python3 --version
|
||
sed --version | head -n1
|
||
tar --version | head -n1
|
||
makeinfo --version | head -n1 # texinfo version
|
||
xz --version | head -n1
|
||
|
||
echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c
|
||
if [ -x dummy ]
|
||
then echo "g++ compilation OK";
|
||
else echo "g++ compilation failed"; fi
|
||
rm -f dummy.c dummy</code>
|
||
EOF
|
||
|
||
bash version-check.sh</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-partitioning-stages" name=
|
||
"ch-partitioning-stages"></a>2.3. Building LFS in
|
||
Stages
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
LFS is designed to be built in one session. That is, the
|
||
instructions assume that the system will not be shut down
|
||
during the process. That does not mean that the system has to
|
||
be done in one sitting. The issue is that certain procedures
|
||
have to be re-accomplished after a reboot if resuming LFS at
|
||
different points.
|
||
</p>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
2.3.1. Chapters 1–4
|
||
</h3>
|
||
<p>
|
||
These chapters are accomplished on the host system. When
|
||
restarting, be careful of the following:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
Procedures done as the root user after Section 2.4 need
|
||
to have the LFS environment variable set <span class=
|
||
"emphasis"><em>FOR THE ROOT USER</em></span>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
2.3.2. Chapter 5
|
||
</h3>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
The /mnt/lfs partition must be mounted.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<span class="emphasis"><em>ALL</em></span> instructions
|
||
in Chapter 5 must be done by user <span class=
|
||
"emphasis"><em>lfs</em></span>. A <span class=
|
||
"command"><strong>su - lfs</strong></span> needs to be
|
||
done before any task in Chapter 5.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The procedures in <a class="xref" href=
|
||
"#ch-tools-generalinstructions" title=
|
||
"5.3. General Compilation Instructions">Section 5.3,
|
||
“General Compilation Instructions”</a> are
|
||
critical. If there is any doubt about installing a
|
||
package, ensure any previously expanded tarballs are
|
||
removed, re-extract the package files, and complete all
|
||
instructions in that section.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
2.3.3. Chapters 6–8
|
||
</h3>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
The /mnt/lfs partition must be mounted.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
When entering chroot, the LFS environment variable must
|
||
be set for root. The LFS variable is not used
|
||
otherwise.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The virtual file systems must be mounted. This can be
|
||
done before or after entering chroot by changing to a
|
||
host virtual terminal and, as root, running the
|
||
commands in <a class="xref" href="#ch-system-bindmount"
|
||
title=
|
||
"6.2.2. Mounting and Populating /dev">Section 6.2.2,
|
||
“Mounting and Populating /dev”</a> and
|
||
<a class="xref" href="#ch-system-kernfsmount" title=
|
||
"6.2.3. Mounting Virtual Kernel File Systems">Section 6.2.3,
|
||
“Mounting Virtual Kernel File Systems”</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-partitioning-creatingpartition" name=
|
||
"ch-partitioning-creatingpartition"></a>2.4. Creating
|
||
a New Partition
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Like most other operating systems, LFS is usually installed on
|
||
a dedicated partition. The recommended approach to building an
|
||
LFS system is to use an available empty partition or, if you
|
||
have enough unpartitioned space, to create one.
|
||
</p>
|
||
<p>
|
||
A minimal system requires a partition of around 10 gigabytes
|
||
(GB). This is enough to store all the source tarballs and
|
||
compile the packages. However, if the LFS system is intended to
|
||
be the primary Linux system, additional software will probably
|
||
be installed which will require additional space. A 30 GB
|
||
partition is a reasonable size to provide for growth. The LFS
|
||
system itself will not take up this much room. A large portion
|
||
of this requirement is to provide sufficient free temporary
|
||
storage as well as for adding additional capabilities after LFS
|
||
is complete. Additionally, compiling packages can require a lot
|
||
of disk space which will be reclaimed after the package is
|
||
installed.
|
||
</p>
|
||
<p>
|
||
Because there is not always enough Random Access Memory (RAM)
|
||
available for compilation processes, it is a good idea to use a
|
||
small disk partition as <code class="systemitem">swap</code>
|
||
space. This is used by the kernel to store seldom-used data and
|
||
leave more memory available for active processes. The
|
||
<code class="systemitem">swap</code> partition for an LFS
|
||
system can be the same as the one used by the host system, in
|
||
which case it is not necessary to create another one.
|
||
</p>
|
||
<p>
|
||
Start a disk partitioning program such as <span class=
|
||
"command"><strong>cfdisk</strong></span> or <span class=
|
||
"command"><strong>fdisk</strong></span> with a command line
|
||
option naming the hard disk on which the new partition will be
|
||
created—for example <code class=
|
||
"filename">/dev/sda</code> for the primary disk drive. Create a
|
||
Linux native partition and a <code class=
|
||
"systemitem">swap</code> partition, if needed. Please refer to
|
||
<code class="filename">cfdisk(8)</code> or <code class=
|
||
"filename">fdisk(8)</code> if you do not yet know how to use
|
||
the programs.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
For experienced users, other partitioning schemes are
|
||
possible. The new LFS system can be on a software <a class=
|
||
"ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/raid.html">
|
||
RAID</a> array or an <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/aboutlvm.html">
|
||
LVM</a> logical volume. However, some of these options
|
||
require an <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/initramfs.html">
|
||
initramfs</a>, which is an advanced topic. These partitioning
|
||
methodologies are not recommended for first time LFS users.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Remember the designation of the new partition (e.g.,
|
||
<code class="filename">sda5</code>). This book will refer to
|
||
this as the LFS partition. Also remember the designation of the
|
||
<code class="systemitem">swap</code> partition. These names
|
||
will be needed later for the <code class=
|
||
"filename">/etc/fstab</code> file.
|
||
</p>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
2.4.1. Other Partition Issues
|
||
</h3>
|
||
<p>
|
||
Requests for advice on system partitioning are often posted
|
||
on the LFS mailing lists. This is a highly subjective topic.
|
||
The default for most distributions is to use the entire drive
|
||
with the exception of one small swap partition. This is not
|
||
optimal for LFS for several reasons. It reduces flexibility,
|
||
makes sharing of data across multiple distributions or LFS
|
||
builds more difficult, makes backups more time consuming, and
|
||
can waste disk space through inefficient allocation of file
|
||
system structures.
|
||
</p>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504931247120" name=
|
||
"idm46504931247120"></a>2.4.1.1. The Root
|
||
Partition
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
A root LFS partition (not to be confused with the
|
||
<code class="filename">/root</code> directory) of ten
|
||
gigabytes is a good compromise for most systems. It
|
||
provides enough space to build LFS and most of BLFS, but is
|
||
small enough so that multiple partitions can be easily
|
||
created for experimentation.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504931244864" name=
|
||
"idm46504931244864"></a>2.4.1.2. The Swap
|
||
Partition
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Most distributions automatically create a swap partition.
|
||
Generally the recommended size of the swap partition is
|
||
about twice the amount of physical RAM, however this is
|
||
rarely needed. If disk space is limited, hold the swap
|
||
partition to two gigabytes and monitor the amount of disk
|
||
swapping.
|
||
</p>
|
||
<p>
|
||
Swapping is never good. Generally you can tell if a system
|
||
is swapping by just listening to disk activity and
|
||
observing how the system reacts to commands. The first
|
||
reaction to swapping should be to check for an unreasonable
|
||
command such as trying to edit a five gigabyte file. If
|
||
swapping becomes a normal occurrence, the best solution is
|
||
to purchase more RAM for your system.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504931242592" name=
|
||
"idm46504931242592"></a>2.4.1.3. The Grub Bios
|
||
Partition
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
If the <span class="emphasis"><em>boot disk</em></span> has
|
||
been partitioned with a GUID Partition Table (GPT), then a
|
||
small, typically 1 MB, partition must be created if it does
|
||
not already exist. This partition is not formatted, but
|
||
must be available for GRUB to use during installation of
|
||
the boot loader. This partition will normally be labeled
|
||
'BIOS Boot' if using <span class=
|
||
"command"><strong>fdisk</strong></span> or have a code of
|
||
<span class="emphasis"><em>EF02</em></span> if using
|
||
<span class="command"><strong>gdisk</strong></span>.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The Grub Bios partition must be on the drive that the
|
||
BIOS uses to boot the system. This is not necessarily the
|
||
same drive where the LFS root partition is located. Disks
|
||
on a system may use different partition table types. The
|
||
requirement for this partition depends only on the
|
||
partition table type of the boot disk.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504931238208" name=
|
||
"idm46504931238208"></a>2.4.1.4. Convenience
|
||
Partitions
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
There are several other partitions that are not required,
|
||
but should be considered when designing a disk layout. The
|
||
following list is not comprehensive, but is meant as a
|
||
guide.
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
/boot – Highly recommended. Use this partition
|
||
to store kernels and other booting information. To
|
||
minimize potential boot problems with larger disks,
|
||
make this the first physical partition on your first
|
||
disk drive. A partition size of 100 megabytes is
|
||
quite adequate.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
/home – Highly recommended. Share your home
|
||
directory and user customization across multiple
|
||
distributions or LFS builds. The size is generally
|
||
fairly large and depends on available disk space.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
/usr – A separate /usr partition is generally
|
||
used if providing a server for a thin client or
|
||
diskless workstation. It is normally not needed for
|
||
LFS. A size of five gigabytes will handle most
|
||
installations.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
/opt – This directory is most useful for BLFS
|
||
where multiple installations of large packages like
|
||
Gnome or KDE can be installed without embedding the
|
||
files in the /usr hierarchy. If used, 5 to 10
|
||
gigabytes is generally adequate.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
/tmp – A separate /tmp directory is rare, but
|
||
useful if configuring a thin client. This partition,
|
||
if used, will usually not need to exceed a couple of
|
||
gigabytes.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
/usr/src – This partition is very useful for
|
||
providing a location to store BLFS source files and
|
||
share them across LFS builds. It can also be used as
|
||
a location for building BLFS packages. A reasonably
|
||
large partition of 30-50 gigabytes allows plenty of
|
||
room.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<p>
|
||
Any separate partition that you want automatically mounted
|
||
upon boot needs to be specified in the <code class=
|
||
"filename">/etc/fstab</code>. Details about how to specify
|
||
partitions will be discussed in <a class="xref" href=
|
||
"#ch-bootable-fstab" title=
|
||
"8.2. Creating the /etc/fstab File">Section 8.2,
|
||
“Creating the /etc/fstab File”</a>.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-partitioning-creatingfilesystem" name=
|
||
"ch-partitioning-creatingfilesystem"></a>2.5. Creating
|
||
a File System on the Partition
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Now that a blank partition has been set up, the file system can
|
||
be created. LFS can use any file system recognized by the Linux
|
||
kernel, but the most common types are ext3 and ext4. The choice
|
||
of file system can be complex and depends on the
|
||
characteristics of the files and the size of the partition. For
|
||
example:
|
||
</p>
|
||
<div class="variablelist">
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term">ext2</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
is suitable for small partitions that are updated
|
||
infrequently such as /boot.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">ext3</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
is an upgrade to ext2 that includes a journal to help
|
||
recover the partition's status in the case of an unclean
|
||
shutdown. It is commonly used as a general purpose file
|
||
system.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">ext4</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
is the latest version of the ext file system family of
|
||
partition types. It provides several new capabilities
|
||
including nano-second timestamps, creation and use of
|
||
very large files (16 TB), and speed improvements.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Other file systems, including FAT32, NTFS, ReiserFS, JFS, and
|
||
XFS are useful for specialized purposes. More information about
|
||
these file systems can be found at <a class="ulink" href=
|
||
"http://en.wikipedia.org/wiki/Comparison_of_file_systems">http://en.wikipedia.org/wiki/Comparison_of_file_systems</a>.
|
||
</p>
|
||
<p>
|
||
LFS assumes that the root file system (/) is of type ext4. To
|
||
create an <code class="systemitem">ext4</code> file system on
|
||
the LFS partition, run the following:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkfs -v -t ext4 /dev/<em class=
|
||
"replaceable"><code><xxx></code></em></kbd>
|
||
</pre>
|
||
<p>
|
||
If you are using an existing <code class=
|
||
"systemitem">swap</code> partition, there is no need to format
|
||
it. If a new <code class="systemitem">swap</code> partition was
|
||
created, it will need to be initialized with this command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkswap /dev/<em class=
|
||
"replaceable"><code><yyy></code></em></kbd>
|
||
</pre>
|
||
<p>
|
||
Replace <em class="replaceable"><code><yyy></code></em>
|
||
with the name of the <code class="systemitem">swap</code>
|
||
partition.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-partitioning-aboutlfs" name=
|
||
"ch-partitioning-aboutlfs"></a>2.6. Setting The $LFS
|
||
Variable
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Throughout this book, the environment variable <code class=
|
||
"envar">LFS</code> will be used several times. You should
|
||
ensure that this variable is always defined throughout the LFS
|
||
build process. It should be set to the name of the directory
|
||
where you will be building your LFS system - we will use
|
||
<code class="filename">/mnt/lfs</code> as an example, but the
|
||
directory choice is up to you. If you are building LFS on a
|
||
separate partition, this directory will be the mount point for
|
||
the partition. Choose a directory location and set the variable
|
||
with the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">export LFS=<em class=
|
||
"replaceable"><code>/mnt/lfs</code></em></kbd>
|
||
</pre>
|
||
<p>
|
||
Having this variable set is beneficial in that commands such as
|
||
<span class="command"><strong>mkdir -v
|
||
$LFS/tools</strong></span> can be typed literally. The shell
|
||
will automatically replace <span class=
|
||
"quote">“<span class="quote">$LFS</span>”</span>
|
||
with <span class="quote">“<span class=
|
||
"quote">/mnt/lfs</span>”</span> (or whatever the variable
|
||
was set to) when it processes the command line.
|
||
</p>
|
||
<div class="admon caution">
|
||
<h3>
|
||
Caution
|
||
</h3>
|
||
<p>
|
||
Do not forget to check that <code class="envar">LFS</code> is
|
||
set whenever you leave and reenter the current working
|
||
environment (such as when doing a <span class=
|
||
"command"><strong>su</strong></span> to <code class=
|
||
"systemitem">root</code> or another user). Check that the
|
||
<code class="envar">LFS</code> variable is set up properly
|
||
with:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">echo $LFS</kbd>
|
||
</pre>
|
||
<p>
|
||
Make sure the output shows the path to your LFS system's
|
||
build location, which is <code class=
|
||
"filename">/mnt/lfs</code> if the provided example was
|
||
followed. If the output is incorrect, use the command given
|
||
earlier on this page to set <code class="envar">$LFS</code>
|
||
to the correct directory name.
|
||
</p>
|
||
</div>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
One way to ensure that the <code class="envar">LFS</code>
|
||
variable is always set is to edit the <code class=
|
||
"filename">.bash_profile</code> file in both your personal
|
||
home directory and in <code class=
|
||
"filename">/root/.bash_profile</code> and enter the export
|
||
command above. In addition, the shell specified in the
|
||
<code class="filename">/etc/passwd</code> file for all users
|
||
that need the <code class="envar">LFS</code> variable needs
|
||
to be bash to ensure that the <code class=
|
||
"filename">/root/.bash_profile</code> file is incorporated as
|
||
a part of the login process.
|
||
</p>
|
||
<p>
|
||
Another consideration is the method that is used to log into
|
||
the host system. If logging in through a graphical display
|
||
manager, the user's <code class=
|
||
"filename">.bash_profile</code> is not normally used when a
|
||
virtual terminal is started. In this case, add the export
|
||
command to the <code class="filename">.bashrc</code> file for
|
||
the user and root. In addition, some distributions have
|
||
instructions to not run the <code class=
|
||
"filename">.bashrc</code> instructions in a non-interactive
|
||
bash invocation. Be sure to add the export command before the
|
||
test for non-interactive use.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-partitioning-mounting" name=
|
||
"ch-partitioning-mounting"></a>2.7. Mounting the New
|
||
Partition
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Now that a file system has been created, the partition needs to
|
||
be made accessible. In order to do this, the partition needs to
|
||
be mounted at a chosen mount point. For the purposes of this
|
||
book, it is assumed that the file system is mounted under the
|
||
directory specified by the <code class="envar">LFS</code>
|
||
environment variable as described in the previous section.
|
||
</p>
|
||
<p>
|
||
Create the mount point and mount the LFS file system by
|
||
running:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -pv $LFS
|
||
mount -v -t ext4 /dev/<em class=
|
||
"replaceable"><code><xxx></code></em> $LFS</kbd>
|
||
</pre>
|
||
<p>
|
||
Replace <em class="replaceable"><code><xxx></code></em>
|
||
with the designation of the LFS partition.
|
||
</p>
|
||
<p>
|
||
If using multiple partitions for LFS (e.g., one for
|
||
<code class="filename">/</code> and another for <code class=
|
||
"filename">/usr</code>), mount them using:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -pv $LFS
|
||
mount -v -t ext4 /dev/<em class=
|
||
"replaceable"><code><xxx></code></em> $LFS
|
||
mkdir -v $LFS/usr
|
||
mount -v -t ext4 /dev/<em class=
|
||
"replaceable"><code><yyy></code></em> $LFS/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Replace <em class="replaceable"><code><xxx></code></em>
|
||
and <em class="replaceable"><code><yyy></code></em> with
|
||
the appropriate partition names.
|
||
</p>
|
||
<p>
|
||
Ensure that this new partition is not mounted with permissions
|
||
that are too restrictive (such as the <code class=
|
||
"option">nosuid</code> or <code class="option">nodev</code>
|
||
options). Run the <span class=
|
||
"command"><strong>mount</strong></span> command without any
|
||
parameters to see what options are set for the mounted LFS
|
||
partition. If <code class="option">nosuid</code> and/or
|
||
<code class="option">nodev</code> are set, the partition will
|
||
need to be remounted.
|
||
</p>
|
||
<div class="admon warning">
|
||
<h3>
|
||
Warning
|
||
</h3>
|
||
<p>
|
||
The above instructions assume that you will not be restarting
|
||
your computer throughout the LFS process. If you shut down
|
||
your system, you will either need to remount the LFS
|
||
partition each time you restart the build process or modify
|
||
your host system's /etc/fstab file to automatically remount
|
||
it upon boot. For example:
|
||
</p>
|
||
<pre class="screen">
|
||
/dev/<em class=
|
||
"replaceable"><code><xxx></code></em> /mnt/lfs ext4 defaults 1 1
|
||
</pre>
|
||
<p>
|
||
If you use additional optional partitions, be sure to add
|
||
them also.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
If you are using a <code class="systemitem">swap</code>
|
||
partition, ensure that it is enabled using the <span class=
|
||
"command"><strong>swapon</strong></span> command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">/sbin/swapon -v /dev/<em class=
|
||
"replaceable"><code><zzz></code></em></kbd>
|
||
</pre>
|
||
<p>
|
||
Replace <em class="replaceable"><code><zzz></code></em>
|
||
with the name of the <code class="systemitem">swap</code>
|
||
partition.
|
||
</p>
|
||
<p>
|
||
Now that there is an established place to work, it is time to
|
||
download the packages.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="chapter" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="chapter-getting-materials" name=
|
||
"chapter-getting-materials"></a>Chapter 3. Packages
|
||
and Patches
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-materials-introduction" name=
|
||
"ch-materials-introduction"></a>3.1. Introduction
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
This chapter includes a list of packages that need to be
|
||
downloaded in order to build a basic Linux system. The listed
|
||
version numbers correspond to versions of the software that are
|
||
known to work, and this book is based on their use. We highly
|
||
recommend against using newer versions because the build
|
||
commands for one version may not work with a newer version. The
|
||
newest package versions may also have problems that require
|
||
work-arounds. These work-arounds will be developed and
|
||
stabilized in the development version of the book.
|
||
</p>
|
||
<p>
|
||
Download locations may not always be accessible. If a download
|
||
location has changed since this book was published, Google
|
||
(<a class="ulink" href=
|
||
"http://www.google.com/">http://www.google.com/</a>) provides a
|
||
useful search engine for most packages. If this search is
|
||
unsuccessful, try one of the alternative means of downloading
|
||
discussed at <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/lfs/packages.html#packages">http://www.linuxfromscratch.org/lfs/packages.html#packages</a>.
|
||
</p>
|
||
<p>
|
||
Downloaded packages and patches will need to be stored
|
||
somewhere that is conveniently available throughout the entire
|
||
build. A working directory is also required to unpack the
|
||
sources and build them. <code class=
|
||
"filename">$LFS/sources</code> can be used both as the place to
|
||
store the tarballs and patches and as a working directory. By
|
||
using this directory, the required elements will be located on
|
||
the LFS partition and will be available during all stages of
|
||
the building process.
|
||
</p>
|
||
<p>
|
||
To create this directory, execute the following command, as
|
||
user <code class="systemitem">root</code>, before starting the
|
||
download session:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v $LFS/sources</kbd>
|
||
</pre>
|
||
<p>
|
||
Make this directory writable and sticky. <span class=
|
||
"quote">“<span class="quote">Sticky</span>”</span>
|
||
means that even if multiple users have write permission on a
|
||
directory, only the owner of a file can delete the file within
|
||
a sticky directory. The following command will enable the write
|
||
and sticky modes:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">chmod -v a+wt $LFS/sources</kbd>
|
||
</pre>
|
||
<p>
|
||
An easy way to download all of the packages and patches is by
|
||
using <a class="ulink" href="wget-list">wget-list</a> as an
|
||
input to <span class="command"><strong>wget</strong></span>.
|
||
For example:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">wget --input-file=wget-list --continue --directory-prefix=$LFS/sources</kbd>
|
||
</pre>
|
||
<p>
|
||
Additionally, starting with LFS-7.0, there is a separate file,
|
||
<a class="ulink" href="md5sums">md5sums</a>, which can be
|
||
used to verify that all the correct packages are available
|
||
before proceeding. Place that file in <code class=
|
||
"filename">$LFS/sources</code> and run:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">pushd $LFS/sources
|
||
md5sum -c md5sums
|
||
popd</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-materials-packages" name=
|
||
"ch-materials-packages"></a>3.2. All Packages
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Download or otherwise obtain the following packages:
|
||
</p>
|
||
<div class="materials">
|
||
<div class="variablelist">
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term">Acl (2.2.53) - <span class="token">513
|
||
KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://savannah.nongnu.org/projects/acl">https://savannah.nongnu.org/projects/acl</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://download.savannah.gnu.org/releases/acl/acl-2.2.53.tar.gz">
|
||
http://download.savannah.gnu.org/releases/acl/acl-2.2.53.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">007aabf1dbb550bcddde52a244cd1070</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Attr (2.4.48) - <span class=
|
||
"token">457 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://savannah.nongnu.org/projects/attr">https://savannah.nongnu.org/projects/attr</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://download.savannah.gnu.org/releases/attr/attr-2.4.48.tar.gz">
|
||
http://download.savannah.gnu.org/releases/attr/attr-2.4.48.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">bc1e5cb5c96d99b24886f1f527d3bb3d</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Autoconf (2.69) - <span class=
|
||
"token">1,186 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/autoconf/">http://www.gnu.org/software/autoconf/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz">http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">50f97f4159805e374639a73e2636f22e</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Automake (1.16.1) - <span class=
|
||
"token">1,499 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/automake/">http://www.gnu.org/software/automake/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/automake/automake-1.16.1.tar.xz">
|
||
http://ftp.gnu.org/gnu/automake/automake-1.16.1.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">53f38e7591fa57c3d2cee682be668e5b</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Bash (5.0) - <span class="token">9,898
|
||
KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/bash/">http://www.gnu.org/software/bash/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/bash/bash-5.0.tar.gz">http://ftp.gnu.org/gnu/bash/bash-5.0.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">2b44b47b905be16f45709648f671820b</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Bc (2.5.3) - <span class="token">247
|
||
KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://github.com/gavinhoward/bc">https://github.com/gavinhoward/bc</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://github.com/gavinhoward/bc/archive/2.5.3/bc-2.5.3.tar.gz">
|
||
https://github.com/gavinhoward/bc/archive/2.5.3/bc-2.5.3.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">6582c6fbbae943fbfb8fe14a34feab57</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Binutils (2.34) - <span class=
|
||
"token">21,131 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/binutils/">http://www.gnu.org/software/binutils/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/binutils/binutils-2.34.tar.xz">http://ftp.gnu.org/gnu/binutils/binutils-2.34.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">664ec3a2df7805ed3464639aaae332d6</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Bison (3.5.2) - <span class=
|
||
"token">2,308 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/bison/">http://www.gnu.org/software/bison/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/bison/bison-3.5.2.tar.xz">http://ftp.gnu.org/gnu/bison/bison-3.5.2.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">49fc2cf23e31e697d5072835e1662a97</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Bzip2 (1.0.8) - <span class=
|
||
"token">792 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Download: <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 sum: <code class=
|
||
"literal">67e051268d0c475ea773822f7500d0e5</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Check (0.14.0) - <span class=
|
||
"token">753 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://libcheck.github.io/check">https://libcheck.github.io/check</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://github.com/libcheck/check/releases/download/0.14.0/check-0.14.0.tar.gz">
|
||
https://github.com/libcheck/check/releases/download/0.14.0/check-0.14.0.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">270e82a445be6026040267a5e11cc94b</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Coreutils (8.31) - <span class=
|
||
"token">5,284 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/coreutils/">http://www.gnu.org/software/coreutils/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/coreutils/coreutils-8.31.tar.xz">
|
||
http://ftp.gnu.org/gnu/coreutils/coreutils-8.31.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">0009a224d8e288e8ec406ef0161f9293</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">DejaGNU (1.6.2) - <span class=
|
||
"token">514 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/dejagnu/">http://www.gnu.org/software/dejagnu/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.2.tar.gz">http://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.2.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">e1b07516533f351b3aba3423fafeffd6</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Diffutils (3.7) - <span class=
|
||
"token">1,415 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/diffutils/">http://www.gnu.org/software/diffutils/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/diffutils/diffutils-3.7.tar.xz">
|
||
http://ftp.gnu.org/gnu/diffutils/diffutils-3.7.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">4824adc0e95dbbf11dfbdfaad6a1e461</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">E2fsprogs (1.45.5) - <span class=
|
||
"token">7,753 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://e2fsprogs.sourceforge.net/">http://e2fsprogs.sourceforge.net/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.45.5/e2fsprogs-1.45.5.tar.gz">
|
||
https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.45.5/e2fsprogs-1.45.5.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">6d35428e4ce960cb7e875afe5849c0f3</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Elfutils (0.178) - <span class=
|
||
"token">8,797 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://sourceware.org/ftp/elfutils/">https://sourceware.org/ftp/elfutils/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://sourceware.org/ftp/elfutils/0.178/elfutils-0.178.tar.bz2">
|
||
https://sourceware.org/ftp/elfutils/0.178/elfutils-0.178.tar.bz2</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">5480d0b7174446aba13a6adde107287f</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Eudev (3.2.9) - <span class=
|
||
"token">1,914 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://dev.gentoo.org/~blueness/eudev/eudev-3.2.9.tar.gz">
|
||
https://dev.gentoo.org/~blueness/eudev/eudev-3.2.9.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">dedfb1964f6098fe9320de827957331f</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Expat (2.2.9) - <span class=
|
||
"token">413 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://libexpat.github.io/">https://libexpat.github.io/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://prdownloads.sourceforge.net/expat/expat-2.2.9.tar.xz">
|
||
https://prdownloads.sourceforge.net/expat/expat-2.2.9.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">d2384fa607223447e713e1b9bd272376</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Expect (5.45.4) - <span class=
|
||
"token">618 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://core.tcl.tk/expect/">https://core.tcl.tk/expect/</a>
|
||
</p>
|
||
<p>
|
||
Download: <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 sum: <code class=
|
||
"literal">00fce8de158422f5ccd2666512329bd2</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">File (5.38) - <span class="token">911
|
||
KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://www.darwinsys.com/file/">https://www.darwinsys.com/file/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"ftp://ftp.astron.com/pub/file/file-5.38.tar.gz">ftp://ftp.astron.com/pub/file/file-5.38.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">3217633ed09c7cd35ed8d04191675574</code>
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
File (5.38) may no longer be available at the listed
|
||
location. The site administrators of the master
|
||
download location occasionally remove older versions
|
||
when new ones are released. An alternative download
|
||
location that may have the correct version available
|
||
can also be found at: <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/lfs/download.html#ftp">
|
||
http://www.linuxfromscratch.org/lfs/download.html#ftp</a>.
|
||
</p>
|
||
</div>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Findutils (4.7.0) - <span class=
|
||
"token">1,851 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/findutils/">http://www.gnu.org/software/findutils/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/findutils/findutils-4.7.0.tar.xz">
|
||
http://ftp.gnu.org/gnu/findutils/findutils-4.7.0.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">731356dec4b1109b812fecfddfead6b2</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Flex (2.6.4) - <span class=
|
||
"token">1,386 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://github.com/westes/flex">https://github.com/westes/flex</a>
|
||
</p>
|
||
<p>
|
||
Download: <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 sum: <code class=
|
||
"literal">2882e3179748cc9f9c23ec593d6adc8d</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Gawk (5.0.1) - <span class=
|
||
"token">3,063 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/gawk/">http://www.gnu.org/software/gawk/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/gawk/gawk-5.0.1.tar.xz">http://ftp.gnu.org/gnu/gawk/gawk-5.0.1.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">f9db3f6715207c6f13719713abc9c707</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">GCC (9.2.0) - <span class=
|
||
"token">68,953 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://gcc.gnu.org/">https://gcc.gnu.org/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.xz">
|
||
http://ftp.gnu.org/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">3818ad8600447f05349098232c2ddc78</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">GDBM (1.18.1) - <span class=
|
||
"token">920 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/gdbm/">http://www.gnu.org/software/gdbm/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/gdbm/gdbm-1.18.1.tar.gz">http://ftp.gnu.org/gnu/gdbm/gdbm-1.18.1.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">988dc82182121c7570e0cb8b4fcd5415</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Gettext (0.20.1) - <span class=
|
||
"token">9,128 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/gettext/">http://www.gnu.org/software/gettext/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/gettext/gettext-0.20.1.tar.xz">http://ftp.gnu.org/gnu/gettext/gettext-0.20.1.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">9ed9e26ab613b668e0026222a9c23639</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Glibc (2.31) - <span class=
|
||
"token">16,286 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/libc/">http://www.gnu.org/software/libc/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/glibc/glibc-2.31.tar.xz">http://ftp.gnu.org/gnu/glibc/glibc-2.31.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">78a720f17412f3c3282be5a6f3363ec6</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">GMP (6.2.0) - <span class=
|
||
"token">1,966 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/gmp/">http://www.gnu.org/software/gmp/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/gmp/gmp-6.2.0.tar.xz">http://ftp.gnu.org/gnu/gmp/gmp-6.2.0.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">a325e3f09e6d91e62101e59f9bda3ec1</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Gperf (3.1) - <span class=
|
||
"token">1,188 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/gperf/">http://www.gnu.org/software/gperf/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz">http://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">9e251c0a618ad0824b51117d5d9db87e</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Grep (3.4) - <span class="token">1,520
|
||
KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/grep/">http://www.gnu.org/software/grep/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/grep/grep-3.4.tar.xz">http://ftp.gnu.org/gnu/grep/grep-3.4.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">111b117d22d6a7d049d6ae7505e9c4d2</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Groff (1.22.4) - <span class=
|
||
"token">4,044 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/groff/">http://www.gnu.org/software/groff/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/groff/groff-1.22.4.tar.gz">http://ftp.gnu.org/gnu/groff/groff-1.22.4.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">08fb04335e2f5e73f23ea4c3adbf0c5f</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">GRUB (2.04) - <span class=
|
||
"token">6,245 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/grub/">http://www.gnu.org/software/grub/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://ftp.gnu.org/gnu/grub/grub-2.04.tar.xz">https://ftp.gnu.org/gnu/grub/grub-2.04.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">5aaca6713b47ca2456d8324a58755ac7</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Gzip (1.10) - <span class="token">757
|
||
KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/gzip/">http://www.gnu.org/software/gzip/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/gzip/gzip-1.10.tar.xz">http://ftp.gnu.org/gnu/gzip/gzip-1.10.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">691b1221694c3394f1c537df4eee39d3</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Iana-Etc (2.30) - <span class=
|
||
"token">201 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://freecode.com/projects/iana-etc">http://freecode.com/projects/iana-etc</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://anduin.linuxfromscratch.org/LFS/iana-etc-2.30.tar.bz2">
|
||
http://anduin.linuxfromscratch.org/LFS/iana-etc-2.30.tar.bz2</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">3ba3afb1d1b261383d247f46cb135ee8</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Inetutils (1.9.4) - <span class=
|
||
"token">1,333 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/inetutils/">http://www.gnu.org/software/inetutils/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/inetutils/inetutils-1.9.4.tar.xz">
|
||
http://ftp.gnu.org/gnu/inetutils/inetutils-1.9.4.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">87fef1fa3f603aef11c41dcc097af75e</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Intltool (0.51.0) - <span class=
|
||
"token">159 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://freedesktop.org/wiki/Software/intltool">https://freedesktop.org/wiki/Software/intltool</a>
|
||
</p>
|
||
<p>
|
||
Download: <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 sum: <code class=
|
||
"literal">12e517cac2b57a0121cda351570f1e63</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">IPRoute2 (5.5.0) - <span class=
|
||
"token">731 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <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>
|
||
Download: <a class="ulink" href=
|
||
"https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-5.5.0.tar.xz">
|
||
https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-5.5.0.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">ee8e2cdb416d4a8ef39525d39ab7c2d0</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Kbd (2.2.0) - <span class=
|
||
"token">1,090 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://ftp.altlinux.org/pub/people/legion/kbd">http://ftp.altlinux.org/pub/people/legion/kbd</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://www.kernel.org/pub/linux/utils/kbd/kbd-2.2.0.tar.xz">
|
||
https://www.kernel.org/pub/linux/utils/kbd/kbd-2.2.0.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">d1d7ae0b5fb875dc082731e09cd0c8bc</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Kmod (26) - <span class="token">540
|
||
KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-26.tar.xz">
|
||
https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-26.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">1129c243199bdd7db01b55a61aa19601</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Less (551) - <span class="token">339
|
||
KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://www.greenwoodsoftware.com/less/less-551.tar.gz">
|
||
http://www.greenwoodsoftware.com/less/less-551.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">4ad4408b06d7a6626a055cb453f36819</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">LFS-Bootscripts (20191031) -
|
||
<span class="token">32 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/lfs/downloads/9.1/lfs-bootscripts-20191031.tar.xz">
|
||
http://www.linuxfromscratch.org/lfs/downloads/9.1/lfs-bootscripts-20191031.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">e9249541960df505e4dfac0c32369372</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Libcap (2.31) - <span class="token">97
|
||
KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://sites.google.com/site/fullycapable/">https://sites.google.com/site/fullycapable/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.31.tar.xz">
|
||
https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.31.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">52120c05dc797b01f5a7ae70f4335e96</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Libffi (3.3) - <span class=
|
||
"token">1,275 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://sourceware.org/libffi/">https://sourceware.org/libffi/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"ftp://sourceware.org/pub/libffi/libffi-3.3.tar.gz">ftp://sourceware.org/pub/libffi/libffi-3.3.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">6313289e32f1d38a9df4770b014a2ca7</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Libpipeline (1.5.2) - <span class=
|
||
"token">971 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://libpipeline.nongnu.org/">http://libpipeline.nongnu.org/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.2.tar.gz">
|
||
http://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.2.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">169de4cc1f6f7f7d430a5bed858b2fd3</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Libtool (2.4.6) - <span class=
|
||
"token">951 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/libtool/">http://www.gnu.org/software/libtool/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/libtool/libtool-2.4.6.tar.xz">http://ftp.gnu.org/gnu/libtool/libtool-2.4.6.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">1bfb9b923f2c1339b4d2ce1807064aa5</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Linux (5.5.3) - <span class=
|
||
"token">108,112 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://www.kernel.org/">https://www.kernel.org/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.5.3.tar.xz">
|
||
https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.5.3.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">3ea50025d8c679a327cf2fc225d81a46</code>
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The Linux kernel is updated relatively often, many
|
||
times due to discoveries of security vulnerabilities.
|
||
The latest available 5.5.x kernel version should be
|
||
used, unless the errata page says otherwise.
|
||
</p>
|
||
<p>
|
||
For users with limited speed or expensive bandwidth
|
||
who wish to update the Linux kernel, a baseline
|
||
version of the package and patches can be downloaded
|
||
separately. This may save some time or cost for a
|
||
subsequent patch level upgrade within a minor
|
||
release.
|
||
</p>
|
||
</div>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">M4 (1.4.18) - <span class=
|
||
"token">1,180 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/m4/">http://www.gnu.org/software/m4/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.xz">http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">730bb15d96fffe47e148d1e09235af82</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Make (4.3) - <span class="token">2,263
|
||
KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/make/">http://www.gnu.org/software/make/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/make/make-4.3.tar.gz">http://ftp.gnu.org/gnu/make/make-4.3.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">fc7a67ea86ace13195b0bce683fd4469</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Man-DB (2.9.0) - <span class=
|
||
"token">1,814 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://www.nongnu.org/man-db/">https://www.nongnu.org/man-db/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://download.savannah.gnu.org/releases/man-db/man-db-2.9.0.tar.xz">
|
||
http://download.savannah.gnu.org/releases/man-db/man-db-2.9.0.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">897576a19ecbef376a916485608cd790</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Man-pages (5.05) - <span class=
|
||
"token">1,649 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://www.kernel.org/doc/man-pages/">https://www.kernel.org/doc/man-pages/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://www.kernel.org/pub/linux/docs/man-pages/man-pages-5.05.tar.xz">
|
||
https://www.kernel.org/pub/linux/docs/man-pages/man-pages-5.05.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">da25a4f8dfed0a34453c90153b98752d</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Meson (0.53.1) - <span class=
|
||
"token">1,516 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://mesonbuild.com">https://mesonbuild.com</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://github.com/mesonbuild/meson/releases/download/0.53.1/meson-0.53.1.tar.gz">
|
||
https://github.com/mesonbuild/meson/releases/download/0.53.1/meson-0.53.1.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">9bf73f7b5a2426a7c8674a809bb8cae2</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">MPC (1.1.0) - <span class="token">685
|
||
KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.multiprecision.org/">http://www.multiprecision.org/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz">https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">4125404e41e482ec68282a2e687f6c73</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">MPFR (4.0.2) - <span class=
|
||
"token">1,409 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://www.mpfr.org/">https://www.mpfr.org/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://www.mpfr.org/mpfr-4.0.2/mpfr-4.0.2.tar.xz">http://www.mpfr.org/mpfr-4.0.2/mpfr-4.0.2.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">320fbc4463d4c8cb1e566929d8adc4f8</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Ninja (1.10.0) - <span class=
|
||
"token">206 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://ninja-build.org/">https://ninja-build.org/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://github.com/ninja-build/ninja/archive/v1.10.0/ninja-1.10.0.tar.gz">
|
||
https://github.com/ninja-build/ninja/archive/v1.10.0/ninja-1.10.0.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">cf1d964113a171da42a8940e7607e71a</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Ncurses (6.2) - <span class=
|
||
"token">3,346 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/ncurses/">http://www.gnu.org/software/ncurses/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/ncurses/ncurses-6.2.tar.gz">http://ftp.gnu.org/gnu/ncurses/ncurses-6.2.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">e812da327b1c2214ac1aed440ea3ae8d</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">OpenSSL (1.1.1d) - <span class=
|
||
"token">8,639 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://www.openssl.org/">https://www.openssl.org/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://www.openssl.org/source/openssl-1.1.1d.tar.gz">https://www.openssl.org/source/openssl-1.1.1d.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">3be209000dbc7e1b95bcdf47980a3baa</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Patch (2.7.6) - <span class=
|
||
"token">766 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://savannah.gnu.org/projects/patch/">https://savannah.gnu.org/projects/patch/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz">http://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">78ad9937e4caadcba1526ef1853730d5</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Perl (5.30.1) - <span class=
|
||
"token">12,078 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://www.perl.org/">https://www.perl.org/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://www.cpan.org/src/5.0/perl-5.30.1.tar.xz">https://www.cpan.org/src/5.0/perl-5.30.1.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">f399f3aaee90ddcff5eadd3bccdaacc0</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Pkg-config (0.29.2) - <span class=
|
||
"token">1,970 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://www.freedesktop.org/wiki/Software/pkg-config">https://www.freedesktop.org/wiki/Software/pkg-config</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz">
|
||
https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">f6e931e319531b736fadc017f470e68a</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Procps (3.3.15) - <span class=
|
||
"token">884 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://sourceforge.net/projects/procps-ng">https://sourceforge.net/projects/procps-ng</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-3.3.15.tar.xz">
|
||
https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-3.3.15.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">2b0717a7cb474b3d6dfdeedfbad2eccc</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Psmisc (23.2) - <span class=
|
||
"token">297 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://psmisc.sourceforge.net/">http://psmisc.sourceforge.net/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.2.tar.xz">
|
||
https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.2.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">0524258861f00be1a02d27d39d8e5e62</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Python (3.8.1) - <span class=
|
||
"token">17,411 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://www.python.org/">https://www.python.org/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tar.xz">
|
||
https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">b3fb85fd479c0bf950c626ef80cacb57</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Python Documentation (3.8.1) -
|
||
<span class="token">6,374 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://www.python.org/ftp/python/doc/3.8.1/python-3.8.1-docs-html.tar.bz2">
|
||
https://www.python.org/ftp/python/doc/3.8.1/python-3.8.1-docs-html.tar.bz2</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">edc8c97f9680373fcc1dd952f0ea7fcc</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Readline (8.0) - <span class=
|
||
"token">2,907 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <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>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/readline/readline-8.0.tar.gz">http://ftp.gnu.org/gnu/readline/readline-8.0.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">7e6c1f16aee3244a69aba6e438295ca3</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Sed (4.8) - <span class="token">1,317
|
||
KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/sed/">http://www.gnu.org/software/sed/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/sed/sed-4.8.tar.xz">http://ftp.gnu.org/gnu/sed/sed-4.8.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">6d906edfdb3202304059233f51f9a71d</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Shadow (4.8.1) - <span class=
|
||
"token">1,574 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://github.com/shadow-maint/shadow/releases/download/4.8.1/shadow-4.8.1.tar.xz">
|
||
https://github.com/shadow-maint/shadow/releases/download/4.8.1/shadow-4.8.1.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">4b05eff8a427cf50e615bda324b5bc45</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Sysklogd (1.5.1) - <span class=
|
||
"token">88 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.infodrom.org/projects/sysklogd/">http://www.infodrom.org/projects/sysklogd/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.1.tar.gz">
|
||
http://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.1.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">c70599ab0d037fde724f7210c2c8d7f8</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Sysvinit (2.96) - <span class=
|
||
"token">120 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://savannah.nongnu.org/projects/sysvinit">https://savannah.nongnu.org/projects/sysvinit</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://download.savannah.gnu.org/releases/sysvinit/sysvinit-2.96.tar.xz">
|
||
http://download.savannah.gnu.org/releases/sysvinit/sysvinit-2.96.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">48cebffebf2a96ab09bec14bf9976016</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Tar (1.32) - <span class="token">2,055
|
||
KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/tar/">http://www.gnu.org/software/tar/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/tar/tar-1.32.tar.xz">http://ftp.gnu.org/gnu/tar/tar-1.32.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">83e38700a80a26e30b2df054e69956e5</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Tcl (8.6.10) - <span class=
|
||
"token">9,907 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://tcl.sourceforge.net/">http://tcl.sourceforge.net/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://downloads.sourceforge.net/tcl/tcl8.6.10-src.tar.gz">
|
||
https://downloads.sourceforge.net/tcl/tcl8.6.10-src.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">97c55573f8520bcab74e21bfd8d0aadc</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Texinfo (6.7) - <span class=
|
||
"token">4,237 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://www.gnu.org/software/texinfo/">http://www.gnu.org/software/texinfo/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://ftp.gnu.org/gnu/texinfo/texinfo-6.7.tar.xz">http://ftp.gnu.org/gnu/texinfo/texinfo-6.7.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">d4c5d8cc84438c5993ec5163a59522a6</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Time Zone Data (2019c) - <span class=
|
||
"token">383 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://www.iana.org/time-zones">https://www.iana.org/time-zones</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://www.iana.org/time-zones/repository/releases/tzdata2019c.tar.gz">
|
||
https://www.iana.org/time-zones/repository/releases/tzdata2019c.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">f6987e6dfdb2eb83a1b5076a50b80894</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Udev-lfs Tarball (udev-lfs-20171102) -
|
||
<span class="token">11 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://anduin.linuxfromscratch.org/LFS/udev-lfs-20171102.tar.xz">
|
||
http://anduin.linuxfromscratch.org/LFS/udev-lfs-20171102.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">27cd82f9a61422e186b9d6759ddf1634</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Util-linux (2.35.1) - <span class=
|
||
"token">5,018 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"http://freecode.com/projects/util-linux">http://freecode.com/projects/util-linux</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://www.kernel.org/pub/linux/utils/util-linux/v2.35/util-linux-2.35.1.tar.xz">
|
||
https://www.kernel.org/pub/linux/utils/util-linux/v2.35/util-linux-2.35.1.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">7f64882f631225f0295ca05080cee1bf</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Vim (8.2.0190) - <span class=
|
||
"token">14,406 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://www.vim.org">https://www.vim.org</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://anduin.linuxfromscratch.org/LFS/vim-8.2.0190.tar.gz">
|
||
http://anduin.linuxfromscratch.org/LFS/vim-8.2.0190.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">f5337b1170df90e644a636539a0313a3</code>
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The version of vim changes daily. The get the latest
|
||
version, go to <a class="ulink" href=
|
||
"https://github.com/vim/vim/releases">https://github.com/vim/vim/releases</a>.
|
||
</p>
|
||
</div>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">XML::Parser (2.46) - <span class=
|
||
"token">249 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://github.com/chorny/XML-Parser">https://github.com/chorny/XML-Parser</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.46.tar.gz">
|
||
https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.46.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">80bb18a8e6240fcf7ec2f7b57601c170</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Xz Utils (5.2.4) - <span class=
|
||
"token">1030 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://tukaani.org/xz">https://tukaani.org/xz</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://tukaani.org/xz/xz-5.2.4.tar.xz">https://tukaani.org/xz/xz-5.2.4.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">003e4d0b1b1899fc6e3000b24feddf7c</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Zlib (1.2.11) - <span class=
|
||
"token">457 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://www.zlib.net/">https://www.zlib.net/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://zlib.net/zlib-1.2.11.tar.xz">https://zlib.net/zlib-1.2.11.tar.xz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">85adef240c5f370b308da8c938951a68</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Zstd (1.4.4) - <span class=
|
||
"token">1,903 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Home page: <a class="ulink" href=
|
||
"https://facebook.github.io/zstd/">https://facebook.github.io/zstd/</a>
|
||
</p>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"https://github.com/facebook/zstd/releases/download/v1.4.4/zstd-1.4.4.tar.gz">
|
||
https://github.com/facebook/zstd/releases/download/v1.4.4/zstd-1.4.4.tar.gz</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">487f7ee1562dee7c1c8adf85e2a63df9</code>
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Total size of these packages: about 398 MB
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-materials-patches" name=
|
||
"ch-materials-patches"></a>3.3. Needed Patches
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
In addition to the packages, several patches are also required.
|
||
These patches correct any mistakes in the packages that should
|
||
be fixed by the maintainer. The patches also make small
|
||
modifications to make the packages easier to work with. The
|
||
following patches will be needed to build an LFS system:
|
||
</p>
|
||
<div class="materials">
|
||
<div class="variablelist">
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term">Bash Upstream Fixes Patch -
|
||
<span class="token">22 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/patches/lfs/9.1/bash-5.0-upstream_fixes-1.patch">
|
||
http://www.linuxfromscratch.org/patches/lfs/9.1/bash-5.0-upstream_fixes-1.patch</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">c1545da2ad7d78574b52c465ec077ed9</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Bzip2 Documentation Patch -
|
||
<span class="token">1.6 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/patches/lfs/9.1/bzip2-1.0.8-install_docs-1.patch">
|
||
http://www.linuxfromscratch.org/patches/lfs/9.1/bzip2-1.0.8-install_docs-1.patch</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">6a5ac7e89b791aae556de0f745916f7f</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Coreutils Internationalization Fixes
|
||
Patch - <span class="token">168 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/patches/lfs/9.1/coreutils-8.31-i18n-1.patch">
|
||
http://www.linuxfromscratch.org/patches/lfs/9.1/coreutils-8.31-i18n-1.patch</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">a9404fb575dfd5514f3c8f4120f9ca7d</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Glibc FHS Patch - <span class=
|
||
"token">2.8 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/patches/lfs/9.1/glibc-2.31-fhs-1.patch">
|
||
http://www.linuxfromscratch.org/patches/lfs/9.1/glibc-2.31-fhs-1.patch</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <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>
|
||
Download: <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/patches/lfs/9.1/kbd-2.2.0-backspace-1.patch">
|
||
http://www.linuxfromscratch.org/patches/lfs/9.1/kbd-2.2.0-backspace-1.patch</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">f75cca16a38da6caa7d52151f7136895</code>
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">Sysvinit Consolidated Patch -
|
||
<span class="token">2.4 KB</span>:</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Download: <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/patches/lfs/9.1/sysvinit-2.96-consolidated-1.patch">
|
||
http://www.linuxfromscratch.org/patches/lfs/9.1/sysvinit-2.96-consolidated-1.patch</a>
|
||
</p>
|
||
<p>
|
||
MD5 sum: <code class=
|
||
"literal">4900322141d493e74020c9cf437b2cdc</code>
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Total size of these patches: about 208.8 KB
|
||
</p>
|
||
<p>
|
||
In addition to the above required patches, there exist a number
|
||
of optional patches created by the LFS community. These
|
||
optional patches solve minor problems or enable functionality
|
||
that is not enabled by default. Feel free to peruse the patches
|
||
database located at <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/patches/downloads/">http://www.linuxfromscratch.org/patches/downloads/</a>
|
||
and acquire any additional patches to suit your system needs.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="chapter" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="chapter-final-preps" name=
|
||
"chapter-final-preps"></a>Chapter 4. Final
|
||
Preparations
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-preps-introduction" name=
|
||
"ch-preps-introduction"></a>4.1. Introduction
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
In this chapter, we will perform a few additional tasks to
|
||
prepare for building the temporary system. We will create a
|
||
directory in <code class="filename">$LFS</code> for the
|
||
installation of the temporary tools, add an unprivileged user
|
||
to reduce risk, and create an appropriate build environment for
|
||
that user. We will also explain the unit of time we use to
|
||
measure how long LFS packages take to build, or <span class=
|
||
"quote">“<span class="quote">SBUs</span>”</span>,
|
||
and give some information about package test suites.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-preps-creatingtoolsdir" name=
|
||
"ch-preps-creatingtoolsdir"></a>4.2. Creating the
|
||
$LFS/tools Directory
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
All programs compiled in <a class="xref" href=
|
||
"#chapter-temporary-tools" title=
|
||
"Chapter 5. Constructing a Temporary System">Chapter 5</a>
|
||
will be installed under <code class=
|
||
"filename">$LFS/tools</code> to keep them separate from the
|
||
programs compiled in <a class="xref" href=
|
||
"#chapter-building-system" title=
|
||
"Chapter 6. Installing Basic System Software">Chapter 6</a>.
|
||
The programs compiled here are temporary tools and will not be
|
||
a part of the final LFS system. By keeping these programs in a
|
||
separate directory, they can easily be discarded later after
|
||
their use. This also prevents these programs from ending up in
|
||
the host production directories (easy to do by accident in
|
||
<a class="xref" href="#chapter-temporary-tools" title=
|
||
"Chapter 5. Constructing a Temporary System">Chapter 5</a>).
|
||
</p>
|
||
<p>
|
||
Create the required directory by running the following as
|
||
<code class="systemitem">root</code>:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v $LFS/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
The next step is to create a <code class=
|
||
"filename">/tools</code> symlink on the host system. This will
|
||
point to the newly-created directory on the LFS partition. Run
|
||
this command as <code class="systemitem">root</code> as well:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">ln -sv $LFS/tools /</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The above command is correct. The <span class=
|
||
"command"><strong>ln</strong></span> command has a few
|
||
syntactic variations, so be sure to check <span class=
|
||
"command"><strong>info coreutils ln</strong></span> and
|
||
<code class="filename">ln(1)</code> before reporting what you
|
||
may think is an error.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
The created symlink enables the toolchain to be compiled so
|
||
that it always refers to <code class="filename">/tools</code>,
|
||
meaning that the compiler, assembler, and linker will work both
|
||
in Chapter 5 (when we are still using some tools from the
|
||
host) and in the next (when we are <span class=
|
||
"quote">“<span class=
|
||
"quote">chrooted</span>”</span> to the LFS partition).
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-preps-addinguser" name=
|
||
"ch-preps-addinguser"></a>4.3. Adding the LFS User
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
When logged in as user <code class="systemitem">root</code>,
|
||
making a single mistake can damage or destroy a system.
|
||
Therefore, we recommend building the packages in the next
|
||
chapter as an unprivileged user. You could use your own user
|
||
name, but to make it easier to set up a clean working
|
||
environment, create a new user called <code class=
|
||
"systemitem">lfs</code> as a member of a new group (also named
|
||
<code class="systemitem">lfs</code>) and use this user during
|
||
the installation process. As <code class=
|
||
"systemitem">root</code>, issue the following commands to add
|
||
the new user:
|
||
</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>The meaning of the command line options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code>-s
|
||
/bin/bash</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This makes <span class=
|
||
"command"><strong>bash</strong></span> the default shell
|
||
for user <code class="systemitem">lfs</code>.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code>-g
|
||
lfs</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option adds user <code class="systemitem">lfs</code>
|
||
to group <code class="systemitem">lfs</code>.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>-m</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This creates a home directory for <code class=
|
||
"systemitem">lfs</code>.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code>-k
|
||
/dev/null</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This parameter prevents possible copying of files from a
|
||
skeleton directory (default is <code class=
|
||
"filename">/etc/skel</code>) by changing the input
|
||
location to the special null device.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>lfs</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This is the actual name for the created group and user.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
To log in as <code class="systemitem">lfs</code> (as opposed to
|
||
switching to user <code class="systemitem">lfs</code> when
|
||
logged in as <code class="systemitem">root</code>, which does
|
||
not require the <code class="systemitem">lfs</code> user to
|
||
have a password), give <code class="systemitem">lfs</code> a
|
||
password:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">passwd lfs</kbd>
|
||
</pre>
|
||
<p>
|
||
Grant <code class="systemitem">lfs</code> full access to
|
||
<code class="filename">$LFS/tools</code> by making <code class=
|
||
"systemitem">lfs</code> the directory owner:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">chown -v lfs $LFS/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
If a separate working directory was created as suggested, give
|
||
user <code class="systemitem">lfs</code> ownership of this
|
||
directory:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">chown -v lfs $LFS/sources</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
In some host systems, the following command does not complete
|
||
properly and suspends the login to the lfs user to the
|
||
background. If the prompt "lfs:~$" does not appear
|
||
immediately, entering the <span class=
|
||
"command"><strong>fg</strong></span> command will fix the
|
||
issue.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Next, login as user <code class="systemitem">lfs</code>. This
|
||
can be done via a virtual console, through a display manager,
|
||
or with the following substitute user command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">su - lfs</kbd>
|
||
</pre>
|
||
<p>
|
||
The <span class="quote">“<span class="quote"><em class=
|
||
"parameter"><code>-</code></em></span>”</span> instructs
|
||
<span class="command"><strong>su</strong></span> to start a
|
||
login shell as opposed to a non-login shell. The difference
|
||
between these two types of shells can be found in detail in
|
||
<code class="filename">bash(1)</code> and <span class=
|
||
"command"><strong>info bash</strong></span>.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-preps-settingenviron" name=
|
||
"ch-preps-settingenviron"></a>4.4. Setting Up the
|
||
Environment
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Set up a good working environment by creating two new startup
|
||
files for the <span class=
|
||
"command"><strong>bash</strong></span> shell. While logged in
|
||
as user <code class="systemitem">lfs</code>, issue the
|
||
following command to create a new <code class=
|
||
"filename">.bash_profile</code>:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > ~/.bash_profile << "EOF"
|
||
<code class=
|
||
"literal">exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
When logged on as user <code class="systemitem">lfs</code>, the
|
||
initial shell is usually a <span class=
|
||
"emphasis"><em>login</em></span> shell which reads the
|
||
<code class="filename">/etc/profile</code> of the host
|
||
(probably containing some settings and environment variables)
|
||
and then <code class="filename">.bash_profile</code>. The
|
||
<span class="command"><strong>exec env
|
||
-i.../bin/bash</strong></span> command in the <code class=
|
||
"filename">.bash_profile</code> file replaces the running shell
|
||
with a new one with a completely empty environment, except for
|
||
the <code class="envar">HOME</code>, <code class=
|
||
"envar">TERM</code>, and <code class="envar">PS1</code>
|
||
variables. This ensures that no unwanted and potentially
|
||
hazardous environment variables from the host system leak into
|
||
the build environment. The technique used here achieves the
|
||
goal of ensuring a clean environment.
|
||
</p>
|
||
<p>
|
||
The new instance of the shell is a <span class=
|
||
"emphasis"><em>non-login</em></span> shell, which does not read
|
||
the <code class="filename">/etc/profile</code> or <code class=
|
||
"filename">.bash_profile</code> files, but rather reads the
|
||
<code class="filename">.bashrc</code> file instead. Create the
|
||
<code class="filename">.bashrc</code> file now:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > ~/.bashrc << "EOF"
|
||
<code class="literal">set +h
|
||
umask 022
|
||
LFS=/mnt/lfs
|
||
LC_ALL=POSIX
|
||
LFS_TGT=$(uname -m)-lfs-linux-gnu
|
||
PATH=/tools/bin:/bin:/usr/bin
|
||
export LFS LC_ALL LFS_TGT PATH</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
The <span class="command"><strong>set +h</strong></span>
|
||
command turns off <span class=
|
||
"command"><strong>bash</strong></span>'s hash function. Hashing
|
||
is ordinarily a useful feature—<span class=
|
||
"command"><strong>bash</strong></span> uses a hash table to
|
||
remember the full path of executable files to avoid searching
|
||
the <code class="envar">PATH</code> time and again to find the
|
||
same executable. However, the new tools should be used as soon
|
||
as they are installed. By switching off the hash function, the
|
||
shell will always search the <code class="envar">PATH</code>
|
||
when a program is to be run. As such, the shell will find the
|
||
newly compiled tools in <code class=
|
||
"filename">$LFS/tools</code> as soon as they are available
|
||
without remembering a previous version of the same program in a
|
||
different location.
|
||
</p>
|
||
<p>
|
||
Setting the user file-creation mask (umask) to 022 ensures that
|
||
newly created files and directories are only writable by their
|
||
owner, but are readable and executable by anyone (assuming
|
||
default modes are used by the <code class=
|
||
"function">open(2)</code> system call, new files will end up
|
||
with permission mode 644 and directories with mode 755).
|
||
</p>
|
||
<p>
|
||
The <code class="envar">LFS</code> variable should be set to
|
||
the chosen mount point.
|
||
</p>
|
||
<p>
|
||
The <code class="envar">LC_ALL</code> variable controls the
|
||
localization of certain programs, making their messages follow
|
||
the conventions of a specified country. Setting <code class=
|
||
"envar">LC_ALL</code> to <span class=
|
||
"quote">“<span class="quote">POSIX</span>”</span>
|
||
or <span class="quote">“<span class=
|
||
"quote">C</span>”</span> (the two are equivalent) ensures
|
||
that everything will work as expected in the chroot
|
||
environment.
|
||
</p>
|
||
<p>
|
||
The <code class="envar">LFS_TGT</code> variable sets a
|
||
non-default, but compatible machine description for use when
|
||
building our cross compiler and linker and when cross compiling
|
||
our temporary toolchain. More information is contained in
|
||
<a class="xref" href="#ch-tools-toolchaintechnotes" title=
|
||
"5.2. Toolchain Technical Notes">Section 5.2,
|
||
“Toolchain Technical Notes”</a>.
|
||
</p>
|
||
<p>
|
||
By putting <code class="filename">/tools/bin</code> ahead of
|
||
the standard <code class="envar">PATH</code>, all the programs
|
||
installed in <a class="xref" href="#chapter-temporary-tools"
|
||
title=
|
||
"Chapter 5. Constructing a Temporary System">Chapter 5</a>
|
||
are picked up by the shell immediately after their
|
||
installation. This, combined with turning off hashing, limits
|
||
the risk that old programs are used from the host when the same
|
||
programs are available in the chapter 5 environment.
|
||
</p>
|
||
<p>
|
||
Finally, to have the environment fully prepared for building
|
||
the temporary tools, source the just-created user profile:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">source ~/.bash_profile</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-preps-aboutsbus" name=
|
||
"ch-preps-aboutsbus"></a>4.5. About SBUs
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Many people would like to know beforehand approximately how
|
||
long it takes to compile and install each package. Because
|
||
Linux From Scratch can be built on many different systems, it
|
||
is impossible to provide accurate time estimates. The biggest
|
||
package (Glibc) will take approximately 20 minutes on the
|
||
fastest systems, but could take up to three days on slower
|
||
systems! Instead of providing actual times, the Standard Build
|
||
Unit (SBU) measure will be used instead.
|
||
</p>
|
||
<p>
|
||
The SBU measure works as follows. The first package to be
|
||
compiled from this book is Binutils in <a class="xref" href=
|
||
"#chapter-temporary-tools" title=
|
||
"Chapter 5. Constructing a Temporary System">Chapter 5</a>.
|
||
The time it takes to compile this package is what will be
|
||
referred to as the Standard Build Unit or SBU. All other
|
||
compile times will be expressed relative to this time.
|
||
</p>
|
||
<p>
|
||
For example, consider a package whose compilation time is 4.5
|
||
SBUs. This means that if a system took 10 minutes to compile
|
||
and install the first pass of Binutils, it will take
|
||
<span class="emphasis"><em>approximately</em></span> 45 minutes
|
||
to build this example package. Fortunately, most build times
|
||
are shorter than the one for Binutils.
|
||
</p>
|
||
<p>
|
||
In general, SBUs are not entirely accurate because they depend
|
||
on many factors, including the host system's version of GCC.
|
||
They are provided here to give an estimate of how long it might
|
||
take to install a package, but the numbers can vary by as much
|
||
as dozens of minutes in some cases.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
For many modern systems with multiple processors (or cores)
|
||
the compilation time for a package can be reduced by
|
||
performing a "parallel make" by either setting an environment
|
||
variable or telling the <span class=
|
||
"command"><strong>make</strong></span> program how many
|
||
processors are available. For instance, a Core2Duo can
|
||
support two simultaneous processes with:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">export MAKEFLAGS='-j 2'</kbd>
|
||
</pre>
|
||
<p>
|
||
or just building with:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make -j2</kbd>
|
||
</pre>
|
||
<p>
|
||
When multiple processors are used in this way, the SBU units
|
||
in the book will vary even more than they normally would. In
|
||
some cases, the make step will simply fail. Analyzing the
|
||
output of the build process will also be more difficult
|
||
because the lines of different processes will be interleaved.
|
||
If you run into a problem with a build step, revert back to a
|
||
single processor build to properly analyze the error
|
||
messages.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-preps-abouttestsuites" name=
|
||
"ch-preps-abouttestsuites"></a>4.6. About the Test
|
||
Suites
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Most packages provide a test suite. Running the test suite for
|
||
a newly built package is a good idea because it can provide a
|
||
<span class="quote">“<span class="quote">sanity
|
||
check</span>”</span> indicating that everything compiled
|
||
correctly. A test suite that passes its set of checks usually
|
||
proves that the package is functioning as the developer
|
||
intended. It does not, however, guarantee that the package is
|
||
totally bug free.
|
||
</p>
|
||
<p>
|
||
Some test suites are more important than others. For example,
|
||
the test suites for the core toolchain packages—GCC,
|
||
Binutils, and Glibc—are of the utmost importance due to
|
||
their central role in a properly functioning system. The test
|
||
suites for GCC and Glibc can take a very long time to complete,
|
||
especially on slower hardware, but are strongly recommended.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
Experience has shown that there is little to be gained from
|
||
running the test suites in <a class="xref" href=
|
||
"#chapter-temporary-tools" title=
|
||
"Chapter 5. Constructing a Temporary System">Chapter 5</a>.
|
||
There can be no escaping the fact that the host system always
|
||
exerts some influence on the tests in that chapter, often
|
||
causing inexplicable failures. Because the tools built in
|
||
<a class="xref" href="#chapter-temporary-tools" title=
|
||
"Chapter 5. Constructing a Temporary System">Chapter 5</a>
|
||
are temporary and eventually discarded, we do not recommend
|
||
running the test suites in <a class="xref" href=
|
||
"#chapter-temporary-tools" title=
|
||
"Chapter 5. Constructing a Temporary System">Chapter 5</a>
|
||
for the average reader. The instructions for running those
|
||
test suites are provided for the benefit of testers and
|
||
developers, but they are strictly optional.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
A common issue with running the test suites for Binutils and
|
||
GCC is running out of pseudo terminals (PTYs). This can result
|
||
in a high number of failing tests. This may happen for several
|
||
reasons, but the most likely cause is that the host system does
|
||
not have the <code class="systemitem">devpts</code> file system
|
||
set up correctly. This issue is discussed in greater detail at
|
||
<a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/lfs/faq.html#no-ptys">http://www.linuxfromscratch.org/lfs/faq.html#no-ptys</a>.
|
||
</p>
|
||
<p>
|
||
Sometimes package test suites will fail, but for reasons which
|
||
the developers are aware of and have deemed non-critical.
|
||
Consult the logs located at <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/lfs/build-logs/9.1/">http://www.linuxfromscratch.org/lfs/build-logs/9.1/</a>
|
||
to verify whether or not these failures are expected. This site
|
||
is valid for all tests throughout this book.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="chapter" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="chapter-temporary-tools" name=
|
||
"chapter-temporary-tools"></a>Chapter 5. Constructing
|
||
a Temporary System
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-introduction" name=
|
||
"ch-tools-introduction"></a>5.1. Introduction
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
This chapter shows how to build a minimal Linux system. This
|
||
system will contain just enough tools to start constructing the
|
||
final LFS system in <a class="xref" href=
|
||
"#chapter-building-system" title=
|
||
"Chapter 6. Installing Basic System Software">Chapter 6</a>
|
||
and allow a working environment with more user convenience than
|
||
a minimum environment would.
|
||
</p>
|
||
<p>
|
||
There are two steps in building this minimal system. The first
|
||
step is to build a new and host-independent toolchain
|
||
(compiler, assembler, linker, libraries, and a few useful
|
||
utilities). The second step uses this toolchain to build the
|
||
other essential tools.
|
||
</p>
|
||
<p>
|
||
The files compiled in this chapter will be installed under the
|
||
<code class="filename">$LFS/tools</code> directory to keep them
|
||
separate from the files installed in the next chapter and the
|
||
host production directories. Since the packages compiled here
|
||
are temporary, we do not want them to pollute the soon-to-be
|
||
LFS system.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-toolchaintechnotes" name=
|
||
"ch-tools-toolchaintechnotes"></a>5.2. Toolchain
|
||
Technical Notes
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
This section explains some of the rationale and technical
|
||
details behind the overall build method. It is not essential to
|
||
immediately understand everything in this section. Most of this
|
||
information will be clearer after performing an actual build.
|
||
This section can be referred to at any time during the process.
|
||
</p>
|
||
<p>
|
||
The overall goal of <a class="xref" href=
|
||
"#chapter-temporary-tools" title=
|
||
"Chapter 5. Constructing a Temporary System">Chapter 5</a>
|
||
is to produce a temporary area that contains a known-good set
|
||
of tools that can be isolated from the host system. By using
|
||
<span class="command"><strong>chroot</strong></span>, the
|
||
commands in the remaining chapters will be contained within
|
||
that environment, ensuring a clean, trouble-free build of the
|
||
target LFS system. The build process has been designed to
|
||
minimize the risks for new readers and to provide the most
|
||
educational value at the same time.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
Before continuing, be aware of the name of the working
|
||
platform, often referred to as the target triplet. A simple
|
||
way to determine the name of the target triplet is to run the
|
||
<span class="command"><strong>config.guess</strong></span>
|
||
script that comes with the source for many packages. Unpack
|
||
the Binutils sources and run the script: <strong class=
|
||
"userinput"><code>./config.guess</code></strong> and note the
|
||
output. For example, for a 32-bit Intel processor the output
|
||
will be <span class=
|
||
"emphasis"><em>i686-pc-linux-gnu</em></span>. On a 64-bit
|
||
system it will be <span class=
|
||
"emphasis"><em>x86_64-pc-linux-gnu</em></span>.
|
||
</p>
|
||
<p>
|
||
Also be aware of the name of the platform's dynamic linker,
|
||
often referred to as the dynamic loader (not to be confused
|
||
with the standard linker <span class=
|
||
"command"><strong>ld</strong></span> that is part of
|
||
Binutils). The dynamic linker provided by Glibc finds and
|
||
loads the shared libraries needed by a program, prepares the
|
||
program to run, and then runs it. The name of the dynamic
|
||
linker for a 32-bit Intel machine will be <code class=
|
||
"filename">ld-linux.so.2</code> (<code class=
|
||
"filename">ld-linux-x86-64.so.2</code> for 64-bit systems). A
|
||
sure-fire way to determine the name of the dynamic linker is
|
||
to inspect a random binary from the host system by running:
|
||
<strong class="userinput"><code>readelf -l <name of
|
||
binary> | grep interpreter</code></strong> and noting the
|
||
output. The authoritative reference covering all platforms is
|
||
in the <code class="filename">shlib-versions</code> file in
|
||
the root of the Glibc source tree.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Some key technical points of how the <a class="xref" href=
|
||
"#chapter-temporary-tools" title=
|
||
"Chapter 5. Constructing a Temporary System">Chapter 5</a>
|
||
build method works:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
Slightly adjusting the name of the working platform, by
|
||
changing the "vendor" field target triplet by way of the
|
||
<code class="envar">LFS_TGT</code> variable, ensures that
|
||
the first build of Binutils and GCC produces a compatible
|
||
cross-linker and cross-compiler. Instead of producing
|
||
binaries for another architecture, the cross-linker and
|
||
cross-compiler will produce binaries compatible with the
|
||
current hardware.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The temporary libraries are cross-compiled. Because a
|
||
cross-compiler by its nature cannot rely on anything from
|
||
its host system, this method removes potential
|
||
contamination of the target system by lessening the
|
||
chance of headers or libraries from the host being
|
||
incorporated into the new tools. Cross-compilation also
|
||
allows for the possibility of building both 32-bit and
|
||
64-bit libraries on 64-bit capable hardware.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Careful manipulation of the GCC source tells the compiler
|
||
which target dynamic linker will be used.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<p>
|
||
Binutils is installed first because the <span class=
|
||
"command"><strong>configure</strong></span> runs of both GCC
|
||
and Glibc perform various feature tests on the assembler and
|
||
linker to determine which software features to enable or
|
||
disable. This is more important than one might first realize.
|
||
An incorrectly configured GCC or Glibc can result in a subtly
|
||
broken toolchain, where the impact of such breakage might not
|
||
show up until near the end of the build of an entire
|
||
distribution. A test suite failure will usually highlight this
|
||
error before too much additional work is performed.
|
||
</p>
|
||
<p>
|
||
Binutils installs its assembler and linker in two locations,
|
||
<code class="filename">/tools/bin</code> and <code class=
|
||
"filename">/tools/$LFS_TGT/bin</code>. The tools in one
|
||
location are hard linked to the other. An important facet of
|
||
the linker is its library search order. Detailed information
|
||
can be obtained from <span class=
|
||
"command"><strong>ld</strong></span> by passing it the
|
||
<em class="parameter"><code>--verbose</code></em> flag. For
|
||
example, an <strong class="userinput"><code>ld --verbose | grep
|
||
SEARCH</code></strong> will illustrate the current search paths
|
||
and their order. It shows which files are linked by
|
||
<span class="command"><strong>ld</strong></span> by compiling a
|
||
dummy program and passing the <em class=
|
||
"parameter"><code>--verbose</code></em> switch to the linker.
|
||
For example, <strong class="userinput"><code>gcc dummy.c
|
||
-Wl,--verbose 2>&1 | grep succeeded</code></strong> will
|
||
show all the files successfully opened during the linking.
|
||
</p>
|
||
<p>
|
||
The next package installed is GCC. An example of what can be
|
||
seen during its run of <span class=
|
||
"command"><strong>configure</strong></span> is:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class=
|
||
"computeroutput">checking what assembler to use... /tools/i686-lfs-linux-gnu/bin/as
|
||
checking what linker to use... /tools/i686-lfs-linux-gnu/bin/ld</code>
|
||
</pre>
|
||
<p>
|
||
This is important for the reasons mentioned above. It also
|
||
demonstrates that GCC's configure script does not search the
|
||
PATH directories to find which tools to use. However, during
|
||
the actual operation of <span class=
|
||
"command"><strong>gcc</strong></span> itself, the same search
|
||
paths are not necessarily used. To find out which standard
|
||
linker <span class="command"><strong>gcc</strong></span> will
|
||
use, run: <strong class="userinput"><code>gcc
|
||
-print-prog-name=ld</code></strong>.
|
||
</p>
|
||
<p>
|
||
Detailed information can be obtained from <span class=
|
||
"command"><strong>gcc</strong></span> by passing it the
|
||
<em class="parameter"><code>-v</code></em> command line option
|
||
while compiling a dummy program. For example, <strong class=
|
||
"userinput"><code>gcc -v dummy.c</code></strong> will show
|
||
detailed information about the preprocessor, compilation, and
|
||
assembly stages, including <span class=
|
||
"command"><strong>gcc</strong></span>'s included search paths
|
||
and their order.
|
||
</p>
|
||
<p>
|
||
Next installed are sanitized Linux API headers. These allow the
|
||
standard C library (Glibc) to interface with features that the
|
||
Linux kernel will provide.
|
||
</p>
|
||
<p>
|
||
The next package installed is Glibc. The most important
|
||
considerations for building Glibc are the compiler, binary
|
||
tools, and kernel headers. The compiler is generally not an
|
||
issue since Glibc will always use the compiler relating to the
|
||
<em class="parameter"><code>--host</code></em> parameter passed
|
||
to its configure script; e.g. in our case, the compiler will be
|
||
<span class=
|
||
"command"><strong>i686-lfs-linux-gnu-gcc</strong></span>. The
|
||
binary tools and kernel headers can be a bit more complicated.
|
||
Therefore, take no risks and use the available configure
|
||
switches to enforce the correct selections. After the run of
|
||
<span class="command"><strong>configure</strong></span>, check
|
||
the contents of the <code class="filename">config.make</code>
|
||
file in the <code class="filename">glibc-build</code> directory
|
||
for all important details. Note the use of <em class=
|
||
"parameter"><code>CC="i686-lfs-gnu-gcc"</code></em> to control
|
||
which binary tools are used and the use of the <em class=
|
||
"parameter"><code>-nostdinc</code></em> and <em class=
|
||
"parameter"><code>-isystem</code></em> flags to control the
|
||
compiler's include search path. These items highlight an
|
||
important aspect of the Glibc package—it is very
|
||
self-sufficient in terms of its build machinery and generally
|
||
does not rely on toolchain defaults.
|
||
</p>
|
||
<p>
|
||
During the second pass of Binutils, we are able to utilize the
|
||
<em class="parameter"><code>--with-lib-path</code></em>
|
||
configure switch to control <span class=
|
||
"command"><strong>ld</strong></span>'s library search path.
|
||
</p>
|
||
<p>
|
||
For the second pass of GCC, its sources also need to be
|
||
modified to tell GCC to use the new dynamic linker. Failure to
|
||
do so will result in the GCC programs themselves having the
|
||
name of the dynamic linker from the host system's <code class=
|
||
"filename">/lib</code> directory embedded into them, which
|
||
would defeat the goal of getting away from the host. From this
|
||
point onwards, the core toolchain is self-contained and
|
||
self-hosted. The remainder of the <a class="xref" href=
|
||
"#chapter-temporary-tools" title=
|
||
"Chapter 5. Constructing a Temporary System">Chapter 5</a>
|
||
packages all build against the new Glibc in <code class=
|
||
"filename">/tools</code>.
|
||
</p>
|
||
<p>
|
||
Upon entering the chroot environment in <a class="xref" href=
|
||
"#chapter-building-system" title=
|
||
"Chapter 6. Installing Basic System Software">Chapter 6</a>,
|
||
the first major package to be installed is Glibc, due to its
|
||
self-sufficient nature mentioned above. Once this Glibc is
|
||
installed into <code class="filename">/usr</code>, we will
|
||
perform a quick changeover of the toolchain defaults, and then
|
||
proceed in building the rest of the target LFS system.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-generalinstructions" name=
|
||
"ch-tools-generalinstructions"></a>5.3. General
|
||
Compilation Instructions
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
When building packages there are several assumptions made
|
||
within the instructions:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
Several of the packages are patched before compilation,
|
||
but only when the patch is needed to circumvent a
|
||
problem. A patch is often needed in both this and the
|
||
next chapter, but sometimes in only one or the other.
|
||
Therefore, do not be concerned if instructions for a
|
||
downloaded patch seem to be missing. Warning messages
|
||
about <span class="emphasis"><em>offset</em></span> or
|
||
<span class="emphasis"><em>fuzz</em></span> may also be
|
||
encountered when applying a patch. Do not worry about
|
||
these warnings, as the patch was still successfully
|
||
applied.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
During the compilation of most packages, there will be
|
||
several warnings that scroll by on the screen. These are
|
||
normal and can safely be ignored. These warnings are as
|
||
they appear—warnings about deprecated, but not
|
||
invalid, use of the C or C++ syntax. C standards change
|
||
fairly often, and some packages still use the older
|
||
standard. This is not a problem, but does prompt the
|
||
warning.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Check one last time that the <code class=
|
||
"envar">LFS</code> environment variable is set up
|
||
properly:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">echo $LFS</kbd>
|
||
</pre>
|
||
<p>
|
||
Make sure the output shows the path to the LFS
|
||
partition's mount point, which is <code class=
|
||
"filename">/mnt/lfs</code>, using our example.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Finally, two important items must be emphasized:
|
||
</p>
|
||
<div class="admon important">
|
||
<h3>
|
||
Important
|
||
</h3>
|
||
<p>
|
||
The build instructions assume that the <a class="xref"
|
||
href="#ch-partitioning-hostreqs" title=
|
||
"2.2. Host System Requirements">Host System
|
||
Requirements</a>, including symbolic links, have been
|
||
set properly:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
<span class=
|
||
"command"><strong>bash</strong></span> is the
|
||
shell in use.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<span class="command"><strong>sh</strong></span>
|
||
is a symbolic link to <span class=
|
||
"command"><strong>bash</strong></span>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<span class=
|
||
"command"><strong>/usr/bin/awk</strong></span> is
|
||
a symbolic link to <span class=
|
||
"command"><strong>gawk</strong></span>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<span class=
|
||
"command"><strong>/usr/bin/yacc</strong></span>
|
||
is a symbolic link to <span class=
|
||
"command"><strong>bison</strong></span> or a
|
||
small script that executes bison.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="admon important">
|
||
<h3>
|
||
Important
|
||
</h3>
|
||
<p>
|
||
To re-emphasize the build process:
|
||
</p>
|
||
<div class="orderedlist">
|
||
<ol class="compact">
|
||
<li class="listitem">
|
||
<p>
|
||
Place all the sources and patches in a directory
|
||
that will be accessible from the chroot
|
||
environment such as <code class=
|
||
"filename">/mnt/lfs/sources/</code>. Do
|
||
<span class="emphasis"><em>not</em></span> put
|
||
sources in <code class=
|
||
"filename">/mnt/lfs/tools/</code>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Change to the sources directory.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a id="buildinstr" name="buildinstr"></a>For each
|
||
package:
|
||
</p>
|
||
<div class="orderedlist">
|
||
<ol class="compact">
|
||
<li class="listitem">
|
||
<p>
|
||
Using the <span class=
|
||
"command"><strong>tar</strong></span>
|
||
program, extract the package to be built.
|
||
In Chapter 5, ensure you are the
|
||
<span class="emphasis"><em>lfs</em></span>
|
||
user when extracting the package.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Change to the directory created when the
|
||
package was extracted.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Follow the book's instructions for building
|
||
the package.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Change back to the sources directory.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Delete the extracted source directory
|
||
unless instructed otherwise.
|
||
</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-binutils-pass1" name=
|
||
"ch-tools-binutils-pass1"></a>5.4. Binutils-2.34 -
|
||
Pass 1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Binutils package contains a linker, an assembler, and
|
||
other tools for handling object files.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">625 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.4.1. Installation of Cross Binutils
|
||
</h3>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
Go back and re-read the notes in the previous section.
|
||
Understanding the notes labeled important will save you a
|
||
lot of problems later.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
It is important that Binutils be the first package compiled
|
||
because both Glibc and GCC perform various tests on the
|
||
available linker and assembler to determine which of their
|
||
own features to enable.
|
||
</p>
|
||
<p>
|
||
The Binutils documentation recommends building Binutils in a
|
||
dedicated build directory:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v build
|
||
cd build</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
In order for the SBU values listed in the rest of the book
|
||
to be of any use, measure the time it takes to build this
|
||
package from the configuration, up to and including the
|
||
first install. To achieve this easily, wrap the commands in
|
||
a <span class="command"><strong>time</strong></span>
|
||
command like this: <strong class="userinput"><code>time {
|
||
./configure ... && ... && make install;
|
||
}</code></strong>.
|
||
</p>
|
||
</div>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The approximate build SBU values and required disk space in
|
||
Chapter 5 does not include test suite data.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Now prepare Binutils for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">../configure --prefix=/tools \
|
||
--with-sysroot=$LFS \
|
||
--with-lib-path=/tools/lib \
|
||
--target=$LFS_TGT \
|
||
--disable-nls \
|
||
--disable-werror</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--prefix=/tools</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This tells the configure script to prepare to install
|
||
the Binutils programs in the <code class=
|
||
"filename">/tools</code> directory.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-sysroot=$LFS</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
For cross compilation, this tells the build system to
|
||
look in $LFS for the target system libraries as needed.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-lib-path=/tools/lib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This specifies which library path the linker should be
|
||
configured to use.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><code class=
|
||
"envar">--target=$LFS_TGT</code></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Because the machine description in the <code class=
|
||
"envar">LFS_TGT</code> variable is slightly different
|
||
than the value returned by the <span class=
|
||
"command"><strong>config.guess</strong></span> script,
|
||
this switch will tell the <span class=
|
||
"command"><strong>configure</strong></span> script to
|
||
adjust Binutil's build system for building a cross
|
||
linker.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-nls</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This disables internationalization as i18n is not
|
||
needed for the temporary tools.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-werror</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This prevents the build from stopping in the event that
|
||
there are warnings from the host's compiler.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Continue with compiling the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. Ordinarily we would now run the
|
||
test suite, but at this early stage the test suite framework
|
||
(Tcl, Expect, and DejaGNU) is not yet in place. The benefits
|
||
of running the tests at this point are minimal since the
|
||
programs from this first pass will soon be replaced by those
|
||
from the second.
|
||
</p>
|
||
<p>
|
||
If building on x86_64, create a symlink to ensure the sanity
|
||
of the toolchain:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">case $(uname -m) in
|
||
x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
|
||
esac</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-binutils" title=
|
||
"6.18.2. Contents of Binutils">Section 6.18.2,
|
||
“Contents of Binutils.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-gcc-pass1" name=
|
||
"ch-tools-gcc-pass1"></a>5.5. GCC-9.2.0 - Pass 1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The GCC package contains the GNU compiler collection, which
|
||
includes the C and C++ compilers.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">10 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">3.1 GB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.5.1. Installation of Cross GCC
|
||
</h3>
|
||
<p>
|
||
GCC now requires the GMP, MPFR and MPC packages. As these
|
||
packages may not be included in your host distribution, they
|
||
will be built with GCC. Unpack each package into the GCC
|
||
source directory and rename the resulting directories so the
|
||
GCC build procedures will automatically use them:
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
There are frequent misunderstandings about this chapter.
|
||
The procedures are the same as every other chapter as
|
||
explained earlier (<a class="xref" href=
|
||
"#buildinstr">Package build instructions</a>). First
|
||
extract the gcc tarball from the sources directory and then
|
||
change to the directory created. Only then should you
|
||
proceed with the instructions below.
|
||
</p>
|
||
</div>
|
||
<pre class="userinput">
|
||
<kbd class="command">tar -xf ../mpfr-4.0.2.tar.xz
|
||
mv -v mpfr-4.0.2 mpfr
|
||
tar -xf ../gmp-6.2.0.tar.xz
|
||
mv -v gmp-6.2.0 gmp
|
||
tar -xf ../mpc-1.1.0.tar.gz
|
||
mv -v mpc-1.1.0 mpc</kbd>
|
||
</pre>
|
||
<p>
|
||
The following command will change the location of GCC's
|
||
default dynamic linker to use the one installed in
|
||
<code class="filename">/tools</code>. It also removes
|
||
<code class="filename">/usr/include</code> from GCC's include
|
||
search path. Issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">for file in gcc/config/{linux,i386/linux{,64}}.h
|
||
do
|
||
cp -uv $file{,.orig}
|
||
sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
|
||
-e 's@/usr@/tools@g' $file.orig > $file
|
||
echo '
|
||
#undef STANDARD_STARTFILE_PREFIX_1
|
||
#undef STANDARD_STARTFILE_PREFIX_2
|
||
#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
|
||
#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
|
||
touch $file.orig
|
||
done</kbd>
|
||
</pre>
|
||
<p>
|
||
In case the above seems hard to follow, let's break it down a
|
||
bit. First we copy the files <code class=
|
||
"filename">gcc/config/linux.h</code>, <code class=
|
||
"filename">gcc/config/i386/linux.h</code>, and <code class=
|
||
"filename">gcc/config/i368/linux64.h</code> to a file of the
|
||
same name but with an added suffix of <span class=
|
||
"quote">“<span class=
|
||
"quote">.orig</span>”</span>. Then the first sed
|
||
expression prepends <span class="quote">“<span class=
|
||
"quote">/tools</span>”</span> to every instance of
|
||
<span class="quote">“<span class=
|
||
"quote">/lib/ld</span>”</span>, <span class=
|
||
"quote">“<span class=
|
||
"quote">/lib64/ld</span>”</span> or <span class=
|
||
"quote">“<span class=
|
||
"quote">/lib32/ld</span>”</span>, while the second one
|
||
replaces hard-coded instances of <span class=
|
||
"quote">“<span class="quote">/usr</span>”</span>.
|
||
Next, we add our define statements which alter the default
|
||
startfile prefix to the end of the file. Note that the
|
||
trailing <span class="quote">“<span class=
|
||
"quote">/</span>”</span> in <span class=
|
||
"quote">“<span class=
|
||
"quote">/tools/lib/</span>”</span> is required.
|
||
Finally, we use <span class=
|
||
"command"><strong>touch</strong></span> to update the
|
||
timestamp on the copied files. When used in conjunction with
|
||
<span class="command"><strong>cp -u</strong></span>, this
|
||
prevents unexpected changes to the original files in case the
|
||
commands are inadvertently run twice.
|
||
</p>
|
||
<p>
|
||
Finally, on x86_64 hosts, set the default directory name for
|
||
64-bit libraries to <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>
|
||
The GCC documentation recommends building GCC in a dedicated
|
||
build directory:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v build
|
||
cd build</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare GCC for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">../configure \
|
||
--target=$LFS_TGT \
|
||
--prefix=/tools \
|
||
--with-glibc-version=2.11 \
|
||
--with-sysroot=$LFS \
|
||
--with-newlib \
|
||
--without-headers \
|
||
--with-local-prefix=/tools \
|
||
--with-native-system-header-dir=/tools/include \
|
||
--disable-nls \
|
||
--disable-shared \
|
||
--disable-multilib \
|
||
--disable-decimal-float \
|
||
--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>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-glibc-version=2.11</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option ensures the package will be compatible with
|
||
the host's version of glibc. It is set to the minimum
|
||
glibc requirement specified in the <a class="xref"
|
||
href="#ch-partitioning-hostreqs" title=
|
||
"2.2. Host System Requirements">Host System
|
||
Requirements</a>.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-newlib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Since a working C library is not yet available, this
|
||
ensures that the inhibit_libc constant is defined when
|
||
building libgcc. This prevents the compiling of any
|
||
code that requires libc support.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--without-headers</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
When creating a complete cross-compiler, GCC requires
|
||
standard headers compatible with the target system. For
|
||
our purposes these headers will not be needed. This
|
||
switch prevents GCC from looking for them.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-local-prefix=/tools</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
The local prefix is the location in the system that GCC
|
||
will search for locally installed include files. The
|
||
default is <code class="filename">/usr/local</code>.
|
||
Setting this to <code class="filename">/tools</code>
|
||
helps keep the host location of <code class=
|
||
"filename">/usr/local</code> out of this GCC's search
|
||
path.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-native-system-header-dir=/tools/include</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
By default, GCC searches <code class=
|
||
"filename">/usr/include</code> for system headers. In
|
||
conjunction with the sysroot switch, this would
|
||
normally translate to <code class=
|
||
"filename">$LFS/usr/include</code>. However the headers
|
||
that will be installed in the next two sections will go
|
||
to <code class="filename">$LFS/tools/include</code>.
|
||
This switch ensures that gcc will find them correctly.
|
||
In the second pass of GCC, this same switch will ensure
|
||
that no headers from the host system are found.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-shared</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This switch forces GCC to link its internal libraries
|
||
statically. We do this to avoid possible issues with
|
||
the host system.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-decimal-float,
|
||
--disable-threads, --disable-libatomic,
|
||
--disable-libgomp, --disable-libquadmath,
|
||
--disable-libssp, --disable-libvtv,
|
||
--disable-libstdcxx</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
These switches disable support for the decimal floating
|
||
point extension, threading, libatomic, libgomp,
|
||
libquadmath, libssp, libvtv, and the C++ standard
|
||
library respectively. These features will fail to
|
||
compile when building a cross-compiler and are not
|
||
necessary for the task of cross-compiling the temporary
|
||
libc.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-multilib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
On x86_64, LFS does not yet support a multilib
|
||
configuration. This switch is harmless for x86.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-languages=c,c++</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option ensures that only the C and C++ compilers
|
||
are built. These are the only languages needed now.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile GCC by running:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. At this point, the test suite
|
||
would normally be run, but, as mentioned before, the test
|
||
suite framework is not in place yet. The benefits of running
|
||
the tests at this point are minimal since the programs from
|
||
this first pass will soon be replaced.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-gcc" title=
|
||
"6.25.2. Contents of GCC">Section 6.25.2,
|
||
“Contents of GCC.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-linux-headers" name=
|
||
"ch-tools-linux-headers"></a>5.6. Linux-5.5.3 API
|
||
Headers
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Linux API Headers (in linux-5.5.3.tar.xz) expose the
|
||
kernel's API for use by Glibc.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">1 GB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.6.1. Installation of Linux API Headers
|
||
</h3>
|
||
<p>
|
||
The Linux kernel needs to expose an Application Programming
|
||
Interface (API) for the system's C library (Glibc in LFS) to
|
||
use. This is done by way of sanitizing various C header files
|
||
that are shipped in the Linux kernel source tarball.
|
||
</p>
|
||
<p>
|
||
Make sure there are no stale files embedded in the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make mrproper</kbd>
|
||
</pre>
|
||
<p>
|
||
Now extract the user-visible kernel headers from the source.
|
||
The recommended make target <span class=
|
||
"quote">“<span class=
|
||
"quote">headers_install</span>”</span> cannot be used,
|
||
because it requires <span class="application">rsync</span>,
|
||
which may not be available. The headers are first placed in
|
||
<code class="filename">./usr</code>, then copied to the
|
||
needed location.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make headers
|
||
</kbd><kbd class="command">cp -rv usr/include/* /tools/include</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-linux-headers" title=
|
||
"6.7.2. Contents of Linux API Headers">Section 6.7.2,
|
||
“Contents of Linux API Headers.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-glibc" name=
|
||
"ch-tools-glibc"></a>5.7. Glibc-2.31
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Glibc package contains the main C library. This library
|
||
provides the basic routines for allocating memory, searching
|
||
directories, opening and closing files, reading and writing
|
||
files, string handling, pattern matching, arithmetic, and so
|
||
on.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">4.5 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">896 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.7.1. Installation of Glibc
|
||
</h3>
|
||
<p>
|
||
The Glibc documentation recommends building Glibc in a
|
||
dedicated build directory:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v build
|
||
cd build</kbd>
|
||
</pre>
|
||
<p>
|
||
Next, prepare Glibc for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">../configure \
|
||
--prefix=/tools \
|
||
--host=$LFS_TGT \
|
||
--build=$(../scripts/config.guess) \
|
||
--enable-kernel=3.2 \
|
||
--with-headers=/tools/include</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</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>
|
||
The combined effect of these switches is that Glibc's
|
||
build system configures itself to cross-compile, using
|
||
the cross-linker and cross-compiler in <code class=
|
||
"filename">/tools</code>.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-kernel=3.2</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This tells Glibc to compile the library with support
|
||
for 3.2 and later Linux kernels. Workarounds for older
|
||
kernels are not enabled.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-headers=/tools/include</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This tells Glibc to compile itself against the headers
|
||
recently installed to the tools directory, so that it
|
||
knows exactly what features the kernel has and can
|
||
optimize itself accordingly.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
During this stage the following warning might appear:
|
||
</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>
|
||
The missing or incompatible <span class=
|
||
"command"><strong>msgfmt</strong></span> program is generally
|
||
harmless. This <span class=
|
||
"command"><strong>msgfmt</strong></span> program is part of
|
||
the Gettext package which the host distribution should
|
||
provide.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
There have been reports that this package may fail when
|
||
building as a "parallel make". If this occurs, rerun the
|
||
make command with a "-j1" option.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<div class="admon caution">
|
||
<h3>
|
||
Caution
|
||
</h3>
|
||
<p>
|
||
At this point, it is imperative to stop and ensure that the
|
||
basic functions (compiling and linking) of the new
|
||
toolchain are working as expected. To perform a sanity
|
||
check, run the following commands:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">echo 'int main(){}' > dummy.c
|
||
$LFS_TGT-gcc dummy.c
|
||
readelf -l a.out | grep ': /tools'</kbd>
|
||
</pre>
|
||
<p>
|
||
If everything is working correctly, there should be no
|
||
errors, and the output of the last command will be of the
|
||
form:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class=
|
||
"computeroutput">[Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]</code>
|
||
</pre>
|
||
<p>
|
||
Note that for 32-bit machines, the interpreter name will be
|
||
<code class="filename">/tools/lib/ld-linux.so.2</code>.
|
||
</p>
|
||
<p>
|
||
If the output is not shown as above or there was no output
|
||
at all, then something is wrong. Investigate and retrace
|
||
the steps to find out where the problem is and correct it.
|
||
This issue must be resolved before continuing on.
|
||
</p>
|
||
<p>
|
||
Once all is well, clean up the test files:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">rm -v dummy.c a.out</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
Building Binutils in the section after next will serve as
|
||
an additional check that the toolchain has been built
|
||
properly. If Binutils fails to build, it is an indication
|
||
that something has gone wrong with the previous Binutils,
|
||
GCC, or Glibc installations.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-glibc" title=
|
||
"6.9.3. Contents of Glibc">Section 6.9.3,
|
||
“Contents of Glibc.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-libstdcpp" name=
|
||
"ch-tools-libstdcpp"></a>5.8. Libstdc++ from
|
||
GCC-9.2.0
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
Libstdc++ is the standard C++ library. It is needed to
|
||
compile C++ code (part of GCC is written in C++), but we had
|
||
to defer its installation when we built <a class="xref" href=
|
||
"#ch-tools-gcc-pass1" title=
|
||
"5.5. GCC-9.2.0 - Pass 1">gcc-pass1</a> because it
|
||
depends on glibc, which was not yet available in /tools.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.5 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">878 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.8.1. Installation of Target Libstdc++
|
||
</h3>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
<span class="application">Libstdc++</span> is part of the
|
||
GCC sources. You should first unpack the GCC tarball and
|
||
change to the <code class="filename">gcc-9.2.0</code>
|
||
directory.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Create a separate build directory for Libstdc++ and enter it:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v build
|
||
cd build</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Libstdc++ for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">../libstdc++-v3/configure \
|
||
--host=$LFS_TGT \
|
||
--prefix=/tools \
|
||
--disable-multilib \
|
||
--disable-nls \
|
||
--disable-libstdcxx-threads \
|
||
--disable-libstdcxx-pch \
|
||
--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/9.2.0</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--host=...</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Indicates to use the cross compiler we have just built
|
||
instead of the one in <code class=
|
||
"filename">/usr/bin</code>.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-libstdcxx-threads</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Since gcc-pass1 is built without thread support, the
|
||
C++ thread library cannot be built either.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-libstdcxx-pch</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This switch prevents the installation of precompiled
|
||
include files, which are not needed at this stage.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/9.2.0</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This is the location where the standard include files
|
||
are searched by the C++ compiler. In a normal build,
|
||
this information is automatically passed to the
|
||
Libstdc++ <span class=
|
||
"command"><strong>configure</strong></span> options
|
||
from the top level directory. In our case, this
|
||
information must be explicitly given.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile libstdc++ by running:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the library:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-gcc" title=
|
||
"6.25.2. Contents of GCC">Section 6.25.2,
|
||
“Contents of GCC.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-binutils-pass2" name=
|
||
"ch-tools-binutils-pass2"></a>5.9. Binutils-2.34 -
|
||
Pass 2
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Binutils package contains a linker, an assembler, and
|
||
other tools for handling object files.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">1.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">651 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.9.1. Installation of Binutils
|
||
</h3>
|
||
<p>
|
||
Create a separate build directory again:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v build
|
||
cd build</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Binutils for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">CC=$LFS_TGT-gcc \
|
||
AR=$LFS_TGT-ar \
|
||
RANLIB=$LFS_TGT-ranlib \
|
||
../configure \
|
||
--prefix=/tools \
|
||
--disable-nls \
|
||
--disable-werror \
|
||
--with-lib-path=/tools/lib \
|
||
--with-sysroot</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the new configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>CC=$LFS_TGT-gcc AR=$LFS_TGT-ar
|
||
RANLIB=$LFS_TGT-ranlib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Because this is really a native build of Binutils,
|
||
setting these variables ensures that the build system
|
||
uses the cross-compiler and associated tools instead of
|
||
the ones on the host system.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-lib-path=/tools/lib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This tells the configure script to specify the library
|
||
search path during the compilation of Binutils,
|
||
resulting in <code class="filename">/tools/lib</code>
|
||
being passed to the linker. This prevents the linker
|
||
from searching through library directories on the host.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-sysroot</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This defines a default (non-existent) sysroot directory
|
||
<code class="filename">/tools/$LFS_TGT/sys-root</code>.
|
||
It is useful when looking for shared objects which are
|
||
required by other shared objects explicitly included on
|
||
the linker's command line. Those objects are searched
|
||
into the directories listed in <code class=
|
||
"filename"><sysroot>/etc/ld.so.conf</code>, and
|
||
failing that, into the linker search path, which is
|
||
right. If this switch is not given, <code class=
|
||
"filename">/etc/ld.so.conf</code> on the host is used,
|
||
that is, programs may be linked to libraries on the
|
||
host, which we want to avoid.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
Now prepare the linker for the <span class=
|
||
"quote">“<span class=
|
||
"quote">Re-adjusting</span>”</span> phase in the next
|
||
chapter:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make -C ld clean
|
||
make -C ld LIB_PATH=/usr/lib:/lib
|
||
cp -v ld/ld-new /tools/bin</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the make parameters:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code>-C ld
|
||
clean</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This tells the make program to remove all compiled
|
||
files in the <code class="filename">ld</code>
|
||
subdirectory.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code>-C ld
|
||
LIB_PATH=/usr/lib:/lib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option rebuilds everything in the <code class=
|
||
"filename">ld</code> subdirectory. Specifying the
|
||
<code class="envar">LIB_PATH</code> Makefile variable
|
||
on the command line allows us to override the default
|
||
value of the temporary tools and point it to the proper
|
||
final path. The value of this variable specifies the
|
||
linker's default library search path. This preparation
|
||
is used in the next chapter.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-binutils" title=
|
||
"6.18.2. Contents of Binutils">Section 6.18.2,
|
||
“Contents of Binutils.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-gcc-pass2" name=
|
||
"ch-tools-gcc-pass2"></a>5.10. GCC-9.2.0 - Pass 2
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The GCC package contains the GNU compiler collection, which
|
||
includes the C and C++ compilers.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">13 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">3.7 GB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.10.1. Installation of GCC
|
||
</h3>
|
||
<p>
|
||
Our first build of GCC has installed a couple of internal
|
||
system headers. Normally one of them, <code class=
|
||
"filename">limits.h</code>, will in turn include the
|
||
corresponding system <code class="filename">limits.h</code>
|
||
header, in this case, <code class=
|
||
"filename">/tools/include/limits.h</code>. However, at the
|
||
time of the first build of gcc <code class=
|
||
"filename">/tools/include/limits.h</code> did not exist, so
|
||
the internal header that GCC installed is a partial,
|
||
self-contained file and does not include the extended
|
||
features of the system header. This was adequate for building
|
||
the temporary libc, but this build of GCC now requires the
|
||
full internal header. Create a full version of the internal
|
||
header using a command that is identical to what the GCC
|
||
build system does in normal circumstances:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
|
||
`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.h</kbd>
|
||
</pre>
|
||
<p>
|
||
Once again, change the location of GCC's default dynamic
|
||
linker to use the one installed in <code class=
|
||
"filename">/tools</code>.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">for file in gcc/config/{linux,i386/linux{,64}}.h
|
||
do
|
||
cp -uv $file{,.orig}
|
||
sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
|
||
-e 's@/usr@/tools@g' $file.orig > $file
|
||
echo '
|
||
#undef STANDARD_STARTFILE_PREFIX_1
|
||
#undef STANDARD_STARTFILE_PREFIX_2
|
||
#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
|
||
#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
|
||
touch $file.orig
|
||
done</kbd>
|
||
</pre>
|
||
<p>
|
||
If building on x86_64, change the default directory name for
|
||
64-bit libraries to <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>
|
||
As in the first build of GCC it requires the GMP, MPFR and
|
||
MPC packages. Unpack the tarballs and move them into the
|
||
required directory names:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">tar -xf ../mpfr-4.0.2.tar.xz
|
||
mv -v mpfr-4.0.2 mpfr
|
||
tar -xf ../gmp-6.2.0.tar.xz
|
||
mv -v gmp-6.2.0 gmp
|
||
tar -xf ../mpc-1.1.0.tar.gz
|
||
mv -v mpc-1.1.0 mpc</kbd>
|
||
</pre>
|
||
<p>
|
||
Now fix a problem introduced by Glibc-2.31:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -e '1161 s|^|//|' \
|
||
-i libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc</kbd>
|
||
</pre>
|
||
<p>
|
||
Create a separate build directory again:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v build
|
||
cd build</kbd>
|
||
</pre>
|
||
<p>
|
||
Before starting to build GCC, remember to unset any
|
||
environment variables that override the default optimization
|
||
flags.
|
||
</p>
|
||
<p>
|
||
Now prepare GCC for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">CC=$LFS_TGT-gcc \
|
||
CXX=$LFS_TGT-g++ \
|
||
AR=$LFS_TGT-ar \
|
||
RANLIB=$LFS_TGT-ranlib \
|
||
../configure \
|
||
--prefix=/tools \
|
||
--with-local-prefix=/tools \
|
||
--with-native-system-header-dir=/tools/include \
|
||
--enable-languages=c,c++ \
|
||
--disable-libstdcxx-pch \
|
||
--disable-multilib \
|
||
--disable-bootstrap \
|
||
--disable-libgomp</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the new configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-languages=c,c++</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option ensures that both the C and C++ compilers
|
||
are built.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-libstdcxx-pch</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Do not build the pre-compiled header (PCH) for
|
||
<code class="filename">libstdc++</code>. It takes up a
|
||
lot of space, and we have no use for it.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-bootstrap</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
For native builds of GCC, the default is to do a
|
||
"bootstrap" build. This does not just compile GCC, but
|
||
compiles it several times. It uses the programs
|
||
compiled in a first round to compile itself a second
|
||
time, and then again a third time. The second and third
|
||
iterations are compared to make sure it can reproduce
|
||
itself flawlessly. This also implies that it was
|
||
compiled correctly. However, the LFS build method
|
||
should provide a solid compiler without the need to
|
||
bootstrap each time.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
As a finishing touch, create a symlink. Many programs and
|
||
scripts run <span class="command"><strong>cc</strong></span>
|
||
instead of <span class="command"><strong>gcc</strong></span>,
|
||
which is used to keep programs generic and therefore usable
|
||
on all kinds of UNIX systems where the GNU C compiler is not
|
||
always installed. Running <span class=
|
||
"command"><strong>cc</strong></span> leaves the system
|
||
administrator free to decide which C compiler to install:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">ln -sv gcc /tools/bin/cc</kbd>
|
||
</pre>
|
||
<div class="admon caution">
|
||
<h3>
|
||
Caution
|
||
</h3>
|
||
<p>
|
||
At this point, it is imperative to stop and ensure that the
|
||
basic functions (compiling and linking) of the new
|
||
toolchain are working as expected. To perform a sanity
|
||
check, run the following commands:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">echo 'int main(){}' > dummy.c
|
||
cc dummy.c
|
||
readelf -l a.out | grep ': /tools'</kbd>
|
||
</pre>
|
||
<p>
|
||
If everything is working correctly, there should be no
|
||
errors, and the output of the last command will be of the
|
||
form:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class=
|
||
"computeroutput">[Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]</code>
|
||
</pre>
|
||
<p>
|
||
Note that the dynamic linker will be
|
||
/tools/lib/ld-linux.so.2 for 32-bit machines.
|
||
</p>
|
||
<p>
|
||
If the output is not shown as above or there was no output
|
||
at all, then something is wrong. Investigate and retrace
|
||
the steps to find out where the problem is and correct it.
|
||
This issue must be resolved before continuing on. First,
|
||
perform the sanity check again, using <span class=
|
||
"command"><strong>gcc</strong></span> instead of
|
||
<span class="command"><strong>cc</strong></span>. If this
|
||
works, then the <code class="filename">/tools/bin/cc</code>
|
||
symlink is missing. Install the symlink as per above. Next,
|
||
ensure that the <code class="envar">PATH</code> is correct.
|
||
This can be checked by running <span class=
|
||
"command"><strong>echo $PATH</strong></span> and verifying
|
||
that <code class="filename">/tools/bin</code> is at the
|
||
head of the list. If the <code class="envar">PATH</code> is
|
||
wrong it could mean that you are not logged in as user
|
||
<code class="systemitem">lfs</code> or that something went
|
||
wrong back in <a class="xref" href=
|
||
"#ch-preps-settingenviron" title=
|
||
"4.4. Setting Up the Environment">Section 4.4,
|
||
“Setting Up the Environment.”</a>
|
||
</p>
|
||
<p>
|
||
Once all is well, clean up the test files:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">rm -v dummy.c a.out</kbd>
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-gcc" title=
|
||
"6.25.2. Contents of GCC">Section 6.25.2,
|
||
“Contents of GCC.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-tcl" name=
|
||
"ch-tools-tcl"></a>5.11. Tcl-8.6.10
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Tcl package contains the Tool Command Language.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.9 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">72 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.11.1. Installation of Tcl
|
||
</h3>
|
||
<p>
|
||
This package and the next two (Expect and DejaGNU) are
|
||
installed to support running the test suites for GCC and
|
||
Binutils and other packages. Installing three packages for
|
||
testing purposes may seem excessive, but it is very
|
||
reassuring, if not essential, to know that the most important
|
||
tools are working properly. Even if the test suites are not
|
||
run in this chapter (they are not mandatory), these packages
|
||
are required to run the test suites in <a class="xref" href=
|
||
"#chapter-building-system" title=
|
||
"Chapter 6. Installing Basic System Software">Chapter 6</a>.
|
||
</p>
|
||
<p>
|
||
Note that the Tcl package used here is a minimal version
|
||
needed to run the LFS tests. For the full package, see the
|
||
<a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/general/tcl.html">
|
||
BLFS Tcl procedures</a>.
|
||
</p>
|
||
<p>
|
||
Prepare Tcl for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cd unix
|
||
./configure --prefix=/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
Build the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the Tcl test suite anyway, issue the
|
||
following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">TZ=UTC make test</kbd>
|
||
</pre>
|
||
<p>
|
||
The Tcl test suite may experience failures under certain host
|
||
conditions that are not fully understood. Therefore, test
|
||
suite failures here are not surprising, and are not
|
||
considered critical. The <em class=
|
||
"parameter"><code>TZ=UTC</code></em> parameter sets the time
|
||
zone to Coordinated Universal Time (UTC), but only for the
|
||
duration of the test suite run. This ensures that the clock
|
||
tests are exercised correctly. Details on the <code class=
|
||
"envar">TZ</code> environment variable are provided in
|
||
<a class="xref" href="#chapter-config" title=
|
||
"Chapter 7. System Configuration">Chapter 7</a>.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
Make the installed library writable so debugging symbols can
|
||
be removed later:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">chmod -v u+w /tools/lib/libtcl8.6.so</kbd>
|
||
</pre>
|
||
<p>
|
||
Install Tcl's headers. The next package, Expect, requires
|
||
them to build.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install-private-headers</kbd>
|
||
</pre>
|
||
<p>
|
||
Now make a necessary symbolic link:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">ln -sv tclsh8.6 /tools/bin/tclsh</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-tcl" name="contents-tcl"></a>5.11.2. Contents
|
||
of Tcl
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">tclsh (link to tclsh8.6) and
|
||
tclsh8.6</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed library:</strong>
|
||
<span class="segbody">libtcl8.6.so,
|
||
libtclstub8.6.a</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504930277920" name=
|
||
"idm46504930277920"></a>Short Descriptions
|
||
</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>
|
||
The Tcl command shell
|
||
</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>
|
||
A link to 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>
|
||
The Tcl library
|
||
</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>
|
||
The Tcl Stub library
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-expect" name=
|
||
"ch-tools-expect"></a>5.12. Expect-5.45.4
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Expect package contains a program for carrying out
|
||
scripted dialogues with other interactive programs.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">4.0 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.12.1. Installation of Expect
|
||
</h3>
|
||
<p>
|
||
First, force Expect's configure script to use <code class=
|
||
"filename">/bin/stty</code> instead of a <code class=
|
||
"filename">/usr/local/bin/stty</code> it may find on the host
|
||
system. This will ensure that our test suite tools remain
|
||
sane for the final builds of our toolchain:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cp -v configure{,.orig}
|
||
sed 's:/usr/local/bin:/bin:' configure.orig > configure</kbd>
|
||
</pre>
|
||
<p>
|
||
Now prepare Expect for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools \
|
||
--with-tcl=/tools/lib \
|
||
--with-tclinclude=/tools/include</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-tcl=/tools/lib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This ensures that the configure script finds the Tcl
|
||
installation in the temporary tools location instead of
|
||
possibly locating an existing one on the host system.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-tclinclude=/tools/include</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This explicitly tells Expect where to find Tcl's
|
||
internal headers. Using this option avoids conditions
|
||
where <span class=
|
||
"command"><strong>configure</strong></span> fails
|
||
because it cannot automatically discover the location
|
||
of Tcl's headers.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Build the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the Expect test suite anyway, issue
|
||
the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make test</kbd>
|
||
</pre>
|
||
<p>
|
||
Note that the Expect test suite is known to experience
|
||
failures under certain host conditions that are not within
|
||
our control. Therefore, test suite failures here are not
|
||
surprising and are not considered critical.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make SCRIPTS="" install</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the make parameter:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>SCRIPTS=""</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This prevents installation of the supplementary Expect
|
||
scripts, which are not needed.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-expect" name="contents-expect"></a>5.12.2.
|
||
Contents of Expect
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed program:</strong>
|
||
<span class="segbody">expect</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed library:</strong>
|
||
<span class="segbody">libexpect-5.45.so</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504930228768" name=
|
||
"idm46504930228768"></a>Short Descriptions
|
||
</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>
|
||
Communicates with other interactive programs
|
||
according to a script
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libexpect" name="libexpect"></a><span class=
|
||
"term"><code class=
|
||
"filename">libexpect-5.45.so</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Contains functions that allow Expect to be used as
|
||
a Tcl extension or to be used directly from C or
|
||
C++ (without Tcl)
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-dejagnu" name=
|
||
"ch-tools-dejagnu"></a>5.13. DejaGNU-1.6.2
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The DejaGNU package contains a framework for testing other
|
||
programs.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">3.2 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.13.1. Installation of DejaGNU
|
||
</h3>
|
||
<p>
|
||
Prepare DejaGNU for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
Build and install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-dejagnu" name="contents-dejagnu"></a>5.13.2.
|
||
Contents of DejaGNU
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed program:</strong>
|
||
<span class="segbody">runtest</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504930201952" name=
|
||
"idm46504930201952"></a>Short Descriptions
|
||
</h4>
|
||
<table border="0" class="variablelist">
|
||
<colgroup>
|
||
<col align="left" valign="top" />
|
||
<col />
|
||
</colgroup>
|
||
<tbody>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="runtest" name="runtest"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>runtest</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
A wrapper script that locates the proper
|
||
<span class=
|
||
"command"><strong>expect</strong></span> shell and
|
||
then runs DejaGNU
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-m4" name=
|
||
"ch-tools-m4"></a>5.14. M4-1.4.18
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The M4 package contains a macro processor.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">20 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.14.1. Installation of M4
|
||
</h3>
|
||
<p>
|
||
First, make some fixes introduced by glibc-2.28:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
|
||
echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare M4 for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the M4 test suite anyway, issue the
|
||
following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-m4" title=
|
||
"6.16.2. Contents of M4">Section 6.16.2,
|
||
“Contents of M4.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-ncurses" name=
|
||
"ch-tools-ncurses"></a>5.15. Ncurses-6.2
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Ncurses package contains libraries for
|
||
terminal-independent handling of character screens.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.6 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">41 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.15.1. Installation of Ncurses
|
||
</h3>
|
||
<p>
|
||
First, ensure that <span class=
|
||
"command"><strong>gawk</strong></span> is found first during
|
||
configuration:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i s/mawk// configure</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Ncurses for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools \
|
||
--with-shared \
|
||
--without-debug \
|
||
--without-ada \
|
||
--enable-widec \
|
||
--enable-overwrite</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--without-ada</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This ensures that Ncurses does not build support for
|
||
the Ada compiler which may be present on the host but
|
||
will not be available once we enter the <span class=
|
||
"command"><strong>chroot</strong></span> environment.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-overwrite</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This tells Ncurses to install its header files into
|
||
<code class="filename">/tools/include</code>, instead
|
||
of <code class=
|
||
"filename">/tools/include/ncurses</code>, to ensure
|
||
that other packages can find the Ncurses headers
|
||
successfully.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-widec</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This switch causes wide-character libraries (e.g.,
|
||
<code class="filename">libncursesw.so.6.2</code>) to be
|
||
built instead of normal ones (e.g., <code class=
|
||
"filename">libncurses.so.6.2</code>). These
|
||
wide-character libraries are usable in both multibyte
|
||
and traditional 8-bit locales, while normal libraries
|
||
work properly only in 8-bit locales. Wide-character and
|
||
normal libraries are source-compatible, but not
|
||
binary-compatible.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
This package has a test suite, but it can only be run after
|
||
the package has been installed. The tests reside in the
|
||
<code class="filename">test/</code> directory. See the
|
||
<code class="filename">README</code> file in that directory
|
||
for further details.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install
|
||
ln -s libncursesw.so /tools/lib/libncurses.so</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-ncurses" title=
|
||
"6.27.2. Contents of Ncurses">Section 6.27.2,
|
||
“Contents of Ncurses.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-bash" name=
|
||
"ch-tools-bash"></a>5.16. Bash-5.0
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Bash package contains the Bourne-Again SHell.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.4 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">67 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.16.1. Installation of Bash
|
||
</h3>
|
||
<p>
|
||
Prepare Bash for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools --without-bash-malloc</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--without-bash-malloc</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option turns off the use of Bash's memory
|
||
allocation (<code class="function">malloc</code>)
|
||
function which is known to cause segmentation faults.
|
||
By turning this option off, Bash will use the
|
||
<code class="function">malloc</code> functions from
|
||
Glibc which are more stable.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the Bash test suite anyway, issue the
|
||
following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make tests</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
Make a link for the programs that use <span class=
|
||
"command"><strong>sh</strong></span> for a shell:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">ln -sv bash /tools/bin/sh</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-bash" title=
|
||
"6.35.2. Contents of Bash">Section 6.35.2,
|
||
“Contents of Bash.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-bison" name=
|
||
"ch-tools-bison"></a>5.17. Bison-3.5.2
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Bison package contains a parser generator.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.3 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">43 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.17.1. Installation of Bison
|
||
</h3>
|
||
<p>
|
||
Prepare Bison for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-bison" title=
|
||
"6.32.2. Contents of Bison">Section 6.32.2,
|
||
“Contents of Bison.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-bzip2" name=
|
||
"ch-tools-bzip2"></a>5.18. Bzip2-1.0.8
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Bzip2 package contains programs for compressing and
|
||
decompressing files. Compressing text files with <span class=
|
||
"command"><strong>bzip2</strong></span> yields a much better
|
||
compression percentage than with the traditional <span class=
|
||
"command"><strong>gzip</strong></span>.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">6.4 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.18.1. Installation of Bzip2
|
||
</h3>
|
||
<p>
|
||
The Bzip2 package does not contain a <span class=
|
||
"command"><strong>configure</strong></span> script. There are
|
||
two <code class="filename">Makefile</code>, one for the
|
||
shared library, and the other for the static library. Since
|
||
we need both, We do the compilation in two stages. First the
|
||
shared library:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make -f Makefile-libbz2_so
|
||
make clean</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the make parameter:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code>-f
|
||
Makefile-libbz2_so</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This will cause Bzip2 to be built using a different
|
||
<code class="filename">Makefile</code> file, in this
|
||
case the <code class=
|
||
"filename">Makefile-libbz2_so</code> file, which
|
||
creates a dynamic <code class=
|
||
"filename">libbz2.so</code> library and links the Bzip2
|
||
utilities against it.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile and test the package with:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make PREFIX=/tools install
|
||
cp -v bzip2-shared /tools/bin/bzip2
|
||
cp -av libbz2.so* /tools/lib
|
||
ln -sv libbz2.so.1.0 /tools/lib/libbz2.so</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-bzip2" title=
|
||
"6.12.2. Contents of Bzip2">Section 6.12.2,
|
||
“Contents of Bzip2.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-coreutils" name=
|
||
"ch-tools-coreutils"></a>5.19. Coreutils-8.31
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Coreutils package contains utilities for showing and
|
||
setting the basic system characteristics.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.7 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">157 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.19.1. Installation of Coreutils
|
||
</h3>
|
||
<p>
|
||
Prepare Coreutils for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">./configure --prefix=/tools --enable-install-program=hostname</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><code class=
|
||
"envar">--enable-install-program=hostname</code></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This enables the <span class=
|
||
"command"><strong>hostname</strong></span> binary to be
|
||
built and installed – it is disabled by default
|
||
but is required by the Perl test suite.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the Coreutils test suite anyway,
|
||
issue the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make RUN_EXPENSIVE_TESTS=yes check</kbd>
|
||
</pre>
|
||
<p>
|
||
The <em class=
|
||
"parameter"><code>RUN_EXPENSIVE_TESTS=yes</code></em>
|
||
parameter tells the test suite to run several additional
|
||
tests that are considered relatively expensive (in terms of
|
||
CPU power and memory usage) on some platforms, but generally
|
||
are not a problem on Linux.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-coreutils" title=
|
||
"6.54.2. Contents of Coreutils">Section 6.54.2,
|
||
“Contents of Coreutils.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-diffutils" name=
|
||
"ch-tools-diffutils"></a>5.20. Diffutils-3.7
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Diffutils package contains programs that show the
|
||
differences between files or directories.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">26 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.20.1. Installation of Diffutils
|
||
</h3>
|
||
<p>
|
||
Prepare Diffutils for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the Diffutils test suite anyway,
|
||
issue the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-diffutils" title=
|
||
"6.56.2. Contents of Diffutils">Section 6.56.2,
|
||
“Contents of Diffutils.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-file" name=
|
||
"ch-tools-file"></a>5.21. File-5.38
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The File package contains a utility for determining the type
|
||
of a given file or files.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">20 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.21.1. Installation of File
|
||
</h3>
|
||
<p>
|
||
Prepare File for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the File test suite anyway, issue the
|
||
following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-file" title=
|
||
"6.14.2. Contents of File">Section 6.14.2,
|
||
“Contents of File.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-findutils" name=
|
||
"ch-tools-findutils"></a>5.22. Findutils-4.7.0
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Findutils package contains programs to find files. These
|
||
programs are provided to recursively search through a
|
||
directory tree and to create, maintain, and search a database
|
||
(often faster than the recursive find, but unreliable if the
|
||
database has not been recently updated).
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.3 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">39 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.22.1. Installation of Findutils
|
||
</h3>
|
||
<p>
|
||
Prepare Findutils for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the Findutils test suite anyway,
|
||
issue the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-findutils" title=
|
||
"6.58.2. Contents of Findutils">Section 6.58.2,
|
||
“Contents of Findutils.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-gawk" name=
|
||
"ch-tools-gawk"></a>5.23. Gawk-5.0.1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Gawk package contains programs for manipulating text
|
||
files.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">46 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.23.1. Installation of Gawk
|
||
</h3>
|
||
<p>
|
||
Prepare Gawk for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the Gawk test suite anyway, issue the
|
||
following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-gawk" title=
|
||
"6.57.2. Contents of Gawk">Section 6.57.2,
|
||
“Contents of Gawk.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-gettext" name=
|
||
"ch-tools-gettext"></a>5.24. Gettext-0.20.1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Gettext package contains utilities for
|
||
internationalization and localization. These allow programs
|
||
to be compiled with NLS (Native Language Support), enabling
|
||
them to output messages in the user's native language.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">1.6 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">300 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.24.1. Installation of Gettext
|
||
</h3>
|
||
<p>
|
||
For our temporary set of tools, we only need to install three
|
||
programs from Gettext.
|
||
</p>
|
||
<p>
|
||
Prepare Gettext for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --disable-shared</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure option:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-shared</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
We do not need to install any of the shared Gettext
|
||
libraries at this time, therefore there is no need to
|
||
build them.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Due to the limited environment, running the test suite at
|
||
this stage is not recommended.
|
||
</p>
|
||
<p>
|
||
Install the <span class=
|
||
"command"><strong>msgfmt</strong></span>, <span class=
|
||
"command"><strong>msgmerge</strong></span> and <span class=
|
||
"command"><strong>xgettext</strong></span> programs:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /tools/bin</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-gettext" title=
|
||
"6.47.2. Contents of Gettext">Section 6.47.2,
|
||
“Contents of Gettext.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-grep" name=
|
||
"ch-tools-grep"></a>5.25. Grep-3.4
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Grep package contains programs for searching through
|
||
files.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">25 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.25.1. Installation of Grep
|
||
</h3>
|
||
<p>
|
||
Prepare Grep for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the Grep test suite anyway, issue the
|
||
following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-grep" title=
|
||
"6.34.2. Contents of Grep">Section 6.34.2,
|
||
“Contents of Grep.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-gzip" name=
|
||
"ch-tools-gzip"></a>5.26. Gzip-1.10
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Gzip package contains programs for compressing and
|
||
decompressing files.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">10 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.26.1. Installation of Gzip
|
||
</h3>
|
||
<p>
|
||
Prepare Gzip for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the Gzip test suite anyway, issue the
|
||
following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-gzip" title=
|
||
"6.62.2. Contents of Gzip">Section 6.62.2,
|
||
“Contents of Gzip.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-make" name=
|
||
"ch-tools-make"></a>5.27. Make-4.3
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Make package contains a program for compiling packages.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">16 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.27.1. Installation of Make
|
||
</h3>
|
||
<p>
|
||
Prepare Make for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools --without-guile</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure option:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--without-guile</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This ensures that Make-4.3 won't link against Guile
|
||
libraries, which may be present on the host system, but
|
||
won't be available within the <span class=
|
||
"command"><strong>chroot</strong></span> environment in
|
||
the next chapter.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the Make test suite anyway, issue the
|
||
following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-make" title=
|
||
"6.67.2. Contents of Make">Section 6.67.2,
|
||
“Contents of Make.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-patch" name=
|
||
"ch-tools-patch"></a>5.28. Patch-2.7.6
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Patch package contains a program for modifying or
|
||
creating files by applying a <span class=
|
||
"quote">“<span class="quote">patch</span>”</span>
|
||
file typically created by the <span class=
|
||
"command"><strong>diff</strong></span> program.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">13 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.28.1. Installation of Patch
|
||
</h3>
|
||
<p>
|
||
Prepare Patch for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the Patch test suite anyway, issue
|
||
the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-patch" title=
|
||
"6.68.2. Contents of Patch">Section 6.68.2,
|
||
“Contents of Patch.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-perl" name=
|
||
"ch-tools-perl"></a>5.29. Perl-5.30.1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Perl package contains the Practical Extraction and Report
|
||
Language.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">1.5 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">275 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.29.1. Installation of Perl
|
||
</h3>
|
||
<p>
|
||
Prepare Perl for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">sh Configure -des -Dprefix=/tools -Dlibs=-lm -Uloclibpth -Ulocincpth</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the Configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>-des</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This is a combination of three options: -d uses
|
||
defaults for all items; -e ensures completion of all
|
||
tasks; -s silences non-essential output.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>-Uloclibpth</code></em> and <em class=
|
||
"parameter"><code>-Ulocincpth</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
These entries undefine variables that cause the
|
||
configuration to search for locally installed
|
||
components that may exist on the host system.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Build the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Although Perl comes with a test suite, it would be better to
|
||
wait until it is installed in the next chapter.
|
||
</p>
|
||
<p>
|
||
Only a few of the utilities and libraries need to be
|
||
installed at this time:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cp -v perl cpan/podlators/scripts/pod2man /tools/bin
|
||
mkdir -pv /tools/lib/perl5/5.30.1
|
||
cp -Rv lib/* /tools/lib/perl5/5.30.1</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-perl" title=
|
||
"6.41.2. Contents of Perl">Section 6.41.2,
|
||
“Contents of Perl.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-Python" name=
|
||
"ch-tools-Python"></a>5.30. Python-3.8.1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Python 3 package contains the Python development
|
||
environment. It is useful for object-oriented programming,
|
||
writing scripts, prototyping large programs or developing
|
||
entire applications.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">1.3 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">409 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.30.1. Installation of Python
|
||
</h3>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
There are two package files whose name starts with
|
||
<span class="quote">“<span class=
|
||
"quote">python</span>”</span>. The one to extract
|
||
from is <code class="filename">Python-3.8.1.tar.xz</code>
|
||
(notice the uppercase first letter).
|
||
</p>
|
||
</div>
|
||
<p>
|
||
This package first builds the Python interpreter, then some
|
||
standard Python modules. The main script for building modules
|
||
is written in Python, and uses hard-coded paths to the host
|
||
<code class="filename">/usr/include</code> and <code class=
|
||
"filename">/usr/lib</code> directories. To prevent them from
|
||
being used, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">sed -i '/def add_multiarch_paths/a \ return' setup.py</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Python for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools --without-ensurepip</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure option:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--without-ensurepip</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This switch disables the Python package installer,
|
||
which is not needed at this stage.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. The test suite requires TK and
|
||
and X Windows and cannot be run at this time.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-python" title=
|
||
"6.51.2. Contents of Python 3">Section 6.51.2,
|
||
“Contents of Python 3.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-sed" name=
|
||
"ch-tools-sed"></a>5.31. Sed-4.8
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Sed package contains a stream editor.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">21 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.31.1. Installation of Sed
|
||
</h3>
|
||
<p>
|
||
Prepare Sed for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the Sed test suite anyway, issue the
|
||
following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-sed" title=
|
||
"6.29.2. Contents of Sed">Section 6.29.2,
|
||
“Contents of Sed.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-tar" name=
|
||
"ch-tools-tar"></a>5.32. Tar-1.32
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Tar package contains an archiving program.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.3 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">38 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.32.1. Installation of Tar
|
||
</h3>
|
||
<p>
|
||
Prepare Tar for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the Tar test suite anyway, issue the
|
||
following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-tar" title=
|
||
"6.70.2. Contents of Tar">Section 6.70.2,
|
||
“Contents of Tar.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-texinfo" name=
|
||
"ch-tools-texinfo"></a>5.33. Texinfo-6.7
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Texinfo package contains programs for reading, writing,
|
||
and converting info pages.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">104 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.33.1. Installation of Texinfo
|
||
</h3>
|
||
<p>
|
||
Prepare Texinfo for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
As part of the configure process, a test is made that
|
||
indicates an error for TestXS_la-TestXS.lo. This is not
|
||
relevant for LFS and should be ignored.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the Texinfo test suite anyway, issue
|
||
the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-texinfo" title=
|
||
"6.71.2. Contents of Texinfo">Section 6.71.2,
|
||
“Contents of Texinfo.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-xz" name=
|
||
"ch-tools-xz"></a>5.34. Xz-5.2.4
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Xz package contains programs for compressing and
|
||
decompressing files. It provides capabilities for the lzma
|
||
and the newer xz compression formats. Compressing text files
|
||
with <span class="command"><strong>xz</strong></span> yields
|
||
a better compression percentage than with the traditional
|
||
<span class="command"><strong>gzip</strong></span> or
|
||
<span class="command"><strong>bzip2</strong></span> commands.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">18 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
5.34.1. Installation of Xz
|
||
</h3>
|
||
<p>
|
||
Prepare Xz for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. As discussed earlier, running
|
||
the test suite is not mandatory for the temporary tools here
|
||
in this chapter. To run the Xz test suite anyway, issue the
|
||
following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<p>
|
||
Details on this package are located in <a class="xref" href=
|
||
"#contents-xz" title=
|
||
"6.13.2. Contents of Xz">Section 6.13.2,
|
||
“Contents of Xz.”</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-stripping" name=
|
||
"ch-tools-stripping"></a>5.35. Stripping
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The steps in this section are optional, but if the LFS
|
||
partition is rather small, it is beneficial to learn that
|
||
unnecessary items can be removed. The executables and libraries
|
||
built so far contain about 70 MB of unneeded debugging symbols.
|
||
Remove those symbols with:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">strip --strip-debug /tools/lib/*
|
||
/usr/bin/strip --strip-unneeded /tools/{,s}bin/*</kbd>
|
||
</pre>
|
||
<p>
|
||
These commands will skip a number of files, reporting that it
|
||
does not recognize their file format. Most of these are scripts
|
||
instead of binaries. Also use the system strip command to
|
||
include the strip binary in /tools.
|
||
</p>
|
||
<p>
|
||
Take care <span class="emphasis"><em>not</em></span> to use
|
||
<em class="parameter"><code>--strip-unneeded</code></em> on the
|
||
libraries. The static ones would be destroyed and the toolchain
|
||
packages would need to be built all over again.
|
||
</p>
|
||
<p>
|
||
To save more, remove the documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">rm -rf /tools/{,share}/{info,man,doc}</kbd>
|
||
</pre>
|
||
<p>
|
||
Remove unneeded files:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">find /tools/{lib,libexec} -name \*.la -delete</kbd>
|
||
</pre>
|
||
<p>
|
||
At this point, you should have at least 3 GB of free space in
|
||
<code class="envar">$LFS</code> that can be used to build and
|
||
install Glibc and Gcc in the next phase. If you can build and
|
||
install Glibc, you can build and install the rest too.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-tools-changingowner" name=
|
||
"ch-tools-changingowner"></a>5.36. Changing
|
||
Ownership
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The commands in the remainder of this book must be performed
|
||
while logged in as user <code class="systemitem">root</code>
|
||
and no longer as user <code class="systemitem">lfs</code>.
|
||
Also, double check that <code class="envar">$LFS</code> is
|
||
set in <code class="systemitem">root</code>'s environment.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Currently, the <code class="filename">$LFS/tools</code>
|
||
directory is owned by the user <code class=
|
||
"systemitem">lfs</code>, a user that exists only on the host
|
||
system. If the <code class="filename">$LFS/tools</code>
|
||
directory is kept as is, the files are owned by a user ID
|
||
without a corresponding account. This is dangerous because a
|
||
user account created later could get this same user ID and
|
||
would own the <code class="filename">$LFS/tools</code>
|
||
directory and all the files therein, thus exposing these files
|
||
to possible malicious manipulation.
|
||
</p>
|
||
<p>
|
||
To avoid this issue, you could add the <code class=
|
||
"systemitem">lfs</code> user to the new LFS system later when
|
||
creating the <code class="filename">/etc/passwd</code> file,
|
||
taking care to assign it the same user and group IDs as on the
|
||
host system. Better yet, change the ownership of the
|
||
<code class="filename">$LFS/tools</code> directory to user
|
||
<code class="systemitem">root</code> by running the following
|
||
command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">chown -R root:root $LFS/tools</kbd>
|
||
</pre>
|
||
<p>
|
||
Although the <code class="filename">$LFS/tools</code> directory
|
||
can be deleted once the LFS system has been finished, it can be
|
||
retained to build additional LFS systems <span class=
|
||
"emphasis"><em>of the same book version</em></span>. How best
|
||
to backup <code class="filename">$LFS/tools</code> is a matter
|
||
of personal preference.
|
||
</p>
|
||
<div class="admon caution">
|
||
<h3>
|
||
Caution
|
||
</h3>
|
||
<p>
|
||
If you intend to keep the temporary tools for use in building
|
||
future LFS systems, <span class=
|
||
"emphasis"><em>now</em></span> is the time to back them up.
|
||
Subsequent commands in chapter 6 will alter the tools
|
||
currently in place, rendering them useless for future builds.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="part">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h1 class="title">
|
||
<a id="part3" name="part3"></a>Part III. Building
|
||
the LFS System
|
||
</h1>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="chapter" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="chapter-building-system" name=
|
||
"chapter-building-system"></a>Chapter 6. Installing
|
||
Basic System Software
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-introduction" name=
|
||
"ch-system-introduction"></a>6.1. Introduction
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
In this chapter, we enter the building site and start
|
||
constructing the LFS system in earnest. That is, we chroot into
|
||
the temporary mini Linux system, make a few final preparations,
|
||
and then begin installing the packages.
|
||
</p>
|
||
<p>
|
||
The installation of this software is straightforward. Although
|
||
in many cases the installation instructions could be made
|
||
shorter and more generic, we have opted to provide the full
|
||
instructions for every package to minimize the possibilities
|
||
for mistakes. The key to learning what makes a Linux system
|
||
work is to know what each package is used for and why you (or
|
||
the system) may need it.
|
||
</p>
|
||
<p>
|
||
We do not recommend using optimizations. They can make a
|
||
program run slightly faster, but they may also cause
|
||
compilation difficulties and problems when running the program.
|
||
If a package refuses to compile when using optimization, try to
|
||
compile it without optimization and see if that fixes the
|
||
problem. Even if the package does compile when using
|
||
optimization, there is the risk it may have been compiled
|
||
incorrectly because of the complex interactions between the
|
||
code and build tools. Also note that the <code class=
|
||
"option">-march</code> and <code class="option">-mtune</code>
|
||
options using values not specified in the book have not been
|
||
tested. This may cause problems with the toolchain packages
|
||
(Binutils, GCC and Glibc). The small potential gains achieved
|
||
in using compiler optimizations are often outweighed by the
|
||
risks. First-time builders of LFS are encouraged to build
|
||
without custom optimizations. The subsequent system will still
|
||
run very fast and be stable at the same time.
|
||
</p>
|
||
<p>
|
||
The order that packages are installed in this chapter needs to
|
||
be strictly followed to ensure that no program accidentally
|
||
acquires a path referring to <code class=
|
||
"filename">/tools</code> hard-wired into it. For the same
|
||
reason, do not compile separate packages in parallel. Compiling
|
||
in parallel may save time (especially on dual-CPU machines),
|
||
but it could result in a program containing a hard-wired path
|
||
to <code class="filename">/tools</code>, which will cause the
|
||
program to stop working when that directory is removed.
|
||
</p>
|
||
<p>
|
||
Before the installation instructions, each installation page
|
||
provides information about the package, including a concise
|
||
description of what it contains, approximately how long it will
|
||
take to build, and how much disk space is required during this
|
||
building process. Following the installation instructions,
|
||
there is a list of programs and libraries (along with brief
|
||
descriptions of these) that the package installs.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The SBU values and required disk space includes test suite
|
||
data for all applicable packages in Chapter 6.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.1.1. About libraries
|
||
</h3>
|
||
<p>
|
||
In general, the LFS editors discourage building and
|
||
installing static libraries. The original purpose for most
|
||
static libraries has been made obsolete in a modern Linux
|
||
system. In addition linking a static library into a program
|
||
can be detrimental. If an update to the library is needed to
|
||
remove a security problem, all programs that use the static
|
||
library will need to be relinked to the new library. Since
|
||
the use of static libraries is not always obvious, the
|
||
relevant programs (and the procedures needed to do the
|
||
linking) may not even be known.
|
||
</p>
|
||
<p>
|
||
In the procedures in Chapter 6, we remove or disable
|
||
installation of most static libraries. Usually this is done
|
||
by passing a <code class="option">--disable-static</code>
|
||
option to <span class=
|
||
"command"><strong>configure</strong></span>. In other cases,
|
||
alternate means are needed. In a few cases, especially glibc
|
||
and gcc, the use of static libraries remains essential to the
|
||
general package building process.
|
||
</p>
|
||
<p>
|
||
For a more complete discussion of libraries, see the
|
||
discussion <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs//view/9.1/introduction/libraries.html">
|
||
Libraries: Static or shared?</a> in the BLFS book.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-kernfs" name=
|
||
"ch-system-kernfs"></a>6.2. Preparing Virtual Kernel
|
||
File Systems
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Various file systems exported by the kernel are used to
|
||
communicate to and from the kernel itself. These file systems
|
||
are virtual in that no disk space is used for them. The content
|
||
of the file systems resides in memory.
|
||
</p>
|
||
<p>
|
||
Begin by creating directories onto which the file systems will
|
||
be mounted:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -pv $LFS/{dev,proc,sys,run}</kbd>
|
||
</pre>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.2.1. Creating Initial Device Nodes
|
||
</h3>
|
||
<p>
|
||
When the kernel boots the system, it requires the presence of
|
||
a few device nodes, in particular the <code class=
|
||
"filename">console</code> and <code class=
|
||
"filename">null</code> devices. The device nodes must be
|
||
created on the hard disk so that they are available before
|
||
<span class="command"><strong>udevd</strong></span> has been
|
||
started, and additionally when Linux is started with
|
||
<em class="parameter"><code>init=/bin/bash</code></em>.
|
||
Create the devices by running the following commands:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mknod -m 600 $LFS/dev/console c 5 1
|
||
mknod -m 666 $LFS/dev/null c 1 3</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="ch-system-bindmount" name=
|
||
"ch-system-bindmount"></a>6.2.2. Mounting and Populating /dev
|
||
</h3>
|
||
<p>
|
||
The recommended method of populating the <code class=
|
||
"filename">/dev</code> directory with devices is to mount a
|
||
virtual filesystem (such as <code class=
|
||
"systemitem">tmpfs</code>) on the <code class=
|
||
"filename">/dev</code> directory, and allow the devices to be
|
||
created dynamically on that virtual filesystem as they are
|
||
detected or accessed. Device creation is generally done
|
||
during the boot process by Udev. Since this new system does
|
||
not yet have Udev and has not yet been booted, it is
|
||
necessary to mount and populate <code class=
|
||
"filename">/dev</code> manually. This is accomplished by bind
|
||
mounting the host system's <code class="filename">/dev</code>
|
||
directory. A bind mount is a special type of mount that
|
||
allows you to create a mirror of a directory or mount point
|
||
to some other location. Use the following command to achieve
|
||
this:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mount -v --bind /dev $LFS/dev</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="ch-system-kernfsmount" name=
|
||
"ch-system-kernfsmount"></a>6.2.3. Mounting Virtual Kernel
|
||
File Systems
|
||
</h3>
|
||
<p>
|
||
Now mount the remaining virtual kernel filesystems:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620
|
||
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>The meaning of the mount options for
|
||
devpts:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>gid=5</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This ensures that all devpts-created device nodes are
|
||
owned by group ID 5. This is the ID we will use later
|
||
on for the <code class="systemitem">tty</code> group.
|
||
We use the group ID instead of a name, since the host
|
||
system might use a different ID for its <code class=
|
||
"systemitem">tty</code> group.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>mode=0620</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This ensures that all devpts-created device nodes have
|
||
mode 0620 (user readable and writable, group writable).
|
||
Together with the option above, this ensures that
|
||
devpts will create device nodes that meet the
|
||
requirements of grantpt(), meaning the Glibc
|
||
<span class="command"><strong>pt_chown</strong></span>
|
||
helper binary (which is not installed by default) is
|
||
not necessary.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
In some host systems, <code class="filename">/dev/shm</code>
|
||
is a symbolic link to <code class="filename">/run/shm</code>.
|
||
The /run tmpfs was mounted above so in this case only a
|
||
directory needs to be created.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">if [ -h $LFS/dev/shm ]; then
|
||
mkdir -pv $LFS/$(readlink $LFS/dev/shm)
|
||
fi</kbd>
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-pkgmgt" name=
|
||
"ch-system-pkgmgt"></a>6.3. Package Management
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Package Management is an often requested addition to the LFS
|
||
Book. A Package Manager allows tracking the installation of
|
||
files making it easy to remove and upgrade packages. As well as
|
||
the binary and library files, a package manager will handle the
|
||
installation of configuration files. Before you begin to
|
||
wonder, NO—this section will not talk about nor recommend
|
||
any particular package manager. What it provides is a roundup
|
||
of the more popular techniques and how they work. The perfect
|
||
package manager for you may be among these techniques or may be
|
||
a combination of two or more of these techniques. This section
|
||
briefly mentions issues that may arise when upgrading packages.
|
||
</p>
|
||
<p>
|
||
Some reasons why no package manager is mentioned in LFS or BLFS
|
||
include:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
Dealing with package management takes the focus away from
|
||
the goals of these books—teaching how a Linux
|
||
system is built.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
There are multiple solutions for package management, each
|
||
having its strengths and drawbacks. Including one that
|
||
satisfies all audiences is difficult.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<p>
|
||
There are some hints written on the topic of package
|
||
management. Visit the <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/hints/list.html">Hints
|
||
Project</a> and see if one of them fits your need.
|
||
</p>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.3.1. Upgrade Issues
|
||
</h3>
|
||
<p>
|
||
A Package Manager makes it easy to upgrade to newer versions
|
||
when they are released. Generally the instructions in the LFS
|
||
and BLFS Book can be used to upgrade to the newer versions.
|
||
Here are some points that you should be aware of when
|
||
upgrading packages, especially on a running system.
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
If Glibc needs to be upgraded to a newer version, (e.g.
|
||
from glibc-2.19 to glibc-2.20), it is safer to rebuild
|
||
LFS. Though you <span class=
|
||
"emphasis"><em>may</em></span> be able to rebuild all
|
||
the packages in their dependency order, we do not
|
||
recommend it.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
If a package containing a shared library is updated,
|
||
and if the name of the library changes, then all the
|
||
packages dynamically linked to the library need to be
|
||
recompiled to link against the newer library. (Note
|
||
that there is no correlation between the package
|
||
version and the name of the library.) For example,
|
||
consider a package foo-1.2.3 that installs a shared
|
||
library with name <code class=
|
||
"filename">libfoo.so.1</code>. Say you upgrade the
|
||
package to a newer version foo-1.2.4 that installs a
|
||
shared library with name <code class=
|
||
"filename">libfoo.so.2</code>. In this case, all
|
||
packages that are dynamically linked to <code class=
|
||
"filename">libfoo.so.1</code> need to be recompiled to
|
||
link against <code class="filename">libfoo.so.2</code>.
|
||
Note that you should not remove the previous libraries
|
||
until the dependent packages are recompiled.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.3.2. Package Management Techniques
|
||
</h3>
|
||
<p>
|
||
The following are some common package management techniques.
|
||
Before making a decision on a package manager, do some
|
||
research on the various techniques, particularly the
|
||
drawbacks of the particular scheme.
|
||
</p>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504929638000" name=
|
||
"idm46504929638000"></a>6.3.2.1. It is All in My
|
||
Head!
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Yes, this is a package management technique. Some folks do
|
||
not find the need for a package manager because they know
|
||
the packages intimately and know what files are installed
|
||
by each package. Some users also do not need any package
|
||
management because they plan on rebuilding the entire
|
||
system when a package is changed.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504929636464" name=
|
||
"idm46504929636464"></a>6.3.2.2. Install in
|
||
Separate Directories
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
This is a simplistic package management that does not need
|
||
any extra package to manage the installations. Each package
|
||
is installed in a separate directory. For example, package
|
||
foo-1.1 is installed in <code class=
|
||
"filename">/usr/pkg/foo-1.1</code> and a symlink is made
|
||
from <code class="filename">/usr/pkg/foo</code> to
|
||
<code class="filename">/usr/pkg/foo-1.1</code>. When
|
||
installing a new version foo-1.2, it is installed in
|
||
<code class="filename">/usr/pkg/foo-1.2</code> and the
|
||
previous symlink is replaced by a symlink to the new
|
||
version.
|
||
</p>
|
||
<p>
|
||
Environment variables such as <code class=
|
||
"envar">PATH</code>, <code class=
|
||
"envar">LD_LIBRARY_PATH</code>, <code class=
|
||
"envar">MANPATH</code>, <code class="envar">INFOPATH</code>
|
||
and <code class="envar">CPPFLAGS</code> need to be expanded
|
||
to include <code class="filename">/usr/pkg/foo</code>. For
|
||
more than a few packages, this scheme becomes unmanageable.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504929627760" name=
|
||
"idm46504929627760"></a>6.3.2.3. Symlink Style
|
||
Package Management
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
This is a variation of the previous package management
|
||
technique. Each package is installed similar to the
|
||
previous scheme. But instead of making the symlink, each
|
||
file is symlinked into the <code class=
|
||
"filename">/usr</code> hierarchy. This removes the need to
|
||
expand the environment variables. Though the symlinks can
|
||
be created by the user to automate the creation, many
|
||
package managers have been written using this approach. A
|
||
few of the popular ones include Stow, Epkg, Graft, and
|
||
Depot.
|
||
</p>
|
||
<p>
|
||
The installation needs to be faked, so that the package
|
||
thinks that it is installed in <code class=
|
||
"filename">/usr</code> though in reality it is installed in
|
||
the <code class="filename">/usr/pkg</code> hierarchy.
|
||
Installing in this manner is not usually a trivial task.
|
||
For example, consider that you are installing a package
|
||
libfoo-1.1. The following instructions may not install the
|
||
package properly:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr/pkg/libfoo/1.1
|
||
make
|
||
make install</kbd>
|
||
</pre>
|
||
<p>
|
||
The installation will work, but the dependent packages may
|
||
not link to libfoo as you would expect. If you compile a
|
||
package that links against libfoo, you may notice that it
|
||
is linked to <code class=
|
||
"filename">/usr/pkg/libfoo/1.1/lib/libfoo.so.1</code>
|
||
instead of <code class=
|
||
"filename">/usr/lib/libfoo.so.1</code> as you would expect.
|
||
The correct approach is to use the <code class=
|
||
"envar">DESTDIR</code> strategy to fake installation of the
|
||
package. This approach works as follows:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr
|
||
make
|
||
make DESTDIR=/usr/pkg/libfoo/1.1 install</kbd>
|
||
</pre>
|
||
<p>
|
||
Most packages support this approach, but there are some
|
||
which do not. For the non-compliant packages, you may
|
||
either need to manually install the package, or you may
|
||
find that it is easier to install some problematic packages
|
||
into <code class="filename">/opt</code>.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504929614752" name=
|
||
"idm46504929614752"></a>6.3.2.4. Timestamp Based
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
In this technique, a file is timestamped before the
|
||
installation of the package. After the installation, a
|
||
simple use of the <span class=
|
||
"command"><strong>find</strong></span> command with the
|
||
appropriate options can generate a log of all the files
|
||
installed after the timestamp file was created. A package
|
||
manager written with this approach is install-log.
|
||
</p>
|
||
<p>
|
||
Though this scheme has the advantage of being simple, it
|
||
has two drawbacks. If, during installation, the files are
|
||
installed with any timestamp other than the current time,
|
||
those files will not be tracked by the package manager.
|
||
Also, this scheme can only be used when one package is
|
||
installed at a time. The logs are not reliable if two
|
||
packages are being installed on two different consoles.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504929611696" name=
|
||
"idm46504929611696"></a>6.3.2.5. Tracing
|
||
Installation Scripts
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
In this approach, the commands that the installation
|
||
scripts perform are recorded. There are two techniques that
|
||
one can use:
|
||
</p>
|
||
<p>
|
||
The <code class="envar">LD_PRELOAD</code> environment
|
||
variable can be set to point to a library to be preloaded
|
||
before installation. During installation, this library
|
||
tracks the packages that are being installed by attaching
|
||
itself to various executables such as <span class=
|
||
"command"><strong>cp</strong></span>, <span class=
|
||
"command"><strong>install</strong></span>, <span class=
|
||
"command"><strong>mv</strong></span> and tracking the
|
||
system calls that modify the filesystem. For this approach
|
||
to work, all the executables need to be dynamically linked
|
||
without the suid or sgid bit. Preloading the library may
|
||
cause some unwanted side-effects during installation.
|
||
Therefore, it is advised that one performs some tests to
|
||
ensure that the package manager does not break anything and
|
||
logs all the appropriate files.
|
||
</p>
|
||
<p>
|
||
The second technique is to use <span class=
|
||
"command"><strong>strace</strong></span>, which logs all
|
||
system calls made during the execution of the installation
|
||
scripts.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504929605552" name=
|
||
"idm46504929605552"></a>6.3.2.6. Creating
|
||
Package Archives
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
In this scheme, the package installation is faked into a
|
||
separate tree as described in the Symlink style package
|
||
management. After the installation, a package archive is
|
||
created using the installed files. This archive is then
|
||
used to install the package either on the local machine or
|
||
can even be used to install the package on other machines.
|
||
</p>
|
||
<p>
|
||
This approach is used by most of the package managers found
|
||
in the commercial distributions. Examples of package
|
||
managers that follow this approach are RPM (which,
|
||
incidentally, is required by the <a class="ulink" href=
|
||
"http://refspecs.linuxfoundation.org/lsb.shtml">Linux
|
||
Standard Base Specification</a>), pkg-utils, Debian's apt,
|
||
and Gentoo's Portage system. A hint describing how to adopt
|
||
this style of package management for LFS systems is located
|
||
at <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/hints/downloads/files/fakeroot.txt">
|
||
http://www.linuxfromscratch.org/hints/downloads/files/fakeroot.txt</a>.
|
||
</p>
|
||
<p>
|
||
Creation of package files that include dependency
|
||
information is complex and is beyond the scope of LFS.
|
||
</p>
|
||
<p>
|
||
Slackware uses a <span class=
|
||
"command"><strong>tar</strong></span> based system for
|
||
package archives. This system purposely does not handle
|
||
package dependencies as more complex package managers do.
|
||
For details of Slackware package management, see <a class=
|
||
"ulink" href=
|
||
"http://www.slackbook.org/html/package-management.html">http://www.slackbook.org/html/package-management.html</a>.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504929599504" name=
|
||
"idm46504929599504"></a>6.3.2.7. User Based
|
||
Management
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
This scheme, unique to LFS, was devised by Matthias
|
||
Benkmann, and is available from the <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/hints/list.html">Hints
|
||
Project</a>. In this scheme, each package is installed as a
|
||
separate user into the standard locations. Files belonging
|
||
to a package are easily identified by checking the user ID.
|
||
The features and shortcomings of this approach are too
|
||
complex to describe in this section. For the details please
|
||
see the hint at <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/hints/downloads/files/more_control_and_pkg_man.txt">
|
||
http://www.linuxfromscratch.org/hints/downloads/files/more_control_and_pkg_man.txt</a>.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.3.3. Deploying LFS on Multiple Systems
|
||
</h3>
|
||
<p>
|
||
One of the advantages of an LFS system is that there are no
|
||
files that depend on the position of files on a disk system.
|
||
Cloning an LFS build to another computer with the same
|
||
architecture as the base system is as simple as using
|
||
<span class="command"><strong>tar</strong></span> on the LFS
|
||
partition that contains the root directory (about 250MB
|
||
uncompressed for a base LFS build), copying that file via
|
||
network transfer or CD-ROM to the new system and expanding
|
||
it. From that point, a few configuration files will have to
|
||
be changed. Configuration files that may need to be updated
|
||
include: <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>, and <code class=
|
||
"filename">/etc/sysconfig/ifconfig.eth0</code>.</span>
|
||
</p>
|
||
<p>
|
||
A custom kernel may need to be built for the new system
|
||
depending on differences in system hardware and the original
|
||
kernel configuration.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
There have been some reports of issues when copying between
|
||
similar but not identical architectures. For instance, the
|
||
instruction set for an Intel system is not identical with
|
||
an AMD processor and later versions of some processors may
|
||
have instructions that are unavailable in earlier versions.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Finally the new system has to be made bootable via <a class=
|
||
"xref" href="#ch-bootable-grub" title=
|
||
"8.4. Using GRUB to Set Up the Boot Process">Section 8.4,
|
||
“Using GRUB to Set Up the Boot Process”</a>.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-chroot" name=
|
||
"ch-system-chroot"></a>6.4. Entering the Chroot
|
||
Environment
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
It is time to enter the chroot environment to begin building
|
||
and installing the final LFS system. As user <code class=
|
||
"systemitem">root</code>, run the following command to enter
|
||
the realm that is, at the moment, populated with only the
|
||
temporary tools:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">chroot "$LFS" /tools/bin/env -i \
|
||
HOME=/root \
|
||
TERM="$TERM" \
|
||
PS1='(lfs chroot) \u:\w\$ ' \
|
||
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
|
||
/tools/bin/bash --login +h</kbd>
|
||
</pre>
|
||
<p>
|
||
The <em class="parameter"><code>-i</code></em> option given to
|
||
the <span class="command"><strong>env</strong></span> command
|
||
will clear all variables of the chroot environment. After that,
|
||
only the <code class="envar">HOME</code>, <code class=
|
||
"envar">TERM</code>, <code class="envar">PS1</code>, and
|
||
<code class="envar">PATH</code> variables are set again. The
|
||
<em class="parameter"><code>TERM=$TERM</code></em> construct
|
||
will set the <code class="envar">TERM</code> variable inside
|
||
chroot to the same value as outside chroot. This variable is
|
||
needed for programs like <span class=
|
||
"command"><strong>vim</strong></span> and <span class=
|
||
"command"><strong>less</strong></span> to operate properly. If
|
||
other variables are needed, such as <code class=
|
||
"envar">CFLAGS</code> or <code class="envar">CXXFLAGS</code>,
|
||
this is a good place to set them again.
|
||
</p>
|
||
<p>
|
||
From this point on, there is no need to use the <code class=
|
||
"envar">LFS</code> variable anymore, because all work will be
|
||
restricted to the LFS file system. This is because the Bash
|
||
shell is told that <code class="filename">$LFS</code> is now
|
||
the root (<code class="filename">/</code>) directory.
|
||
</p>
|
||
<p>
|
||
Notice that <code class="filename">/tools/bin</code> comes last
|
||
in the <code class="envar">PATH</code>. This means that a
|
||
temporary tool will no longer be used once its final version is
|
||
installed. This occurs when the shell does not <span class=
|
||
"quote">“<span class=
|
||
"quote">remember</span>”</span> the locations of executed
|
||
binaries—for this reason, hashing is switched off by
|
||
passing the <em class="parameter"><code>+h</code></em> option
|
||
to <span class="command"><strong>bash</strong></span>.
|
||
</p>
|
||
<p>
|
||
Note that the <span class=
|
||
"command"><strong>bash</strong></span> prompt will say
|
||
<code class="computeroutput">I have no name!</code> This is
|
||
normal because the <code class="filename">/etc/passwd</code>
|
||
file has not been created yet.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
It is important that all the commands throughout the
|
||
remainder of this chapter and the following chapters are run
|
||
from within the chroot environment. If you leave this
|
||
environment for any reason (rebooting for example), ensure
|
||
that the virtual kernel filesystems are mounted as explained
|
||
in <a class="xref" href="#ch-system-bindmount" title=
|
||
"6.2.2. Mounting and Populating /dev">Section 6.2.2,
|
||
“Mounting and Populating /dev”</a> and <a class=
|
||
"xref" href="#ch-system-kernfsmount" title=
|
||
"6.2.3. Mounting Virtual Kernel File Systems">Section 6.2.3,
|
||
“Mounting Virtual Kernel File Systems”</a> and
|
||
enter chroot again before continuing with the installation.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-creatingdirs" name=
|
||
"ch-system-creatingdirs"></a>6.5. Creating
|
||
Directories
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
It is time to create some structure in the LFS file system.
|
||
Create a standard directory tree by issuing the following
|
||
commands:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">mkdir -pv /{bin,boot,etc/{opt,sysconfig},home,lib/firmware,mnt,opt}
|
||
mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}
|
||
install -dv -m 0750 /root
|
||
install -dv -m 1777 /tmp /var/tmp
|
||
mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
|
||
mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
|
||
mkdir -v /usr/{,local/}share/{misc,terminfo,zoneinfo}
|
||
mkdir -v /usr/libexec
|
||
mkdir -pv /usr/{,local/}share/man/man{1..8}
|
||
mkdir -v /usr/lib/pkgconfig
|
||
|
||
case $(uname -m) in
|
||
x86_64) mkdir -v /lib64 ;;
|
||
esac
|
||
|
||
mkdir -v /var/{log,mail,spool}
|
||
ln -sv /run /var/run
|
||
ln -sv /run/lock /var/lock
|
||
mkdir -pv /var/{opt,cache,lib/{color,misc,locate},local}</kbd>
|
||
</pre>
|
||
<p>
|
||
Directories are, by default, created with permission mode 755,
|
||
but this is not desirable for all directories. In the commands
|
||
above, two changes are made—one to the home directory of
|
||
user <code class="systemitem">root</code>, and another to the
|
||
directories for temporary files.
|
||
</p>
|
||
<p>
|
||
The first mode change ensures that not just anybody can enter
|
||
the <code class="filename">/root</code> directory—the
|
||
same as a normal user would do with his or her home directory.
|
||
The second mode change makes sure that any user can write to
|
||
the <code class="filename">/tmp</code> and <code class=
|
||
"filename">/var/tmp</code> directories, but cannot remove
|
||
another user's files from them. The latter is prohibited by the
|
||
so-called <span class="quote">“<span class="quote">sticky
|
||
bit,</span>”</span> the highest bit (1) in the 1777 bit
|
||
mask.
|
||
</p>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.5.1. FHS Compliance Note
|
||
</h3>
|
||
<p>
|
||
The directory tree is based on the Filesystem Hierarchy
|
||
Standard (FHS) (available at <a class="ulink" href=
|
||
"https://refspecs.linuxfoundation.org/fhs.shtml">https://refspecs.linuxfoundation.org/fhs.shtml</a>).
|
||
The FHS also specifies the optional existence of some
|
||
directories such as <code class=
|
||
"filename">/usr/local/games</code> and <code class=
|
||
"filename">/usr/share/games</code>. We create only the
|
||
directories that are needed. However, feel free to create
|
||
these directories.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-createfiles" name=
|
||
"ch-system-createfiles"></a>6.6. Creating Essential
|
||
Files and Symlinks
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Some programs use hard-wired paths to programs which do not
|
||
exist yet. In order to satisfy these programs, create a number
|
||
of symbolic links which will be replaced by real files
|
||
throughout the course of this chapter after the software has
|
||
been installed:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">ln -sv /tools/bin/{bash,cat,chmod,dd,echo,ln,mkdir,pwd,rm,stty,touch} /bin
|
||
ln -sv /tools/bin/{env,install,perl,printf} /usr/bin
|
||
ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
|
||
ln -sv /tools/lib/libstdc++.{a,so{,.6}} /usr/lib
|
||
|
||
ln -sv bash /bin/sh</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The purpose of each link:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code><code class=
|
||
"filename">/bin/bash</code></code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Many <span class="command"><strong>bash</strong></span>
|
||
scripts specify <code class="filename">/bin/bash</code>.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code><code class=
|
||
"filename">/bin/cat</code></code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This pathname is hard-coded into Glibc's configure
|
||
script.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code><code class=
|
||
"filename">/bin/dd</code></code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
The path to <code class="filename">dd</code> will be
|
||
hard-coded into the <code class=
|
||
"filename">/usr/bin/libtool</code> utility.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code><code class=
|
||
"filename">/bin/echo</code></code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This is to satisfy one of the tests in Glibc's test
|
||
suite, which expects <code class=
|
||
"filename">/bin/echo</code>.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code><code class=
|
||
"filename">/usr/bin/env</code></code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This pathname is hard-coded into some packages build
|
||
procedures.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code><code class=
|
||
"filename">/usr/bin/install</code></code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
The path to <code class="filename">install</code> will be
|
||
hard-coded into the <code class=
|
||
"filename">/usr/lib/bash/Makefile.inc</code> file.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code><code class=
|
||
"filename">/bin/ln</code></code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
The path to <code class="filename">ln</code> will be
|
||
hard-coded into the <code class=
|
||
"filename">/usr/lib/perl5/5.30.1/<target-triplet>/Config_heavy.pl</code>
|
||
file.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code><code class=
|
||
"filename">/bin/pwd</code></code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Some <span class=
|
||
"command"><strong>configure</strong></span> scripts,
|
||
particularly Glibc's, have this pathname hard-coded.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code><code class=
|
||
"filename">/bin/rm</code></code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
The path to <code class="filename">rm</code> will be
|
||
hard-coded into the <code class=
|
||
"filename">/usr/lib/perl5/5.30.1/<target-triplet>/Config_heavy.pl</code>
|
||
file.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code><code class=
|
||
"filename">/bin/stty</code></code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This pathname is hard-coded into Expect, therefore it is
|
||
needed for Binutils and GCC test suites to pass.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code><code class=
|
||
"filename">/usr/bin/perl</code></code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Many Perl scripts hard-code this path to the <span class=
|
||
"command"><strong>perl</strong></span> program.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code><code class=
|
||
"filename">/usr/lib/libgcc_s.so{,.1}</code></code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Glibc needs this for the pthreads library to work.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code><code class=
|
||
"filename">/usr/lib/libstdc++{,.6}</code></code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This is needed by several tests in Glibc's test suite, as
|
||
well as for C++ support in GMP.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code><code class=
|
||
"filename">/bin/sh</code></code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Many shell scripts hard-code <code class=
|
||
"filename">/bin/sh</code>.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Historically, Linux maintains a list of the mounted file
|
||
systems in the file <code class="filename">/etc/mtab</code>.
|
||
Modern kernels maintain this list internally and exposes it to
|
||
the user via the <code class="filename">/proc</code>
|
||
filesystem. To satisfy utilities that expect the presence of
|
||
<code class="filename">/etc/mtab</code>, create the following
|
||
symbolic link:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">ln -sv /proc/self/mounts /etc/mtab</kbd>
|
||
</pre>
|
||
<p>
|
||
In order for user <code class="systemitem">root</code> to be
|
||
able to login and for the name <span class=
|
||
"quote">“<span class="quote">root</span>”</span> to
|
||
be recognized, there must be relevant entries in the
|
||
<code class="filename">/etc/passwd</code> and <code class=
|
||
"filename">/etc/group</code> files.
|
||
</p>
|
||
<p>
|
||
Create the <code class="filename">/etc/passwd</code> file by
|
||
running the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/passwd << "EOF"
|
||
<code class="literal">root:x:0:0:root:/root:/bin/bash
|
||
bin:x:1:1:bin:/dev/null:/bin/false
|
||
daemon:x:6:6:Daemon User:/dev/null:/bin/false
|
||
messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false
|
||
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
The actual password for <code class="systemitem">root</code>
|
||
(the <span class="quote">“<span class=
|
||
"quote">x</span>”</span> used here is just a placeholder)
|
||
will be set later.
|
||
</p>
|
||
<p>
|
||
Create the <code class="filename">/etc/group</code> file by
|
||
running the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/group << "EOF"
|
||
<code class="literal">root:x:0:
|
||
bin:x:1:daemon
|
||
sys:x:2:
|
||
kmem:x:3:
|
||
tape:x:4:
|
||
tty:x:5:
|
||
daemon:x:6:
|
||
floppy:x:7:
|
||
disk:x:8:
|
||
lp:x:9:
|
||
dialout:x:10:
|
||
audio:x:11:
|
||
video:x:12:
|
||
utmp:x:13:
|
||
usb:x:14:
|
||
cdrom:x:15:
|
||
adm:x:16:
|
||
messagebus:x:18:
|
||
input:x:24:
|
||
mail:x:34:
|
||
kvm:x:61:
|
||
wheel:x:97:
|
||
nogroup:x:99:
|
||
users:x:999:</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
The created groups are not part of any standard—they are
|
||
groups decided on in part by the requirements of the Udev
|
||
configuration in this chapter, and in part by common convention
|
||
employed by a number of existing Linux distributions. In
|
||
addition, some test suites rely on specific users or groups.
|
||
The Linux Standard Base (LSB, available at <a class="ulink"
|
||
href="http://www.linuxbase.org">http://www.linuxbase.org</a>)
|
||
recommends only that, besides the group <code class=
|
||
"systemitem">root</code> with a Group ID (GID) of 0, a group
|
||
<code class="systemitem">bin</code> with a GID of 1 be present.
|
||
All other group names and GIDs can be chosen freely by the
|
||
system administrator since well-written programs do not depend
|
||
on GID numbers, but rather use the group's name.
|
||
</p>
|
||
<p>
|
||
To remove the <span class="quote">“<span class="quote">I
|
||
have no name!</span>”</span> prompt, start a new shell.
|
||
Since a full Glibc was installed in <a class="xref" href=
|
||
"#chapter-temporary-tools" title=
|
||
"Chapter 5. Constructing a Temporary System">Chapter 5</a>
|
||
and the <code class="filename">/etc/passwd</code> and
|
||
<code class="filename">/etc/group</code> files have been
|
||
created, user name and group name resolution will now work:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">exec /tools/bin/bash --login +h</kbd>
|
||
</pre>
|
||
<p>
|
||
Note the use of the <em class="parameter"><code>+h</code></em>
|
||
directive. This tells <span class=
|
||
"command"><strong>bash</strong></span> not to use its internal
|
||
path hashing. Without this directive, <span class=
|
||
"command"><strong>bash</strong></span> would remember the paths
|
||
to binaries it has executed. To ensure the use of the newly
|
||
compiled binaries as soon as they are installed, the <em class=
|
||
"parameter"><code>+h</code></em> directive will be used for the
|
||
duration of this chapter.
|
||
</p>
|
||
<p>
|
||
The <span class="command"><strong>login</strong></span>,
|
||
<span class="command"><strong>agetty</strong></span>, and
|
||
<span class="command"><strong>init</strong></span> programs
|
||
(and others) use a number of log files to record information
|
||
such as who was logged into the system and when. However, these
|
||
programs will not write to the log files if they do not already
|
||
exist. Initialize the log files and give them proper
|
||
permissions:
|
||
</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>
|
||
The <code class="filename">/var/log/wtmp</code> file records
|
||
all logins and logouts. The <code class=
|
||
"filename">/var/log/lastlog</code> file records when each user
|
||
last logged in. The <code class=
|
||
"filename">/var/log/faillog</code> file records failed login
|
||
attempts. The <code class="filename">/var/log/btmp</code> file
|
||
records the bad login attempts.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The <code class="filename">/run/utmp</code> file records the
|
||
users that are currently logged in. This file is created
|
||
dynamically in the boot scripts.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-linux-headers" name=
|
||
"ch-system-linux-headers"></a>6.7. Linux-5.5.3 API
|
||
Headers
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Linux API Headers (in linux-5.5.3.tar.xz) expose the
|
||
kernel's API for use by Glibc.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">1 GB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.7.1. Installation of Linux API Headers
|
||
</h3>
|
||
<p>
|
||
The Linux kernel needs to expose an Application Programming
|
||
Interface (API) for the system's C library (Glibc in LFS) to
|
||
use. This is done by way of sanitizing various C header files
|
||
that are shipped in the Linux kernel source tarball.
|
||
</p>
|
||
<p>
|
||
Make sure there are no stale files and dependencies lying
|
||
around from previous activity:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make mrproper</kbd>
|
||
</pre>
|
||
<p>
|
||
Now extract the user-visible kernel headers from the source.
|
||
The recommended make target <span class=
|
||
"quote">“<span class=
|
||
"quote">headers_install</span>”</span> cannot be used,
|
||
because it requires <span class="application">rsync</span>,
|
||
which is not available in <code class=
|
||
"filename">/tools</code>. The headers are first placed in
|
||
<code class="filename">./usr</code>, then some files used by
|
||
the kernel developers are removed, then the files are copied
|
||
to their final location.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make headers
|
||
find usr/include -name '.*' -delete
|
||
rm usr/include/Makefile
|
||
</kbd><kbd class="command">cp -rv usr/include/* /usr/include</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-linux-headers" name=
|
||
"contents-linux-headers"></a>6.7.2. Contents of Linux API
|
||
Headers
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed headers:</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">Installed directories:</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="idm46504929422352" name=
|
||
"idm46504929422352"></a>Short Descriptions
|
||
</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>
|
||
The Linux API ASM Headers
|
||
</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>
|
||
The Linux API ASM Generic Headers
|
||
</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>
|
||
The Linux API DRM Headers
|
||
</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>
|
||
The Linux API Linux Headers
|
||
</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>
|
||
The Linux API Miscellaneous Headers
|
||
</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>
|
||
The Linux API MTD Headers
|
||
</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>
|
||
The Linux API RDMA Headers
|
||
</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>
|
||
The Linux API SCSI Headers
|
||
</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>
|
||
The Linux API Sound Headers
|
||
</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>
|
||
The Linux API Video Headers
|
||
</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>
|
||
The Linux API Xen Headers
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-man-pages" name=
|
||
"ch-system-man-pages"></a>6.8. Man-pages-5.05
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Man-pages package contains over 2,200 man pages.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">31 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.8.1. Installation of Man-pages
|
||
</h3>
|
||
<p>
|
||
Install Man-pages by running:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-manpages" name="contents-manpages"></a>6.8.2.
|
||
Contents of Man-pages
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed files:</strong>
|
||
<span class="segbody">various man pages</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504929354352" name=
|
||
"idm46504929354352"></a>Short Descriptions
|
||
</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>
|
||
Describe C programming language functions,
|
||
important device files, and significant
|
||
configuration files
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-glibc" name=
|
||
"ch-system-glibc"></a>6.9. Glibc-2.31
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Glibc package contains the main C library. This library
|
||
provides the basic routines for allocating memory, searching
|
||
directories, opening and closing files, reading and writing
|
||
files, string handling, pattern matching, arithmetic, and so
|
||
on.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">19 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">5.5 GB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.9.1. Installation of Glibc
|
||
</h3>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The Glibc build system is self-contained and will install
|
||
perfectly, even though the compiler specs file and linker
|
||
are still pointing to <code class="filename">/tools</code>.
|
||
The specs and linker cannot be adjusted before the Glibc
|
||
install because the Glibc autoconf tests would give false
|
||
results and defeat the goal of achieving a clean build.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Some of the Glibc programs use the non-FHS compliant
|
||
<code class="filename">/var/db</code> directory to store
|
||
their runtime data. Apply the following patch to make such
|
||
programs store their runtime data in the FHS-compliant
|
||
locations:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">patch -Np1 -i ../glibc-2.31-fhs-1.patch</kbd>
|
||
</pre>
|
||
<p>
|
||
Create a symlink for LSB compliance. Additionally, for
|
||
x86_64, create a compatibility symlink required for the
|
||
dynamic loader to function correctly:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">case $(uname -m) in
|
||
i?86) ln -sfv ld-linux.so.2 /lib/ld-lsb.so.3
|
||
;;
|
||
x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 /lib64
|
||
ln -sfv ../lib/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
|
||
;;
|
||
esac</kbd>
|
||
</pre>
|
||
<p>
|
||
The Glibc documentation recommends building Glibc in a
|
||
dedicated build directory:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v build
|
||
cd build</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Glibc for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">CC="gcc -ffile-prefix-map=/tools=/usr" \
|
||
../configure --prefix=/usr \
|
||
--disable-werror \
|
||
--enable-kernel=3.2 \
|
||
--enable-stack-protector=strong \
|
||
--with-headers=/usr/include \
|
||
libc_cv_slibdir=/lib</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the options and new configure
|
||
parameters:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code>CC="gcc
|
||
-ffile-prefix-map=/tools=/usr"</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Make GCC record any references to files in /tools in
|
||
result of the compilation as if the files resided in
|
||
/usr. This avoids introduction of invalid paths in
|
||
debugging symbols.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-werror</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option disables the -Werror option passed to GCC.
|
||
This is necessary for running the test suite.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-stack-protector=strong</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option increases system security by adding extra
|
||
code to check for buffer overflows, such as stack
|
||
smashing attacks.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-headers=/usr/include</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option tells the build system where to find the
|
||
kernel API headers. By default, those headers are
|
||
sought in <code class="filename">/tools/include</code>.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>libc_cv_slibdir=/lib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This variable sets the correct library for all systems.
|
||
We do not want lib64 to be used.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<div class="admon important">
|
||
<h3>
|
||
Important
|
||
</h3>
|
||
<p>
|
||
In this section, the test suite for Glibc is considered
|
||
critical. Do not skip it under any circumstance.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Generally a few tests do not pass. The test failures listed
|
||
below are usually safe to ignore.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">case $(uname -m) in
|
||
i?86) ln -sfnv $PWD/elf/ld-linux.so.2 /lib ;;
|
||
x86_64) ln -sfnv $PWD/elf/ld-linux-x86-64.so.2 /lib ;;
|
||
esac</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The symbolic link above is needed to run the tests at this
|
||
stage of building in the chroot environment. It will be
|
||
overwritten in the install phase below.
|
||
</p>
|
||
</div>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
You may see some test failures. The Glibc test suite is
|
||
somewhat dependent on the host system. This is a list of the
|
||
most common issues seen for some versions of LFS:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
<span class="emphasis"><em>misc/tst-ttyname</em></span>
|
||
is known to fail in the LFS chroot environment.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<span class=
|
||
"emphasis"><em>inet/tst-idna_name_classify</em></span>
|
||
is known to fail in the LFS chroot environment.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<span class=
|
||
"emphasis"><em>posix/tst-getaddrinfo4</em></span> and
|
||
<span class=
|
||
"emphasis"><em>posix/tst-getaddrinfo5</em></span> may
|
||
fail on some architectures.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The <span class=
|
||
"emphasis"><em>nss/tst-nss-files-hosts-multi</em></span>
|
||
test may fail for reasons that have not been
|
||
determined.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The <span class=
|
||
"emphasis"><em>rt/tst-cputimer{1,2,3}</em></span> tests
|
||
depend on the host system kernel. Kernels
|
||
4.14.91–4.14.96, 4.19.13–4.19.18, and
|
||
4.20.0–4.20.5 are known to cause these tests to
|
||
fail.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The math tests sometimes fail when running on systems
|
||
where the CPU is not a relatively new Intel or AMD
|
||
processor.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<p>
|
||
Though it is a harmless message, the install stage of Glibc
|
||
will complain about the absence of <code class=
|
||
"filename">/etc/ld.so.conf</code>. Prevent this warning with:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">touch /etc/ld.so.conf</kbd>
|
||
</pre>
|
||
<p>
|
||
Fix the generated Makefile to skip an unneeded sanity check
|
||
that fails in the LFS partial environment:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the configuration file and runtime directory for
|
||
<span class="command"><strong>nscd</strong></span>:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cp -v ../nscd/nscd.conf /etc/nscd.conf
|
||
mkdir -pv /var/cache/nscd</kbd>
|
||
</pre>
|
||
<p>
|
||
Next, install the locales that can make the system respond in
|
||
a different language. None of the locales are required, but
|
||
if some of them are missing, the test suites of future
|
||
packages would skip important testcases.
|
||
</p>
|
||
<p>
|
||
Individual locales can be installed using the <span class=
|
||
"command"><strong>localedef</strong></span> program. E.g.,
|
||
the first <span class=
|
||
"command"><strong>localedef</strong></span> command below
|
||
combines the <code class=
|
||
"filename">/usr/share/i18n/locales/cs_CZ</code>
|
||
charset-independent locale definition with the <code class=
|
||
"filename">/usr/share/i18n/charmaps/UTF-8.gz</code> charmap
|
||
definition and appends the result to the <code class=
|
||
"filename">/usr/lib/locale/locale-archive</code> file. The
|
||
following instructions will install the minimum set of
|
||
locales necessary for the optimal coverage of tests:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -pv /usr/lib/locale
|
||
localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true
|
||
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 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_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 it_IT -f ISO-8859-1 it_IT
|
||
localedef -i it_IT -f UTF-8 it_IT.UTF-8
|
||
localedef -i ja_JP -f EUC-JP ja_JP
|
||
localedef -i ja_JP -f SHIFT_JIS ja_JP.SIJS 2> /dev/null || true
|
||
localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
|
||
localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R
|
||
localedef -i ru_RU -f UTF-8 ru_RU.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</kbd>
|
||
</pre>
|
||
<p>
|
||
In addition, install the locale for your own country,
|
||
language and character set.
|
||
</p>
|
||
<p>
|
||
Alternatively, install all locales listed in the <code class=
|
||
"filename">glibc-2.31/localedata/SUPPORTED</code> file (it
|
||
includes every locale listed above and many more) at once
|
||
with the following time-consuming command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make localedata/install-locales</kbd>
|
||
</pre>
|
||
<p>
|
||
Then use the <span class=
|
||
"command"><strong>localedef</strong></span> command to create
|
||
and install locales not listed in the <code class=
|
||
"filename">glibc-2.31/localedata/SUPPORTED</code> file in the
|
||
unlikely case you need them.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
Glibc now uses libidn2 when resolving internationalized
|
||
domain names. This is a run time dependency. If this
|
||
capability is needed, the instructions for installing
|
||
libidn2 are in the <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/general/libidn2.html">
|
||
BLFS libidn2 page</a>.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="configuration" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="conf-glibc" name="conf-glibc"></a>6.9.2. Configuring
|
||
Glibc
|
||
</h3>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504929267440" name=
|
||
"idm46504929267440"></a>6.9.2.1. Adding
|
||
nsswitch.conf
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The <code class="filename">/etc/nsswitch.conf</code> file
|
||
needs to be created because the Glibc defaults do not work
|
||
well in a networked environment.
|
||
</p>
|
||
<p>
|
||
Create a new file <code class=
|
||
"filename">/etc/nsswitch.conf</code> by running the
|
||
following:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/nsswitch.conf << "EOF"
|
||
<code class="literal"># Begin /etc/nsswitch.conf
|
||
|
||
passwd: files
|
||
group: files
|
||
shadow: files
|
||
|
||
hosts: files dns
|
||
networks: files
|
||
|
||
protocols: files
|
||
services: files
|
||
ethers: files
|
||
rpc: files
|
||
|
||
# End /etc/nsswitch.conf</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504929262224" name=
|
||
"idm46504929262224"></a>6.9.2.2. Adding time
|
||
zone data
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Install and set up the time zone data with the following:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">tar -xf ../../tzdata2019c.tar.gz
|
||
|
||
ZONEINFO=/usr/share/zoneinfo
|
||
mkdir -pv $ZONEINFO/{posix,right}
|
||
|
||
for tz in etcetera southamerica northamerica europe africa antarctica \
|
||
asia australasia backward pacificnew systemv; 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>The meaning of the zic commands:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code>zic -L
|
||
/dev/null ...</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This creates posix time zones, without any leap
|
||
seconds. It is conventional to put these in both
|
||
<code class="filename">zoneinfo</code> and
|
||
<code class="filename">zoneinfo/posix</code>. It is
|
||
necessary to put the POSIX time zones in <code class=
|
||
"filename">zoneinfo</code>, otherwise various
|
||
test-suites will report errors. On an embedded
|
||
system, where space is tight and you do not intend to
|
||
ever update the time zones, you could save 1.9MB by
|
||
not using the <code class="filename">posix</code>
|
||
directory, but some applications or test-suites might
|
||
produce some failures.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code>zic -L
|
||
leapseconds ...</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This creates right time zones, including leap
|
||
seconds. On an embedded system, where space is tight
|
||
and you do not intend to ever update the time zones,
|
||
or care about the correct time, you could save 1.9MB
|
||
by omitting the <code class="filename">right</code>
|
||
directory.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code>zic ...
|
||
-p ...</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This creates the <code class=
|
||
"filename">posixrules</code> file. We use New York
|
||
because POSIX requires the daylight savings time
|
||
rules to be in accordance with US rules.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
One way to determine the local time zone is to run the
|
||
following script:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">tzselect</kbd>
|
||
</pre>
|
||
<p>
|
||
After answering a few questions about the location, the
|
||
script will output the name of the time zone (e.g.,
|
||
<span class="emphasis"><em>America/Edmonton</em></span>).
|
||
There are also some other possible time zones listed in
|
||
<code class="filename">/usr/share/zoneinfo</code> such as
|
||
<span class="emphasis"><em>Canada/Eastern</em></span> or
|
||
<span class="emphasis"><em>EST5EDT</em></span> that are not
|
||
identified by the script but can be used.
|
||
</p>
|
||
<p>
|
||
Then create the <code class=
|
||
"filename">/etc/localtime</code> file by running:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">ln -sfv /usr/share/zoneinfo/<em class=
|
||
"replaceable"><code><xxx></code></em> /etc/localtime</kbd>
|
||
</pre>
|
||
<p>
|
||
Replace <em class=
|
||
"replaceable"><code><xxx></code></em> with the name
|
||
of the time zone selected (e.g., Canada/Eastern).
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="conf-ld" name=
|
||
"conf-ld"></a>6.9.2.3. Configuring the Dynamic
|
||
Loader
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
By default, the dynamic loader (<code class=
|
||
"filename">/lib/ld-linux.so.2</code>) searches through
|
||
<code class="filename">/lib</code> and <code class=
|
||
"filename">/usr/lib</code> for dynamic libraries that are
|
||
needed by programs as they are run. However, if there are
|
||
libraries in directories other than <code class=
|
||
"filename">/lib</code> and <code class=
|
||
"filename">/usr/lib</code>, these need to be added to the
|
||
<code class="filename">/etc/ld.so.conf</code> file in order
|
||
for the dynamic loader to find them. Two directories that
|
||
are commonly known to contain additional libraries are
|
||
<code class="filename">/usr/local/lib</code> and
|
||
<code class="filename">/opt/lib</code>, so add those
|
||
directories to the dynamic loader's search path.
|
||
</p>
|
||
<p>
|
||
Create a new file <code class=
|
||
"filename">/etc/ld.so.conf</code> by running the following:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/ld.so.conf << "EOF"
|
||
<code class="literal"># Begin /etc/ld.so.conf
|
||
/usr/local/lib
|
||
/opt/lib
|
||
</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
If desired, the dynamic loader can also search a directory
|
||
and include the contents of files found there. Generally
|
||
the files in this include directory are one line specifying
|
||
the desired library path. To add this capability run the
|
||
following commands:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat >> /etc/ld.so.conf << "EOF"
|
||
<code class="literal"># Add an include directory
|
||
include /etc/ld.so.conf.d/*.conf
|
||
</code>
|
||
EOF
|
||
mkdir -pv /etc/ld.so.conf.d</kbd>
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-glibc" name="contents-glibc"></a>6.9.3.
|
||
Contents of Glibc
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">catchsegv, gencat, getconf, getent,
|
||
iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale,
|
||
localedef, makedb, mtrace, nscd, pcprofiledump, pldd,
|
||
sln, sotruss, sprof, tzselect, xtrace, zdump, and
|
||
zic</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">ld-2.31.so, libBrokenLocale.{a,so},
|
||
libSegFault.so, libanl.{a,so}, libc.{a,so},
|
||
libc_nonshared.a, libcrypt.{a,so}, libdl.{a,so}, libg.a,
|
||
libm.{a,so}, libmcheck.a, libmemusage.so, libmvec.{a,so},
|
||
libnsl.{a,so}, libnss_compat.so, libnss_dns.so,
|
||
libnss_files.so, libnss_hesiod.so, libpcprofile.so,
|
||
libpthread.{a,so}, libpthread_nonshared.a,
|
||
libresolv.{a,so}, librt.{a,so}, libthread_db.so, and
|
||
libutil.{a,so}</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</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/cache/nscd,
|
||
and /var/lib/nss_db</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504929213984" name=
|
||
"idm46504929213984"></a>Short Descriptions
|
||
</h4>
|
||
<table border="0" class="variablelist">
|
||
<colgroup>
|
||
<col align="left" valign="top" />
|
||
<col />
|
||
</colgroup>
|
||
<tbody>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="catchsegv" name="catchsegv"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>catchsegv</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Can be used to create a stack trace when a program
|
||
terminates with a segmentation fault
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="gencat" name="gencat"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>gencat</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Generates message catalogues
|
||
</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>
|
||
Displays the system configuration values for file
|
||
system specific variables
|
||
</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>
|
||
Gets entries from an administrative database
|
||
</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>
|
||
Performs character set conversion
|
||
</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>
|
||
Creates fastloading <span class=
|
||
"command"><strong>iconv</strong></span> module
|
||
configuration files
|
||
</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>
|
||
Configures the dynamic linker runtime bindings
|
||
</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>
|
||
Reports which shared libraries are required by each
|
||
given program or shared library
|
||
</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>
|
||
Assists <span class=
|
||
"command"><strong>ldd</strong></span> with object
|
||
files
|
||
</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>
|
||
Prints various information about the current locale
|
||
</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>
|
||
Compiles locale specifications
|
||
</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>
|
||
Creates a simple database from textual input
|
||
</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>
|
||
Reads and interprets a memory trace file and
|
||
displays a summary in human-readable format
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="nscd" name="nscd"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>nscd</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
A daemon that provides a cache for the most common
|
||
name service requests
|
||
</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>
|
||
Dump information generated by PC profiling
|
||
</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>
|
||
Lists dynamic shared objects used by running
|
||
processes
|
||
</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>
|
||
A statically linked <span class=
|
||
"command"><strong>ln</strong></span> program
|
||
</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>
|
||
Traces shared library procedure calls of a
|
||
specified command
|
||
</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>
|
||
Reads and displays shared object profiling data
|
||
</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>
|
||
Asks the user about the location of the system and
|
||
reports the corresponding time zone description
|
||
</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>
|
||
Traces the execution of a program by printing the
|
||
currently executed function
|
||
</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>
|
||
The time zone dumper
|
||
</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>
|
||
The time zone compiler
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="ld.so" name="ld.so"></a><span class=
|
||
"term"><code class=
|
||
"filename">ld-2.31.so</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
The helper program for shared library executables
|
||
</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>
|
||
Used internally by Glibc as a gross hack to get
|
||
broken programs (e.g., some Motif applications)
|
||
running. See comments in <code class=
|
||
"filename">glibc-2.31/locale/broken_cur_max.c</code>
|
||
for more information
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libSegFault" name=
|
||
"libSegFault"></a><span class="term"><code class=
|
||
"filename">libSegFault</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
The segmentation fault signal handler, used by
|
||
<span class=
|
||
"command"><strong>catchsegv</strong></span>
|
||
</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>
|
||
An asynchronous name lookup library
|
||
</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>
|
||
The main C library
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libcrypt" name="libcrypt"></a><span class=
|
||
"term"><code class=
|
||
"filename">libcrypt</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
The cryptography library
|
||
</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>
|
||
The dynamic linking interface library
|
||
</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>
|
||
Dummy library containing no functions. Previously
|
||
was a runtime library for <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>
|
||
The mathematical library
|
||
</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>
|
||
Turns on memory allocation checking when linked to
|
||
</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>
|
||
Used by <span class=
|
||
"command"><strong>memusage</strong></span> to help
|
||
collect information about the memory usage of a
|
||
program
|
||
</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>
|
||
The network services library
|
||
</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>
|
||
The Name Service Switch libraries, containing
|
||
functions for resolving host names, user names,
|
||
group names, aliases, services, protocols, etc.
|
||
</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>
|
||
Can be preloaded to PC profile an executable
|
||
</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>
|
||
The POSIX threads library
|
||
</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>
|
||
Contains functions for creating, sending, and
|
||
interpreting packets to the Internet domain name
|
||
servers
|
||
</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>
|
||
Contains functions providing most of the interfaces
|
||
specified by the POSIX.1b Realtime 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>
|
||
Contains functions useful for building debuggers
|
||
for multi-threaded programs
|
||
</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>
|
||
Contains code for <span class=
|
||
"quote">“<span class=
|
||
"quote">standard</span>”</span> functions
|
||
used in many different Unix utilities
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-adjusting" name=
|
||
"ch-system-adjusting"></a>6.10. Adjusting the
|
||
Toolchain
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Now that the final C libraries have been installed, it is time
|
||
to adjust the toolchain so that it will link any newly compiled
|
||
program against these new libraries.
|
||
</p>
|
||
<p>
|
||
First, backup the <code class="filename">/tools</code> linker,
|
||
and replace it with the adjusted linker we made in chapter 5.
|
||
We'll also create a link to its counterpart in <code class=
|
||
"filename">/tools/$(uname -m)-pc-linux-gnu/bin</code>:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mv -v /tools/bin/{ld,ld-old}
|
||
mv -v /tools/$(uname -m)-pc-linux-gnu/bin/{ld,ld-old}
|
||
mv -v /tools/bin/{ld-new,ld}
|
||
ln -sv /tools/bin/ld /tools/$(uname -m)-pc-linux-gnu/bin/ld</kbd>
|
||
</pre>
|
||
<p>
|
||
Next, amend the GCC specs file so that it points to the new
|
||
dynamic linker. Simply deleting all instances of <span class=
|
||
"quote">“<span class="quote">/tools</span>”</span>
|
||
should leave us with the correct path to the dynamic linker.
|
||
Also adjust the specs file so that GCC knows where to find the
|
||
correct headers and Glibc start files. A <span class=
|
||
"command"><strong>sed</strong></span> command accomplishes
|
||
this:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">gcc -dumpspecs | sed -e 's@/tools@@g' \
|
||
-e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \
|
||
-e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' > \
|
||
`dirname $(gcc --print-libgcc-file-name)`/specs</kbd>
|
||
</pre>
|
||
<p>
|
||
It is a good idea to visually inspect the specs file to verify
|
||
the intended change was actually made.
|
||
</p>
|
||
<p>
|
||
It is imperative at this point to ensure that the basic
|
||
functions (compiling and linking) of the adjusted toolchain are
|
||
working as expected. To do this, perform the following sanity
|
||
checks:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">echo 'int main(){}' > dummy.c
|
||
cc dummy.c -v -Wl,--verbose &> dummy.log
|
||
readelf -l a.out | grep ': /lib'</kbd>
|
||
</pre>
|
||
<p>
|
||
There should be no errors, and the output of the last command
|
||
will be (allowing for platform-specific differences in dynamic
|
||
linker name):
|
||
</p>
|
||
<pre class="screen">
|
||
<code class=
|
||
"computeroutput">[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</code>
|
||
</pre>
|
||
<p>
|
||
Note that on 64-bit systems <code class="filename">/lib</code>
|
||
is the location of our dynamic linker, but is accessed via a
|
||
symbolic link in /lib64.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
On 32-bit systems the interpreter should be
|
||
/lib/ld-linux.so.2.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Now make sure that we're setup to use the correct start files:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log</kbd>
|
||
</pre>
|
||
<p>
|
||
The output of the last command should be:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="computeroutput">/usr/lib/../lib/crt1.o succeeded
|
||
/usr/lib/../lib/crti.o succeeded
|
||
/usr/lib/../lib/crtn.o succeeded</code>
|
||
</pre>
|
||
<p>
|
||
Verify that the compiler is searching for the correct header
|
||
files:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grep -B1 '^ /usr/include' dummy.log</kbd>
|
||
</pre>
|
||
<p>
|
||
This command should return the following output:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="computeroutput">#include <...> search starts here:
|
||
/usr/include</code>
|
||
</pre>
|
||
<p>
|
||
Next, verify that the new linker is being used with the correct
|
||
search paths:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'</kbd>
|
||
</pre>
|
||
<p>
|
||
References to paths that have components with '-linux-gnu'
|
||
should be ignored, but otherwise the output of the last command
|
||
should be:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="computeroutput">SEARCH_DIR("/usr/lib")
|
||
SEARCH_DIR("/lib")</code>
|
||
</pre>
|
||
<p>
|
||
Next make sure that we're using the correct libc:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grep "/lib.*/libc.so.6 " dummy.log</kbd>
|
||
</pre>
|
||
<p>
|
||
The output of the last command should be:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="computeroutput">attempt to open /lib/libc.so.6 succeeded</code>
|
||
</pre>
|
||
<p>
|
||
Lastly, make sure GCC is using the correct dynamic linker:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grep found dummy.log</kbd>
|
||
</pre>
|
||
<p>
|
||
The output of the last command should be (allowing for
|
||
platform-specific differences in dynamic linker name):
|
||
</p>
|
||
<pre class="screen">
|
||
<code class=
|
||
"computeroutput">found ld-linux-x86-64.so.2 at /lib/ld-linux-x86-64.so.2</code>
|
||
</pre>
|
||
<p>
|
||
If the output does not appear as shown above or is not received
|
||
at all, then something is seriously wrong. Investigate and
|
||
retrace the steps to find out where the problem is and correct
|
||
it. The most likely reason is that something went wrong with
|
||
the specs file adjustment. Any issues will need to be resolved
|
||
before continuing with the process.
|
||
</p>
|
||
<p>
|
||
Once everything is working correctly, clean up the test files:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">rm -v dummy.c a.out dummy.log</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-zlib" name=
|
||
"ch-system-zlib"></a>6.11. Zlib-1.2.11
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Zlib package contains compression and decompression
|
||
routines used by some programs.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">5.1 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.11.1. Installation of Zlib
|
||
</h3>
|
||
<p>
|
||
Prepare Zlib for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
The shared library needs to be moved to <code class=
|
||
"filename">/lib</code>, and as a result the <code class=
|
||
"filename">.so</code> file in <code class=
|
||
"filename">/usr/lib</code> will need to be recreated:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mv -v /usr/lib/libz.so.* /lib
|
||
ln -sfv ../../lib/$(readlink /usr/lib/libz.so) /usr/lib/libz.so</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-zlib" name="contents-zlib"></a>6.11.2.
|
||
Contents of Zlib
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">libz.{a,so}</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504928954992" name=
|
||
"idm46504928954992"></a>Short Descriptions
|
||
</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>
|
||
Contains compression and decompression functions
|
||
used by some programs
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-bzip2" name=
|
||
"ch-system-bzip2"></a>6.12. Bzip2-1.0.8
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Bzip2 package contains programs for compressing and
|
||
decompressing files. Compressing text files with <span class=
|
||
"command"><strong>bzip2</strong></span> yields a much better
|
||
compression percentage than with the traditional <span class=
|
||
"command"><strong>gzip</strong></span>.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">7.7 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.12.1. Installation of Bzip2
|
||
</h3>
|
||
<p>
|
||
Apply a patch that will install the documentation for this
|
||
package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">patch -Np1 -i ../bzip2-1.0.8-install_docs-1.patch</kbd>
|
||
</pre>
|
||
<p>
|
||
The following command ensures installation of symbolic links
|
||
are relative:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile</kbd>
|
||
</pre>
|
||
<p>
|
||
Ensure the man pages are installed into the correct location:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Bzip2 for compilation with:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make -f Makefile-libbz2_so
|
||
make clean</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the make parameter:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code>-f
|
||
Makefile-libbz2_so</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This will cause Bzip2 to be built using a different
|
||
<code class="filename">Makefile</code> file, in this
|
||
case the <code class=
|
||
"filename">Makefile-libbz2_so</code> file, which
|
||
creates a dynamic <code class=
|
||
"filename">libbz2.so</code> library and links the Bzip2
|
||
utilities against it.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile and test the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the programs:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make PREFIX=/usr install</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the shared <span class=
|
||
"command"><strong>bzip2</strong></span> binary into the
|
||
<code class="filename">/bin</code> directory, make some
|
||
necessary symbolic links, and clean up:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cp -v bzip2-shared /bin/bzip2
|
||
cp -av libbz2.so* /lib
|
||
ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
|
||
rm -v /usr/bin/{bunzip2,bzcat,bzip2}
|
||
ln -sv bzip2 /bin/bunzip2
|
||
ln -sv bzip2 /bin/bzcat</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-bzip2" name="contents-bzip2"></a>6.12.2.
|
||
Contents of Bzip2
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">bunzip2 (link to bzip2), bzcat
|
||
(link to bzip2), bzcmp (link to bzdiff), bzdiff, bzegrep
|
||
(link to bzgrep), bzfgrep (link to bzgrep), bzgrep,
|
||
bzip2, bzip2recover, bzless (link to bzmore), and
|
||
bzmore</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">libbz2.{a,so}</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/usr/share/doc/bzip2-1.0.8</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504928911184" name=
|
||
"idm46504928911184"></a>Short Descriptions
|
||
</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>
|
||
Decompresses bzipped files
|
||
</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>
|
||
Decompresses to standard output
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>cmp</strong></span> on bzipped
|
||
files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>diff</strong></span> on bzipped
|
||
files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>egrep</strong></span> on bzipped
|
||
files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>fgrep</strong></span> on bzipped
|
||
files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>grep</strong></span> on bzipped
|
||
files
|
||
</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>
|
||
Compresses files using the Burrows-Wheeler block
|
||
sorting text compression algorithm with Huffman
|
||
coding; the compression rate is better than that
|
||
achieved by more conventional compressors using
|
||
<span class="quote">“<span class=
|
||
"quote">Lempel-Ziv</span>”</span> algorithms,
|
||
like <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>
|
||
Tries to recover data from damaged bzipped files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>less</strong></span> on bzipped
|
||
files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>more</strong></span> on bzipped
|
||
files
|
||
</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>
|
||
The library implementing lossless, block-sorting
|
||
data compression, using the Burrows-Wheeler
|
||
algorithm
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-xz" name=
|
||
"ch-system-xz"></a>6.13. Xz-5.2.4
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Xz package contains programs for compressing and
|
||
decompressing files. It provides capabilities for the lzma
|
||
and the newer xz compression formats. Compressing text files
|
||
with <span class="command"><strong>xz</strong></span> yields
|
||
a better compression percentage than with the traditional
|
||
<span class="command"><strong>gzip</strong></span> or
|
||
<span class="command"><strong>bzip2</strong></span> commands.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">16 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.13.1. Installation of Xz
|
||
</h3>
|
||
<p>
|
||
Prepare Xz for compilation with:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--disable-static \
|
||
--docdir=/usr/share/doc/xz-5.2.4</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package and make sure that all essential files
|
||
are in the correct directory:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install
|
||
mv -v /usr/bin/{lzma,unlzma,lzcat,xz,unxz,xzcat} /bin
|
||
mv -v /usr/lib/liblzma.so.* /lib
|
||
ln -svf ../../lib/$(readlink /usr/lib/liblzma.so) /usr/lib/liblzma.so</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-xz" name="contents-xz"></a>6.13.2. Contents
|
||
of Xz
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">lzcat (link to xz), lzcmp (link to
|
||
xzdiff), lzdiff (link to xzdiff), lzegrep (link to
|
||
xzgrep), lzfgrep (link to xzgrep), lzgrep (link to
|
||
xzgrep), lzless (link to xzless), lzma (link to xz),
|
||
lzmadec, lzmainfo, lzmore (link to xzmore), unlzma (link
|
||
to xz), unxz (link to xz), xz, xzcat (link to xz), xzcmp
|
||
(link to xzdiff), xzdec, xzdiff, xzegrep (link to
|
||
xzgrep), xzfgrep (link to xzgrep), xzgrep, xzless, and
|
||
xzmore</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">liblzma.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/include/lzma and
|
||
/usr/share/doc/xz-5.2.4</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504928824848" name=
|
||
"idm46504928824848"></a>Short Descriptions
|
||
</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>
|
||
Decompresses to standard output
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>cmp</strong></span> on LZMA
|
||
compressed files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>diff</strong></span> on LZMA
|
||
compressed files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>egrep</strong></span> on LZMA
|
||
compressed files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>fgrep</strong></span> on LZMA
|
||
compressed files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>grep</strong></span> on LZMA
|
||
compressed files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>less</strong></span> on LZMA
|
||
compressed files
|
||
</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>
|
||
Compresses or decompresses files using the LZMA
|
||
format
|
||
</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>
|
||
A small and fast decoder for LZMA compressed files
|
||
</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>
|
||
Shows information stored in the LZMA compressed
|
||
file header
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>more</strong></span> on LZMA
|
||
compressed files
|
||
</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>
|
||
Decompresses files using the LZMA format
|
||
</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>
|
||
Decompresses files using the XZ format
|
||
</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>
|
||
Compresses or decompresses files using the XZ
|
||
format
|
||
</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>
|
||
Decompresses to standard output
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>cmp</strong></span> on XZ
|
||
compressed files
|
||
</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>
|
||
A small and fast decoder for XZ compressed files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>diff</strong></span> on XZ
|
||
compressed files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>egrep</strong></span> on XZ
|
||
compressed files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>fgrep</strong></span> on XZ
|
||
compressed files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>grep</strong></span> on XZ
|
||
compressed files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>less</strong></span> on XZ
|
||
compressed files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>more</strong></span> on XZ
|
||
compressed files
|
||
</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>
|
||
The library implementing lossless, block-sorting
|
||
data compression, using the Lempel-Ziv-Markov chain
|
||
algorithm
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-file" name=
|
||
"ch-system-file"></a>6.14. File-5.38
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The File package contains a utility for determining the type
|
||
of a given file or files.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">20 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.14.1. Installation of File
|
||
</h3>
|
||
<p>
|
||
Prepare File for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-file" name="contents-file"></a>6.14.2.
|
||
Contents of File
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">file</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed library:</strong>
|
||
<span class="segbody">libmagic.so</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504928687152" name=
|
||
"idm46504928687152"></a>Short Descriptions
|
||
</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>
|
||
Tries to classify each given file; it does this by
|
||
performing several tests—file system tests,
|
||
magic number tests, and language tests
|
||
</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>
|
||
Contains routines for magic number recognition,
|
||
used by the <span class=
|
||
"command"><strong>file</strong></span> program
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-readline" name=
|
||
"ch-system-readline"></a>6.15. Readline-8.0
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Readline package is a set of libraries that offers
|
||
command-line editing and history capabilities.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">15 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.15.1. Installation of Readline
|
||
</h3>
|
||
<p>
|
||
Reinstalling Readline will cause the old libraries to be
|
||
moved to <libraryname>.old. While this is normally not
|
||
a problem, in some cases it can trigger a linking bug in
|
||
<span class="command"><strong>ldconfig</strong></span>. This
|
||
can be avoided by issuing the following two seds:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i '/MV.*old/d' Makefile.in
|
||
sed -i '/{OLDSUFF}/c:' support/shlib-install</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Readline for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--disable-static \
|
||
--docdir=/usr/share/doc/readline-8.0</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make SHLIB_LIBS="-L/tools/lib -lncursesw"</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the make option:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>SHLIB_LIBS="-L/tools/lib
|
||
-lncursesw"</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option forces Readline to link against the
|
||
<code class="filename">libncursesw</code> library.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
This package does not come with a test suite.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make SHLIB_LIBS="-L/tools/lib -lncursesw" install</kbd>
|
||
</pre>
|
||
<p>
|
||
Now move the dynamic libraries to a more appropriate location
|
||
and fix up some permissions and symbolic links:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mv -v /usr/lib/lib{readline,history}.so.* /lib
|
||
chmod -v u+w /lib/lib{readline,history}.so.*
|
||
ln -sfv ../../lib/$(readlink /usr/lib/libreadline.so) /usr/lib/libreadline.so
|
||
ln -sfv ../../lib/$(readlink /usr/lib/libhistory.so ) /usr/lib/libhistory.so</kbd>
|
||
</pre>
|
||
<p>
|
||
If desired, install the documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.0</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-readline" name=
|
||
"contents-readline"></a>6.15.2. Contents of Readline
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">libhistory.so and
|
||
libreadline.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/include/readline and
|
||
/usr/share/doc/readline-8.0</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504928643664" name=
|
||
"idm46504928643664"></a>Short Descriptions
|
||
</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>
|
||
Provides a consistent user interface for recalling
|
||
lines of history
|
||
</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>
|
||
Provides a set of commands for manipulating text
|
||
entered in an interactive session of a program.
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-m4" name=
|
||
"ch-system-m4"></a>6.16. M4-1.4.18
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The M4 package contains a macro processor.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.4 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">33 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.16.1. Installation of M4
|
||
</h3>
|
||
<p>
|
||
First, make some fixes required by glibc-2.28:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
|
||
echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare M4 for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-m4" name="contents-m4"></a>6.16.2. Contents
|
||
of M4
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed program:</strong>
|
||
<span class="segbody">m4</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504928609504" name=
|
||
"idm46504928609504"></a>Short Descriptions
|
||
</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>
|
||
Copies the given files while expanding the macros
|
||
that they contain [These macros are either built-in
|
||
or user-defined and can take any number of
|
||
arguments. Besides performing macro expansion,
|
||
<span class="command"><strong>m4</strong></span>
|
||
has built-in functions for including named files,
|
||
running Unix commands, performing integer
|
||
arithmetic, manipulating text, recursion, etc. The
|
||
<span class="command"><strong>m4</strong></span>
|
||
program can be used either as a front-end to a
|
||
compiler or as a macro processor in its own right.]
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-bc" name=
|
||
"ch-system-bc"></a>6.17. Bc-2.5.3
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Bc package contains an arbitrary precision numeric
|
||
processing language.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">2.9 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.17.1. Installation of Bc
|
||
</h3>
|
||
<p>
|
||
Prepare Bc for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">PREFIX=/usr CC=gcc CFLAGS="-std=c99" ./configure.sh -G -O3</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code>CC=gcc
|
||
CFLAGS="-std=c99"</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
These parameters specify the compiler and C standard to
|
||
use.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>-O3</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Specify the optimization to use.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>-G</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Omit parts of the test suite that won't work without a
|
||
GNU bc present.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test bc, run:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make test</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-bc" name="contents-bc"></a>6.17.2. Contents
|
||
of Bc
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">bc and dc</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504928569968" name=
|
||
"idm46504928569968"></a>Short Descriptions
|
||
</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>
|
||
A command line calculator
|
||
</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>
|
||
A reverse-polish command line calculator
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-binutils" name=
|
||
"ch-system-binutils"></a>6.18. Binutils-2.34
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Binutils package contains a linker, an assembler, and
|
||
other tools for handling object files.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">6.7 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">5.1 GB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.18.1. Installation of Binutils
|
||
</h3>
|
||
<p>
|
||
Verify that the PTYs are working properly inside the chroot
|
||
environment by performing a simple test:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">expect -c "spawn ls"</kbd>
|
||
</pre>
|
||
<p>
|
||
This command should output the following:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="computeroutput">spawn ls</code>
|
||
</pre>
|
||
<p>
|
||
If, instead, the output includes the message below, then the
|
||
environment is not set up for proper PTY operation. This
|
||
issue needs to be resolved before running the test suites for
|
||
Binutils and GCC:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="computeroutput">The system has no more ptys.
|
||
Ask your system administrator to create more.</code>
|
||
</pre>
|
||
<p>
|
||
Now remove one test that prevents the tests from running to
|
||
completion:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">sed -i '/@\tincremental_copy/d' gold/testsuite/Makefile.in</kbd>
|
||
</pre>
|
||
<p>
|
||
The Binutils documentation recommends building Binutils in a
|
||
dedicated build directory:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v build
|
||
cd build</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Binutils for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">../configure --prefix=/usr \
|
||
--enable-gold \
|
||
--enable-ld=default \
|
||
--enable-plugins \
|
||
--enable-shared \
|
||
--disable-werror \
|
||
--enable-64-bit-bfd \
|
||
--with-system-zlib</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure parameters:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-gold</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Build the gold linker and install it as ld.gold (along
|
||
side the default linker).
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-ld=default</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Build the original bfd linker and install it as both ld
|
||
(the default linker) and ld.bfd.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-plugins</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Enables plugin support for the linker.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-64-bit-bfd</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Enables 64-bit support (on hosts with narrower word
|
||
sizes). May not be needed on 64-bit systems, but does
|
||
no harm.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-system-zlib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Use the installed zlib library rather than building the
|
||
included version.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make tooldir=/usr</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the make parameter:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>tooldir=/usr</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Normally, the tooldir (the directory where the
|
||
executables will ultimately be located) is set to
|
||
<code class=
|
||
"filename">$(exec_prefix)/$(target_alias)</code>. For
|
||
example, x86_64 machines would expand that to
|
||
<code class=
|
||
"filename">/usr/x86_64-unknown-linux-gnu</code>.
|
||
Because this is a custom system, this target-specific
|
||
directory in <code class="filename">/usr</code> is not
|
||
required. <code class=
|
||
"filename">$(exec_prefix)/$(target_alias)</code> would
|
||
be used if the system was used to cross-compile (for
|
||
example, compiling a package on an Intel machine that
|
||
generates code that can be executed on PowerPC
|
||
machines).
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<div class="admon important">
|
||
<h3>
|
||
Important
|
||
</h3>
|
||
<p>
|
||
The test suite for Binutils in this section is considered
|
||
critical. Do not skip it under any circumstances.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Test the results:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make -k check</kbd>
|
||
</pre>
|
||
<p>
|
||
The ver_test_pr16504.sh test is known to fail.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make tooldir=/usr install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-binutils" name=
|
||
"contents-binutils"></a>6.18.2. Contents of Binutils
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">addr2line, ar, as, c++filt, dwp,
|
||
elfedit, gprof, ld, ld.bfd, ld.gold, nm, objcopy,
|
||
objdump, ranlib, readelf, size, strings, and strip</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">libbfd.{a,so} and
|
||
libopcodes.{a,so}</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/usr/lib/ldscripts</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504928507936" name=
|
||
"idm46504928507936"></a>Short Descriptions
|
||
</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>
|
||
Translates program addresses to file names and line
|
||
numbers; given an address and the name of an
|
||
executable, it uses the debugging information in
|
||
the executable to determine which source file and
|
||
line number are associated with the address
|
||
</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>
|
||
Creates, modifies, and extracts from archives
|
||
</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>
|
||
An assembler that assembles the output of
|
||
<span class="command"><strong>gcc</strong></span>
|
||
into object files
|
||
</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>
|
||
Used by the linker to de-mangle C++ and Java
|
||
symbols and to keep overloaded functions from
|
||
clashing
|
||
</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>
|
||
The DWARF packaging utility
|
||
</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>
|
||
Updates the ELF header of ELF files
|
||
</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>
|
||
Displays call graph profile data
|
||
</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>
|
||
A linker that combines a number of object and
|
||
archive files into a single file, relocating their
|
||
data and tying up symbol references
|
||
</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>
|
||
A cut down version of ld that only supports the elf
|
||
object file format
|
||
</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>
|
||
Hard link to <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>
|
||
Lists the symbols occurring in a given object file
|
||
</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>
|
||
Translates one type of object file into another
|
||
</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>
|
||
Displays information about the given object file,
|
||
with options controlling the particular information
|
||
to display; the information shown is useful to
|
||
programmers who are working on the compilation
|
||
tools
|
||
</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>
|
||
Generates an index of the contents of an archive
|
||
and stores it in the archive; the index lists all
|
||
of the symbols defined by archive members that are
|
||
relocatable object files
|
||
</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>
|
||
Displays information about ELF type binaries
|
||
</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>
|
||
Lists the section sizes and the total size for the
|
||
given object files
|
||
</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>
|
||
Outputs, for each given file, the sequences of
|
||
printable characters that are of at least the
|
||
specified length (defaulting to four); for object
|
||
files, it prints, by default, only the strings from
|
||
the initializing and loading sections while for
|
||
other types of files, it scans the entire file
|
||
</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>
|
||
Discards symbols from object files
|
||
</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>
|
||
The Binary File Descriptor library
|
||
</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>
|
||
The Compat ANSI-C Type Format debugging support
|
||
library
|
||
</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>
|
||
A libctf variant which does not use libbfd
|
||
functionality
|
||
</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>
|
||
A library for dealing with opcodes—the
|
||
<span class="quote">“<span class=
|
||
"quote">readable text</span>”</span> versions
|
||
of instructions for the processor; it is used for
|
||
building utilities like <span class=
|
||
"command"><strong>objdump</strong></span>
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-gmp" name=
|
||
"ch-system-gmp"></a>6.19. GMP-6.2.0
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The GMP package contains math libraries. These have useful
|
||
functions for arbitrary precision arithmetic.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">1.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">51 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.19.1. Installation of GMP
|
||
</h3>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
If you are building for 32-bit x86, but you have a CPU
|
||
which is capable of running 64-bit code <span class=
|
||
"emphasis"><em>and</em></span> you have specified
|
||
<code class="envar">CFLAGS</code> in the environment, the
|
||
configure script will attempt to configure for 64-bits and
|
||
fail. Avoid this by invoking the configure command below
|
||
with
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command"><em class=
|
||
"parameter"><code>ABI=32</code></em> ./configure ...</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The default settings of GMP produce libraries optimized for
|
||
the host processor. If libraries suitable for processors
|
||
less capable than the host's CPU are desired, generic
|
||
libraries can be created by running the following:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cp -v configfsf.guess config.guess
|
||
cp -v configfsf.sub config.sub</kbd>
|
||
</pre>
|
||
</div>
|
||
<p>
|
||
Prepare GMP for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--enable-cxx \
|
||
--disable-static \
|
||
--docdir=/usr/share/doc/gmp-6.2.0</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the new configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-cxx</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This parameter enables C++ support
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--docdir=/usr/share/doc/gmp-6.2.0</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This variable specifies the correct place for the
|
||
documentation.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package and generate the HTML documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make
|
||
make html</kbd>
|
||
</pre>
|
||
<div class="admon important">
|
||
<h3>
|
||
Important
|
||
</h3>
|
||
<p>
|
||
The test suite for GMP in this section is considered
|
||
critical. Do not skip it under any circumstances.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Test the results:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check 2>&1 | tee gmp-check-log</kbd>
|
||
</pre>
|
||
<div class="admon caution">
|
||
<h3>
|
||
Caution
|
||
</h3>
|
||
<p>
|
||
The code in gmp is highly optimized for the processor where
|
||
it is built. Occasionally, the code that detects the
|
||
processor misidentifies the system capabilities and there
|
||
will be errors in the tests or other applications using the
|
||
gmp libraries with the message "Illegal instruction". In
|
||
this case, gmp should be reconfigured with the option
|
||
--build=x86_64-unknown-linux-gnu and rebuilt.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Ensure that all 190 tests in the test suite passed. Check the
|
||
results by issuing the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package and its documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install
|
||
make install-html</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-gmp" name="contents-gmp"></a>6.19.2. Contents
|
||
of GMP
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed Libraries:</strong>
|
||
<span class="segbody">libgmp.so and libgmpxx.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/usr/share/doc/gmp-6.2.0</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504928369840" name=
|
||
"idm46504928369840"></a>Short Descriptions
|
||
</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>
|
||
Contains precision math functions
|
||
</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>
|
||
Contains C++ precision math functions
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-mpfr" name=
|
||
"ch-system-mpfr"></a>6.20. MPFR-4.0.2
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The MPFR package contains functions for multiple precision
|
||
math.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.8 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">37 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.20.1. Installation of MPFR
|
||
</h3>
|
||
<p>
|
||
Prepare MPFR for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--disable-static \
|
||
--enable-thread-safe \
|
||
--docdir=/usr/share/doc/mpfr-4.0.2</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package and generate the HTML documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make
|
||
make html</kbd>
|
||
</pre>
|
||
<div class="admon important">
|
||
<h3>
|
||
Important
|
||
</h3>
|
||
<p>
|
||
The test suite for MPFR in this section is considered
|
||
critical. Do not skip it under any circumstances.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Test the results and ensure that all tests passed:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package and its documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install
|
||
make install-html</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-mpfr" name="contents-mpfr"></a>6.20.2.
|
||
Contents of MPFR
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed Libraries:</strong>
|
||
<span class="segbody">libmpfr.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/usr/share/doc/mpfr-4.0.2</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504928335776" name=
|
||
"idm46504928335776"></a>Short Descriptions
|
||
</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>
|
||
Contains multiple-precision math functions
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-mpc" name=
|
||
"ch-system-mpc"></a>6.21. MPC-1.1.0
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The MPC package contains a library for the arithmetic of
|
||
complex numbers with arbitrarily high precision and correct
|
||
rounding of the result.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.3 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">22 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.21.1. Installation of MPC
|
||
</h3>
|
||
<p>
|
||
Prepare MPC for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--disable-static \
|
||
--docdir=/usr/share/doc/mpc-1.1.0</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package and generate the HTML documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make
|
||
make html</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package and its documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install
|
||
make install-html</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-mpc" name="contents-mpc"></a>6.21.2. Contents
|
||
of MPC
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed Libraries:</strong>
|
||
<span class="segbody">libmpc.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed Directory:</strong>
|
||
<span class="segbody">/usr/share/doc/mpc-1.1.0</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504928307232" name=
|
||
"idm46504928307232"></a>Short Descriptions
|
||
</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>
|
||
Contains complex math functions
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-attr" name=
|
||
"ch-system-attr"></a>6.22. Attr-2.4.48
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The attr package contains utilities to administer the
|
||
extended attributes on filesystem objects.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">4.2 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.22.1. Installation of Attr
|
||
</h3>
|
||
<p>
|
||
Prepare Attr for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--bindir=/bin \
|
||
--disable-static \
|
||
--sysconfdir=/etc \
|
||
--docdir=/usr/share/doc/attr-2.4.48</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
The tests need to be run on a filesystem that supports
|
||
extended attributes such as the ext2, ext3, or ext4
|
||
filesystems. To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
The shared library needs to be moved to <code class=
|
||
"filename">/lib</code>, and as a result the <code class=
|
||
"filename">.so</code> file in <code class=
|
||
"filename">/usr/lib</code> will need to be recreated:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mv -v /usr/lib/libattr.so.* /lib
|
||
ln -sfv ../../lib/$(readlink /usr/lib/libattr.so) /usr/lib/libattr.so</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-attr" name="contents-attr"></a>6.22.2.
|
||
Contents of Attr
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">attr, getfattr, and setfattr</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed library:</strong>
|
||
<span class="segbody">libattr.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/include/attr and
|
||
/usr/share/doc/attr-2.4.48</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504928272512" name=
|
||
"idm46504928272512"></a>Short Descriptions
|
||
</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>
|
||
Extends attributes on filesystem objects
|
||
</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>
|
||
Gets the extended attributes of filesystem objects
|
||
</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>
|
||
Sets the extended attributes of filesystem objects
|
||
</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>
|
||
Contains the library functions for manipulating
|
||
extended attributes
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-acl" name=
|
||
"ch-system-acl"></a>6.23. Acl-2.2.53
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Acl package contains utilities to administer Access
|
||
Control Lists, which are used to define more fine-grained
|
||
discretionary access rights for files and directories.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">6.4 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.23.1. Installation of Acl
|
||
</h3>
|
||
<p>
|
||
Prepare Acl for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--bindir=/bin \
|
||
--disable-static \
|
||
--libexecdir=/usr/lib \
|
||
--docdir=/usr/share/doc/acl-2.2.53</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
The Acl tests need to be run on a filesystem that supports
|
||
access controls after <span class=
|
||
"application">Coreutils</span> has been built with the Acl
|
||
libraries. If desired, return to this package and run
|
||
<span class="command"><strong>make check</strong></span>
|
||
after <span class="application">Coreutils</span> has been
|
||
built later in this chapter.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
The shared library needs to be moved to <code class=
|
||
"filename">/lib</code>, and as a result the <code class=
|
||
"filename">.so</code> file in <code class=
|
||
"filename">/usr/lib</code> will need to be recreated:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mv -v /usr/lib/libacl.so.* /lib
|
||
ln -sfv ../../lib/$(readlink /usr/lib/libacl.so) /usr/lib/libacl.so</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-acl" name="contents-acl"></a>6.23.2. Contents
|
||
of Acl
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">chacl, getfacl, and setfacl</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed library:</strong>
|
||
<span class="segbody">libacl.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/include/acl and
|
||
/usr/share/doc/acl-2.2.53</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504928223984" name=
|
||
"idm46504928223984"></a>Short Descriptions
|
||
</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>
|
||
Changes the access control list of a file or
|
||
directory
|
||
</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>
|
||
Gets file access control lists
|
||
</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>
|
||
Sets file access control lists
|
||
</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>
|
||
Contains the library functions for manipulating
|
||
Access Control Lists
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-shadow" name=
|
||
"ch-system-shadow"></a>6.24. Shadow-4.8.1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Shadow package contains programs for handling passwords
|
||
in a secure way.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">46 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.24.1. Installation of Shadow
|
||
</h3>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
If you would like to enforce the use of strong passwords,
|
||
refer to <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/cracklib.html">
|
||
http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/cracklib.html</a>
|
||
for installing CrackLib prior to building Shadow. Then add
|
||
<em class="parameter"><code>--with-libcrack</code></em> to
|
||
the <span class="command"><strong>configure</strong></span>
|
||
command below.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Disable the installation of the <span class=
|
||
"command"><strong>groups</strong></span> program and its man
|
||
pages, as Coreutils provides a better version. Also, prevent
|
||
the installation of manual pages that were already installed
|
||
in <a class="xref" href="#ch-system-man-pages" title=
|
||
"6.8. Man-pages-5.05">Section 6.8,
|
||
“Man-pages-5.05”</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>Instead of using the default
|
||
<span class="emphasis"><em>crypt</em></span> method, use the
|
||
more secure <span class="emphasis"><em>SHA-512</em></span>
|
||
method of password encryption, which also allows passwords
|
||
longer than 8 characters. It is also necessary to change the
|
||
obsolete <code class="filename">/var/spool/mail</code>
|
||
location for user mailboxes that Shadow uses by default to
|
||
the <code class="filename">/var/mail</code> location used
|
||
currently:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \
|
||
-e 's@/var/spool/mail@/var/mail@' etc/login.defs</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
If you chose to build Shadow with Cracklib support, run the
|
||
following:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs</kbd>
|
||
</pre>
|
||
</div>
|
||
<p>
|
||
Make a minor change to make the first group number generated
|
||
by useradd 1000:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i 's/1000/999/' etc/useradd</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Shadow for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">./configure --sysconfdir=/etc --with-group-name-max-length=32</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure option:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-group-name-max-length=32</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
The maximum user name is 32 characters. Make the
|
||
maximum group name the same.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
This package does not come with a test suite.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="configuration" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="conf-shadow" name="conf-shadow"></a>6.24.2.
|
||
Configuring Shadow
|
||
</h3>
|
||
<p>
|
||
This package contains utilities to add, modify, and delete
|
||
users and groups; set and change their passwords; and perform
|
||
other administrative tasks. For a full explanation of what
|
||
<span class="emphasis"><em>password shadowing</em></span>
|
||
means, see the <code class="filename">doc/HOWTO</code> file
|
||
within the unpacked source tree. If using Shadow support,
|
||
keep in mind that programs which need to verify passwords
|
||
(display managers, FTP programs, pop3 daemons, etc.) must be
|
||
Shadow-compliant. That is, they need to be able to work with
|
||
shadowed passwords.
|
||
</p>
|
||
<p>
|
||
To enable shadowed passwords, run the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">pwconv</kbd>
|
||
</pre>
|
||
<p>
|
||
To enable shadowed group passwords, run:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grpconv</kbd>
|
||
</pre>
|
||
<p>
|
||
Shadow's stock configuration for the <span class=
|
||
"command"><strong>useradd</strong></span> utility has a few
|
||
caveats that need some explanation. First, the default action
|
||
for the <span class="command"><strong>useradd</strong></span>
|
||
utility is to create the user and a group of the same name as
|
||
the user. By default the user ID (UID) and group ID (GID)
|
||
numbers will begin with 1000. This means if you don't pass
|
||
parameters to <span class=
|
||
"command"><strong>useradd</strong></span>, each user will be
|
||
a member of a unique group on the system. If this behavior is
|
||
undesirable, you'll need to pass the <em class=
|
||
"parameter"><code>-g</code></em> parameter to <span class=
|
||
"command"><strong>useradd</strong></span>. The default
|
||
parameters are stored in the <code class=
|
||
"filename">/etc/default/useradd</code> file. You may need to
|
||
modify two parameters in this file to suit your particular
|
||
needs.
|
||
</p>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong><code class="filename">/etc/default/useradd</code>
|
||
Parameter Explanations</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>GROUP=1000</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This parameter sets the beginning of the group numbers
|
||
used in the /etc/group file. You can modify it to
|
||
anything you desire. Note that <span class=
|
||
"command"><strong>useradd</strong></span> will never
|
||
reuse a UID or GID. If the number identified in this
|
||
parameter is used, it will use the next available
|
||
number after this. Note also that if you don't have a
|
||
group 1000 on your system the first time you use
|
||
<span class="command"><strong>useradd</strong></span>
|
||
without the <em class="parameter"><code>-g</code></em>
|
||
parameter, you'll get a message displayed on the
|
||
terminal that says: <code class=
|
||
"computeroutput">useradd: unknown GID 1000</code>. You
|
||
may disregard this message and group number 1000 will
|
||
be used.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>CREATE_MAIL_SPOOL=yes</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This parameter causes <span class=
|
||
"command"><strong>useradd</strong></span> to create a
|
||
mailbox file for the newly created user. <span class=
|
||
"command"><strong>useradd</strong></span> will make the
|
||
group ownership of this file to the <code class=
|
||
"systemitem">mail</code> group with 0660 permissions.
|
||
If you would prefer that these mailbox files are not
|
||
created by <span class=
|
||
"command"><strong>useradd</strong></span>, issue the
|
||
following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i 's/yes/no/' /etc/default/useradd</kbd>
|
||
</pre>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
<div class="configuration" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.24.3. Setting the root password
|
||
</h3>
|
||
<p>
|
||
Choose a password for user <span class=
|
||
"emphasis"><em>root</em></span> and set it by running:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">passwd root</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-shadow" name="contents-shadow"></a>6.24.4.
|
||
Contents of Shadow
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">chage, chfn, chgpasswd, chpasswd,
|
||
chsh, expiry, faillog, gpasswd, groupadd, groupdel,
|
||
groupmems, groupmod, grpck, grpconv, grpunconv, lastlog,
|
||
login, logoutd, newgidmap, newgrp, newuidmap, newusers,
|
||
nologin, passwd, pwck, pwconv, pwunconv, sg (link to
|
||
newgrp), su, useradd, userdel, usermod, vigr (link to
|
||
vipw), and vipw</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/etc/default</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504928132640" name=
|
||
"idm46504928132640"></a>Short Descriptions
|
||
</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>
|
||
Used to change the maximum number of days between
|
||
obligatory password changes
|
||
</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>
|
||
Used to change a user's full name and other
|
||
information
|
||
</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>
|
||
Used to update group passwords in batch mode
|
||
</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>
|
||
Used to update user passwords in batch mode
|
||
</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>
|
||
Used to change a user's default login shell
|
||
</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>
|
||
Checks and enforces the current password expiration
|
||
policy
|
||
</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>
|
||
Is used to examine the log of login failures, to
|
||
set a maximum number of failures before an account
|
||
is blocked, or to reset the failure count
|
||
</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>
|
||
Is used to add and delete members and
|
||
administrators to groups
|
||
</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>
|
||
Creates a group with the given name
|
||
</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>
|
||
Deletes the group with the given name
|
||
</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>
|
||
Allows a user to administer his/her own group
|
||
membership list without the requirement of super
|
||
user privileges.
|
||
</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>
|
||
Is used to modify the given group's name or 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>
|
||
Verifies the integrity of the group files
|
||
<code class="filename">/etc/group</code> and
|
||
<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>
|
||
Creates or updates the shadow group file from the
|
||
normal group file
|
||
</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>
|
||
Updates <code class="filename">/etc/group</code>
|
||
from <code class="filename">/etc/gshadow</code> and
|
||
then deletes the latter
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="lastlog" name="lastlog"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>lastlog</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Reports the most recent login of all users or of a
|
||
given user
|
||
</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>
|
||
Is used by the system to let users sign on
|
||
</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>
|
||
Is a daemon used to enforce restrictions on log-on
|
||
time and ports
|
||
</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>
|
||
Is used to set the gid mapping of a user namespace
|
||
</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>
|
||
Is used to change the current GID during a login
|
||
session
|
||
</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>
|
||
Is used to set the uid mapping of a user namespace
|
||
</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>
|
||
Is used to create or update an entire series of
|
||
user accounts
|
||
</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>
|
||
Displays a message that an account is not
|
||
available; it is designed to be used as the default
|
||
shell for accounts that have been disabled
|
||
</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>
|
||
Is used to change the password for a user or group
|
||
account
|
||
</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>
|
||
Verifies the integrity of the password files
|
||
<code class="filename">/etc/passwd</code> and
|
||
<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>
|
||
Creates or updates the shadow password file from
|
||
the normal password file
|
||
</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>
|
||
Updates <code class="filename">/etc/passwd</code>
|
||
from <code class="filename">/etc/shadow</code> and
|
||
then deletes the latter
|
||
</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>
|
||
Executes a given command while the user's GID is
|
||
set to that of the given group
|
||
</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>
|
||
Runs a shell with substitute user and group IDs
|
||
</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>
|
||
Creates a new user with the given name, or updates
|
||
the default new-user information
|
||
</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>
|
||
Deletes the given user account
|
||
</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>
|
||
Is used to modify the given user's login name, User
|
||
Identification (UID), shell, initial group, home
|
||
directory, etc.
|
||
</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>
|
||
Edits the <code class="filename">/etc/group</code>
|
||
or <code class="filename">/etc/gshadow</code> files
|
||
</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>
|
||
Edits the <code class="filename">/etc/passwd</code>
|
||
or <code class="filename">/etc/shadow</code> files
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-gcc" name=
|
||
"ch-system-gcc"></a>6.25. GCC-9.2.0
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The GCC package contains the GNU compiler collection, which
|
||
includes the C and C++ compilers.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">88 SBU (with tests)</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">4.2 GB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.25.1. Installation of GCC
|
||
</h3>
|
||
<p>
|
||
If building on x86_64, change the default directory name for
|
||
64-bit libraries to <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>
|
||
As in gcc-pass2, fix a problem introduced by Glibc-2.31:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -e '1161 s|^|//|' \
|
||
-i libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc</kbd>
|
||
</pre>
|
||
<p>
|
||
The GCC documentation recommends building GCC in a dedicated
|
||
build directory:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v build
|
||
cd build</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare GCC for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">SED=sed \
|
||
../configure --prefix=/usr \
|
||
--enable-languages=c,c++ \
|
||
--disable-multilib \
|
||
--disable-bootstrap \
|
||
--with-system-zlib</kbd>
|
||
</pre>
|
||
<p>
|
||
Note that for other languages, there are some prerequisites
|
||
that are not yet available. See the <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/general/gcc.html">
|
||
BLFS Book</a> for instructions on how to build all of GCC's
|
||
supported languages.
|
||
</p>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the new configure
|
||
parameters:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><code class=
|
||
"envar">SED=sed</code></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Setting this environment variable prevents a hard-coded
|
||
path to /tools/bin/sed.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-system-zlib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This switch tells GCC to link to the system installed
|
||
copy of the Zlib library, rather than its own internal
|
||
copy.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<div class="admon important">
|
||
<h3>
|
||
Important
|
||
</h3>
|
||
<p>
|
||
In this section, the test suite for GCC is considered
|
||
critical. Do not skip it under any circumstance.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
One set of tests in the GCC test suite is known to exhaust
|
||
the stack, so increase the stack size prior to running the
|
||
tests:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">ulimit -s 32768</kbd>
|
||
</pre>
|
||
<p>
|
||
Test the results as a non-privileged user, but do not stop at
|
||
errors:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">chown -Rv nobody .
|
||
su nobody -s /bin/bash -c "PATH=$PATH make -k check"</kbd>
|
||
</pre>
|
||
<p>
|
||
To receive a summary of the test suite results, run:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">../contrib/test_summary</kbd>
|
||
</pre>
|
||
<p>
|
||
For only the summaries, pipe the output through
|
||
<strong class="userinput"><code>grep -A7
|
||
Summ</code></strong>.
|
||
</p>
|
||
<p>
|
||
Results can be compared with those located at <a class=
|
||
"ulink" href=
|
||
"http://www.linuxfromscratch.org/lfs/build-logs/9.1/">http://www.linuxfromscratch.org/lfs/build-logs/9.1/</a>
|
||
and <a class="ulink" href=
|
||
"https://gcc.gnu.org/ml/gcc-testresults/">https://gcc.gnu.org/ml/gcc-testresults/</a>.
|
||
</p>
|
||
<p>
|
||
Six tests related to get_time are known to fail. These are
|
||
apparently related to the en_HK locale.
|
||
</p>
|
||
<p>
|
||
Two tests named lookup.cc and reverse.cc in experimental/net
|
||
are known to fail in LFS chroot environment because they
|
||
require /etc/hosts and iana-etc.
|
||
</p>
|
||
<p>
|
||
Two tests named pr57193.c and pr90178.c are known to fail.
|
||
</p>
|
||
<p>
|
||
A few unexpected failures cannot always be avoided. The GCC
|
||
developers are usually aware of these issues, but have not
|
||
resolved them yet. Unless the test results are vastly
|
||
different from those at the above URL, it is safe to
|
||
continue.
|
||
</p>
|
||
<p>
|
||
Install the package and remove an unneeded directory:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install
|
||
rm -rf /usr/lib/gcc/$(gcc -dumpmachine)/9.2.0/include-fixed/bits/</kbd>
|
||
</pre>
|
||
<p>
|
||
The GCC build directory is owned by <code class=
|
||
"systemitem">nobody</code> now and the ownership of the
|
||
installed header directory (and its content) will be
|
||
incorrect. Change the ownership to <code class=
|
||
"systemitem">root</code> user and group:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">chown -v -R root:root \
|
||
/usr/lib/gcc/*linux-gnu/9.2.0/include{,-fixed}</kbd>
|
||
</pre>
|
||
<p>
|
||
Create a symlink required by the <a class="ulink" href=
|
||
"https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s09.html">
|
||
FHS</a> for "historical" reasons.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">ln -sv ../usr/bin/cpp /lib</kbd>
|
||
</pre>
|
||
<p>
|
||
Many packages use the name <span class=
|
||
"command"><strong>cc</strong></span> to call the C compiler.
|
||
To satisfy those packages, create a symlink:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">ln -sv gcc /usr/bin/cc</kbd>
|
||
</pre>
|
||
<p>
|
||
Add a compatibility symlink to enable building programs with
|
||
Link Time Optimization (LTO):
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">install -v -dm755 /usr/lib/bfd-plugins
|
||
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/9.2.0/liblto_plugin.so \
|
||
/usr/lib/bfd-plugins/</kbd>
|
||
</pre>
|
||
<p>
|
||
Now that our final toolchain is in place, it is important to
|
||
again ensure that compiling and linking will work as
|
||
expected. We do this by performing the same sanity checks as
|
||
we did earlier in the chapter:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">echo 'int main(){}' > dummy.c
|
||
cc dummy.c -v -Wl,--verbose &> dummy.log
|
||
readelf -l a.out | grep ': /lib'</kbd>
|
||
</pre>
|
||
<p>
|
||
There should be no errors, and the output of the last command
|
||
will be (allowing for platform-specific differences in
|
||
dynamic linker name):
|
||
</p>
|
||
<pre class="screen">
|
||
<code class=
|
||
"computeroutput">[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</code>
|
||
</pre>
|
||
<p>
|
||
Now make sure that we're setup to use the correct start
|
||
files:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log</kbd>
|
||
</pre>
|
||
<p>
|
||
The output of the last command should be:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class=
|
||
"computeroutput">/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/crt1.o succeeded
|
||
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/crti.o succeeded
|
||
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib/crtn.o succeeded</code>
|
||
</pre>
|
||
<p>
|
||
Depending on your machine architecture, the above may differ
|
||
slightly, the difference usually being the name of the
|
||
directory after <code class="filename">/usr/lib/gcc</code>.
|
||
The important thing to look for here is that <span class=
|
||
"command"><strong>gcc</strong></span> has found all three
|
||
<code class="filename">crt*.o</code> files under the
|
||
<code class="filename">/usr/lib</code> directory.
|
||
</p>
|
||
<p>
|
||
Verify that the compiler is searching for the correct header
|
||
files:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grep -B4 '^ /usr/include' dummy.log</kbd>
|
||
</pre>
|
||
<p>
|
||
This command should return the following output:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="computeroutput">#include <...> search starts here:
|
||
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include
|
||
/usr/local/include
|
||
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include-fixed
|
||
/usr/include</code>
|
||
</pre>
|
||
<p>
|
||
Again, note that the directory named after your target
|
||
triplet may be different than the above, depending on your
|
||
architecture.
|
||
</p>
|
||
<p>
|
||
Next, verify that the new linker is being used with the
|
||
correct search paths:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'</kbd>
|
||
</pre>
|
||
<p>
|
||
References to paths that have components with '-linux-gnu'
|
||
should be ignored, but otherwise the output of the last
|
||
command should be:
|
||
</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>
|
||
A 32-bit system may see a few different directories. For
|
||
example, here is the output from an i686 machine:
|
||
</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>
|
||
Next make sure that we're using the correct libc:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grep "/lib.*/libc.so.6 " dummy.log</kbd>
|
||
</pre>
|
||
<p>
|
||
The output of the last command should be:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="computeroutput">attempt to open /lib/libc.so.6 succeeded</code>
|
||
</pre>
|
||
<p>
|
||
Lastly, make sure GCC is using the correct dynamic linker:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">grep found dummy.log</kbd>
|
||
</pre>
|
||
<p>
|
||
The output of the last command should be (allowing for
|
||
platform-specific differences in dynamic linker name):
|
||
</p>
|
||
<pre class="screen">
|
||
<code class=
|
||
"computeroutput">found ld-linux-x86-64.so.2 at /lib/ld-linux-x86-64.so.2</code>
|
||
</pre>
|
||
<p>
|
||
If the output does not appear as shown above or is not
|
||
received at all, then something is seriously wrong.
|
||
Investigate and retrace the steps to find out where the
|
||
problem is and correct it. The most likely reason is that
|
||
something went wrong with the specs file adjustment. Any
|
||
issues will need to be resolved before continuing with the
|
||
process.
|
||
</p>
|
||
<p>
|
||
Once everything is working correctly, clean up the test
|
||
files:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">rm -v dummy.c a.out dummy.log</kbd>
|
||
</pre>
|
||
<p>
|
||
Finally, move a misplaced file:
|
||
</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="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-gcc" name="contents-gcc"></a>6.25.2. Contents
|
||
of GCC
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">c++, cc (link to gcc), cpp, g++,
|
||
gcc, gcc-ar, gcc-nm, gcc-ranlib, gcov, gcov-dump, and
|
||
gcov-tool</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</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}, libitm.{a,so}, liblsan.{a,so},
|
||
liblto_plugin.so, libquadmath.{a,so}, libssp.{a,so},
|
||
libssp_nonshared.a, libstdc++.{a,so}, libstdc++fs.a,
|
||
libsupc++.a, libtsan.{a,so}, and libubsan.{a,so}</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/include/c++, /usr/lib/gcc,
|
||
/usr/libexec/gcc, and /usr/share/gcc-9.2.0</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927879424" name=
|
||
"idm46504927879424"></a>Short Descriptions
|
||
</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>
|
||
The C++ compiler
|
||
</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>
|
||
The C compiler
|
||
</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>
|
||
The C preprocessor; it is used by the compiler to
|
||
expand the #include, #define, and similar
|
||
statements in the source files
|
||
</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>
|
||
The C++ compiler
|
||
</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>
|
||
The C compiler
|
||
</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>
|
||
A wrapper around <span class=
|
||
"command"><strong>ar</strong></span> that adds a
|
||
plugin to the command line. This program is only
|
||
used to add "link time optimization" and is not
|
||
useful with the default build options
|
||
</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>
|
||
A wrapper around <span class=
|
||
"command"><strong>nm</strong></span> that adds a
|
||
plugin to the command line. This program is only
|
||
used to add "link time optimization" and is not
|
||
useful with the default build options
|
||
</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>
|
||
A wrapper around <span class=
|
||
"command"><strong>ranlib</strong></span> that adds
|
||
a plugin to the command line. This program is only
|
||
used to add "link time optimization" and is not
|
||
useful with the default build options
|
||
</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>
|
||
A coverage testing tool; it is used to analyze
|
||
programs to determine where optimizations will have
|
||
the most effect
|
||
</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>
|
||
Offline gcda and gcno profile dump tool
|
||
</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>
|
||
Offline gcda profile processing tool
|
||
</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>
|
||
The Address Sanitizer runtime library
|
||
</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 built-in runtime library
|
||
</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>
|
||
The C preprocessing library
|
||
</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>
|
||
Contains run-time support for <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>
|
||
This library is linked in to a program when GCC is
|
||
instructed to enable profiling
|
||
</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 implementation of the OpenMP API for
|
||
multi-platform shared-memory parallel programming
|
||
in C/C++ and Fortran
|
||
</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>
|
||
The Leak Sanitizer runtime library
|
||
</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's Link Time Optimization (LTO) plugin allows
|
||
GCC to perform optimizations across compilation
|
||
units
|
||
</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>
|
||
GCC Quad Precision Math Library API
|
||
</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>
|
||
Contains routines supporting GCC's stack-smashing
|
||
protection functionality
|
||
</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>
|
||
The standard C++ library
|
||
</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 Filesystem library
|
||
</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>
|
||
Provides supporting routines for the C++
|
||
programming language
|
||
</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>
|
||
The Thread Sanitizer runtime library
|
||
</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>
|
||
The Undefined Behavior Sanitizer runtime library
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-pkgconfig" name=
|
||
"ch-system-pkgconfig"></a>6.26. Pkg-config-0.29.2
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The pkg-config package contains a tool for passing the
|
||
include path and/or library paths to build tools during the
|
||
configure and make file execution.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.3 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">30 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.26.1. Installation of Pkg-config
|
||
</h3>
|
||
<p>
|
||
Prepare Pkg-config for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--with-internal-glib \
|
||
--disable-host-tool \
|
||
--docdir=/usr/share/doc/pkg-config-0.29.2</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the new configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-internal-glib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This will allow pkg-config to use its internal version
|
||
of Glib because an external version is not available in
|
||
LFS.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-host-tool</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option disables the creation of an undesired hard
|
||
link to the pkg-config program.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-pkgconfig" name=
|
||
"contents-pkgconfig"></a>6.26.2. Contents of Pkg-config
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed program:</strong>
|
||
<span class="segbody">pkg-config</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class=
|
||
"segbody">/usr/share/doc/pkg-config-0.29.2</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927731216" name=
|
||
"idm46504927731216"></a>Short Descriptions
|
||
</h4>
|
||
<table border="0" class="variablelist">
|
||
<colgroup>
|
||
<col align="left" valign="top" />
|
||
<col />
|
||
</colgroup>
|
||
<tbody>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="pkgconfig" name="pkgconfig"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>pkg-config</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Returns meta information for the specified library
|
||
or package
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-ncurses" name=
|
||
"ch-system-ncurses"></a>6.27. Ncurses-6.2
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Ncurses package contains libraries for
|
||
terminal-independent handling of character screens.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.4 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">43 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.27.1. Installation of Ncurses
|
||
</h3>
|
||
<p>
|
||
Don't install a static library that is not handled by
|
||
configure:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.in</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Ncurses for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--mandir=/usr/share/man \
|
||
--with-shared \
|
||
--without-debug \
|
||
--without-normal \
|
||
--enable-pc-files \
|
||
--enable-widec</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the new configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-widec</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This switch causes wide-character libraries (e.g.,
|
||
<code class="filename">libncursesw.so.6.2</code>) to be
|
||
built instead of normal ones (e.g., <code class=
|
||
"filename">libncurses.so.6.2</code>). These
|
||
wide-character libraries are usable in both multibyte
|
||
and traditional 8-bit locales, while normal libraries
|
||
work properly only in 8-bit locales. Wide-character and
|
||
normal libraries are source-compatible, but not
|
||
binary-compatible.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-pc-files</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This switch generates and installs .pc files for
|
||
pkg-config.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--without-normal</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This switch disables building and installing most
|
||
static libraries.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
This package has a test suite, but it can only be run after
|
||
the package has been installed. The tests reside in the
|
||
<code class="filename">test/</code> directory. See the
|
||
<code class="filename">README</code> file in that directory
|
||
for further details.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
Move the shared libraries to the <code class=
|
||
"filename">/lib</code> directory, where they are expected to
|
||
reside:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mv -v /usr/lib/libncursesw.so.6* /lib</kbd>
|
||
</pre>
|
||
<p>
|
||
Because the libraries have been moved, one symlink points to
|
||
a non-existent file. Recreate it:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">ln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) /usr/lib/libncursesw.so</kbd>
|
||
</pre>
|
||
<p>
|
||
Many applications still expect the linker to be able to find
|
||
non-wide-character Ncurses libraries. Trick such applications
|
||
into linking with wide-character libraries by means of
|
||
symlinks and linker scripts:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">for lib in ncurses form panel menu ; do
|
||
rm -vf /usr/lib/lib${lib}.so
|
||
echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so
|
||
ln -sfv ${lib}w.pc /usr/lib/pkgconfig/${lib}.pc
|
||
done</kbd>
|
||
</pre>
|
||
<p>
|
||
Finally, make sure that old applications that look for
|
||
<code class="filename">-lcurses</code> at build time are
|
||
still buildable:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">rm -vf /usr/lib/libcursesw.so
|
||
echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
|
||
ln -sfv libncurses.so /usr/lib/libcurses.so</kbd>
|
||
</pre>
|
||
<p>
|
||
If desired, install the Ncurses documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v /usr/share/doc/ncurses-6.2
|
||
cp -v -R doc/* /usr/share/doc/ncurses-6.2</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The instructions above don't create non-wide-character
|
||
Ncurses libraries since no package installed by compiling
|
||
from sources would link against them at runtime. However,
|
||
the only known binary-only applications that link against
|
||
non-wide-character Ncurses libraries require version 5. If
|
||
you must have such libraries because of some binary-only
|
||
application or to be compliant with LSB, build the package
|
||
again with the following commands:
|
||
</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="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-ncurses" name="contents-ncurses"></a>6.27.2.
|
||
Contents of Ncurses
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">captoinfo (link to tic), clear,
|
||
infocmp, infotocap (link to tic), ncursesw6-config, reset
|
||
(link to tset), tabs, tic, toe, tput, and tset</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">libcursesw.so (symlink and linker
|
||
script to libncursesw.so), libformw.so, libmenuw.so,
|
||
libncursesw.so, libncurses++w.a, libpanelw.so, and their
|
||
non-wide-character counterparts without "w" in the
|
||
library names.</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/share/tabset,
|
||
/usr/share/terminfo, and
|
||
/usr/share/doc/ncurses-6.2</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927674752" name=
|
||
"idm46504927674752"></a>Short Descriptions
|
||
</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>
|
||
Converts a termcap description into a terminfo
|
||
description
|
||
</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>
|
||
Clears the screen, if possible
|
||
</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>
|
||
Compares or prints out terminfo descriptions
|
||
</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>
|
||
Converts a terminfo description into a termcap
|
||
description
|
||
</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>
|
||
Provides configuration information for 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>
|
||
Reinitializes a terminal to its default values
|
||
</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>
|
||
Clears and sets tab stops on a terminal
|
||
</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>
|
||
The terminfo entry-description compiler that
|
||
translates a terminfo file from source format into
|
||
the binary format needed for the ncurses library
|
||
routines [A terminfo file contains information on
|
||
the capabilities of a certain terminal.]
|
||
</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>
|
||
Lists all available terminal types, giving the
|
||
primary name and description for each
|
||
</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>
|
||
Makes the values of terminal-dependent capabilities
|
||
available to the shell; it can also be used to
|
||
reset or initialize a terminal or report its long
|
||
name
|
||
</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>
|
||
Can be used to initialize terminals
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libcursesw" name=
|
||
"libcursesw"></a><span class="term"><code class=
|
||
"filename">libcursesw</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
A link to <code class="filename">libncursesw</code>
|
||
</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>
|
||
Contains functions to display text in many complex
|
||
ways on a terminal screen; a good example of the
|
||
use of these functions is the menu displayed during
|
||
the kernel's <span class="command"><strong>make
|
||
menuconfig</strong></span>
|
||
</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>
|
||
Contains functions to implement forms
|
||
</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>
|
||
Contains functions to implement menus
|
||
</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>
|
||
Contains functions to implement panels
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-libcap" name=
|
||
"ch-system-libcap"></a>6.28. Libcap-2.31
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Libcap package implements the user-space interfaces to
|
||
the POSIX 1003.1e capabilities available in Linux kernels.
|
||
These capabilities are a partitioning of the all powerful
|
||
root privilege into a set of distinct privileges.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">8.5 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.28.1. Installation of Libcap
|
||
</h3>
|
||
<p>
|
||
Prevent two static libraries from being installed:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i '/install.*STA...LIBNAME/d' libcap/Makefile</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make lib=lib</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the make option:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>lib=lib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This parameter sets the library directory to
|
||
<code class="filename">/lib</code> rather than
|
||
<code class="filename">/lib64</code> on x86_64. It has
|
||
no effect on x86.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make test</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make lib=lib install
|
||
chmod -v 755 /lib/libcap.so.2.31</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-libcap" name="contents-libcap"></a>6.28.2.
|
||
Contents of Libcap
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">capsh, getcap, getpcaps, and
|
||
setcap</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed library:</strong>
|
||
<span class="segbody">libcap.so and libpsx.a</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927573904" name=
|
||
"idm46504927573904"></a>Short Descriptions
|
||
</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>
|
||
A shell wrapper to explore and constrain capability
|
||
support
|
||
</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>
|
||
Examines file capabilities
|
||
</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>
|
||
Displays the capabilities on the queried
|
||
process(es)
|
||
</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>
|
||
Sets file capabilities
|
||
</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>
|
||
Contains the library functions for manipulating
|
||
POSIX 1003.1e capabilities
|
||
</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>
|
||
Contains functions to support POSIX semantics for
|
||
syscalls associated with the pthread library
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-sed" name=
|
||
"ch-system-sed"></a>6.29. Sed-4.8
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Sed package contains a stream editor.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.4 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">34 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.29.1. Installation of Sed
|
||
</h3>
|
||
<p>
|
||
First fix an issue in the LFS environment and remove a
|
||
failing test:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i 's/usr/tools/' build-aux/help2man
|
||
sed -i 's/testsuite.panic-tests.sh//' Makefile.in</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Sed for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr --bindir=/bin</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package and generate the HTML documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make
|
||
make html</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package and its documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install
|
||
install -d -m755 /usr/share/doc/sed-4.8
|
||
install -m644 doc/sed.html /usr/share/doc/sed-4.8</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-sed" name="contents-sed"></a>6.29.2. Contents
|
||
of Sed
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed program:</strong>
|
||
<span class="segbody">sed</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/usr/share/doc/sed-4.8</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927520752" name=
|
||
"idm46504927520752"></a>Short Descriptions
|
||
</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>
|
||
Filters and transforms text files in a single pass
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-psmisc" name=
|
||
"ch-system-psmisc"></a>6.30. Psmisc-23.2
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Psmisc package contains programs for displaying
|
||
information about running processes.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">4.6 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.30.1. Installation of Psmisc
|
||
</h3>
|
||
<p>
|
||
Prepare Psmisc for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
This package does not come with a test suite.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
Finally, move the <span class=
|
||
"command"><strong>killall</strong></span> and <span class=
|
||
"command"><strong>fuser</strong></span> programs to the
|
||
location specified by the FHS:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mv -v /usr/bin/fuser /bin
|
||
mv -v /usr/bin/killall /bin</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-psmisc" name="contents-psmisc"></a>6.30.2.
|
||
Contents of Psmisc
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">fuser, killall, peekfd, prtstat,
|
||
pslog, pstree, and pstree.x11 (link to pstree)</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927491456" name=
|
||
"idm46504927491456"></a>Short Descriptions
|
||
</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>
|
||
Reports the Process IDs (PIDs) of processes that
|
||
use the given files or file systems
|
||
</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>
|
||
Kills processes by name; it sends a signal to all
|
||
processes running any of the given commands
|
||
</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>
|
||
Peek at file descriptors of a running process,
|
||
given its 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>
|
||
Prints information about a process
|
||
</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>
|
||
Reports current logs path of a process
|
||
</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>
|
||
Displays running processes as a tree
|
||
</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>
|
||
Same as <span class=
|
||
"command"><strong>pstree</strong></span>, except
|
||
that it waits for confirmation before exiting
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-iana-etc" name=
|
||
"ch-system-iana-etc"></a>6.31. Iana-Etc-2.30
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Iana-Etc package provides data for network services and
|
||
protocols.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">2.3 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.31.1. Installation of Iana-Etc
|
||
</h3>
|
||
<p>
|
||
The following command converts the raw data provided by IANA
|
||
into the correct formats for the <code class=
|
||
"filename">/etc/protocols</code> and <code class=
|
||
"filename">/etc/services</code> data files:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
This package does not come with a test suite.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-iana-etc" name=
|
||
"contents-iana-etc"></a>6.31.2. Contents of Iana-Etc
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed files:</strong>
|
||
<span class="segbody">/etc/protocols and
|
||
/etc/services</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927438832" name=
|
||
"idm46504927438832"></a>Short Descriptions
|
||
</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>
|
||
Describes the various DARPA Internet protocols that
|
||
are available from the TCP/IP subsystem
|
||
</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>
|
||
Provides a mapping between friendly textual names
|
||
for internet services, and their underlying
|
||
assigned port numbers and protocol types
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-bison" name=
|
||
"ch-system-bison"></a>6.32. Bison-3.5.2
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Bison package contains a parser generator.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.3 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">43 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.32.1. Installation of Bison
|
||
</h3>
|
||
<p>
|
||
Prepare Bison for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.5.2</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
There is a circular dependency between bison and flex with
|
||
regard to the checks. If desired, after installing flex in
|
||
the next section, the bison package can be rebuilt and the
|
||
bison checks can be run with <span class=
|
||
"command"><strong>make check</strong></span>.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-bison" name="contents-bison"></a>6.32.2.
|
||
Contents of Bison
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">bison and yacc</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed library:</strong>
|
||
<span class="segbody">liby.a</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/usr/share/bison</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927404672" name=
|
||
"idm46504927404672"></a>Short Descriptions
|
||
</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>
|
||
Generates, from a series of rules, a program for
|
||
analyzing the structure of text files; Bison is a
|
||
replacement for 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>
|
||
A wrapper for <span class=
|
||
"command"><strong>bison</strong></span>, meant for
|
||
programs that still call <span class=
|
||
"command"><strong>yacc</strong></span> instead of
|
||
<span class=
|
||
"command"><strong>bison</strong></span>; it calls
|
||
<span class="command"><strong>bison</strong></span>
|
||
with the <em class="parameter"><code>-y</code></em>
|
||
option
|
||
</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>
|
||
The Yacc library containing implementations of
|
||
Yacc-compatible <code class=
|
||
"function">yyerror</code> and <code class=
|
||
"function">main</code> functions; this library is
|
||
normally not very useful, but POSIX requires it
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-flex" name=
|
||
"ch-system-flex"></a>6.33. Flex-2.6.4
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Flex package contains a utility for generating programs
|
||
that recognize patterns in text.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.4 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">36 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.33.1. Installation of Flex
|
||
</h3>
|
||
<p>
|
||
First, fix a problem introduced with glibc-2.26:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">sed -i "/math.h/a #include <malloc.h>" src/flexdef.h</kbd>
|
||
</pre>
|
||
<p>
|
||
The build procedure assumes the <span class=
|
||
"application">help2man</span> program is available to create
|
||
a man page from the executable --help option. This is not
|
||
present, so we use an environment variable to skip this
|
||
process. Now, prepare Flex for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">HELP2MAN=/tools/bin/true \
|
||
./configure --prefix=/usr --docdir=/usr/share/doc/flex-2.6.4</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results (about 0.5 SBU), issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
A few programs do not know about <span class=
|
||
"command"><strong>flex</strong></span> yet and try to run its
|
||
predecessor, <span class=
|
||
"command"><strong>lex</strong></span>. To support those
|
||
programs, create a symbolic link named <code class=
|
||
"filename">lex</code> that runs <code class=
|
||
"filename">flex</code> in <span class=
|
||
"command"><strong>lex</strong></span> emulation mode:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">ln -sv flex /usr/bin/lex</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-flex" name="contents-flex"></a>6.33.2.
|
||
Contents of Flex
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">flex, flex++ (link to flex), and
|
||
lex (link to flex)</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">libfl.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/usr/share/doc/flex-2.6.4</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927353168" name=
|
||
"idm46504927353168"></a>Short Descriptions
|
||
</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>
|
||
A tool for generating programs that recognize
|
||
patterns in text; it allows for the versatility to
|
||
specify the rules for pattern-finding, eradicating
|
||
the need to develop a specialized program
|
||
</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>
|
||
An extension of flex, is used for generating C++
|
||
code and classes. It is a symbolic link to
|
||
<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>
|
||
A symbolic link that runs <span class=
|
||
"command"><strong>flex</strong></span> in
|
||
<span class="command"><strong>lex</strong></span>
|
||
emulation mode
|
||
</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>
|
||
The <code class="filename">flex</code> library
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-grep" name=
|
||
"ch-system-grep"></a>6.34. Grep-3.4
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Grep package contains programs for searching through
|
||
files.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.7 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">39 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.34.1. Installation of Grep
|
||
</h3>
|
||
<p>
|
||
Prepare Grep for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr --bindir=/bin</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-grep" name="contents-grep"></a>6.34.2.
|
||
Contents of Grep
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">egrep, fgrep, and grep</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927309584" name=
|
||
"idm46504927309584"></a>Short Descriptions
|
||
</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>
|
||
Prints lines matching an extended regular
|
||
expression
|
||
</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>
|
||
Prints lines matching a list of fixed strings
|
||
</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>
|
||
Prints lines matching a basic regular expression
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-bash" name=
|
||
"ch-system-bash"></a>6.35. Bash-5.0
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Bash package contains the Bourne-Again SHell.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">1.9 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">62 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.35.1. Installation of Bash
|
||
</h3>
|
||
<p>
|
||
Incorporate some upstream fixes:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">patch -Np1 -i ../bash-5.0-upstream_fixes-1.patch</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Bash for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--docdir=/usr/share/doc/bash-5.0 \
|
||
--without-bash-malloc \
|
||
--with-installed-readline</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the new configure option:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-installed-readline</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option tells Bash to use the <code class=
|
||
"filename">readline</code> library that is already
|
||
installed on the system rather than using its own
|
||
readline version.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Skip down to <span class="quote">“<span class=
|
||
"quote">Install the package</span>”</span> if not
|
||
running the test suite.
|
||
</p>
|
||
<p>
|
||
To prepare the tests, ensure that the <code class=
|
||
"systemitem">nobody</code> user can write to the sources
|
||
tree:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">chown -Rv nobody .</kbd>
|
||
</pre>
|
||
<p>
|
||
Now, run the tests as the <code class=
|
||
"systemitem">nobody</code> user:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">su nobody -s /bin/bash -c "PATH=$PATH HOME=/home make tests"</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package and move the main executable to
|
||
<code class="filename">/bin</code>:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install
|
||
mv -vf /usr/bin/bash /bin</kbd>
|
||
</pre>
|
||
<p>
|
||
Run the newly compiled <span class=
|
||
"command"><strong>bash</strong></span> program (replacing the
|
||
one that is currently being executed):
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">exec /bin/bash --login +h</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The parameters used make the <span class=
|
||
"command"><strong>bash</strong></span> process an
|
||
interactive login shell and continue to disable hashing so
|
||
that new programs are found as they become available.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-bash" name="contents-bash"></a>6.35.2.
|
||
Contents of Bash
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">bash, bashbug, and sh (link to
|
||
bash)</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/usr/include/bash, /usr/lib/bash,
|
||
and /usr/share/doc/bash-5.0</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927256640" name=
|
||
"idm46504927256640"></a>Short Descriptions
|
||
</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>
|
||
A widely-used command interpreter; it performs many
|
||
types of expansions and substitutions on a given
|
||
command line before executing it, thus making this
|
||
interpreter a powerful tool
|
||
</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>
|
||
A shell script to help the user compose and mail
|
||
standard formatted bug reports concerning
|
||
<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>
|
||
A symlink to the <span class=
|
||
"command"><strong>bash</strong></span> program;
|
||
when invoked as <span class=
|
||
"command"><strong>sh</strong></span>, <span class=
|
||
"command"><strong>bash</strong></span> tries to
|
||
mimic the startup behavior of historical versions
|
||
of <span class="command"><strong>sh</strong></span>
|
||
as closely as possible, while conforming to the
|
||
POSIX standard as well
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-libtool" name=
|
||
"ch-system-libtool"></a>6.36. Libtool-2.4.6
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Libtool package contains the GNU generic library support
|
||
script. It wraps the complexity of using shared libraries in
|
||
a consistent, portable interface.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">1.8 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">43 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.36.1. Installation of Libtool
|
||
</h3>
|
||
<p>
|
||
Prepare Libtool for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The test time for libtool can be reduced significantly on a
|
||
system with multiple cores. To do this, append <span class=
|
||
"command"><strong>TESTSUITEFLAGS=-j<N></strong></span>
|
||
to the line above. For instance, using -j4 can reduce the
|
||
test time by over 60 percent.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Five tests are known to fail in the LFS build environment due
|
||
to a circular dependency, but all tests pass if rechecked
|
||
after automake is installed.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-libtool" name="contents-libtool"></a>6.36.2.
|
||
Contents of Libtool
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">libtool and libtoolize</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">libltdl.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/include/libltdl and
|
||
/usr/share/libtool</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927212912" name=
|
||
"idm46504927212912"></a>Short Descriptions
|
||
</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>
|
||
Provides generalized library-building support
|
||
services
|
||
</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>
|
||
Provides a standard way to add <span class=
|
||
"command"><strong>libtool</strong></span> support
|
||
to a package
|
||
</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>
|
||
Hides the various difficulties of dlopening
|
||
libraries
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-gdbm" name=
|
||
"ch-system-gdbm"></a>6.37. GDBM-1.18.1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The GDBM package contains the GNU Database Manager. It is a
|
||
library of database functions that use extensible hashing and
|
||
work similar to the standard UNIX dbm. The library provides
|
||
primitives for storing key/data pairs, searching and
|
||
retrieving the data by its key and deleting a key along with
|
||
its data.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">11 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.37.1. Installation of GDBM
|
||
</h3>
|
||
<p>
|
||
Prepare GDBM for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--disable-static \
|
||
--enable-libgdbm-compat</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure option:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><code class=
|
||
"envar">--enable-libgdbm-compat</code></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This switch enables the libgdbm compatibility library
|
||
to be built, as some packages outside of LFS may
|
||
require the older DBM routines it provides.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-gdbm" name="contents-gdbm"></a>6.37.2.
|
||
Contents of GDBM
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">gdbm_dump, gdbm_load, and
|
||
gdbmtool</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">libgdbm.so and
|
||
libgdbm_compat.so</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927171808" name=
|
||
"idm46504927171808"></a>Short Descriptions
|
||
</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>
|
||
Dumps a GDBM database to a file
|
||
</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>
|
||
Recreates a GDBM database from a dump file
|
||
</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>
|
||
Tests and modifies a GDBM database
|
||
</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>
|
||
Contains functions to manipulate a hashed database
|
||
</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>
|
||
Compatibility library containing older DBM
|
||
functions
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-gperf" name=
|
||
"ch-system-gperf"></a>6.38. Gperf-3.1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
Gperf generates a perfect hash function from a key set.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">6.3 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.38.1. Installation of Gperf
|
||
</h3>
|
||
<p>
|
||
Prepare Gperf for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
The tests are known to fail if running multiple simultaneous
|
||
tests (-j option greater than 1). To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make -j1 check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-gperf" name="contents-gperf"></a>6.38.2.
|
||
Contents of Gperf
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed program:</strong>
|
||
<span class="segbody">gperf</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/usr/share/doc/gperf-3.1</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927125552" name=
|
||
"idm46504927125552"></a>Short Descriptions
|
||
</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>
|
||
Generates a perfect hash from a key set
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-expat" name=
|
||
"ch-system-expat"></a>6.39. Expat-2.2.9
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Expat package contains a stream oriented C library for
|
||
parsing XML.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">11 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.39.1. Installation of Expat
|
||
</h3>
|
||
<p>
|
||
First fix a problem with the regression tests in the LFS
|
||
environment:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i 's|usr/bin/env |bin/|' run.sh.in</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Expat for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--disable-static \
|
||
--docdir=/usr/share/doc/expat-2.2.9</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
If desired, install the documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">install -v -m644 doc/*.{html,png,css} /usr/share/doc/expat-2.2.9</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-expat" name="contents-expat"></a>6.39.2.
|
||
Contents of Expat
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed program:</strong>
|
||
<span class="segbody">xmlwf</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">libexpat.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/usr/share/doc/expat-2.2.9</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927092784" name=
|
||
"idm46504927092784"></a>Short Descriptions
|
||
</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>
|
||
Is a non-validating utility to check whether or not
|
||
XML documents are well formed
|
||
</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>
|
||
Contains API functions for parsing XML
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-inetutils" name=
|
||
"ch-system-inetutils"></a>6.40. Inetutils-1.9.4
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Inetutils package contains programs for basic networking.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.3 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">29 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.40.1. Installation of Inetutils
|
||
</h3>
|
||
<p>
|
||
Prepare Inetutils for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--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>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-logger</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option prevents Inetutils from installing the
|
||
<span class="command"><strong>logger</strong></span>
|
||
program, which is used by scripts to pass messages to
|
||
the System Log Daemon. Do not install it because
|
||
Util-linux installs a more recent version.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-whois</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option disables the building of the Inetutils
|
||
<span class="command"><strong>whois</strong></span>
|
||
client, which is out of date. Instructions for a better
|
||
<span class="command"><strong>whois</strong></span>
|
||
client are in the BLFS book.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-r*</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
These parameters disable building obsolete programs
|
||
that should not be used due to security issues. The
|
||
functions provided by these programs can be provided by
|
||
the <span class="application">openssh</span> package in
|
||
the BLFS book.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-servers</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This disables the installation of the various network
|
||
servers included as part of the Inetutils package.
|
||
These servers are deemed not appropriate in a basic LFS
|
||
system. Some are insecure by nature and are only
|
||
considered safe on trusted networks. Note that better
|
||
replacements are available for many of these servers.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
One test, libls.sh, may fail in the initial chroot
|
||
environment but will pass if the test is rerun after the
|
||
LFS system is complete. One test, ping-localhost.sh, will
|
||
fail if the host system does not have ipv6 capability.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
Move some programs so they are available if <code class=
|
||
"filename">/usr</code> is not accessible:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mv -v /usr/bin/{hostname,ping,ping6,traceroute} /bin
|
||
mv -v /usr/bin/ifconfig /sbin</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-inetutils" name=
|
||
"contents-inetutils"></a>6.40.2. Contents of Inetutils
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">dnsdomainname, ftp, ifconfig,
|
||
hostname, ping, ping6, talk, telnet, tftp, and
|
||
traceroute</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504927044208" name=
|
||
"idm46504927044208"></a>Short Descriptions
|
||
</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>
|
||
Show the system's DNS domain name
|
||
</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>
|
||
Is the file transfer protocol program
|
||
</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>
|
||
Reports or sets the name of the host
|
||
</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>
|
||
Manages network interfaces
|
||
</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>
|
||
Sends echo-request packets and reports how long the
|
||
replies take
|
||
</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>
|
||
A version of <span class=
|
||
"command"><strong>ping</strong></span> for IPv6
|
||
networks
|
||
</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>
|
||
Is used to chat with another user
|
||
</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>
|
||
An interface to the TELNET protocol
|
||
</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>
|
||
A trivial file transfer program
|
||
</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>
|
||
Traces the route your packets take from the host
|
||
you are working on to another host on a network,
|
||
showing all the intermediate hops (gateways) along
|
||
the way
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-perl" name=
|
||
"ch-system-perl"></a>6.41. Perl-5.30.1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Perl package contains the Practical Extraction and Report
|
||
Language.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">9.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">272 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.41.1. Installation of Perl
|
||
</h3>
|
||
<p>
|
||
First create a basic <code class="filename">/etc/hosts</code>
|
||
file to be referenced in one of Perl's configuration files as
|
||
well as the optional test suite:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">echo "127.0.0.1 localhost $(hostname)" > /etc/hosts</kbd>
|
||
</pre>
|
||
<p>
|
||
This version of Perl now builds the Compress::Raw::Zlib and
|
||
Compress::Raw::BZip2 modules. By default Perl will use an
|
||
internal copy of the sources for the build. Issue the
|
||
following command so that Perl will use the libraries
|
||
installed on the system:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">export BUILD_ZLIB=False
|
||
export BUILD_BZIP2=0</kbd>
|
||
</pre>
|
||
<p>
|
||
To have full control over the way Perl is set up, you can
|
||
remove the <span class="quote">“<span class=
|
||
"quote">-des</span>”</span> options from the following
|
||
command and hand-pick the way this package is built.
|
||
Alternatively, use the command exactly as below to use the
|
||
defaults that Perl auto-detects:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sh Configure -des -Dprefix=/usr \
|
||
-Dvendorprefix=/usr \
|
||
-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>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>-Dvendorprefix=/usr</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This ensures <span class=
|
||
"command"><strong>perl</strong></span> knows how to
|
||
tell packages where they should install their perl
|
||
modules.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>-Dpager="/usr/bin/less
|
||
-isR"</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This ensures that <strong class=
|
||
"userinput"><code>less</code></strong> is used instead
|
||
of <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>
|
||
Since Groff is not installed yet, <span class=
|
||
"command"><strong>Configure</strong></span> thinks that
|
||
we do not want man pages for Perl. Issuing these
|
||
parameters overrides this decision.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>-Duseshrplib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Build a shared libperl needed by some perl modules.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>-Dusethreads</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Build perl with support for threads.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results (approximately 11 SBU), issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make test</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package and clean up:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install
|
||
unset BUILD_ZLIB BUILD_BZIP2</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-perl" name="contents-perl"></a>6.41.2.
|
||
Contents of Perl
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">corelist, cpan, enc2xs, encguess,
|
||
h2ph, h2xs, instmodsh, json_pp, libnetcfg, perl,
|
||
perl5.30.1 (hard link to perl), perlbug, perldoc,
|
||
perlivp, perlthanks (hard link to perlbug), piconv,
|
||
pl2pm, pod2html, pod2man, pod2text, pod2usage,
|
||
podchecker, podselect, prove, ptar, ptardiff, ptargrep,
|
||
shasum, splain, xsubpp, and zipdetails</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">Many which cannot all be listed
|
||
here</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/usr/lib/perl5</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504926954080" name=
|
||
"idm46504926954080"></a>Short Descriptions
|
||
</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>
|
||
A commandline frontend to 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>
|
||
Interact with the Comprehensive Perl Archive
|
||
Network (CPAN) from the command line
|
||
</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>
|
||
Builds a Perl extension for the Encode module from
|
||
either Unicode Character Mappings or Tcl Encoding
|
||
Files
|
||
</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>
|
||
Guess the encoding type of one or several files
|
||
</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>
|
||
Converts <code class="filename">.h</code> C header
|
||
files to <code class="filename">.ph</code> Perl
|
||
header files
|
||
</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>
|
||
Converts <code class="filename">.h</code> C header
|
||
files to Perl extensions
|
||
</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>
|
||
Shell script for examining installed Perl modules,
|
||
and can create a tarball from an installed module
|
||
</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>
|
||
Converts data between certain input and output
|
||
formats
|
||
</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>
|
||
Can be used to configure the <code class=
|
||
"filename">libnet</code> Perl module
|
||
</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>
|
||
Combines some of the best features of C,
|
||
<span class="command"><strong>sed</strong></span>,
|
||
<span class="command"><strong>awk</strong></span>
|
||
and <span class=
|
||
"command"><strong>sh</strong></span> into a single
|
||
swiss-army language
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="perl-version" name=
|
||
"perl-version"></a><span class="term"><span class=
|
||
"command"><strong>perl5.30.1</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
A hard link to <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>
|
||
Used to generate bug reports about Perl, or the
|
||
modules that come with it, and mail them
|
||
</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>
|
||
Displays a piece of documentation in pod format
|
||
that is embedded in the Perl installation tree or
|
||
in a Perl script
|
||
</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>
|
||
The Perl Installation Verification Procedure; it
|
||
can be used to verify that Perl and its libraries
|
||
have been installed correctly
|
||
</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>
|
||
Used to generate thank you messages to mail to the
|
||
Perl developers
|
||
</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>
|
||
A Perl version of the character encoding converter
|
||
<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>
|
||
A rough tool for converting Perl4 <code class=
|
||
"filename">.pl</code> files to Perl5 <code class=
|
||
"filename">.pm</code> modules
|
||
</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>
|
||
Converts files from pod format to HTML format
|
||
</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>
|
||
Converts pod data to formatted *roff input
|
||
</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>
|
||
Converts pod data to formatted ASCII text
|
||
</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>
|
||
Prints usage messages from embedded pod docs in
|
||
files
|
||
</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>
|
||
Checks the syntax of pod format documentation files
|
||
</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>
|
||
Displays selected sections of pod documentation
|
||
</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>
|
||
Command line tool for running tests against the
|
||
Test::Harness module
|
||
</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>
|
||
A <span class=
|
||
"command"><strong>tar</strong></span>-like program
|
||
written in 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>
|
||
A Perl program that compares an extracted archive
|
||
with an unextracted one
|
||
</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>
|
||
A Perl program that applies pattern matching to the
|
||
contents of files in a tar archive
|
||
</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>
|
||
Prints or checks SHA checksums
|
||
</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>
|
||
Is used to force verbose warning diagnostics in
|
||
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>
|
||
Converts Perl XS code into C code
|
||
</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>
|
||
Displays details about the internal structure of a
|
||
Zip file
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-xml-parser" name=
|
||
"ch-system-xml-parser"></a>6.42. XML::Parser-2.46
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The XML::Parser module is a Perl interface to James Clark's
|
||
XML parser, Expat.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">2.4 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.42.1. Installation of XML::Parser
|
||
</h3>
|
||
<p>
|
||
Prepare XML::Parser for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">perl Makefile.PL</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make test</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-xml-parser" name=
|
||
"contents-xml-parser"></a>6.42.2. Contents of XML::Parser
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed module:</strong>
|
||
<span class="segbody">Expat.so</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504926784032" name=
|
||
"idm46504926784032"></a>Short Descriptions
|
||
</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>
|
||
provides the Perl Expat interface
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-intltool" name=
|
||
"ch-system-intltool"></a>6.43. Intltool-0.51.0
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Intltool is an internationalization tool used for
|
||
extracting translatable strings from source files.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">1.5 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.43.1. Installation of Intltool
|
||
</h3>
|
||
<p>
|
||
First fix a warning that is caused by perl-5.22 and later:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i 's:\\\${:\\\$\\{:' intltool-update.in</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Intltool for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</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="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-intltool" name=
|
||
"contents-intltool"></a>6.43.2. Contents of Intltool
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">intltool-extract, intltool-merge,
|
||
intltool-prepare, intltool-update, and intltoolize</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/share/doc/intltool-0.51.0 and
|
||
/usr/share/intltool</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504926753376" name=
|
||
"idm46504926753376"></a>Short Descriptions
|
||
</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>
|
||
Prepares a package to use 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>
|
||
Generates header files that can be read by
|
||
<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>
|
||
Merges translated strings into various file types
|
||
</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>
|
||
Updates pot files and merges them with translation
|
||
files
|
||
</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>
|
||
Updates the po template files and merges them with
|
||
the translations
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-autoconf" name=
|
||
"ch-system-autoconf"></a>6.44. Autoconf-2.69
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Autoconf package contains programs for producing shell
|
||
scripts that can automatically configure source code.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU (about 3.2 SBU
|
||
with tests)</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">79 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.44.1. Installation of Autoconf
|
||
</h3>
|
||
<p>
|
||
First, fix a bug generated by Perl 5.28.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed '361 s/{/\\{/' -i bin/autoscan.in</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Autoconf for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
The test suite is currently broken by bash-5 and
|
||
libtool-2.4.3. To run the tests anyway, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-autoconf" name=
|
||
"contents-autoconf"></a>6.44.2. Contents of Autoconf
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">autoconf, autoheader, autom4te,
|
||
autoreconf, autoscan, autoupdate, and ifnames</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/usr/share/autoconf</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504926703776" name=
|
||
"idm46504926703776"></a>Short Descriptions
|
||
</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>
|
||
Produces shell scripts that automatically configure
|
||
software source code packages to adapt to many
|
||
kinds of Unix-like systems; the configuration
|
||
scripts it produces are independent—running
|
||
them does not require the <span class=
|
||
"command"><strong>autoconf</strong></span> program
|
||
</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>
|
||
A tool for creating template files of C
|
||
<span class="emphasis"><em>#define</em></span>
|
||
statements for configure to use
|
||
</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>
|
||
A wrapper for the M4 macro processor
|
||
</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>
|
||
Automatically runs <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>, and
|
||
<span class=
|
||
"command"><strong>libtoolize</strong></span> in the
|
||
correct order to save time when changes are made to
|
||
<span class=
|
||
"command"><strong>autoconf</strong></span> and
|
||
<span class=
|
||
"command"><strong>automake</strong></span> template
|
||
files
|
||
</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>
|
||
Helps to create a <code class=
|
||
"filename">configure.in</code> file for a software
|
||
package; it examines the source files in a
|
||
directory tree, searching them for common
|
||
portability issues, and creates a <code class=
|
||
"filename">configure.scan</code> file that serves
|
||
as as a preliminary <code class=
|
||
"filename">configure.in</code> file for the package
|
||
</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>
|
||
Modifies a <code class=
|
||
"filename">configure.in</code> file that still
|
||
calls <span class=
|
||
"command"><strong>autoconf</strong></span> macros
|
||
by their old names to use the current macro names
|
||
</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>
|
||
Helps when writing <code class=
|
||
"filename">configure.in</code> files for a software
|
||
package; it prints the identifiers that the package
|
||
uses in C preprocessor conditionals [If a package
|
||
has already been set up to have some portability,
|
||
this program can help determine what <span class=
|
||
"command"><strong>configure</strong></span> needs
|
||
to check for. It can also fill in gaps in a
|
||
<code class="filename">configure.in</code> file
|
||
generated by <span class=
|
||
"command"><strong>autoscan</strong></span>.]
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-automake" name=
|
||
"ch-system-automake"></a>6.45. Automake-1.16.1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Automake package contains programs for generating
|
||
Makefiles for use with Autoconf.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU (about 8.1 SBU
|
||
with tests)</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">107 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.45.1. Installation of Automake
|
||
</h3>
|
||
<p>
|
||
Prepare Automake for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.16.1</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Using the -j4 make option speeds up the tests, even on
|
||
systems with only one processor, due to internal delays in
|
||
individual tests. To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make -j4 check</kbd>
|
||
</pre>
|
||
<p>
|
||
One test is known to fail in the LFS environment: subobj.sh.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-automake" name=
|
||
"contents-automake"></a>6.45.2. Contents of Automake
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">aclocal, aclocal-1.16 (hard linked
|
||
with aclocal), automake, and automake-1.16 (hard linked
|
||
with automake)</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/share/aclocal-1.16,
|
||
/usr/share/automake-1.16, and
|
||
/usr/share/doc/automake-1.16.1</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504926632432" name=
|
||
"idm46504926632432"></a>Short Descriptions
|
||
</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>
|
||
Generates <code class="filename">aclocal.m4</code>
|
||
files based on the contents of <code class=
|
||
"filename">configure.in</code> files
|
||
</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>
|
||
A hard link to <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>
|
||
A tool for automatically generating <code class=
|
||
"filename">Makefile.in</code> files from
|
||
<code class="filename">Makefile.am</code> files [To
|
||
create all the <code class=
|
||
"filename">Makefile.in</code> files for a package,
|
||
run this program in the top-level directory. By
|
||
scanning the <code class=
|
||
"filename">configure.in</code> file, it
|
||
automatically finds each appropriate <code class=
|
||
"filename">Makefile.am</code> file and generates
|
||
the corresponding <code class=
|
||
"filename">Makefile.in</code> file.]
|
||
</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>
|
||
A hard link to <span class=
|
||
"command"><strong>automake</strong></span>
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-kmod" name=
|
||
"ch-system-kmod"></a>6.46. Kmod-26
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Kmod package contains libraries and utilities for loading
|
||
kernel modules
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">13 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.46.1. Installation of Kmod
|
||
</h3>
|
||
<p>
|
||
Prepare Kmod for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--bindir=/bin \
|
||
--sysconfdir=/etc \
|
||
--with-rootlibdir=/lib \
|
||
--with-xz \
|
||
--with-zlib</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code>--with-xz,
|
||
--with-zlib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
These options enable Kmod to handle compressed kernel
|
||
modules.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-rootlibdir=/lib</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option ensures different library related files are
|
||
placed in the correct directories.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
This package does not come with a test suite that can be run
|
||
in the LFS chroot environment. At a minimum the git program
|
||
is required and several tests will not run outside of a git
|
||
repository.
|
||
</p>
|
||
<p>
|
||
Install the package, and create symlinks for compatibility
|
||
with Module-Init-Tools (the package that previously handled
|
||
Linux kernel modules):
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install
|
||
|
||
for target in depmod insmod lsmod modinfo modprobe rmmod; do
|
||
ln -sfv ../bin/kmod /sbin/$target
|
||
done
|
||
|
||
ln -sfv kmod /bin/lsmod</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-kmod" name="contents-kmod"></a>6.46.2.
|
||
Contents of Kmod
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">depmod (link to kmod), insmod (link
|
||
to kmod), kmod, lsmod (link to kmod), modinfo (link to
|
||
kmod), modprobe (link to kmod), and rmmod (link to
|
||
kmod)</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed library:</strong>
|
||
<span class="segbody">libkmod.so</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504926579312" name=
|
||
"idm46504926579312"></a>Short Descriptions
|
||
</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>
|
||
Creates a dependency file based on the symbols it
|
||
finds in the existing set of modules; this
|
||
dependency file is used by <span class=
|
||
"command"><strong>modprobe</strong></span> to
|
||
automatically load the required modules
|
||
</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>
|
||
Installs a loadable module in the running kernel
|
||
</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>
|
||
Loads and unloads kernel modules
|
||
</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>
|
||
Lists currently loaded modules
|
||
</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>
|
||
Examines an object file associated with a kernel
|
||
module and displays any information that it can
|
||
glean
|
||
</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>
|
||
Uses a dependency file, created by <span class=
|
||
"command"><strong>depmod</strong></span>, to
|
||
automatically load relevant modules
|
||
</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>
|
||
Unloads modules from the running kernel
|
||
</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>
|
||
This library is used by other programs to load and
|
||
unload kernel modules
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-gettext" name=
|
||
"ch-system-gettext"></a>6.47. Gettext-0.20.1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Gettext package contains utilities for
|
||
internationalization and localization. These allow programs
|
||
to be compiled with NLS (Native Language Support), enabling
|
||
them to output messages in the user's native language.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">2.7 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">249 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.47.1. Installation of Gettext
|
||
</h3>
|
||
<p>
|
||
Prepare Gettext for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--disable-static \
|
||
--docdir=/usr/share/doc/gettext-0.20.1</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results (this takes a long time, around 3 SBUs),
|
||
issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install
|
||
chmod -v 0755 /usr/lib/preloadable_libintl.so</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-gettext" name="contents-gettext"></a>6.47.2.
|
||
Contents of Gettext
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</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, and xgettext</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">libasprintf.so, libgettextlib.so,
|
||
libgettextpo.so, libgettextsrc.so, libtextstyle.so, and
|
||
preloadable_libintl.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/lib/gettext,
|
||
/usr/share/doc/gettext-0.20.1, /usr/share/gettext, and
|
||
/usr/share/gettext-0.19.8</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504926515040" name=
|
||
"idm46504926515040"></a>Short Descriptions
|
||
</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>
|
||
Copies standard Gettext infrastructure files into a
|
||
source package
|
||
</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>
|
||
Substitutes environment variables in shell format
|
||
strings
|
||
</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>
|
||
Translates a natural language message into the
|
||
user's language by looking up the translation in a
|
||
message catalog
|
||
</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>
|
||
Primarily serves as a shell function library for
|
||
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>
|
||
Copies all standard Gettext files into the given
|
||
top-level directory of a package to begin
|
||
internationalizing it
|
||
</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>
|
||
Filters the messages of a translation catalog
|
||
according to their attributes and manipulates the
|
||
attributes
|
||
</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>
|
||
Concatenates and merges the given <code class=
|
||
"filename">.po</code> files
|
||
</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>
|
||
Compares two <code class="filename">.po</code>
|
||
files to check that both contain the same set of
|
||
msgid strings
|
||
</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>
|
||
Finds the messages that are common to the given
|
||
<code class="filename">.po</code> files
|
||
</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>
|
||
Converts a translation catalog to a different
|
||
character encoding
|
||
</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>
|
||
Creates an English translation catalog
|
||
</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>
|
||
Applies a command to all translations of a
|
||
translation catalog
|
||
</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>
|
||
Applies a filter to all translations of a
|
||
translation catalog
|
||
</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>
|
||
Generates a binary message catalog from a
|
||
translation catalog
|
||
</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>
|
||
Extracts all messages of a translation catalog that
|
||
match a given pattern or belong to some given
|
||
source files
|
||
</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>
|
||
Creates a new <code class="filename">.po</code>
|
||
file, initializing the meta information with values
|
||
from the user's environment
|
||
</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>
|
||
Combines two raw translations into a single file
|
||
</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>
|
||
Decompiles a binary message catalog into raw
|
||
translation text
|
||
</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>
|
||
Unifies duplicate translations in a translation
|
||
catalog
|
||
</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>
|
||
Displays native language translations of a textual
|
||
message whose grammatical form depends on a number
|
||
</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>
|
||
Recodes Serbian text from Cyrillic to Latin script
|
||
</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>
|
||
Extracts the translatable message lines from the
|
||
given source files to make the first translation
|
||
template
|
||
</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>
|
||
defines the <span class=
|
||
"emphasis"><em>autosprintf</em></span> class, which
|
||
makes C formatted output routines usable in C++
|
||
programs, for use with the <span class=
|
||
"emphasis"><em><string></em></span> strings
|
||
and the <span class=
|
||
"emphasis"><em><iostream></em></span> streams
|
||
</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>
|
||
a private library containing common routines used
|
||
by the various Gettext programs; these are not
|
||
intended for general use
|
||
</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>
|
||
Used to write specialized programs that process
|
||
<code class="filename">.po</code> files; this
|
||
library is used when the standard applications
|
||
shipped with Gettext (such as <span class=
|
||
"command"><strong>msgcomm</strong></span>,
|
||
<span class=
|
||
"command"><strong>msgcmp</strong></span>,
|
||
<span class=
|
||
"command"><strong>msgattrib</strong></span>, and
|
||
<span class=
|
||
"command"><strong>msgen</strong></span>) will not
|
||
suffice
|
||
</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>
|
||
A private library containing common routines used
|
||
by the various Gettext programs; these are not
|
||
intended for general use
|
||
</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>
|
||
Text styling library
|
||
</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>
|
||
A library, intended to be used by LD_PRELOAD that
|
||
assists <code class="filename">libintl</code> in
|
||
logging untranslated messages
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-libelf" name=
|
||
"ch-system-libelf"></a>6.48. Libelf from
|
||
Elfutils-0.178
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
Libelf is a library for handling ELF (Executable and Linkable
|
||
Format) files.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.9 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">124 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.48.1. Installation of Libelf
|
||
</h3>
|
||
<p>
|
||
Libelf is part of elfutils-0.178 package. Use the
|
||
elfutils-0.178.tar.bz2 as the source tarball.
|
||
</p>
|
||
<p>
|
||
Prepare Libelf for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr --disable-debuginfod</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
One test, run-elfclassify.sh, is known to fail.
|
||
</p>
|
||
<p>
|
||
Install only 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="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-elfutils" name=
|
||
"contents-elfutils"></a>6.48.2. Contents of Libelf
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed Library:</strong>
|
||
<span class="segbody">libelf.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed Directory:</strong>
|
||
<span class="segbody">/usr/include/elfutils</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-libffi" name=
|
||
"ch-system-libffi"></a>6.49. Libffi-3.3
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Libffi library provides a portable, high level
|
||
programming interface to various calling conventions. This
|
||
allows a programmer to call any function specified by a call
|
||
interface description at run time.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">1.9 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">10 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.49.1. Installation of Libffi
|
||
</h3>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
Similar to GMP, libffi builds with optimizations specific
|
||
to the proccesor in use. If building for another system,
|
||
export CFLAGS and CXXFLAGS to specify a generic build for
|
||
your architecture. If this is not done, all applications
|
||
that link to libffi will trigger Illegal Operation Errors.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Prepare libffi for compilation:
|
||
</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>The meaning of the configure option:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-gcc-arch=native</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Ensure gcc optimizes for the current system. If this is
|
||
not specified, the system is guessed and the code
|
||
generated may not be correct for some systems. If the
|
||
generated code will be copied from the native system to
|
||
a less capable system, use the less capable system as a
|
||
parameter. For details about alternative system types,
|
||
see <a class="ulink" href=
|
||
"https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/x86-Options.html">
|
||
the x86 options in the gcc manual</a>.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Six tests, all related to test-callback.c, are known to fail.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-libffi" name="contents-libffi"></a>6.49.2.
|
||
Contents of Libffi
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed library:</strong>
|
||
<span class="segbody">libffi.so</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504926326256" name=
|
||
"idm46504926326256"></a>Short Descriptions
|
||
</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>
|
||
contains the libffi API functions.
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-openssl" name=
|
||
"ch-system-openssl"></a>6.50. OpenSSL-1.1.1d
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The OpenSSL package contains management tools and libraries
|
||
relating to cryptography. These are useful for providing
|
||
cryptographic functions to other packages, such as OpenSSH,
|
||
email applications and web browsers (for accessing HTTPS
|
||
sites).
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">2.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">146 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.50.1. Installation of OpenSSL
|
||
</h3>
|
||
<p>
|
||
Prepare OpenSSL for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./config --prefix=/usr \
|
||
--openssldir=/etc/ssl \
|
||
--libdir=lib \
|
||
shared \
|
||
zlib-dynamic</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make test</kbd>
|
||
</pre>
|
||
<p>
|
||
One subtest in the test 20-test_enc.t is known to fail.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
|
||
make MANSUFFIX=ssl install</kbd>
|
||
</pre>
|
||
<p>
|
||
If desired, install the documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">mv -v /usr/share/doc/openssl /usr/share/doc/openssl-1.1.1d
|
||
cp -vfr doc/* /usr/share/doc/openssl-1.1.1d</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-openssl" name="contents-openssl"></a>6.50.2.
|
||
Contents of OpenSSL
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">c_rehash and openssl</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">libcrypto.{so,a} and
|
||
libssl.{so,a}</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/etc/ssl, /usr/include/openssl,
|
||
/usr/lib/engines and /usr/share/doc/openssl-1.1.1d</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504926293760" name=
|
||
"idm46504926293760"></a>Short Descriptions
|
||
</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>
|
||
is a <span class="application">Perl</span> script
|
||
that scans all files in a directory and adds
|
||
symbolic links to their hash values.
|
||
</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>
|
||
is a command-line tool for using the various
|
||
cryptography functions of <span class=
|
||
"application">OpenSSL</span>'s crypto library from
|
||
the shell. It can be used for various functions
|
||
which are documented in <span class=
|
||
"command"><strong>man 1 openssl</strong></span>.
|
||
</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>
|
||
implements a wide range of cryptographic algorithms
|
||
used in various Internet standards. The services
|
||
provided by this library are used by the
|
||
<span class="application">OpenSSL</span>
|
||
implementations of SSL, TLS and S/MIME, and they
|
||
have also been used to implement <span class=
|
||
"application">OpenSSH</span>, <span class=
|
||
"application">OpenPGP</span>, and other
|
||
cryptographic standards.
|
||
</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>
|
||
implements the Transport Layer Security (TLS v1)
|
||
protocol. It provides a rich API, documentation on
|
||
which can be found by running <span class=
|
||
"command"><strong>man 3 ssl</strong></span>.
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-Python" name=
|
||
"ch-system-Python"></a>6.51. Python-3.8.1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Python 3 package contains the Python development
|
||
environment. It is useful for object-oriented programming,
|
||
writing scripts, prototyping large programs or developing
|
||
entire applications.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">1.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">426 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.51.1. Installation of Python 3
|
||
</h3>
|
||
<p>
|
||
Prepare Python for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--enable-shared \
|
||
--with-system-expat \
|
||
--with-system-ffi \
|
||
--with-ensurepip=yes</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-system-expat</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This switch enables linking against system version of
|
||
<span class="application">Expat</span>.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-system-ffi</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This switch enables linking against system version of
|
||
<span class="application">libffi</span>.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-ensurepip=yes</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This switch enables building <span class=
|
||
"command"><strong>pip</strong></span> and <span class=
|
||
"command"><strong>setuptools</strong></span> packaging
|
||
programs.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue <span class="command"><strong>make
|
||
test</strong></span>. Some tests requiring network connection
|
||
or additional packages are skipped. The test named
|
||
test_normalization fails because network configuration is not
|
||
completed yet. For more comprehensive results, the test can
|
||
be rerun when Python 3 is reinstalled in BLFS.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install
|
||
chmod -v 755 /usr/lib/libpython3.8.so
|
||
chmod -v 755 /usr/lib/libpython3.so
|
||
ln -sfv pip3.8 /usr/bin/pip3</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the install commands:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><span class="command"><strong>chmod -v
|
||
755 /usr/lib/libpython3.{8.,}so</strong></span></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Fix permissions for libraries to be consistent with
|
||
other libraries.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
If desired, install the preformatted documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">install -v -dm755 /usr/share/doc/python-3.8.1/html
|
||
|
||
tar --strip-components=1 \
|
||
--no-same-owner \
|
||
--no-same-permissions \
|
||
-C /usr/share/doc/python-3.8.1/html \
|
||
-xvf ../python-3.8.1-docs-html.tar.bz2</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the documentation install
|
||
commands:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><code class=
|
||
"option">--no-same-owner</code> and <code class=
|
||
"option">--no-same-permissions</code></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Ensure the installed files have the correct ownership
|
||
and permissions. Without these options, using
|
||
<span class="application">tar</span> will install the
|
||
package files with the upstream creator's values.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-python" name="contents-python"></a>6.51.2.
|
||
Contents of Python 3
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed Programs:</strong>
|
||
<span class="segbody">2to3, idle3, pip3, pydoc3, python3,
|
||
and python3-config</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed Library:</strong>
|
||
<span class="segbody">libpython3.8.so and
|
||
libpython3.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed Directories:</strong>
|
||
<span class="segbody">/usr/include/python3.8,
|
||
/usr/lib/python3, and /usr/share/doc/python-3.8.1</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504926226176" name=
|
||
"idm46504926226176"></a>Short Descriptions
|
||
</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>
|
||
is a <span class="application">Python</span>
|
||
program that reads <span class="application">Python
|
||
2.x</span> source code and applies a series of
|
||
fixes to transform it into valid <span class=
|
||
"application">Python 3.x</span> code.
|
||
</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>
|
||
is a wrapper script that opens a <span class=
|
||
"application">Python</span> aware GUI editor. For
|
||
this script to run, you must have installed
|
||
<span class="application">Tk</span> before Python
|
||
so that the Tkinter Python module is built.
|
||
</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>
|
||
The package installer for Python. You can use pip
|
||
to install packages from Python Package Index and
|
||
other indexes.
|
||
</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>
|
||
is the <span class="application">Python</span>
|
||
documentation tool.
|
||
</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>
|
||
is an interpreted, interactive, object-oriented
|
||
programming language.
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-ninja" name=
|
||
"ch-system-ninja"></a>6.52. Ninja-1.10.0
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
Ninja is a small build system with a focus on speed.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.3 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">89 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.52.1. Installation of Ninja
|
||
</h3>
|
||
<p>
|
||
When run, ninja normally runs a maximum number of processes
|
||
in parallel. By default this is the number of cores on the
|
||
system plus two. In some cases this can overheat a CPU or run
|
||
a system out of memory. If run from the command line, passing
|
||
a -jN parameter will limit the number of parallel processes,
|
||
but some packages embed the execution of ninja and do not
|
||
pass a -j parameter.
|
||
</p>
|
||
<p>
|
||
Using the <span class="emphasis"><em>optional</em></span>
|
||
procedure below allows a user to limit the number of parallel
|
||
processes via an environment variable, NINJAJOBS.
|
||
<span class="command"><strong>For example</strong></span>,
|
||
setting:
|
||
</p>
|
||
<pre class="screen">
|
||
export NINJAJOBS=4
|
||
</pre>
|
||
<p>
|
||
will limit ninja to four parallel processes.
|
||
</p>
|
||
<p>
|
||
If desired, add the capability to use the environment
|
||
variable NINJAJOBS by running:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i '/int Guess/a \
|
||
int j = 0;\
|
||
char* jobs = getenv( "NINJAJOBS" );\
|
||
if ( jobs != NULL ) j = atoi( jobs );\
|
||
if ( j > 0 ) return j;\
|
||
' src/ninja.cc</kbd>
|
||
</pre>
|
||
<p>
|
||
Build Ninja with:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">python3 configure.py --bootstrap</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the build option:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--bootstrap</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This parameter forces ninja to rebuild itself for the
|
||
current system.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./ninja ninja_test
|
||
./ninja_test --gtest_filter=-SubprocessTest.SetWithLots</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</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="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-ninja" name="contents-ninja"></a>6.52.2.
|
||
Contents of Ninja
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">ninja</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504926169648" name=
|
||
"idm46504926169648"></a>Short Descriptions
|
||
</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>
|
||
is the Ninja build system.
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-meson" name=
|
||
"ch-system-meson"></a>6.53. Meson-0.53.1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
Meson is an open source build system meant to be both
|
||
extremely fast, and, even more importantly, as user friendly
|
||
as possible.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">31 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.53.1. Installation of Meson
|
||
</h3>
|
||
<p>
|
||
Compile Meson with the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">python3 setup.py build</kbd>
|
||
</pre>
|
||
<p>
|
||
This package does not come with a test suite.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">python3 setup.py install --root=dest
|
||
cp -rv dest/* /</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the install parameters:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--root=dest</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
By default <span class="command"><strong>python3
|
||
setup.py install</strong></span> installs various files
|
||
(such as man pages) into Python Eggs. With a specified
|
||
root location, <span class=
|
||
"command"><strong>setup.py</strong></span> installs
|
||
these files into a standard hierarchy. Then we can just
|
||
copy the hierarchy so the files will be in the standard
|
||
location.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-meson" name="contents-meson"></a>6.53.2.
|
||
Contents of Meson
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">meson</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class=
|
||
"segbody">/usr/lib/python3.8/site-packages/meson-0.53.1-py3.8.egg-info
|
||
and /usr/lib/python3.8/site-packages/mesonbuild</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504926139248" name=
|
||
"idm46504926139248"></a>Short Descriptions
|
||
</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>
|
||
A high productivity build system
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-coreutils" name=
|
||
"ch-system-coreutils"></a>6.54. Coreutils-8.31
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Coreutils package contains utilities for showing and
|
||
setting the basic system characteristics.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">2.3 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">202 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.54.1. Installation of Coreutils
|
||
</h3>
|
||
<p>
|
||
POSIX requires that programs from Coreutils recognize
|
||
character boundaries correctly even in multibyte locales. The
|
||
following patch fixes this non-compliance and other
|
||
internationalization-related bugs.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">patch -Np1 -i ../coreutils-8.31-i18n-1.patch</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
In the past, many bugs were found in this patch. When
|
||
reporting new bugs to Coreutils maintainers, please check
|
||
first if they are reproducible without this patch.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Suppress a test which on some machines can loop forever:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk</kbd>
|
||
</pre>
|
||
<p>
|
||
Now prepare Coreutils for compilation:
|
||
</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>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><span class=
|
||
"command"><strong>autoreconf</strong></span></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This command updates generated configuration files
|
||
consistent with the latest version of automake.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><code class=
|
||
"envar">FORCE_UNSAFE_CONFIGURE=1</code></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This environment variable allows the package to be
|
||
built as the root user.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-no-install-program=kill,uptime</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
The purpose of this switch is to prevent Coreutils from
|
||
installing binaries that will be installed by other
|
||
packages later.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Skip down to <span class="quote">“<span class=
|
||
"quote">Install the package</span>”</span> if not
|
||
running the test suite.
|
||
</p>
|
||
<p>
|
||
Now the test suite is ready to be run. First, run the tests
|
||
that are meant to be run as user <code class=
|
||
"systemitem">root</code>:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make NON_ROOT_USERNAME=nobody check-root</kbd>
|
||
</pre>
|
||
<p>
|
||
We're going to run the remainder of the tests as the
|
||
<code class="systemitem">nobody</code> user. Certain tests,
|
||
however, require that the user be a member of more than one
|
||
group. So that these tests are not skipped we'll add a
|
||
temporary group and make the user <code class=
|
||
"systemitem">nobody</code> a part of it:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">echo "dummy:x:1000:nobody" >> /etc/group</kbd>
|
||
</pre>
|
||
<p>
|
||
Fix some of the permissions so that the non-root user can
|
||
compile and run the tests:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">chown -Rv nobody . </kbd>
|
||
</pre>
|
||
<p>
|
||
Now run the tests. Make sure the PATH in the <strong class=
|
||
"userinput"><code>su</code></strong> environment includes
|
||
/tools/bin.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">su nobody -s /bin/bash \
|
||
-c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"</kbd>
|
||
</pre>
|
||
<p>
|
||
The test program test-getlogin is known to fail in a
|
||
partially built system environment like the chroot
|
||
environment here, but passes if run at the end of this
|
||
chapter. The test program tty.sh is also known to fail.
|
||
</p>
|
||
<p>
|
||
Remove the temporary group:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i '/dummy/d' /etc/group</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
Move programs to the locations specified by the FHS:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
|
||
mv -v /usr/bin/{false,ln,ls,mkdir,mknod,mv,pwd,rm} /bin
|
||
mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin
|
||
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\"/1 /usr/share/man/man8/chroot.8</kbd>
|
||
</pre>
|
||
<p>
|
||
Some of the scripts in the LFS-Bootscripts package depend on
|
||
<span class="command"><strong>head</strong></span>,
|
||
<span class="command"><strong>nice</strong></span>,
|
||
<span class="command"><strong>sleep</strong></span>, and
|
||
<span class="command"><strong>touch</strong></span>. As
|
||
<code class="filename">/usr</code> may not be available
|
||
during the early and late stages of booting, those binaries
|
||
need to be on the root partition to maintain FHS compliance:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mv -v /usr/bin/{head,nice,sleep,touch} /bin</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-coreutils" name=
|
||
"contents-coreutils"></a>6.54.2. Contents of Coreutils
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</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, and yes</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed library:</strong>
|
||
<span class="segbody">libstdbuf.so (in
|
||
/usr/libexec/coreutils)</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/usr/libexec/coreutils</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504926076128" name=
|
||
"idm46504926076128"></a>Short Descriptions
|
||
</h4>
|
||
<table border="0" class="variablelist">
|
||
<colgroup>
|
||
<col align="left" valign="top" />
|
||
<col />
|
||
</colgroup>
|
||
<tbody>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="base32" name="base32"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>base32</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Encodes and decodes data according to the base32
|
||
specification (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>
|
||
Encodes and decodes data according to the base64
|
||
specification (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>
|
||
Prints or checks BLAKE2 (512-bit) checksums
|
||
</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>
|
||
Strips any path and a given suffix from a file name
|
||
</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>
|
||
Encodes or decodes data using various algorithms
|
||
</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>
|
||
Concatenates files to standard output
|
||
</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>
|
||
Changes security context for files and directories
|
||
</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>
|
||
Changes the group ownership of files and
|
||
directories
|
||
</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>
|
||
Changes the permissions of each file to the given
|
||
mode; the mode can be either a symbolic
|
||
representation of the changes to make or an octal
|
||
number representing the new permissions
|
||
</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>
|
||
Changes the user and/or group ownership of files
|
||
and directories
|
||
</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>
|
||
Runs a command with the specified directory as the
|
||
<code class="filename">/</code> directory
|
||
</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>
|
||
Prints the Cyclic Redundancy Check (CRC) checksum
|
||
and the byte counts of each specified file
|
||
</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>
|
||
Compares two sorted files, outputting in three
|
||
columns the lines that are unique and the lines
|
||
that are common
|
||
</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>
|
||
Copies files
|
||
</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>
|
||
Splits a given file into several new files,
|
||
separating them according to given patterns or line
|
||
numbers and outputting the byte count of each new
|
||
file
|
||
</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>
|
||
Prints sections of lines, selecting the parts
|
||
according to given fields or positions
|
||
</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>
|
||
Displays the current time in the given format, or
|
||
sets the system date
|
||
</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>
|
||
Copies a file using the given block size and count,
|
||
while optionally performing conversions on it
|
||
</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>
|
||
Reports the amount of disk space available (and
|
||
used) on all mounted file systems, or only on the
|
||
file systems holding the selected files
|
||
</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>
|
||
Lists the contents of each given directory (the
|
||
same as the <span class=
|
||
"command"><strong>ls</strong></span> command)
|
||
</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>
|
||
Outputs commands to set the <code class=
|
||
"envar">LS_COLOR</code> environment variable to
|
||
change the color scheme used by <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>
|
||
Strips the non-directory suffix from a file name
|
||
</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>
|
||
Reports the amount of disk space used by the
|
||
current directory, by each of the given directories
|
||
(including all subdirectories) or by each of the
|
||
given files
|
||
</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>
|
||
Displays the given strings
|
||
</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>
|
||
Runs a command in a modified environment
|
||
</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>
|
||
Converts tabs to spaces
|
||
</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>
|
||
Evaluates expressions
|
||
</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>
|
||
Prints the prime factors of all specified integer
|
||
numbers
|
||
</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>
|
||
Does nothing, unsuccessfully; it always exits with
|
||
a status code indicating failure
|
||
</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>
|
||
Reformats the paragraphs in the given files
|
||
</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>
|
||
Wraps the lines in the given files
|
||
</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>
|
||
Reports a user's group memberships
|
||
</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>
|
||
Prints the first ten lines (or the given number of
|
||
lines) of each given file
|
||
</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>
|
||
Reports the numeric identifier (in hexadecimal) of
|
||
the host
|
||
</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>
|
||
Reports the effective user ID, group ID, and group
|
||
memberships of the current user or specified user
|
||
</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>
|
||
Copies files while setting their permission modes
|
||
and, if possible, their owner and group
|
||
</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>
|
||
Joins the lines that have identical join fields
|
||
from two separate files
|
||
</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>
|
||
Creates a hard link with the given name to a file
|
||
</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>
|
||
Makes hard links or soft (symbolic) links between
|
||
files
|
||
</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>
|
||
Reports the current user's login name
|
||
</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>
|
||
Lists the contents of each given directory
|
||
</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>
|
||
Reports or checks Message Digest 5 (MD5) checksums
|
||
</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>
|
||
Creates directories with the given names
|
||
</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>
|
||
Creates First-In, First-Outs (FIFOs), a "named
|
||
pipe" in UNIX parlance, with the given names
|
||
</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>
|
||
Creates device nodes with the given names; a device
|
||
node is a character special file, a block special
|
||
file, or a 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>
|
||
Creates temporary files in a secure manner; it is
|
||
used in scripts
|
||
</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>
|
||
Moves or renames files or directories
|
||
</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>
|
||
Runs a program with modified scheduling priority
|
||
</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>
|
||
Numbers the lines from the given files
|
||
</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>
|
||
Runs a command immune to hangups, with its output
|
||
redirected to a log file
|
||
</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>
|
||
Prints the number of processing units available to
|
||
a process
|
||
</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>
|
||
Converts numbers to or from human-readable strings
|
||
</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>
|
||
Dumps files in octal and other formats
|
||
</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>
|
||
Merges the given files, joining sequentially
|
||
corresponding lines side by side, separated by tab
|
||
characters
|
||
</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>
|
||
Checks if file names are valid or portable
|
||
</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>
|
||
Is a lightweight finger client; it reports some
|
||
information about the given users
|
||
</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>
|
||
Paginates and columnates files for printing
|
||
</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>
|
||
Prints the environment
|
||
</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>
|
||
Prints the given arguments according to the given
|
||
format, much like the C printf function
|
||
</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>
|
||
Produces a permuted index from the contents of the
|
||
given files, with each keyword in its context
|
||
</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>
|
||
Reports the name of the current working directory
|
||
</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>
|
||
Reports the value of the given symbolic link
|
||
</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>
|
||
Prints the resolved path
|
||
</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>
|
||
Removes files or directories
|
||
</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>
|
||
Removes directories if they are empty
|
||
</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>
|
||
Runs a command with specified security context
|
||
</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>
|
||
Prints a sequence of numbers within a given range
|
||
and with a given increment
|
||
</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>
|
||
Prints or checks 160-bit Secure Hash Algorithm 1
|
||
(SHA1) checksums
|
||
</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>
|
||
Prints or checks 224-bit Secure Hash Algorithm
|
||
checksums
|
||
</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>
|
||
Prints or checks 256-bit Secure Hash Algorithm
|
||
checksums
|
||
</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>
|
||
Prints or checks 384-bit Secure Hash Algorithm
|
||
checksums
|
||
</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>
|
||
Prints or checks 512-bit Secure Hash Algorithm
|
||
checksums
|
||
</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>
|
||
Overwrites the given files repeatedly with complex
|
||
patterns, making it difficult to recover the data
|
||
</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>
|
||
Shuffles lines of text
|
||
</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>
|
||
Pauses for the given amount of time
|
||
</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>
|
||
Sorts the lines from the given files
|
||
</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>
|
||
Splits the given file into pieces, by size or by
|
||
number of lines
|
||
</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>
|
||
Displays file or filesystem status
|
||
</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>
|
||
Runs commands with altered buffering operations for
|
||
its standard streams
|
||
</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>
|
||
Sets or reports terminal line settings
|
||
</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>
|
||
Prints checksum and block counts for each given
|
||
file
|
||
</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>
|
||
Flushes file system buffers; it forces changed
|
||
blocks to disk and updates the super block
|
||
</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>
|
||
Concatenates the given files in reverse
|
||
</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>
|
||
Prints the last ten lines (or the given number of
|
||
lines) of each given file
|
||
</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>
|
||
Reads from standard input while writing both to
|
||
standard output and to the given files
|
||
</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>
|
||
Compares values and checks file types
|
||
</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>
|
||
Runs a command with a time limit
|
||
</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>
|
||
Changes file timestamps, setting the access and
|
||
modification times of the given files to the
|
||
current time; files that do not exist are created
|
||
with zero length
|
||
</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>
|
||
Translates, squeezes, and deletes the given
|
||
characters from standard input
|
||
</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>
|
||
Does nothing, successfully; it always exits with a
|
||
status code indicating success
|
||
</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>
|
||
Shrinks or expands a file to the specified size
|
||
</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>
|
||
Performs a topological sort; it writes a completely
|
||
ordered list according to the partial ordering in a
|
||
given file
|
||
</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>
|
||
Reports the file name of the terminal connected to
|
||
standard input
|
||
</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>
|
||
Reports system information
|
||
</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>
|
||
Converts spaces to tabs
|
||
</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>
|
||
Discards all but one of successive identical lines
|
||
</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>
|
||
Removes the given file
|
||
</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>
|
||
Reports the names of the users currently logged on
|
||
</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>
|
||
Is the same as <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>
|
||
Reports the number of lines, words, and bytes for
|
||
each given file, as well as a total line when more
|
||
than one file is given
|
||
</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>
|
||
Reports who is logged on
|
||
</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>
|
||
Reports the user name associated with the current
|
||
effective user ID
|
||
</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>
|
||
Repeatedly outputs <span class=
|
||
"quote">“<span class=
|
||
"quote">y</span>”</span> or a given string
|
||
until killed
|
||
</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>
|
||
Library used by <span class=
|
||
"command"><strong>stdbuf</strong></span>
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-check" name=
|
||
"ch-system-check"></a>6.55. Check-0.14.0
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
Check is a unit testing framework for C.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU (about 3.5 SBU with
|
||
tests)</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">13 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.55.1. Installation of Check
|
||
</h3>
|
||
<p>
|
||
Prepare Check for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Build the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Compilation is now complete. To run the Check test suite,
|
||
issue the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Note that the Check test suite may take a relatively long (up
|
||
to 4 SBU) time.
|
||
</p>
|
||
<p>
|
||
Install the package and fix a script:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">make docdir=/usr/share/doc/check-0.14.0 install &&
|
||
sed -i '1 s/tools/usr/' /usr/bin/checkmk</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-check" name="contents-check"></a>6.55.2.
|
||
Contents of Check
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed program:</strong>
|
||
<span class="segbody">checkmk</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed library:</strong>
|
||
<span class="segbody">libcheck.{a,so}</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504925590624" name=
|
||
"idm46504925590624"></a>Short Descriptions
|
||
</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 script for generating C unit tests for use with
|
||
the Check unit testing framework
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libcheck" name="libcheck"></a><span class=
|
||
"term"><code class=
|
||
"filename">libcheck.{a,so}</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Contains functions that allow Check to be called
|
||
from a test program
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-diffutils" name=
|
||
"ch-system-diffutils"></a>6.56. Diffutils-3.7
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Diffutils package contains programs that show the
|
||
differences between files or directories.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.4 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">36 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.56.1. Installation of Diffutils
|
||
</h3>
|
||
<p>
|
||
Prepare Diffutils for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-diffutils" name=
|
||
"contents-diffutils"></a>6.56.2. Contents of Diffutils
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">cmp, diff, diff3, and sdiff</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504925558464" name=
|
||
"idm46504925558464"></a>Short Descriptions
|
||
</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>
|
||
Compares two files and reports whether or in which
|
||
bytes they differ
|
||
</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>
|
||
Compares two files or directories and reports which
|
||
lines in the files differ
|
||
</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>
|
||
Compares three files line by line
|
||
</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>
|
||
Merges two files and interactively outputs the
|
||
results
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-gawk" name=
|
||
"ch-system-gawk"></a>6.57. Gawk-5.0.1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Gawk package contains programs for manipulating text
|
||
files.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.4 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">47 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.57.1. Installation of Gawk
|
||
</h3>
|
||
<p>
|
||
First, ensure some unneeded files are not installed:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i 's/extras//' Makefile.in</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Gawk for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
If desired, install the documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v /usr/share/doc/gawk-5.0.1
|
||
cp -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-5.0.1</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-gawk" name="contents-gawk"></a>6.57.2.
|
||
Contents of Gawk
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">awk (link to gawk), gawk, and
|
||
awk-5.0.1</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</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, and
|
||
time.so (all in /usr/lib/gawk)</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/lib/gawk, /usr/libexec/awk,
|
||
/usr/share/awk, and /usr/share/doc/gawk-5.0.1</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504925512432" name=
|
||
"idm46504925512432"></a>Short Descriptions
|
||
</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>
|
||
A link to <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>
|
||
A program for manipulating text files; it is the
|
||
GNU implementation of <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.0.1</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
A hard link to <span class=
|
||
"command"><strong>gawk</strong></span>
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-findutils" name=
|
||
"ch-system-findutils"></a>6.58. Findutils-4.7.0
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Findutils package contains programs to find files. These
|
||
programs are provided to recursively search through a
|
||
directory tree and to create, maintain, and search a database
|
||
(often faster than the recursive find, but unreliable if the
|
||
database has not been recently updated).
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.7 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">57 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.58.1. Installation of Findutils
|
||
</h3>
|
||
<p>
|
||
Prepare Findutils for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">./configure --prefix=/usr --localstatedir=/var/lib/locate</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--localstatedir</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option changes the location of the <span class=
|
||
"command"><strong>locate</strong></span> database to be
|
||
in <code class="filename">/var/lib/locate</code>, which
|
||
is FHS-compliant.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Two tests are known to fail in the chroot environment:
|
||
sv-bug-54171.old-O3 and sv-bug-54171.new-O3.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
Some of the scripts in the LFS-Bootscripts package depend on
|
||
<span class="command"><strong>find</strong></span>. As
|
||
<code class="filename">/usr</code> may not be available
|
||
during the early stages of booting, this program needs to be
|
||
on the root partition. The <span class=
|
||
"command"><strong>updatedb</strong></span> script also needs
|
||
to be modified to correct an explicit path:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mv -v /usr/bin/find /bin
|
||
sed -i 's|find:=${BINDIR}|find:=/bin|' /usr/bin/updatedb</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-findutils" name=
|
||
"contents-findutils"></a>6.58.2. Contents of Findutils
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">find, locate, updatedb, and
|
||
xargs</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/var/lib/locate</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504925463840" name=
|
||
"idm46504925463840"></a>Short Descriptions
|
||
</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>
|
||
Searches given directory trees for files matching
|
||
the specified criteria
|
||
</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>
|
||
Searches through a database of file names and
|
||
reports the names that contain a given string or
|
||
match a given pattern
|
||
</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>
|
||
Updates the <span class=
|
||
"command"><strong>locate</strong></span> database;
|
||
it scans the entire file system (including other
|
||
file systems that are currently mounted, unless
|
||
told not to) and puts every file name it finds into
|
||
the database
|
||
</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>
|
||
Can be used to apply a given command to a list of
|
||
files
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-groff" name=
|
||
"ch-system-groff"></a>6.59. Groff-1.22.4
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Groff package contains programs for processing and
|
||
formatting text.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.5 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">95 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.59.1. Installation of Groff
|
||
</h3>
|
||
<p>
|
||
Groff expects the environment variable <code class=
|
||
"envar">PAGE</code> to contain the default paper size. For
|
||
users in the United States, <em class=
|
||
"parameter"><code>PAGE=letter</code></em> is appropriate.
|
||
Elsewhere, <em class="parameter"><code>PAGE=A4</code></em>
|
||
may be more suitable. While the default paper size is
|
||
configured during compilation, it can be overridden later by
|
||
echoing either <span class="quote">“<span class=
|
||
"quote">A4</span>”</span> or <span class=
|
||
"quote">“<span class=
|
||
"quote">letter</span>”</span> to the <code class=
|
||
"filename">/etc/papersize</code> file.
|
||
</p>
|
||
<p>
|
||
Prepare Groff for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">PAGE=<em class=
|
||
"replaceable"><code><paper_size></code></em> ./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
This package does not support parallel build. Compile the
|
||
package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make -j1</kbd>
|
||
</pre>
|
||
<p>
|
||
This package does not come with a test suite.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-groff" name="contents-groff"></a>6.59.2.
|
||
Contents of Groff
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</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, and troff</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/lib/groff and
|
||
/usr/share/doc/groff-1.22.4, /usr/share/groff</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504925417600" name=
|
||
"idm46504925417600"></a>Short Descriptions
|
||
</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>
|
||
Reads a troff font file and adds some additional
|
||
font-metric information that is used by the
|
||
<span class="command"><strong>groff</strong></span>
|
||
system
|
||
</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>
|
||
Creates a font file for use with <span class=
|
||
"command"><strong>groff</strong></span> and
|
||
<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 preprocessor for producing chemical structure
|
||
diagrams
|
||
</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>
|
||
Compiles descriptions of equations embedded within
|
||
troff input files into commands that are understood
|
||
by <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>
|
||
Converts a troff EQN (equation) into a cropped
|
||
image
|
||
</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>
|
||
Marks differences between groff/nroff/troff files
|
||
</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>
|
||
Transforms sheet music written in the lilypond
|
||
language into the groff language
|
||
</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>
|
||
Preprocesor for groff, allowing addition of perl
|
||
code into groff files
|
||
</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>
|
||
Preprocesor for groff, allowing addition of Chinese
|
||
European-like language Pinyin into groff files.
|
||
</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>
|
||
Converts a grap diagram into a cropped bitmap image
|
||
</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>
|
||
A <span class=
|
||
"command"><strong>groff</strong></span>
|
||
preprocessor for gremlin files
|
||
</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>
|
||
A driver for <span class=
|
||
"command"><strong>groff</strong></span> that
|
||
produces TeX dvi format
|
||
</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>
|
||
A front-end to the groff document formatting
|
||
system; normally, it runs the <span class=
|
||
"command"><strong>troff</strong></span> program and
|
||
a post-processor appropriate for the selected
|
||
device
|
||
</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>
|
||
Displays groff files and man pages on X and tty
|
||
terminals
|
||
</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>
|
||
Reads files and guesses which of the <span class=
|
||
"command"><strong>groff</strong></span> options
|
||
<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>,
|
||
and <code class="option">-t</code> are required for
|
||
printing files, and reports the <span class=
|
||
"command"><strong>groff</strong></span> command
|
||
including those options
|
||
</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>
|
||
Is a <span class=
|
||
"command"><strong>groff</strong></span> driver for
|
||
Canon CAPSL printers (LBP-4 and LBP-8 series laser
|
||
printers)
|
||
</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>
|
||
Is a driver for <span class=
|
||
"command"><strong>groff</strong></span> that
|
||
produces output in PCL5 format suitable for an HP
|
||
LaserJet 4 printer
|
||
</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>
|
||
Translates the output of GNU <span class=
|
||
"command"><strong>troff</strong></span> to 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>
|
||
Translates the output of GNU <span class=
|
||
"command"><strong>troff</strong></span> to
|
||
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>
|
||
Translates the output of GNU <span class=
|
||
"command"><strong>troff</strong></span> into a form
|
||
suitable for typewriter-like devices
|
||
</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>
|
||
Creates a font file for use with <span class=
|
||
"command"><strong>groff -Tlj4</strong></span> from
|
||
an HP-tagged font metric file
|
||
</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>
|
||
Creates an inverted index for the bibliographic
|
||
databases with a specified file for use with
|
||
<span class=
|
||
"command"><strong>refer</strong></span>,
|
||
<span class=
|
||
"command"><strong>lookbib</strong></span>, and
|
||
<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>
|
||
Searches bibliographic databases for references
|
||
that contain specified keys and reports any
|
||
references found
|
||
</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>
|
||
Prints a prompt on the standard error (unless the
|
||
standard input is not a terminal), reads a line
|
||
containing a set of keywords from the standard
|
||
input, searches the bibliographic databases in a
|
||
specified file for references containing those
|
||
keywords, prints any references found on the
|
||
standard output, and repeats this process until the
|
||
end of input
|
||
</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>
|
||
A simple preprocessor for <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>
|
||
Formats equations for American Standard Code for
|
||
Information Interchange (ASCII) output
|
||
</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>
|
||
A script that emulates the <span class=
|
||
"command"><strong>nroff</strong></span> command
|
||
using <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>
|
||
Is a wrapper around groff that facilitates the
|
||
production of PDF documents from files formatted
|
||
with the mom macros.
|
||
</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>
|
||
Creates pdf documents using 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>
|
||
Translates a PostScript font in <code class=
|
||
"filename">.pfb</code> format to 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>
|
||
Compiles descriptions of pictures embedded within
|
||
troff or TeX input files into commands understood
|
||
by TeX or <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>
|
||
Converts a PIC diagram into a cropped image
|
||
</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>
|
||
Translates the output of GNU <span class=
|
||
"command"><strong>troff</strong></span> to 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>
|
||
Converts encoding of input files to something GNU
|
||
<span class="command"><strong>troff</strong></span>
|
||
understands
|
||
</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>
|
||
Translates the output of GNU <span class=
|
||
"command"><strong>troff</strong></span> to 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>
|
||
Copies the contents of a file to the standard
|
||
output, except that lines between <span class=
|
||
"emphasis"><em>.[</em></span> and <span class=
|
||
"emphasis"><em>.]</em></span> are interpreted as
|
||
citations, and lines between <span class=
|
||
"emphasis"><em>.R1</em></span> and <span class=
|
||
"emphasis"><em>.R2</em></span> are interpreted as
|
||
commands for how citations are to be processed
|
||
</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>
|
||
Transforms roff files into DVI format
|
||
</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>
|
||
Transforms roff files into HTML format
|
||
</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>
|
||
Transforms roff files into PDFs
|
||
</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>
|
||
Transforms roff files into ps files
|
||
</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>
|
||
Transforms roff files into text files
|
||
</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>
|
||
Transforms roff files into other formats
|
||
</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>
|
||
Reads files and replaces lines of the form
|
||
<span class="emphasis"><em>.so file</em></span> by
|
||
the contents of the mentioned <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>
|
||
Compiles descriptions of tables embedded within
|
||
troff input files into commands that are understood
|
||
by <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>
|
||
Creates a font file for use with <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>
|
||
Is highly compatible with Unix <span class=
|
||
"command"><strong>troff</strong></span>; it should
|
||
usually be invoked using the <span class=
|
||
"command"><strong>groff</strong></span> command,
|
||
which will also run preprocessors and
|
||
post-processors in the appropriate order and with
|
||
the appropriate options
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-grub" name=
|
||
"ch-system-grub"></a>6.60. GRUB-2.04
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The GRUB package contains the GRand Unified Bootloader.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.8 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">161 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.60.1. Installation of GRUB
|
||
</h3>
|
||
<p>
|
||
Prepare GRUB for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--sbindir=/sbin \
|
||
--sysconfdir=/etc \
|
||
--disable-efiemu \
|
||
--disable-werror</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the new configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-werror</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This allows the build to complete with warnings
|
||
introduced by more recent Flex versions.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-efiemu</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option minimizes what is built by disabling a
|
||
feature and testing programs not needed for LFS.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
This package does not come with a test suite.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install
|
||
mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions</kbd>
|
||
</pre>
|
||
<p>
|
||
Using GRUB to make your LFS system bootable will be discussed
|
||
in <a class="xref" href="#ch-bootable-grub" title=
|
||
"8.4. Using GRUB to Set Up the Boot Process">Section 8.4,
|
||
“Using GRUB to Set Up the Boot Process”</a>.
|
||
</p>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-gRUB" name="contents-gRUB"></a>6.60.2.
|
||
Contents of GRUB
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</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,
|
||
and grub-syslinux2cfg</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/lib/grub, /etc/grub.d,
|
||
/usr/share/grub, and /boot/grub (when grub-install is
|
||
first run)</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504925158160" name=
|
||
"idm46504925158160"></a>Short Descriptions
|
||
</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>
|
||
Is a helper program for grub-install
|
||
</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>
|
||
A tool to edit the 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>
|
||
Checks if FILE is of the specified type.
|
||
</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>
|
||
Tool to debug the filesystem driver
|
||
</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>
|
||
Processes ia32 and amd64 EFI images and glues them
|
||
according to Apple format.
|
||
</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>
|
||
Install GRUB on your drive
|
||
</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>
|
||
Script that converts an xkb layout into one
|
||
recognized by 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>
|
||
Mac-style bless on HFS or HFS+ files
|
||
</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>
|
||
Converts a GRUB Legacy <code class=
|
||
"filename">menu.lst</code> into a <code class=
|
||
"filename">grub.cfg</code> for use with 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>
|
||
Generate a grub config file
|
||
</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>
|
||
Make a bootable image of 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>
|
||
Generates a GRUB keyboard layout file
|
||
</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>
|
||
Prepares a GRUB netboot directory
|
||
</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>
|
||
Generates an encrypted PBKDF2 password for use in
|
||
the boot menu
|
||
</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>
|
||
Makes a system pathname relative to its root
|
||
</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>
|
||
Make a bootable image of GRUB suitable for a floppy
|
||
disk or CDROM/DVD
|
||
</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>
|
||
Generates a standalone image
|
||
</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>
|
||
Is a helper program that prints the path of a GRUB
|
||
device
|
||
</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>
|
||
Probe device information for a given path or device
|
||
</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>
|
||
Sets the default boot entry for GRUB for the next
|
||
boot only
|
||
</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>
|
||
Render Apple .disk_label for Apple Macs
|
||
</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>
|
||
Checks GRUB configuration script for syntax errors
|
||
</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>
|
||
Sets the default boot entry for 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>
|
||
Is a helper program for 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>
|
||
Transform a syslinux config file into grub.cfg
|
||
format
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-less" name=
|
||
"ch-system-less"></a>6.61. Less-551
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Less package contains a text file viewer.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">4.1 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.61.1. Installation of Less
|
||
</h3>
|
||
<p>
|
||
Prepare Less for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr --sysconfdir=/etc</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--sysconfdir=/etc</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option tells the programs created by the package
|
||
to look in <code class="filename">/etc</code> for the
|
||
configuration files.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
This package does not come with a test suite.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-less" name="contents-less"></a>6.61.2.
|
||
Contents of Less
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">less, lessecho, and lesskey</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504925020864" name=
|
||
"idm46504925020864"></a>Short Descriptions
|
||
</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>
|
||
A file viewer or pager; it displays the contents of
|
||
the given file, letting the user scroll, find
|
||
strings, and jump to marks
|
||
</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>
|
||
Needed to expand meta-characters, such as
|
||
<span class="emphasis"><em>*</em></span> and
|
||
<span class="emphasis"><em>?</em></span>, in
|
||
filenames on Unix systems
|
||
</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>
|
||
Used to specify the key bindings for <span class=
|
||
"command"><strong>less</strong></span>
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-gzip" name=
|
||
"ch-system-gzip"></a>6.62. Gzip-1.10
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Gzip package contains programs for compressing and
|
||
decompressing files.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">20 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.62.1. Installation of Gzip
|
||
</h3>
|
||
<p>
|
||
Prepare Gzip for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Two tests are known to fail in the LFS environment:
|
||
help-version and zmore.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
Move a program that needs to be on the root filesystem:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mv -v /usr/bin/gzip /bin</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-gzip" name="contents-gzip"></a>6.62.2.
|
||
Contents of Gzip
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">gunzip, gzexe, gzip, uncompress
|
||
(hard link with gunzip), zcat, zcmp, zdiff, zegrep,
|
||
zfgrep, zforce, zgrep, zless, zmore, and znew</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504924980752" name=
|
||
"idm46504924980752"></a>Short Descriptions
|
||
</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>
|
||
Decompresses gzipped files
|
||
</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>
|
||
Creates self-decompressing executable files
|
||
</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>
|
||
Compresses the given files using Lempel-Ziv (LZ77)
|
||
coding
|
||
</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>
|
||
Decompresses compressed files
|
||
</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>
|
||
Decompresses the given gzipped files to standard
|
||
output
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>cmp</strong></span> on gzipped
|
||
files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>diff</strong></span> on gzipped
|
||
files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>egrep</strong></span> on gzipped
|
||
files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>fgrep</strong></span> on gzipped
|
||
files
|
||
</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>
|
||
Forces a <code class="filename">.gz</code>
|
||
extension on all given files that are gzipped
|
||
files, so that <span class=
|
||
"command"><strong>gzip</strong></span> will not
|
||
compress them again; this can be useful when file
|
||
names were truncated during a file transfer
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>grep</strong></span> on gzipped
|
||
files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>less</strong></span> on gzipped
|
||
files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>more</strong></span> on gzipped
|
||
files
|
||
</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>
|
||
Re-compresses files from <span class=
|
||
"command"><strong>compress</strong></span> format
|
||
to <span class=
|
||
"command"><strong>gzip</strong></span>
|
||
format—<code class="filename">.Z</code> to
|
||
<code class="filename">.gz</code>
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-zstd" name=
|
||
"ch-system-zstd"></a>6.63. Zstd-1.4.4
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
Zstandard is a real-time compression algorithm, providing
|
||
high compression ratios. It offers a very wide range of
|
||
compression / speed trade-offs, while being backed by a very
|
||
fast decoder.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.7 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">16 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.63.1. Installation of Zstd
|
||
</h3>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
This package does not come with a test suite.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make prefix=/usr install</kbd>
|
||
</pre>
|
||
<p>
|
||
Remove the static library and move the shared library to
|
||
<code class="filename">/lib</code>. Also, the <code class=
|
||
"filename">.so</code> file in <code class=
|
||
"filename">/usr/lib</code> will need to be recreated:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">rm -v /usr/lib/libzstd.a
|
||
mv -v /usr/lib/libzstd.so.* /lib
|
||
ln -sfv ../../lib/$(readlink /usr/lib/libzstd.so) /usr/lib/libzstd.so</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-zstd" name="contents-zstd"></a>6.63.2.
|
||
Contents of Zstd
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">zstd, zstdcat (link to zstd),
|
||
zstdgrep, zstdless, zstdmt (link to zstd), and unzstd
|
||
(link to zstd)</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed library:</strong>
|
||
<span class="segbody">libzstd.so</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504924883552" name=
|
||
"idm46504924883552"></a>Short Descriptions
|
||
</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>
|
||
Compresses or decompresses files using the ZSTD
|
||
format
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>grep</strong></span> on ZSTD
|
||
compressed files
|
||
</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>
|
||
Runs <span class=
|
||
"command"><strong>less</strong></span> on ZSTD
|
||
compressed files
|
||
</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>
|
||
The library implementing lossless data compression,
|
||
using the ZSTD algorithm
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-iproute2" name=
|
||
"ch-system-iproute2"></a>6.64. IPRoute2-5.5.0
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The IPRoute2 package contains programs for basic and advanced
|
||
IPV4-based networking.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">14 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.64.1. Installation of IPRoute2
|
||
</h3>
|
||
<p>
|
||
The <span class="command"><strong>arpd</strong></span>
|
||
program included in this package will not be built since it
|
||
is dependent on Berkeley DB, which is not installed in LFS.
|
||
However, a directory for <span class=
|
||
"command"><strong>arpd</strong></span> and a man page will
|
||
still be installed. Prevent this by running the commands
|
||
below. If the <span class=
|
||
"command"><strong>arpd</strong></span> binary is needed,
|
||
instructions for compiling Berkeley DB can be found in the
|
||
BLFS Book at <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/server/databases.html#db">
|
||
http://www.linuxfromscratch.org/blfs/view/9.1/server/databases.html#db</a>.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i /ARPD/d Makefile
|
||
rm -fv man/man8/arpd.8</kbd>
|
||
</pre>
|
||
<p>
|
||
It is also necessary to disable building two modules that
|
||
requires <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/iptables.html">
|
||
http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/iptables.html</a>.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i 's/.m_ipt.o//' tc/Makefile</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
This package does not have a working test suite.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make DOCDIR=/usr/share/doc/iproute2-5.5.0 install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-iproute2" name=
|
||
"contents-iproute2"></a>6.64.2. Contents of IPRoute2
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">bridge, ctstat (link to lnstat),
|
||
genl, ifcfg, ifstat, ip, lnstat, nstat, routef, routel,
|
||
rtacct, rtmon, rtpr, rtstat (link to lnstat), ss, and
|
||
tc</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/etc/iproute2, /usr/lib/tc, and
|
||
/usr/share/doc/iproute2-5.5.0,</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504924835280" name=
|
||
"idm46504924835280"></a>Short Descriptions
|
||
</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>
|
||
Configures network bridges
|
||
</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>
|
||
Connection status utility
|
||
</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>
|
||
Generic netlink utility frontend
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="ifcfg" name="ifcfg"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>ifcfg</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
A shell script wrapper for the <span class=
|
||
"command"><strong>ip</strong></span> command [Note
|
||
that it requires the <span class=
|
||
"command"><strong>arping</strong></span> and
|
||
<span class="command"><strong>rdisk</strong></span>
|
||
programs from the iputils package found at
|
||
<a class="ulink" href=
|
||
"http://www.skbuff.net/iputils/">http://www.skbuff.net/iputils/</a>.]
|
||
</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>
|
||
Shows the interface statistics, including the
|
||
amount of transmitted and received packets by
|
||
interface
|
||
</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>
|
||
The main executable. It has several different
|
||
functions:
|
||
</p>
|
||
<p>
|
||
<span class="command"><strong>ip link <em class=
|
||
"replaceable"><code><device></code></em></strong></span>
|
||
allows users to look at the state of devices and to
|
||
make changes
|
||
</p>
|
||
<p>
|
||
<span class="command"><strong>ip
|
||
addr</strong></span> allows users to look at
|
||
addresses and their properties, add new addresses,
|
||
and delete old ones
|
||
</p>
|
||
<p>
|
||
<span class="command"><strong>ip
|
||
neighbor</strong></span> allows users to look at
|
||
neighbor bindings and their properties, add new
|
||
neighbor entries, and delete old ones
|
||
</p>
|
||
<p>
|
||
<span class="command"><strong>ip
|
||
rule</strong></span> allows users to look at the
|
||
routing policies and change them
|
||
</p>
|
||
<p>
|
||
<span class="command"><strong>ip
|
||
route</strong></span> allows users to look at the
|
||
routing table and change routing table rules
|
||
</p>
|
||
<p>
|
||
<span class="command"><strong>ip
|
||
tunnel</strong></span> allows users to look at the
|
||
IP tunnels and their properties, and change them
|
||
</p>
|
||
<p>
|
||
<span class="command"><strong>ip
|
||
maddr</strong></span> allows users to look at the
|
||
multicast addresses and their properties, and
|
||
change them
|
||
</p>
|
||
<p>
|
||
<span class="command"><strong>ip
|
||
mroute</strong></span> allows users to set, change,
|
||
or delete the multicast routing
|
||
</p>
|
||
<p>
|
||
<span class="command"><strong>ip
|
||
monitor</strong></span> allows users to
|
||
continuously monitor the state of devices,
|
||
addresses and routes
|
||
</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>
|
||
Provides Linux network statistics; it is a
|
||
generalized and more feature-complete replacement
|
||
for the old <span class=
|
||
"command"><strong>rtstat</strong></span> program
|
||
</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>
|
||
Shows network statistics
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="routef" name="routef"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>routef</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
A component of <span class="command"><strong>ip
|
||
route</strong></span>. This is for flushing the
|
||
routing tables
|
||
</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>
|
||
A component of <span class="command"><strong>ip
|
||
route</strong></span>. This is for listing the
|
||
routing tables
|
||
</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>
|
||
Displays the contents of <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>
|
||
Route monitoring utility
|
||
</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>
|
||
Converts the output of <span class=
|
||
"command"><strong>ip -o</strong></span> back into a
|
||
readable form
|
||
</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>
|
||
Route status utility
|
||
</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>
|
||
Similar to the <span class=
|
||
"command"><strong>netstat</strong></span> command;
|
||
shows active connections
|
||
</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>
|
||
Traffic Controlling Executable; this is for Quality
|
||
Of Service (QOS) and Class Of Service (COS)
|
||
implementations
|
||
</p>
|
||
<p>
|
||
<span class="command"><strong>tc
|
||
qdisc</strong></span> allows users to setup the
|
||
queueing discipline
|
||
</p>
|
||
<p>
|
||
<span class="command"><strong>tc
|
||
class</strong></span> allows users to setup classes
|
||
based on the queuing discipline scheduling
|
||
</p>
|
||
<p>
|
||
<span class="command"><strong>tc
|
||
estimator</strong></span> allows users to estimate
|
||
the network flow into a network
|
||
</p>
|
||
<p>
|
||
<span class="command"><strong>tc
|
||
filter</strong></span> allows users to setup the
|
||
QOS/COS packet filtering
|
||
</p>
|
||
<p>
|
||
<span class="command"><strong>tc
|
||
policy</strong></span> allows users to setup the
|
||
QOS/COS policies
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-kbd" name=
|
||
"ch-system-kbd"></a>6.65. Kbd-2.2.0
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Kbd package contains key-table files, console fonts, and
|
||
keyboard utilities.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">36 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.65.1. Installation of Kbd
|
||
</h3>
|
||
<p>
|
||
The behaviour of the Backspace and Delete keys is not
|
||
consistent across the keymaps in the Kbd package. The
|
||
following patch fixes this issue for i386 keymaps:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">patch -Np1 -i ../kbd-2.2.0-backspace-1.patch</kbd>
|
||
</pre>
|
||
<p>
|
||
After patching, the Backspace key generates the character
|
||
with code 127, and the Delete key generates a well-known
|
||
escape sequence.
|
||
</p>
|
||
<p>
|
||
Remove the redundant <span class=
|
||
"command"><strong>resizecons</strong></span> program (it
|
||
requires the defunct svgalib to provide the video mode files
|
||
- for normal use <span class=
|
||
"command"><strong>setfont</strong></span> sizes the console
|
||
appropriately) together with its manpage.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i 's/\(RESIZECONS_PROGS=\)yes/\1no/g' configure
|
||
sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Kbd for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">PKG_CONFIG_PATH=/tools/lib/pkgconfig ./configure --prefix=/usr --disable-vlock</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-vlock</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This option prevents the vlock utility from being
|
||
built, as it requires the PAM library, which isn't
|
||
available in the chroot environment.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
For some languages (e.g., Belarusian) the Kbd package
|
||
doesn't provide a useful keymap where the stock
|
||
<span class="quote">“<span class=
|
||
"quote">by</span>”</span> keymap assumes the
|
||
ISO-8859-5 encoding, and the CP1251 keymap is normally
|
||
used. Users of such languages have to download working
|
||
keymaps separately.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
If desired, install the documentation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v /usr/share/doc/kbd-2.2.0
|
||
cp -R -v docs/doc/* /usr/share/doc/kbd-2.2.0</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-kbd" name="contents-kbd"></a>6.65.2. Contents
|
||
of Kbd
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">chvt, deallocvt, dumpkeys,
|
||
fgconsole, getkeycodes, kbdinfo, kbd_mode, kbdrate,
|
||
loadkeys, loadunimap, mapscrn, openvt, psfaddtable (link
|
||
to psfxtable), psfgettable (link to psfxtable),
|
||
psfstriptable (link to psfxtable), psfxtable, setfont,
|
||
setkeycodes, setleds, setmetamode, setvtrgb,
|
||
showconsolefont, showkey, unicode_start, and
|
||
unicode_stop</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/share/consolefonts,
|
||
/usr/share/consoletrans, /usr/share/keymaps,
|
||
/usr/share/doc/kbd-2.2.0, and /usr/share/unimaps</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504924705056" name=
|
||
"idm46504924705056"></a>Short Descriptions
|
||
</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>
|
||
Changes the foreground virtual terminal
|
||
</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>
|
||
Deallocates unused virtual terminals
|
||
</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>
|
||
Dumps the keyboard translation tables
|
||
</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>
|
||
Prints the number of the active virtual terminal
|
||
</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>
|
||
Prints the kernel scancode-to-keycode mapping table
|
||
</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>
|
||
Obtains information about the status of a console
|
||
</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>
|
||
Reports or sets the keyboard mode
|
||
</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>
|
||
Sets the keyboard repeat and delay rates
|
||
</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>
|
||
Loads the keyboard translation tables
|
||
</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>
|
||
Loads the kernel unicode-to-font mapping table
|
||
</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>
|
||
An obsolete program that used to load a
|
||
user-defined output character mapping table into
|
||
the console driver; this is now done by
|
||
<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>
|
||
Starts a program on a new virtual terminal (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>
|
||
Adds a Unicode character table to a console font
|
||
</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>
|
||
Extracts the embedded Unicode character table from
|
||
a console font
|
||
</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>
|
||
Removes the embedded Unicode character table from a
|
||
console font
|
||
</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>
|
||
Handles Unicode character tables for console fonts
|
||
</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>
|
||
Changes the Enhanced Graphic Adapter (EGA) and
|
||
Video Graphics Array (VGA) fonts on the console
|
||
</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>
|
||
Loads kernel scancode-to-keycode mapping table
|
||
entries; this is useful if there are unusual keys
|
||
on the keyboard
|
||
</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>
|
||
Sets the keyboard flags and Light Emitting Diodes
|
||
(LEDs)
|
||
</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>
|
||
Defines the keyboard meta-key handling
|
||
</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>
|
||
Sets the console color map in all virtual terminals
|
||
</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>
|
||
Shows the current EGA/VGA console screen font
|
||
</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>
|
||
Reports the scancodes, keycodes, and ASCII codes of
|
||
the keys pressed on the keyboard
|
||
</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>
|
||
Puts the keyboard and console in UNICODE mode
|
||
[Don't use this program unless your keymap file is
|
||
in the ISO-8859-1 encoding. For other encodings,
|
||
this utility produces incorrect results.]
|
||
</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>
|
||
Reverts keyboard and console from UNICODE mode
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-libpipeline" name=
|
||
"ch-system-libpipeline"></a>6.66. Libpipeline-1.5.2
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Libpipeline package contains a library for manipulating
|
||
pipelines of subprocesses in a flexible and convenient way.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">9.2 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.66.1. Installation of Libpipeline
|
||
</h3>
|
||
<p>
|
||
Prepare Libpipeline for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-libpipeline" name=
|
||
"contents-libpipeline"></a>6.66.2. Contents of Libpipeline
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed library:</strong>
|
||
<span class="segbody">libpipeline.so</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504924570128" name=
|
||
"idm46504924570128"></a>Short Descriptions
|
||
</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>
|
||
This library is used to safely construct pipelines
|
||
between subprocesses
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-make" name=
|
||
"ch-system-make"></a>6.67. Make-4.3
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Make package contains a program for compiling packages.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.5 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">16 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.67.1. Installation of Make
|
||
</h3>
|
||
<p>
|
||
Prepare Make for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
The test suite needs to know where supporting perl files are
|
||
located. We use an environment variable to accomplish this.
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make PERL5LIB=$PWD/tests/ check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-make" name="contents-make"></a>6.67.2.
|
||
Contents of Make
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed program:</strong>
|
||
<span class="segbody">make</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504924541984" name=
|
||
"idm46504924541984"></a>Short Descriptions
|
||
</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>
|
||
Automatically determines which pieces of a package
|
||
need to be (re)compiled and then issues the
|
||
relevant commands
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-patch" name=
|
||
"ch-system-patch"></a>6.68. Patch-2.7.6
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Patch package contains a program for modifying or
|
||
creating files by applying a <span class=
|
||
"quote">“<span class="quote">patch</span>”</span>
|
||
file typically created by the <span class=
|
||
"command"><strong>diff</strong></span> program.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">13 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.68.1. Installation of Patch
|
||
</h3>
|
||
<p>
|
||
Prepare Patch for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-patch" name="contents-patch"></a>6.68.2.
|
||
Contents of Patch
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed program:</strong>
|
||
<span class="segbody">patch</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504924513408" name=
|
||
"idm46504924513408"></a>Short Descriptions
|
||
</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>
|
||
Modifies files according to a patch file [A patch
|
||
file is normally a difference listing created with
|
||
the <span class=
|
||
"command"><strong>diff</strong></span> program. By
|
||
applying these differences to the original files,
|
||
<span class="command"><strong>patch</strong></span>
|
||
creates the patched versions.]
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-man-db" name=
|
||
"ch-system-man-db"></a>6.69. Man-DB-2.9.0
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Man-DB package contains programs for finding and viewing
|
||
man pages.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.5 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">40 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.69.1. Installation of Man-DB
|
||
</h3>
|
||
<p>
|
||
Prepare Man-DB for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--docdir=/usr/share/doc/man-db-2.9.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>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-setuid</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This disables making the <span class=
|
||
"command"><strong>man</strong></span> program setuid to
|
||
user <code class="systemitem">man</code>.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-cache-owner=bin</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This makes the system-wide cache files be owned by user
|
||
bin.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-...</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
These three parameters are used to set some default
|
||
programs. <span class=
|
||
"command"><strong>lynx</strong></span> is a text-based
|
||
web browser (see BLFS for installation instructions),
|
||
<span class="command"><strong>vgrind</strong></span>
|
||
converts program sources to Groff input, and
|
||
<span class="command"><strong>grap</strong></span> is
|
||
useful for typesetting graphs in Groff documents. The
|
||
<span class="command"><strong>vgrind</strong></span>
|
||
and <span class="command"><strong>grap</strong></span>
|
||
programs are not normally needed for viewing manual
|
||
pages. They are not part of LFS or BLFS, but you should
|
||
be able to install them yourself after finishing LFS if
|
||
you wish to do so.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-systemd...</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
These parameters prevent installing unneeded systemd
|
||
directories and files.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.69.2. Non-English Manual Pages in LFS
|
||
</h3>
|
||
<p>
|
||
The following table shows the character set that Man-DB
|
||
assumes manual pages installed under <code class=
|
||
"filename">/usr/share/man/<ll></code> will be encoded
|
||
with. In addition to this, Man-DB correctly determines if
|
||
manual pages installed in that directory are UTF-8 encoded.
|
||
</p>
|
||
<div class="table">
|
||
<a id="idm46504924468512" name="idm46504924468512"></a>
|
||
<p class="title">
|
||
<strong>Table 6.1. Expected character encoding of
|
||
legacy 8-bit manual pages</strong>
|
||
</p>
|
||
<div class="table-contents">
|
||
<table summary=
|
||
"Expected character encoding of legacy 8-bit manual pages"
|
||
border="1">
|
||
<colgroup>
|
||
<col width="1.5in" />
|
||
<col width="1in" />
|
||
<col width="2.5in" />
|
||
<col width="1in" />
|
||
</colgroup>
|
||
<thead>
|
||
<tr>
|
||
<th>
|
||
Language (code)
|
||
</th>
|
||
<th>
|
||
Encoding
|
||
</th>
|
||
<th>
|
||
Language (code)
|
||
</th>
|
||
<th>
|
||
Encoding
|
||
</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>
|
||
Danish (da)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Croatian (hr)
|
||
</td>
|
||
<td>
|
||
ISO-8859-2
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
German (de)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Hungarian (hu)
|
||
</td>
|
||
<td>
|
||
ISO-8859-2
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
English (en)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Japanese (ja)
|
||
</td>
|
||
<td>
|
||
EUC-JP
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Spanish (es)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Korean (ko)
|
||
</td>
|
||
<td>
|
||
EUC-KR
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Estonian (et)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Lithuanian (lt)
|
||
</td>
|
||
<td>
|
||
ISO-8859-13
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Finnish (fi)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Latvian (lv)
|
||
</td>
|
||
<td>
|
||
ISO-8859-13
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
French (fr)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Macedonian (mk)
|
||
</td>
|
||
<td>
|
||
ISO-8859-5
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Irish (ga)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Polish (pl)
|
||
</td>
|
||
<td>
|
||
ISO-8859-2
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Galician (gl)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Romanian (ro)
|
||
</td>
|
||
<td>
|
||
ISO-8859-2
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Indonesian (id)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Russian (ru)
|
||
</td>
|
||
<td>
|
||
KOI8-R
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Icelandic (is)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Slovak (sk)
|
||
</td>
|
||
<td>
|
||
ISO-8859-2
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Italian (it)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Slovenian (sl)
|
||
</td>
|
||
<td>
|
||
ISO-8859-2
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Norwegian Bokmal (nb)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Serbian Latin (sr@latin)
|
||
</td>
|
||
<td>
|
||
ISO-8859-2
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Dutch (nl)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Serbian (sr)
|
||
</td>
|
||
<td>
|
||
ISO-8859-5
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Norwegian Nynorsk (nn)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Turkish (tr)
|
||
</td>
|
||
<td>
|
||
ISO-8859-9
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Norwegian (no)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Ukrainian (uk)
|
||
</td>
|
||
<td>
|
||
KOI8-U
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Portuguese (pt)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Vietnamese (vi)
|
||
</td>
|
||
<td>
|
||
TCVN5712-1
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Swedish (sv)
|
||
</td>
|
||
<td>
|
||
ISO-8859-1
|
||
</td>
|
||
<td>
|
||
Simplified Chinese (zh_CN)
|
||
</td>
|
||
<td>
|
||
GBK
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Belarusian (be)
|
||
</td>
|
||
<td>
|
||
CP1251
|
||
</td>
|
||
<td>
|
||
Simplified Chinese, Singapore (zh_SG)
|
||
</td>
|
||
<td>
|
||
GBK
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Bulgarian (bg)
|
||
</td>
|
||
<td>
|
||
CP1251
|
||
</td>
|
||
<td>
|
||
Traditional Chinese, Hong Kong (zh_HK)
|
||
</td>
|
||
<td>
|
||
BIG5HKSCS
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Czech (cs)
|
||
</td>
|
||
<td>
|
||
ISO-8859-2
|
||
</td>
|
||
<td>
|
||
Traditional Chinese (zh_TW)
|
||
</td>
|
||
<td>
|
||
BIG5
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
Greek (el)
|
||
</td>
|
||
<td>
|
||
ISO-8859-7
|
||
</td>
|
||
<td>
|
||
|
||
</td>
|
||
<td>
|
||
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div><br class="table-break" />
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
Manual pages in languages not in the list are not
|
||
supported.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-man-db" name="contents-man-db"></a>6.69.3.
|
||
Contents of Man-DB
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">accessdb, apropos (link to whatis),
|
||
catman, lexgrog, man, mandb, manpath, and whatis</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">libman.so and libmandb.so (both in
|
||
/usr/lib/man-db)</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/lib/man-db,
|
||
/usr/libexec/man-db, and
|
||
/usr/share/doc/man-db-2.9.0</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504924409888" name=
|
||
"idm46504924409888"></a>Short Descriptions
|
||
</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>
|
||
Dumps the <span class=
|
||
"command"><strong>whatis</strong></span> database
|
||
contents in human-readable form
|
||
</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>
|
||
Searches the <span class=
|
||
"command"><strong>whatis</strong></span> database
|
||
and displays the short descriptions of system
|
||
commands that contain a given string
|
||
</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>
|
||
Creates or updates the pre-formatted manual pages
|
||
</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>
|
||
Displays one-line summary information about a given
|
||
manual page
|
||
</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>
|
||
Formats and displays the requested manual page
|
||
</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>
|
||
Creates or updates the <span class=
|
||
"command"><strong>whatis</strong></span> database
|
||
</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>
|
||
Displays the contents of $MANPATH or (if $MANPATH
|
||
is not set) a suitable search path based on the
|
||
settings in man.conf and the user's environment
|
||
</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>
|
||
Searches the <span class=
|
||
"command"><strong>whatis</strong></span> database
|
||
and displays the short descriptions of system
|
||
commands that contain the given keyword as a
|
||
separate word
|
||
</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>
|
||
Contains run-time support for <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>
|
||
Contains run-time support for <span class=
|
||
"command"><strong>man</strong></span>
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-tar" name=
|
||
"ch-system-tar"></a>6.70. Tar-1.32
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Tar package contains an archiving program.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">2.0 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">45 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.70.1. Installation of Tar
|
||
</h3>
|
||
<p>
|
||
Prepare Tar for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">FORCE_UNSAFE_CONFIGURE=1 \
|
||
./configure --prefix=/usr \
|
||
--bindir=/bin</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><code class=
|
||
"envar">FORCE_UNSAFE_CONFIGURE=1</code></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This forces the test for <code class=
|
||
"function">mknod</code> to be run as root. It is
|
||
generally considered dangerous to run this test as the
|
||
root user, but as it is being run on a system that has
|
||
only been partially built, overriding it is OK.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results (about 3 SBU), issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install
|
||
make -C doc install-html docdir=/usr/share/doc/tar-1.32</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-tar" name="contents-tar"></a>6.70.2. Contents
|
||
of Tar
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">tar</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/usr/share/doc/tar-1.32</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504924333616" name=
|
||
"idm46504924333616"></a>Short Descriptions
|
||
</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>
|
||
Creates, extracts files from, and lists the
|
||
contents of archives, also known as tarballs
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-texinfo" name=
|
||
"ch-system-texinfo"></a>6.71. Texinfo-6.7
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Texinfo package contains programs for reading, writing,
|
||
and converting info pages.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.7 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">116 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.71.1. Installation of Texinfo
|
||
</h3>
|
||
<p>
|
||
Prepare Texinfo for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr --disable-static</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-static</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
In this case, the top-level configure script will
|
||
complain that this is an unrecognized option, but the
|
||
configure script for XSParagraph recognizes it and uses
|
||
it to disable installing a static <code class=
|
||
"filename">XSParagraph.a</code> to <code class=
|
||
"filename">/usr/lib/texinfo</code>.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
Optionally, install the components belonging in a TeX
|
||
installation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make TEXMF=/usr/share/texmf install-tex</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the make parameter:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>TEXMF=/usr/share/texmf</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
The <code class="envar">TEXMF</code> makefile variable
|
||
holds the location of the root of the TeX tree if, for
|
||
example, a TeX package will be installed later.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
The Info documentation system uses a plain text file to hold
|
||
its list of menu entries. The file is located at <code class=
|
||
"filename">/usr/share/info/dir</code>. Unfortunately, due to
|
||
occasional problems in the Makefiles of various packages, it
|
||
can sometimes get out of sync with the info pages installed
|
||
on the system. If the <code class=
|
||
"filename">/usr/share/info/dir</code> file ever needs to be
|
||
recreated, the following optional commands will accomplish
|
||
the task:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">pushd /usr/share/info
|
||
rm -v dir
|
||
for f in *
|
||
do install-info $f dir 2>/dev/null
|
||
done
|
||
popd</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-texinfo" name="contents-texinfo"></a>6.71.2.
|
||
Contents of Texinfo
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">info, install-info, makeinfo (link
|
||
to texi2any), pdftexi2dvi, pod2texi, texi2any, texi2dvi,
|
||
texi2pdf, and texindex</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed library:</strong>
|
||
<span class="segbody">MiscXS.so, Parsetexi.so, and
|
||
XSParagraph.so (all in /usr/lib/texinfo)</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/share/texinfo and
|
||
/usr/lib/texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504924290096" name=
|
||
"idm46504924290096"></a>Short Descriptions
|
||
</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>
|
||
Used to read info pages which are similar to man
|
||
pages, but often go much deeper than just
|
||
explaining all the available command line options
|
||
[For example, compare <span class=
|
||
"command"><strong>man bison</strong></span> and
|
||
<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>
|
||
Used to install info pages; it updates entries in
|
||
the <span class=
|
||
"command"><strong>info</strong></span> index file
|
||
</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>
|
||
Translates the given Texinfo source documents into
|
||
info pages, plain text, or 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>
|
||
Used to format the given Texinfo document into a
|
||
Portable Document Format (PDF) file
|
||
</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>
|
||
Converts Pod to Texinfo format
|
||
</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>
|
||
Translate Texinfo source documentation to various
|
||
other formats
|
||
</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>
|
||
Used to format the given Texinfo document into a
|
||
device-independent file that can be printed
|
||
</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>
|
||
Used to format the given Texinfo document into a
|
||
Portable Document Format (PDF) file
|
||
</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>
|
||
Used to sort Texinfo index files
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-vim" name=
|
||
"ch-system-vim"></a>6.72. Vim-8.2.0190
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Vim package contains a powerful text editor.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">1.7 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">202 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="admon tip">
|
||
<h3>
|
||
Alternatives to Vim
|
||
</h3>
|
||
<p>
|
||
If you prefer another editor—such as Emacs, Joe, or
|
||
Nano—please refer to <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/editors.html">
|
||
http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/editors.html</a>
|
||
for suggested installation instructions.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.72.1. Installation of Vim
|
||
</h3>
|
||
<p>
|
||
First, change the default location of the <code class=
|
||
"filename">vimrc</code> configuration file to <code class=
|
||
"filename">/etc</code>:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare Vim for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To prepare the tests, ensure that the <code class=
|
||
"systemitem">nobody</code> user can write to the sources
|
||
tree:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">chown -Rv nobody .</kbd>
|
||
</pre>
|
||
<p>
|
||
Now run the tests as the <code class=
|
||
"systemitem">nobody</code> user:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">su nobody -s /bin/bash -c "LANG=en_US.UTF-8 make -j1 test" &> vim-test.log</kbd>
|
||
</pre>
|
||
<p>
|
||
The test suite outputs a lot of binary data to the screen.
|
||
This can cause issues with the settings of the current
|
||
terminal. The problem can be avoided by redirecting the
|
||
output to a log file as shown above. A successful test will
|
||
result in the words "ALL DONE" in the log file at completion.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
Many users are used to using <span class=
|
||
"command"><strong>vi</strong></span> instead of <span class=
|
||
"command"><strong>vim</strong></span>. To allow execution of
|
||
<span class="command"><strong>vim</strong></span> when users
|
||
habitually enter <span class=
|
||
"command"><strong>vi</strong></span>, create a symlink for
|
||
both the binary and the man page in the provided languages:
|
||
</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>
|
||
By default, Vim's documentation is installed in <code class=
|
||
"filename">/usr/share/vim</code>. The following symlink
|
||
allows the documentation to be accessed via <code class=
|
||
"filename">/usr/share/doc/vim-8.2.0190</code>, making it
|
||
consistent with the location of documentation for other
|
||
packages:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">ln -sv ../vim/vim82/doc /usr/share/doc/vim-8.2.0190</kbd>
|
||
</pre>
|
||
<p>
|
||
If an X Window System is going to be installed on the LFS
|
||
system, it may be necessary to recompile Vim after installing
|
||
X. Vim comes with a GUI version of the editor that requires X
|
||
and some additional libraries to be installed. For more
|
||
information on this process, refer to the Vim documentation
|
||
and the Vim installation page in the BLFS book at <a class=
|
||
"ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/vim.html">
|
||
http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/vim.html</a>.
|
||
</p>
|
||
</div>
|
||
<div class="configuration" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="conf-vim" name="conf-vim"></a>6.72.2. Configuring Vim
|
||
</h3>
|
||
<p>
|
||
By default, <span class="command"><strong>vim</strong></span>
|
||
runs in vi-incompatible mode. This may be new to users who
|
||
have used other editors in the past. The <span class=
|
||
"quote">“<span class=
|
||
"quote">nocompatible</span>”</span> setting is included
|
||
below to highlight the fact that a new behavior is being
|
||
used. It also reminds those who would change to <span class=
|
||
"quote">“<span class=
|
||
"quote">compatible</span>”</span> mode that it should
|
||
be the first setting in the configuration file. This is
|
||
necessary because it changes other settings, and overrides
|
||
must come after this setting. Create a default <span class=
|
||
"command"><strong>vim</strong></span> configuration file by
|
||
running the following:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/vimrc << "EOF"
|
||
<code class="literal">" Begin /etc/vimrc
|
||
|
||
" Ensure defaults are set before customizing settings, not after
|
||
source $VIMRUNTIME/defaults.vim
|
||
let skip_defaults_vim=1
|
||
|
||
set nocompatible
|
||
set backspace=2
|
||
set mouse=
|
||
syntax on
|
||
if (&term == "xterm") || (&term == "putty")
|
||
set background=dark
|
||
endif
|
||
|
||
" End /etc/vimrc</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
The <em class="parameter"><code>set nocompatible</code></em>
|
||
setting makes <span class=
|
||
"command"><strong>vim</strong></span> behave in a more useful
|
||
way (the default) than the vi-compatible manner. Remove the
|
||
<span class="quote">“<span class=
|
||
"quote">no</span>”</span> to keep the old <span class=
|
||
"command"><strong>vi</strong></span> behavior. The <em class=
|
||
"parameter"><code>set backspace=2</code></em> setting allows
|
||
backspacing over line breaks, autoindents, and the start of
|
||
insert. The <em class="parameter"><code>syntax on</code></em>
|
||
parameter enables vim's syntax highlighting. The <em class=
|
||
"parameter"><code>set mouse=</code></em> setting enables
|
||
proper pasting of text with the mouse when working in chroot
|
||
or over a remote connection. Finally, the <span class=
|
||
"emphasis"><em>if</em></span> statement with the <em class=
|
||
"parameter"><code>set background=dark</code></em> setting
|
||
corrects <span class="command"><strong>vim</strong></span>'s
|
||
guess about the background color of some terminal emulators.
|
||
This gives the highlighting a better color scheme for use on
|
||
the black background of these programs.
|
||
</p>
|
||
<p>
|
||
Documentation for other available options can be obtained by
|
||
running the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">vim -c ':options'</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
By default, Vim only installs spell files for the English
|
||
language. To install spell files for your preferred
|
||
language, download the <code class="filename">*.spl</code>
|
||
and optionally, the <code class="filename">*.sug</code>
|
||
files for your language and character encoding from
|
||
<a class="ulink" href=
|
||
"ftp://ftp.vim.org/pub/vim/runtime/spell/">ftp://ftp.vim.org/pub/vim/runtime/spell/</a>
|
||
and save them to <code class=
|
||
"filename">/usr/share/vim/vim82/spell/</code>.
|
||
</p>
|
||
<p>
|
||
To use these spell files, some configuration in
|
||
<code class="filename">/etc/vimrc</code> is needed, e.g.:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="literal">set spelllang=en,ru
|
||
set spell</code>
|
||
</pre>
|
||
<p>
|
||
For more information, see the appropriate README file
|
||
located at the URL above.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-vim" name="contents-vim"></a>6.72.3. Contents
|
||
of Vim
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">ex (link to vim), rview (link to
|
||
vim), rvim (link to vim), vi (link to vim), view (link to
|
||
vim), vim, vimdiff (link to vim), vimtutor, and
|
||
xxd</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directory:</strong>
|
||
<span class="segbody">/usr/share/vim</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504924177424" name=
|
||
"idm46504924177424"></a>Short Descriptions
|
||
</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>
|
||
Starts <span class=
|
||
"command"><strong>vim</strong></span> in ex mode
|
||
</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>
|
||
Is a restricted version of <span class=
|
||
"command"><strong>view</strong></span>; no shell
|
||
commands can be started and <span class=
|
||
"command"><strong>view</strong></span> cannot be
|
||
suspended
|
||
</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>
|
||
Is a restricted version of <span class=
|
||
"command"><strong>vim</strong></span>; no shell
|
||
commands can be started and <span class=
|
||
"command"><strong>vim</strong></span> cannot be
|
||
suspended
|
||
</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>
|
||
Link to <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>
|
||
Starts <span class=
|
||
"command"><strong>vim</strong></span> in read-only
|
||
mode
|
||
</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>
|
||
Is the editor
|
||
</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>
|
||
Edits two or three versions of a file with
|
||
<span class="command"><strong>vim</strong></span>
|
||
and shows differences
|
||
</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>
|
||
Teaches the basic keys and commands of <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>
|
||
Creates a hex dump of the given file; it can also
|
||
do the reverse, so it can be used for binary
|
||
patching
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-procps" name=
|
||
"ch-system-procps"></a>6.73. Procps-ng-3.3.15
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Procps-ng package contains programs for monitoring
|
||
processes.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">17 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.73.1. Installation of Procps-ng
|
||
</h3>
|
||
<p>
|
||
Prepare procps-ng for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--exec-prefix= \
|
||
--libdir=/usr/lib \
|
||
--docdir=/usr/share/doc/procps-ng-3.3.15 \
|
||
--disable-static \
|
||
--disable-kill</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-kill</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This switch disables building the <span class=
|
||
"command"><strong>kill</strong></span> command that
|
||
will be installed by the Util-linux package.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
The test suite needs some custom modifications for LFS.
|
||
Remove a test that fails when scripting does not use a tty
|
||
device and fix two others. To run the test suite, run the
|
||
following commands:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">sed -i -r 's|(pmap_initname)\\\$|\1|' testsuite/pmap.test/pmap.exp
|
||
sed -i '/set tty/d' testsuite/pkill.test/pkill.exp
|
||
rm testsuite/pgrep.test/pgrep.exp
|
||
make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
Finally, move essential libraries to a location that can be
|
||
found if <code class="filename">/usr</code> is not mounted.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mv -v /usr/lib/libprocps.so.* /lib
|
||
ln -sfv ../../lib/$(readlink /usr/lib/libprocps.so) /usr/lib/libprocps.so</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-procps" name="contents-procps"></a>6.73.2.
|
||
Contents of Procps-ng
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">free, pgrep, pidof, pkill, pmap,
|
||
ps, pwdx, slabtop, sysctl, tload, top, uptime, vmstat, w,
|
||
and watch</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed library:</strong>
|
||
<span class="segbody">libprocps.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/include/proc and
|
||
/usr/share/doc/procps-ng-3.3.15</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504924099520" name=
|
||
"idm46504924099520"></a>Short Descriptions
|
||
</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>
|
||
Reports the amount of free and used memory (both
|
||
physical and swap memory) in the system
|
||
</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>
|
||
Looks up processes based on their name and other
|
||
attributes
|
||
</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>
|
||
Reports the PIDs of the given programs
|
||
</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>
|
||
Signals processes based on their name and other
|
||
attributes
|
||
</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>
|
||
Reports the memory map of the given process
|
||
</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>
|
||
Lists the current running processes
|
||
</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>
|
||
Reports the current working directory of a process
|
||
</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>
|
||
Displays detailed kernel slab cache information in
|
||
real time
|
||
</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>
|
||
Modifies kernel parameters at run time
|
||
</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>
|
||
Prints a graph of the current system load average
|
||
</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>
|
||
Displays a list of the most CPU intensive
|
||
processes; it provides an ongoing look at processor
|
||
activity in real time
|
||
</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>
|
||
Reports how long the system has been running, how
|
||
many users are logged on, and the system load
|
||
averages
|
||
</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>
|
||
Reports virtual memory statistics, giving
|
||
information about processes, memory, paging, block
|
||
Input/Output (IO), traps, and CPU activity
|
||
</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>
|
||
Shows which users are currently logged on, where,
|
||
and since when
|
||
</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>
|
||
Runs a given command repeatedly, displaying the
|
||
first screen-full of its output; this allows a user
|
||
to watch the output change over time
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="libprocps" name="libprocps"></a><span class=
|
||
"term"><code class=
|
||
"filename">libprocps</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Contains the functions used by most programs in
|
||
this package
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-util-linux" name=
|
||
"ch-system-util-linux"></a>6.74. Util-linux-2.35.1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Util-linux package contains miscellaneous utility
|
||
programs. Among them are utilities for handling file systems,
|
||
consoles, partitions, and messages.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">1.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">289 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.74.1. FHS compliance notes
|
||
</h3>
|
||
<p>
|
||
The FHS recommends using the <code class=
|
||
"filename">/var/lib/hwclock</code> directory instead of the
|
||
usual <code class="filename">/etc</code> directory as the
|
||
location for the <code class="filename">adjtime</code> file.
|
||
First create a directory to enable storage for the
|
||
<span class="command"><strong>hwclock</strong></span>
|
||
program:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -pv /var/lib/hwclock</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.74.2. Installation of Util-linux
|
||
</h3>
|
||
<p>
|
||
Prepare Util-linux for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
|
||
--docdir=/usr/share/doc/util-linux-2.35.1 \
|
||
--disable-chfn-chsh \
|
||
--disable-login \
|
||
--disable-nologin \
|
||
--disable-su \
|
||
--disable-setpriv \
|
||
--disable-runuser \
|
||
--disable-pylibmount \
|
||
--disable-static \
|
||
--without-python \
|
||
--without-systemd \
|
||
--without-systemdsystemunitdir</kbd>
|
||
</pre>
|
||
<p>
|
||
The --disable and --without options prevent warnings about
|
||
building components that require packages not in LFS or are
|
||
inconsistent with programs installed by other packages.
|
||
</p>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
If desired, run the test suite as a non-root user:
|
||
</p>
|
||
<div class="admon warning">
|
||
<h3>
|
||
Warning
|
||
</h3>
|
||
<p>
|
||
Running the test suite as the root user can be harmful to
|
||
your system. To run it, the CONFIG_SCSI_DEBUG option for
|
||
the kernel must be available in the currently running
|
||
system, and must be built as a module. Building it into the
|
||
kernel will prevent booting. For complete coverage, other
|
||
BLFS packages must be installed. If desired, this test can
|
||
be run after rebooting into the completed LFS system and
|
||
running:
|
||
</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 -Rv nobody .
|
||
su nobody -s /bin/bash -c "PATH=$PATH make -k check"</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-utillinux" name=
|
||
"contents-utillinux"></a>6.74.3. Contents of Util-linux
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</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, fdformat, fdisk, fincore,
|
||
findfs, findmnt, flock, fsck, fsck.cramfs, fsck.minix,
|
||
fsfreeze, fstrim, getopt, hexdump, hwclock, i386, ionice,
|
||
ipcmk, ipcrm, ipcs, isosize, kill, last, lastb (link to
|
||
last), ldattach, linux32, linux64, logger, look, losetup,
|
||
lsblk, lscpu, lsipc, lslocks, lslogins, lsmem, lsns,
|
||
mcookie, mesg, mkfs, mkfs.bfs, mkfs.cramfs, mkfs.minix,
|
||
mkswap, more, mount, mountpoint, namei, nsenter, partx,
|
||
pivot_root, prlimit, raw, readprofile, rename, renice,
|
||
resizepart, rev, rfkill, rtcwake, script, scriptreplay,
|
||
setarch, setsid, setterm, sfdisk, sulogin, swaplabel,
|
||
swapoff (link to swapon), swapon, switch_root, taskset,
|
||
ul, umount, uname26, unshare, utmpdump, uuidd, uuidgen,
|
||
uuidparse, wall, wdctl, whereis, wipefs, x86_64, and
|
||
zramctl</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">libblkid.so, libfdisk.so,
|
||
libmount.so, libsmartcols.so, and libuuid.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</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.35.1, and
|
||
/var/lib/hwclock</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504923991952" name=
|
||
"idm46504923991952"></a>Short Descriptions
|
||
</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>
|
||
Informs the Linux kernel of new partitions
|
||
</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>
|
||
Opens a tty port, prompts for a login name, and
|
||
then invokes the <span class=
|
||
"command"><strong>login</strong></span> program
|
||
</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>
|
||
Discards sectors on a device
|
||
</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>
|
||
A command line utility to locate and print block
|
||
device attributes
|
||
</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>
|
||
Runs zone command on the given block device
|
||
</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>
|
||
Allows users to call block device ioctls from the
|
||
command line
|
||
</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>
|
||
Displays a simple calendar
|
||
</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>
|
||
Manipulates the partition table of the given device
|
||
</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>
|
||
Modifies the state of CPUs
|
||
</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>
|
||
Configures memory
|
||
</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>
|
||
Displays and adjusts OOM-killer score
|
||
</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>
|
||
Manipulates real-time attributes of a process
|
||
</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>
|
||
Filters out reverse line feeds
|
||
</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>
|
||
Filters <span class=
|
||
"command"><strong>nroff</strong></span> output for
|
||
terminals that lack some capabilities, such as
|
||
overstriking and half-lines
|
||
</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>
|
||
Filters out the given columns
|
||
</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>
|
||
Formats a given file into multiple columns
|
||
</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>
|
||
Sets the function of the Ctrl+Alt+Del key
|
||
combination to a hard or a soft reset
|
||
</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>
|
||
Asks the Linux kernel to remove a partition
|
||
</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>
|
||
Dumps the kernel boot messages
|
||
</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>
|
||
Ejects removable media
|
||
</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>
|
||
Preallocates space to a file
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="fdformat" name="fdformat"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>fdformat</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Low-level formats a floppy disk
|
||
</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>
|
||
Manipulates the partition table of the given device
|
||
</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>
|
||
Counts pages of file contents in core
|
||
</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>
|
||
Finds a file system by label or Universally Unique
|
||
Identifier (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>
|
||
Is a command line interface to the libmount library
|
||
for work with mountinfo, fstab and mtab files
|
||
</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>
|
||
Acquires a file lock and then executes a command
|
||
with the lock held
|
||
</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>
|
||
Is used to check, and optionally repair, file
|
||
systems
|
||
</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>
|
||
Performs a consistency check on the Cramfs file
|
||
system on the given device
|
||
</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>
|
||
Performs a consistency check on the Minix file
|
||
system on the given device
|
||
</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>
|
||
Is a very simple wrapper around FIFREEZE/FITHAW
|
||
ioctl kernel driver operations
|
||
</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>
|
||
Discards unused blocks on a mounted filesystem
|
||
</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>
|
||
Parses options in the given command line
|
||
</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>
|
||
Dumps the given file in hexadecimal or in another
|
||
given format
|
||
</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>
|
||
Reads or sets the system's hardware clock, also
|
||
called the Real-Time Clock (RTC) or Basic
|
||
Input-Output System (BIOS) clock
|
||
</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>
|
||
A symbolic link to 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>
|
||
Gets or sets the io scheduling class and priority
|
||
for a program
|
||
</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>
|
||
Creates various IPC resources
|
||
</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>
|
||
Removes the given Inter-Process Communication (IPC)
|
||
resource
|
||
</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>
|
||
Provides IPC status information
|
||
</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>
|
||
Reports the size of an iso9660 file system
|
||
</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>
|
||
Sends signals to processes
|
||
</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>
|
||
Shows which users last logged in (and out),
|
||
searching back through the <code class=
|
||
"filename">/var/log/wtmp</code> file; it also shows
|
||
system boots, shutdowns, and run-level changes
|
||
</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>
|
||
Shows the failed login attempts, as logged in
|
||
<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>
|
||
Attaches a line discipline to a serial line
|
||
</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>
|
||
A symbolic link to 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>
|
||
A symbolic link to 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>
|
||
Enters the given message into the system log
|
||
</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>
|
||
Displays lines that begin with the given string
|
||
</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>
|
||
Sets up and controls loop devices
|
||
</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>
|
||
Lists information about all or selected block
|
||
devices in a tree-like format
|
||
</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>
|
||
Prints CPU architecture information
|
||
</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>
|
||
Prints information on IPC facilities currently
|
||
employed in the system
|
||
</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>
|
||
Lists local system locks
|
||
</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>
|
||
Lists information about users, groups and system
|
||
accounts
|
||
</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>
|
||
Lists the ranges of available memory with their
|
||
online status
|
||
</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>
|
||
Lists namespaces
|
||
</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>
|
||
Generates magic cookies (128-bit random hexadecimal
|
||
numbers) for <span class=
|
||
"command"><strong>xauth</strong></span>
|
||
</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>
|
||
Controls whether other users can send messages to
|
||
the current user's terminal
|
||
</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>
|
||
Builds a file system on a device (usually a hard
|
||
disk partition)
|
||
</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>
|
||
Creates a Santa Cruz Operations (SCO) bfs file
|
||
system
|
||
</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>
|
||
Creates a cramfs file system
|
||
</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>
|
||
Creates a Minix file system
|
||
</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>
|
||
Initializes the given device or file to be used as
|
||
a swap area
|
||
</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>
|
||
A filter for paging through text one screen at a
|
||
time
|
||
</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>
|
||
Attaches the file system on the given device to a
|
||
specified directory in the file-system tree
|
||
</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>
|
||
Checks if the directory is a mountpoint
|
||
</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>
|
||
Shows the symbolic links in the given pathnames
|
||
</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>
|
||
Runs a program with namespaces of other processes
|
||
</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>
|
||
Tells the kernel about the presence and numbering
|
||
of on-disk partitions
|
||
</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>
|
||
Makes the given file system the new root file
|
||
system of the current process
|
||
</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>
|
||
Get and set a process' resource limits
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="raw" name="raw"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>raw</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Bind a Linux raw character device to a block device
|
||
</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>
|
||
Reads kernel profiling information
|
||
</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>
|
||
Renames the given files, replacing a given string
|
||
with another
|
||
</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>
|
||
Alters the priority of running processes
|
||
</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>
|
||
Asks the Linux kernel to resize a partition
|
||
</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>
|
||
Reverses the lines of a given file
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="rkfill" name="rkfill"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>rkfill</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Tool for enabling and disabling wireless devices
|
||
</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>
|
||
Used to enter a system sleep state until specified
|
||
wakeup time
|
||
</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>
|
||
Makes a typescript of a terminal session
|
||
</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>
|
||
Plays back typescripts using timing information
|
||
</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>
|
||
Changes reported architecture in a new program
|
||
environment and sets personality flags
|
||
</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>
|
||
Runs the given program in a new session
|
||
</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>
|
||
Sets terminal attributes
|
||
</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>
|
||
A disk partition table manipulator
|
||
</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>
|
||
Allows <code class="systemitem">root</code> to log
|
||
in; it is normally invoked by <span class=
|
||
"command"><strong>init</strong></span> when the
|
||
system goes into single user mode
|
||
</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>
|
||
Allows to change swaparea UUID and label
|
||
</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>
|
||
Disables devices and files for paging and swapping
|
||
</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>
|
||
Enables devices and files for paging and swapping
|
||
and lists the devices and files currently in use
|
||
</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>
|
||
Switches to another filesystem as the root of the
|
||
mount tree
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="tailf" name="tailf"></a><span class=
|
||
"term"><span class=
|
||
"command"><strong>tailf</strong></span></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Tracks the growth of a log file; displays the last
|
||
10 lines of a log file, then continues displaying
|
||
any new entries in the log file as they are created
|
||
</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>
|
||
Retrieves or sets a process' CPU affinity
|
||
</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>
|
||
A filter for translating underscores into escape
|
||
sequences indicating underlining for the terminal
|
||
in use
|
||
</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>
|
||
Disconnects a file system from the system's file
|
||
tree
|
||
</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>
|
||
A symbolic link to 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>
|
||
Runs a program with some namespaces unshared from
|
||
parent
|
||
</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>
|
||
Displays the content of the given login file in a
|
||
more user-friendly format
|
||
</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>
|
||
A daemon used by the UUID library to generate
|
||
time-based UUIDs in a secure and guaranteed-unique
|
||
fashion
|
||
</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>
|
||
Creates new UUIDs. Each new UUID can reasonably be
|
||
considered unique among all UUIDs created, on the
|
||
local system and on other systems, in the past and
|
||
in the future
|
||
</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>
|
||
An utility to parse unique identifiers
|
||
</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>
|
||
Displays the contents of a file or, by default, its
|
||
standard input, on the terminals of all currently
|
||
logged in users
|
||
</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>
|
||
Shows hardware watchdog status
|
||
</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>
|
||
Reports the location of the binary, source, and man
|
||
page for the given command
|
||
</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>
|
||
Wipes a filesystem signature from a device
|
||
</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>
|
||
A symbolic link to 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>
|
||
A program to set up and control zram (compressed
|
||
ram disk) devices
|
||
</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>
|
||
Contains routines for device identification and
|
||
token extraction
|
||
</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>
|
||
Contains routines for manipulating partition tables
|
||
</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>
|
||
Contains routines for block device mounting and
|
||
unmounting
|
||
</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>
|
||
Contains routines for aiding screen output in
|
||
tabular form
|
||
</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>
|
||
Contains routines for generating unique identifiers
|
||
for objects that may be accessible beyond the local
|
||
system
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-e2fsprogs" name=
|
||
"ch-system-e2fsprogs"></a>6.75. E2fsprogs-1.45.5
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The E2fsprogs package contains the utilities for handling the
|
||
<code class="systemitem">ext2</code> file system. It also
|
||
supports the <code class="systemitem">ext3</code> and
|
||
<code class="systemitem">ext4</code> journaling file systems.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">1.6 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">108 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.75.1. Installation of E2fsprogs
|
||
</h3>
|
||
<p>
|
||
The E2fsprogs documentation recommends that the package be
|
||
built in a subdirectory of the source tree:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -v build
|
||
cd build</kbd>
|
||
</pre>
|
||
<p>
|
||
Prepare E2fsprogs for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">../configure --prefix=/usr \
|
||
--bindir=/bin \
|
||
--with-root-prefix="" \
|
||
--enable-elf-shlibs \
|
||
--disable-libblkid \
|
||
--disable-libuuid \
|
||
--disable-uuidd \
|
||
--disable-fsck</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of the environment variable and
|
||
configure options:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--with-root-prefix=""</code></em> and
|
||
<em class=
|
||
"parameter"><code>--bindir=/bin</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Certain programs (such as the <span class=
|
||
"command"><strong>e2fsck</strong></span> program) are
|
||
considered essential programs. When, for example,
|
||
<code class="filename">/usr</code> is not mounted,
|
||
these programs still need to be available. They belong
|
||
in directories like <code class="filename">/lib</code>
|
||
and <code class="filename">/sbin</code>. If this option
|
||
is not passed to E2fsprogs' configure, the programs are
|
||
installed into the <code class="filename">/usr</code>
|
||
directory.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--enable-elf-shlibs</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This creates the shared libraries which some programs
|
||
in this package use.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>--disable-*</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This prevents E2fsprogs from building and installing
|
||
the <code class="systemitem">libuuid</code> and
|
||
<code class="systemitem">libblkid</code> libraries, the
|
||
<code class="systemitem">uuidd</code> daemon, and the
|
||
<span class="command"><strong>fsck</strong></span>
|
||
wrapper, as Util-Linux installs more recent versions.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
To run the tests, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
One of the E2fsprogs tests will attempt to allocate 256 MB of
|
||
memory. If you do not have significantly more RAM than this,
|
||
be sure to enable sufficient swap space for the test. See
|
||
<a class="xref" href="#ch-partitioning-creatingfilesystem"
|
||
title=
|
||
"2.5. Creating a File System on the Partition">Section 2.5,
|
||
“Creating a File System on the Partition”</a> and
|
||
<a class="xref" href="#ch-partitioning-mounting" title=
|
||
"2.7. Mounting the New Partition">Section 2.7,
|
||
“Mounting the New Partition”</a> for details on
|
||
creating and enabling swap space.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
Make the installed static libraries writable so debugging
|
||
symbols can be removed later:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">chmod -v u+w /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a</kbd>
|
||
</pre>
|
||
<p>
|
||
This package installs a gzipped <code class=
|
||
"filename">.info</code> file but doesn't update the
|
||
system-wide <code class="filename">dir</code> file. Unzip
|
||
this file and then update the system <code class=
|
||
"filename">dir</code> file using the following commands:
|
||
</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>
|
||
If desired, create and install some additional documentation
|
||
by issuing the following commands:
|
||
</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="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-e2fsprogs" name=
|
||
"contents-e2fsprogs"></a>6.75.2. Contents of E2fsprogs
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</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, and tune2fs</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">libcom_err.so, libe2p.so,
|
||
libext2fs.so, and libss.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/usr/include/e2p, /usr/include/et,
|
||
/usr/include/ext2fs, /usr/include/ss, /usr/lib/e2fsprogs,
|
||
/usr/share/et, and /usr/share/ss</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504923349280" name=
|
||
"idm46504923349280"></a>Short Descriptions
|
||
</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>
|
||
Searches a device (usually a disk partition) for
|
||
bad blocks
|
||
</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>
|
||
Changes the attributes of files on an <code class=
|
||
"systemitem">ext2</code> file system; it also
|
||
changes <code class="systemitem">ext3</code> file
|
||
systems, the journaling version of <code class=
|
||
"systemitem">ext2</code> file systems
|
||
</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>
|
||
An error table compiler; it converts a table of
|
||
error-code names and messages into a C source file
|
||
suitable for use with the <code class=
|
||
"filename">com_err</code> library
|
||
</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>
|
||
A file system debugger; it can be used to examine
|
||
and change the state of an <code class=
|
||
"systemitem">ext2</code> file system
|
||
</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>
|
||
Prints the super block and blocks group information
|
||
for the file system present on a given device
|
||
</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>
|
||
Reports free space fragmentation information
|
||
</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>
|
||
Is used to check, and optionally repair
|
||
<code class="systemitem">ext2</code> file systems
|
||
and <code class="systemitem">ext3</code> file
|
||
systems
|
||
</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>
|
||
Is used to save critical <code class=
|
||
"systemitem">ext2</code> file system data to a file
|
||
</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>
|
||
Displays or changes the file system label on the
|
||
<code class="systemitem">ext2</code> file system
|
||
present on a given device
|
||
</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>
|
||
Checks MMP status of an ext4 filesystem
|
||
</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>
|
||
Checks the contents of a mounted ext[234]
|
||
filesystem
|
||
</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>
|
||
Checks all mounted ext[234] filesystems for errors
|
||
</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>
|
||
Replays the undo log undo_log for an ext2/ext3/ext4
|
||
filesystem found on a device [This can be used to
|
||
undo a failed operation by an e2fsprogs program.]
|
||
</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>
|
||
Ext4 filesystem encryption utility
|
||
</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>
|
||
Online defragmenter for ext4 filesystems
|
||
</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>
|
||
Reports on how badly fragmented a particular file
|
||
might be
|
||
</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>
|
||
By default checks <code class=
|
||
"systemitem">ext2</code> file systems and is a hard
|
||
link to <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>
|
||
By default checks <code class=
|
||
"systemitem">ext3</code> file systems and is a hard
|
||
link to <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>
|
||
By default checks <code class=
|
||
"systemitem">ext4</code> file systems and is a hard
|
||
link to <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>
|
||
Saves the output of a command in a log file
|
||
</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>
|
||
Lists the attributes of files on a second extended
|
||
file system
|
||
</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>
|
||
Converts a table of command names and help messages
|
||
into a C source file suitable for use with the
|
||
<code class="filename">libss</code> subsystem
|
||
library
|
||
</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>
|
||
Creates an <code class="systemitem">ext2</code> or
|
||
<code class="systemitem">ext3</code> file system on
|
||
the given device
|
||
</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>
|
||
By default creates <code class=
|
||
"systemitem">ext2</code> file systems and is a hard
|
||
link to <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>
|
||
By default creates <code class=
|
||
"systemitem">ext3</code> file systems and is a hard
|
||
link to <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>
|
||
By default creates <code class=
|
||
"systemitem">ext4</code> file systems and is a hard
|
||
link to <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>
|
||
Used to create a <code class=
|
||
"filename">lost+found</code> directory on an
|
||
<code class="systemitem">ext2</code> file system;
|
||
it pre-allocates disk blocks to this directory to
|
||
lighten the task of <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>
|
||
Can be used to enlarge or shrink an <code class=
|
||
"systemitem">ext2</code> file system
|
||
</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>
|
||
Adjusts tunable file system parameters on an
|
||
<code class="systemitem">ext2</code> file system
|
||
</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>
|
||
The common error display routine
|
||
</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>
|
||
Used by <span class=
|
||
"command"><strong>dumpe2fs</strong></span>,
|
||
<span class=
|
||
"command"><strong>chattr</strong></span>, and
|
||
<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>
|
||
Contains routines to enable user-level programs to
|
||
manipulate an <code class="systemitem">ext2</code>
|
||
file system
|
||
</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>
|
||
Used by <span class=
|
||
"command"><strong>debugfs</strong></span>
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-sysklogd" name=
|
||
"ch-system-sysklogd"></a>6.76. Sysklogd-1.5.1
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Sysklogd package contains programs for logging system
|
||
messages, such as those given by the kernel when unusual
|
||
things happen.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">0.6 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.76.1. Installation of Sysklogd
|
||
</h3>
|
||
<p>
|
||
First, fix problems that causes a segmentation fault under
|
||
some conditions in klogd and fix an obsolete program
|
||
construct:
|
||
</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>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
This package does not come with a test suite.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make BINDIR=/sbin install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="configuration" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="conf-sysklogd" name="conf-sysklogd"></a>6.76.2.
|
||
Configuring Sysklogd
|
||
</h3>
|
||
<p>
|
||
Create a new <code class="filename">/etc/syslog.conf</code>
|
||
file by running the following:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/syslog.conf << "EOF"
|
||
<code class="literal"># Begin /etc/syslog.conf
|
||
|
||
auth,authpriv.* -/var/log/auth.log
|
||
*.*;auth,authpriv.none -/var/log/sys.log
|
||
daemon.* -/var/log/daemon.log
|
||
kern.* -/var/log/kern.log
|
||
mail.* -/var/log/mail.log
|
||
user.* -/var/log/user.log
|
||
*.emerg *
|
||
|
||
# End /etc/syslog.conf</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-sysklogd" name=
|
||
"contents-sysklogd"></a>6.76.3. Contents of Sysklogd
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">klogd and syslogd</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504923168032" name=
|
||
"idm46504923168032"></a>Short Descriptions
|
||
</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>
|
||
A system daemon for intercepting and logging kernel
|
||
messages
|
||
</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>
|
||
Logs the messages that system programs offer for
|
||
logging [Every logged message contains at least a
|
||
date stamp and a hostname, and normally the
|
||
program's name too, but that depends on how
|
||
trusting the logging daemon is told to be.]
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-sysvinit" name=
|
||
"ch-system-sysvinit"></a>6.77. Sysvinit-2.96
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Sysvinit package contains programs for controlling the
|
||
startup, running, and shutdown of the system.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">1.4 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.77.1. Installation of Sysvinit
|
||
</h3>
|
||
<p>
|
||
First, apply a patch that removes several programs installed
|
||
by other packages, clarifies a message, and fixes a compiler
|
||
warning:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">patch -Np1 -i ../sysvinit-2.96-consolidated-1.patch</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
This package does not come with a test suite.
|
||
</p>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-sysvinit" name=
|
||
"contents-sysvinit"></a>6.77.2. Contents of Sysvinit
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">bootlogd, fstab-decode, halt, init,
|
||
killall5, poweroff (link to halt), reboot (link to halt),
|
||
runlevel, shutdown, and telinit (link to init)</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504923135168" name=
|
||
"idm46504923135168"></a>Short Descriptions
|
||
</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>
|
||
Logs boot messages to a log file
|
||
</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>
|
||
Run a command with fstab-encoded arguments
|
||
</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>
|
||
Normally invokes <span class=
|
||
"command"><strong>shutdown</strong></span> with the
|
||
<em class="parameter"><code>-h</code></em> option,
|
||
except when already in run-level 0, then it tells
|
||
the kernel to halt the system; it notes in the file
|
||
<code class="filename">/var/log/wtmp</code> that
|
||
the system is being brought down
|
||
</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>
|
||
The first process to be started when the kernel has
|
||
initialized the hardware which takes over the boot
|
||
process and starts all the proceses specified in
|
||
its configuration file
|
||
</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>
|
||
Sends a signal to all processes, except the
|
||
processes in its own session so it will not kill
|
||
its parent shell
|
||
</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>
|
||
Tells the kernel to halt the system and switch off
|
||
the computer (see <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>
|
||
Tells the kernel to reboot the system (see
|
||
<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>
|
||
Reports the previous and the current run-level, as
|
||
noted in the last run-level record in <code class=
|
||
"filename">/var/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>
|
||
Brings the system down in a secure way, signaling
|
||
all processes and notifying all logged-in users
|
||
</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>
|
||
Tells <span class=
|
||
"command"><strong>init</strong></span> which
|
||
run-level to change to
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-eudev" name=
|
||
"ch-system-eudev"></a>6.78. Eudev-3.2.9
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Eudev package contains programs for dynamic creation of
|
||
device nodes.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">0.2 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">83 MB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
6.78.1. Installation of Eudev
|
||
</h3>
|
||
<p>
|
||
Prepare Eudev for compilation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">./configure --prefix=/usr \
|
||
--bindir=/sbin \
|
||
--sbindir=/sbin \
|
||
--libdir=/usr/lib \
|
||
--sysconfdir=/etc \
|
||
--libexecdir=/lib \
|
||
--with-rootprefix= \
|
||
--with-rootlibdir=/lib \
|
||
--enable-manpages \
|
||
--disable-static</kbd>
|
||
</pre>
|
||
<p>
|
||
Compile the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
Create some directories now that are needed for tests, but
|
||
will also be used as a part of installation:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mkdir -pv /lib/udev/rules.d
|
||
mkdir -pv /etc/udev/rules.d</kbd>
|
||
</pre>
|
||
<p>
|
||
To test the results, issue:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make check</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
<p>
|
||
Install some custom rules and support files useful in an LFS
|
||
environment:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">tar -xvf ../udev-lfs-20171102.tar.xz
|
||
make -f udev-lfs-20171102/Makefile.lfs install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="configuration" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="conf-eudev" name="conf-eudev"></a>6.78.2. Configuring
|
||
Eudev
|
||
</h3>
|
||
<p>
|
||
Information about hardware devices is maintained in the
|
||
<code class="filename">/etc/udev/hwdb.d</code> and
|
||
<code class="filename">/lib/udev/hwdb.d</code> directories.
|
||
<span class="application">Eudev</span> needs that information
|
||
to be compiled into a binary database <code class=
|
||
"filename">/etc/udev/hwdb.bin</code>. Create the initial
|
||
database:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">udevadm hwdb --update</kbd>
|
||
</pre>
|
||
<p>
|
||
This command needs to be run each time the hardware
|
||
information is updated.
|
||
</p>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-eudev" name="contents-eudev"></a>6.78.3.
|
||
Contents of Eudev
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed programs:</strong>
|
||
<span class="segbody">udevadm and udevd</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed libraries:</strong>
|
||
<span class="segbody">libudev.so</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/etc/udev, /lib/udev, and
|
||
/usr/share/doc/udev-udev-lfs-20171102</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504923041920" name=
|
||
"idm46504923041920"></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>
|
||
Generic udev administration tool: controls the
|
||
udevd daemon, provides info from the Udev database,
|
||
monitors uevents, waits for uevents to finish,
|
||
tests Udev configuration, and triggers uevents for
|
||
a given device
|
||
</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>
|
||
A daemon that listens for uevents on the netlink
|
||
socket, creates devices and runs the configured
|
||
external programs in response to these uevents
|
||
</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>
|
||
A library interface to udev device information
|
||
</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>
|
||
Contains Udev configuration files, device
|
||
permissions, and rules for device naming
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-aboutdebug" name=
|
||
"ch-system-aboutdebug"></a>6.79. About Debugging
|
||
Symbols
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Most programs and libraries are, by default, compiled with
|
||
debugging symbols included (with <span class=
|
||
"command"><strong>gcc</strong></span>'s <em class=
|
||
"parameter"><code>-g</code></em> option). This means that when
|
||
debugging a program or library that was compiled with debugging
|
||
information included, the debugger can provide not only memory
|
||
addresses, but also the names of the routines and variables.
|
||
</p>
|
||
<p>
|
||
However, the inclusion of these debugging symbols enlarges a
|
||
program or library significantly. The following is an example
|
||
of the amount of space these symbols occupy:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
A <span class="command"><strong>bash</strong></span>
|
||
binary with debugging symbols: 1200 KB
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
A <span class="command"><strong>bash</strong></span>
|
||
binary without debugging symbols: 480 KB
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Glibc and GCC files (<code class="filename">/lib</code>
|
||
and <code class="filename">/usr/lib</code>) with
|
||
debugging symbols: 87 MB
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Glibc and GCC files without debugging symbols: 16 MB
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<p>
|
||
Sizes may vary depending on which compiler and C library were
|
||
used, but when comparing programs with and without debugging
|
||
symbols, the difference will usually be a factor between two
|
||
and five.
|
||
</p>
|
||
<p>
|
||
Because most users will never use a debugger on their system
|
||
software, a lot of disk space can be regained by removing these
|
||
symbols. The next section shows how to strip all debugging
|
||
symbols from the programs and libraries.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-strippingagain" name=
|
||
"ch-system-strippingagain"></a>6.80. Stripping Again
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
This section is optional. If the intended user is not a
|
||
programmer and does not plan to do any debugging on the system
|
||
software, the system size can be decreased by about 90 MB by
|
||
removing the debugging symbols from binaries and libraries.
|
||
This causes no inconvenience other than not being able to debug
|
||
the software fully anymore.
|
||
</p>
|
||
<p>
|
||
Most people who use the commands mentioned below do not
|
||
experience any difficulties. However, it is easy to make a typo
|
||
and render the new system unusable, so before running the
|
||
<span class="command"><strong>strip</strong></span> commands,
|
||
it is a good idea to make a backup of the LFS system in its
|
||
current state.
|
||
</p>
|
||
<p>
|
||
First place the debugging symbols for selected libraries in
|
||
separate files. This debugging information is needed if running
|
||
regression tests that use <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1//general/valgrind.html">
|
||
valgrind</a> or <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1//general/gdb.html">
|
||
gdb</a> later in BLFS.
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">save_lib="ld-2.31.so libc-2.31.so libpthread-2.31.so libthread_db-1.0.so"
|
||
|
||
cd /lib
|
||
|
||
for LIB in $save_lib; do
|
||
objcopy --only-keep-debug $LIB $LIB.dbg
|
||
strip --strip-unneeded $LIB
|
||
objcopy --add-gnu-debuglink=$LIB.dbg $LIB
|
||
done
|
||
|
||
save_usrlib="libquadmath.so.0.0.0 libstdc++.so.6.0.27
|
||
libitm.so.1.0.0 libatomic.so.1.2.0"
|
||
|
||
cd /usr/lib
|
||
|
||
for LIB in $save_usrlib; do
|
||
objcopy --only-keep-debug $LIB $LIB.dbg
|
||
strip --strip-unneeded $LIB
|
||
objcopy --add-gnu-debuglink=$LIB.dbg $LIB
|
||
done
|
||
|
||
unset LIB save_lib save_usrlib</kbd>
|
||
</pre>
|
||
<p>
|
||
Before performing the stripping, take special care to ensure
|
||
that none of the binaries that are about to be stripped are
|
||
running:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">exec /tools/bin/bash</kbd>
|
||
</pre>
|
||
<p>
|
||
Now the binaries and libraries can be safely stripped:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">/tools/bin/find /usr/lib -type f -name \*.a \
|
||
-exec /tools/bin/strip --strip-debug {} ';'
|
||
|
||
/tools/bin/find /lib /usr/lib -type f \( -name \*.so* -a ! -name \*dbg \) \
|
||
-exec /tools/bin/strip --strip-unneeded {} ';'
|
||
|
||
/tools/bin/find /{bin,sbin} /usr/{bin,sbin,libexec} -type f \
|
||
-exec /tools/bin/strip --strip-all {} ';'</kbd>
|
||
</pre>
|
||
<p>
|
||
A large number of files will be reported as having their file
|
||
format not recognized. These warnings can be safely ignored.
|
||
These warnings indicate that those files are scripts instead of
|
||
binaries.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-system-revisedchroot" name=
|
||
"ch-system-revisedchroot"></a>6.81. Cleaning Up
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Finally, clean up some extra files left around from running
|
||
tests:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">rm -rf /tmp/*</kbd>
|
||
</pre>
|
||
<p>
|
||
Now log out and reenter the chroot environment with an updated
|
||
chroot command. From now on, use this updated chroot command
|
||
any time you need to reenter the chroot environment after
|
||
exiting:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">logout
|
||
|
||
chroot "$LFS" /usr/bin/env -i \
|
||
HOME=/root TERM="$TERM" \
|
||
PS1='(lfs chroot) \u:\w\$ ' \
|
||
PATH=/bin:/usr/bin:/sbin:/usr/sbin \
|
||
/bin/bash --login</kbd>
|
||
</pre>
|
||
<p>
|
||
The reason for this is that the programs in <code class=
|
||
"filename">/tools</code> are no longer needed. For this reason
|
||
you can delete the <code class="filename">/tools</code>
|
||
directory if so desired.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
Removing <code class="filename">/tools</code> will also
|
||
remove the temporary copies of Tcl, Expect, and DejaGNU which
|
||
were used for running the toolchain tests. If you need these
|
||
programs later on, they will need to be recompiled and
|
||
re-installed. The BLFS book has instructions for this (see
|
||
<a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/">http://www.linuxfromscratch.org/blfs/</a>).
|
||
</p>
|
||
</div>
|
||
<p>
|
||
If the virtual kernel file systems have been unmounted, either
|
||
manually or through a reboot, ensure that the virtual kernel
|
||
file systems are mounted when reentering the chroot. This
|
||
process was explained in <a class="xref" href=
|
||
"#ch-system-bindmount" title=
|
||
"6.2.2. Mounting and Populating /dev">Section 6.2.2,
|
||
“Mounting and Populating /dev”</a> and <a class=
|
||
"xref" href="#ch-system-kernfsmount" title=
|
||
"6.2.3. Mounting Virtual Kernel File Systems">Section 6.2.3,
|
||
“Mounting Virtual Kernel File Systems”</a>.
|
||
</p>
|
||
<p>
|
||
There were several static libraries that were not suppressed
|
||
earlier in the chapter in order to satisfy the regression tests
|
||
in several packages. These libraries are from binutils, bzip2,
|
||
e2fsprogs, flex, libtool, and zlib. If desired, remove them
|
||
now:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">rm -f /usr/lib/lib{bfd,opcodes}.a
|
||
rm -f /usr/lib/libbz2.a
|
||
rm -f /usr/lib/lib{com_err,e2p,ext2fs,ss}.a
|
||
rm -f /usr/lib/libltdl.a
|
||
rm -f /usr/lib/libfl.a
|
||
rm -f /usr/lib/libz.a</kbd>
|
||
</pre>
|
||
<p>
|
||
There are also several files installed in the /usr/lib and
|
||
/usr/libexec directories with a file name extention of .la.
|
||
These are "libtool archive" files and generally unneeded on a
|
||
linux system. None of these are necessary at this point. To
|
||
remove them, run:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">find /usr/lib /usr/libexec -name \*.la -delete</kbd>
|
||
</pre>
|
||
<p>
|
||
For more information about libtool archive files, see the
|
||
<a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1//introduction/la-files.html">
|
||
BLFS section "About Libtool Archive (.la) files"</a>.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="chapter" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="chapter-config" name=
|
||
"chapter-config"></a>Chapter 7. System
|
||
Configuration
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-config-introduction" name=
|
||
"ch-config-introduction"></a>7.1. Introduction
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Booting a Linux system involves several tasks. The process must
|
||
mount both virtual and real file systems, initialize devices,
|
||
activate swap, check file systems for integrity, mount any swap
|
||
partitions or files, set the system clock, bring up networking,
|
||
start any daemons required by the system, and accomplish any
|
||
other custom tasks needed by the user. This process must be
|
||
organized to ensure the tasks are performed in the correct
|
||
order but, at the same time, be executed as fast as possible.
|
||
</p>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="sysv-desc" name="sysv-desc"></a>7.1.1. System V
|
||
</h3>
|
||
<p>
|
||
System V is the classic boot process that has been used in
|
||
Unix and Unix-like systems such as Linux since about 1983. It
|
||
consists of a small program, <span class=
|
||
"command"><strong>init</strong></span>, that sets up basic
|
||
programs such as <span class=
|
||
"command"><strong>login</strong></span> (via getty) and runs
|
||
a script. This script, usually named <span class=
|
||
"command"><strong>rc</strong></span>, controls the execution
|
||
of a set of additional scripts that perform the tasks
|
||
required to initialize the system.
|
||
</p>
|
||
<p>
|
||
The <span class="command"><strong>init</strong></span>
|
||
program is controlled by the <code class=
|
||
"filename">/etc/inittab</code> file and is organized into run
|
||
levels that can be run by the user:
|
||
</p>
|
||
<div class="literallayout">
|
||
<p>
|
||
<br />
|
||
0 — halt<br />
|
||
1 — Single user mode<br />
|
||
2 — Multiuser, without networking<br />
|
||
|
||
3 — Full multiuser mode<br />
|
||
4 — User definable<br />
|
||
5 — Full multiuser mode with display manager<br />
|
||
|
||
6 — reboot<br />
|
||
</p>
|
||
</div>
|
||
<p>
|
||
The usual default run level is 3 or 5.
|
||
</p>
|
||
<h4>
|
||
<a id="idm46504922964592" name=
|
||
"idm46504922964592"></a>Advantages
|
||
</h4>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
Established, well understood system.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Easy to customize.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<h4>
|
||
<a id="idm46504922961904" name=
|
||
"idm46504922961904"></a>Disadvantages
|
||
</h4>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
Slower to boot. A medium speed base LFS system takes
|
||
8-12 seconds where the boot time is measured from the
|
||
first kernel message to the login prompt. Network
|
||
connectivity is typically established about 2 seconds
|
||
after the login prompt.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Serial processing of boot tasks. This is related to the
|
||
previous point. A delay in any process such as a file
|
||
system check, will delay the entire boot process.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Does not directly support advanced features like
|
||
control groups (cgroups), and per-user fair share
|
||
scheduling.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Adding scripts requires manual, static sequencing
|
||
decisions.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-config-bootscripts" name=
|
||
"ch-config-bootscripts"></a>7.2. LFS-Bootscripts-20191031
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The LFS-Bootscripts package contains a set of scripts to
|
||
start/stop the LFS system at bootup/shutdown. The
|
||
configuration files and procedures needed to customize the
|
||
boot process are described in the following sections.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">less than 0.1 SBU</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">244 KB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
7.2.1. Installation of LFS-Bootscripts
|
||
</h3>
|
||
<p>
|
||
Install the package:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make install</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-bootscripts" name=
|
||
"contents-bootscripts"></a>7.2.2. Contents of LFS-Bootscripts
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed scripts:</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, and udev_retry</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/etc/rc.d, /etc/init.d (symbolic
|
||
link), /etc/sysconfig, /lib/services, /lib/lsb (symbolic
|
||
link)</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504922934448" name=
|
||
"idm46504922934448"></a>Short Descriptions
|
||
</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>
|
||
Checks the integrity of the file systems before
|
||
they are mounted (with the exception of journal and
|
||
network based file systems)
|
||
</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>
|
||
Removes files that should not be preserved between
|
||
reboots, such as those in <code class=
|
||
"filename">/var/run/</code> and <code class=
|
||
"filename">/var/lock/</code>; it re-creates
|
||
<code class="filename">/var/run/utmp</code> and
|
||
removes the possibly present <code class=
|
||
"filename">/etc/nologin</code>, <code class=
|
||
"filename">/fastboot</code>, and <code class=
|
||
"filename">/forcefsck</code> files
|
||
</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>
|
||
Loads the correct keymap table for the desired
|
||
keyboard layout; it also sets the screen font
|
||
</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>
|
||
Contains common functions, such as error and status
|
||
checking, that are used by several bootscripts
|
||
</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>
|
||
Halts the system
|
||
</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>
|
||
Stops a network device
|
||
</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>
|
||
Initializes a network device
|
||
</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>
|
||
Sets up the system's hostname and local loopback
|
||
device
|
||
</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>
|
||
Loads kernel modules listed in <code class=
|
||
"filename">/etc/sysconfig/modules</code>, using
|
||
arguments that are also given there
|
||
</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>
|
||
Mounts all file systems, except ones that are
|
||
marked <span class=
|
||
"emphasis"><em>noauto</em></span> or are network
|
||
based
|
||
</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>
|
||
Mounts virtual kernel file systems, such as
|
||
<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>
|
||
Sets up network interfaces, such as network cards,
|
||
and sets up the default gateway (where applicable)
|
||
</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>
|
||
The master run-level control script; it is
|
||
responsible for running all the other bootscripts
|
||
one-by-one, in a sequence determined by the name of
|
||
the symbolic links being processed
|
||
</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>
|
||
Reboots the system
|
||
</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>
|
||
Makes sure every process is terminated before the
|
||
system reboots or halts
|
||
</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>
|
||
Resets the kernel clock to local time in case the
|
||
hardware clock is not set to UTC time
|
||
</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>
|
||
Provides the functionality needed to assign a
|
||
static Internet Protocol (IP) address to a network
|
||
interface
|
||
</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>
|
||
Enables and disables swap files and partitions
|
||
</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>
|
||
Loads system configuration values from <code class=
|
||
"filename">/etc/sysctl.conf</code>, if that file
|
||
exists, into the running kernel
|
||
</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>
|
||
Starts and stops the system and kernel log daemons
|
||
</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>
|
||
A template to create custom bootscripts for other
|
||
daemons
|
||
</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>
|
||
Prepares the <code class="filename">/dev</code>
|
||
directory and starts 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>
|
||
Retries failed udev uevents, and copies generated
|
||
rules files from <code class=
|
||
"filename">/run/udev</code> to <code class=
|
||
"filename">/etc/udev/rules.d</code> if required
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-config-udev" name=
|
||
"ch-config-udev"></a>7.3. Overview of Device and
|
||
Module Handling
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
In <a class="xref" href="#chapter-building-system" title=
|
||
"Chapter 6. Installing Basic System Software">Chapter 6</a>,
|
||
we installed the Udev package when <span class=
|
||
"phrase">eudev</span> was built. Before we go into the details
|
||
regarding how this works, a brief history of previous methods
|
||
of handling devices is in order.
|
||
</p>
|
||
<p>
|
||
Linux systems in general traditionally used a static device
|
||
creation method, whereby a great many device nodes were created
|
||
under <code class="filename">/dev</code> (sometimes literally
|
||
thousands of nodes), regardless of whether the corresponding
|
||
hardware devices actually existed. This was typically done via
|
||
a <span class="command"><strong>MAKEDEV</strong></span> script,
|
||
which contains a number of calls to the <span class=
|
||
"command"><strong>mknod</strong></span> program with the
|
||
relevant major and minor device numbers for every possible
|
||
device that might exist in the world.
|
||
</p>
|
||
<p>
|
||
Using the Udev method, only those devices which are detected by
|
||
the kernel get device nodes created for them. Because these
|
||
device nodes will be created each time the system boots, they
|
||
will be stored on a <code class="systemitem">devtmpfs</code>
|
||
file system (a virtual file system that resides entirely in
|
||
system memory). Device nodes do not require much space, so the
|
||
memory that is used is negligible.
|
||
</p>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
7.3.1. History
|
||
</h3>
|
||
<p>
|
||
In February 2000, a new filesystem called <code class=
|
||
"systemitem">devfs</code> was merged into the 2.3.46 kernel
|
||
and was made available during the 2.4 series of stable
|
||
kernels. Although it was present in the kernel source itself,
|
||
this method of creating devices dynamically never received
|
||
overwhelming support from the core kernel developers.
|
||
</p>
|
||
<p>
|
||
The main problem with the approach adopted by <code class=
|
||
"systemitem">devfs</code> was the way it handled device
|
||
detection, creation, and naming. The latter issue, that of
|
||
device node naming, was perhaps the most critical. It is
|
||
generally accepted that if device names are allowed to be
|
||
configurable, then the device naming policy should be up to a
|
||
system administrator, not imposed on them by any particular
|
||
developer(s). The <code class="systemitem">devfs</code> file
|
||
system also suffered from race conditions that were inherent
|
||
in its design and could not be fixed without a substantial
|
||
revision to the kernel. It was marked as deprecated for a
|
||
long period – due to a lack of maintenance – and
|
||
was finally removed from the kernel in June, 2006.
|
||
</p>
|
||
<p>
|
||
With the development of the unstable 2.5 kernel tree, later
|
||
released as the 2.6 series of stable kernels, a new virtual
|
||
filesystem called <code class="systemitem">sysfs</code> came
|
||
to be. The job of <code class="systemitem">sysfs</code> is to
|
||
export a view of the system's hardware configuration to
|
||
userspace processes. With this userspace-visible
|
||
representation, the possibility of developing a userspace
|
||
replacement for <code class="systemitem">devfs</code> became
|
||
much more realistic.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
7.3.2. Udev Implementation
|
||
</h3>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504922798864" name=
|
||
"idm46504922798864"></a>7.3.2.1. Sysfs
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The <code class="systemitem">sysfs</code> filesystem was
|
||
mentioned briefly above. One may wonder how <code class=
|
||
"systemitem">sysfs</code> knows about the devices present
|
||
on a system and what device numbers should be used for
|
||
them. Drivers that have been compiled into the kernel
|
||
directly register their objects with a <code class=
|
||
"systemitem">sysfs</code> (devtmpfs internally) as they are
|
||
detected by the kernel. For drivers compiled as modules,
|
||
this registration will happen when the module is loaded.
|
||
Once the <code class="systemitem">sysfs</code> filesystem
|
||
is mounted (on /sys), data which the drivers register with
|
||
<code class="systemitem">sysfs</code> are available to
|
||
userspace processes and to udevd for processing (including
|
||
modifications to device nodes).
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504922792128" name=
|
||
"idm46504922792128"></a>7.3.2.2. Device Node
|
||
Creation
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Device files are created by the kernel by the <code class=
|
||
"systemitem">devtmpfs</code> filesystem. Any driver that
|
||
wishes to register a device node will go through the
|
||
<code class="systemitem">devtmpfs</code> (via the driver
|
||
core) to do it. When a <code class=
|
||
"systemitem">devtmpfs</code> instance is mounted on
|
||
<code class="filename">/dev</code>, the device node will
|
||
initially be created with a fixed name, permissions, and
|
||
owner.
|
||
</p>
|
||
<p>
|
||
A short time later, the kernel will send a uevent to
|
||
<span class="command"><strong>udevd</strong></span>. Based
|
||
on the rules specified in the files within the <code class=
|
||
"filename">/etc/udev/rules.d</code>, <code class=
|
||
"filename">/lib/udev/rules.d</code>, and <code class=
|
||
"filename">/run/udev/rules.d</code> directories,
|
||
<span class="command"><strong>udevd</strong></span> will
|
||
create additional symlinks to the device node, or change
|
||
its permissions, owner, or group, or modify the internal
|
||
<span class="command"><strong>udevd</strong></span>
|
||
database entry (name) for that object.
|
||
</p>
|
||
<p>
|
||
The rules in these three directories are numbered and all
|
||
three directories are merged together. If <span class=
|
||
"command"><strong>udevd</strong></span> can't find a rule
|
||
for the device it is creating, it will leave the
|
||
permissions and ownership at whatever <code class=
|
||
"systemitem">devtmpfs</code> used initially.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="module-loading" name=
|
||
"module-loading"></a>7.3.2.3. Module Loading
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Device drivers compiled as modules may have aliases built
|
||
into them. Aliases are visible in the output of the
|
||
<span class="command"><strong>modinfo</strong></span>
|
||
program and are usually related to the bus-specific
|
||
identifiers of devices supported by a module. For example,
|
||
the <span class="emphasis"><em>snd-fm801</em></span> driver
|
||
supports PCI devices with vendor ID 0x1319 and device ID
|
||
0x0801, and has an alias of <span class=
|
||
"quote">“<span class=
|
||
"quote">pci:v00001319d00000801sv*sd*bc04sc01i*</span>”</span>.
|
||
For most devices, the bus driver exports the alias of the
|
||
driver that would handle the device via <code class=
|
||
"systemitem">sysfs</code>. E.g., the <code class=
|
||
"filename">/sys/bus/pci/devices/0000:00:0d.0/modalias</code>
|
||
file might contain the string <span class=
|
||
"quote">“<span class=
|
||
"quote">pci:v00001319d00000801sv00001319sd00001319bc04sc01i00</span>”</span>.
|
||
The default rules provided with Udev will cause
|
||
<span class="command"><strong>udevd</strong></span> to call
|
||
out to <span class=
|
||
"command"><strong>/sbin/modprobe</strong></span> with the
|
||
contents of the <code class="envar">MODALIAS</code> uevent
|
||
environment variable (which should be the same as the
|
||
contents of the <code class="filename">modalias</code> file
|
||
in sysfs), thus loading all modules whose aliases match
|
||
this string after wildcard expansion.
|
||
</p>
|
||
<p>
|
||
In this example, this means that, in addition to
|
||
<span class="emphasis"><em>snd-fm801</em></span>, the
|
||
obsolete (and unwanted) <span class=
|
||
"emphasis"><em>forte</em></span> driver will be loaded if
|
||
it is available. See below for ways in which the loading of
|
||
unwanted drivers can be prevented.
|
||
</p>
|
||
<p>
|
||
The kernel itself is also able to load modules for network
|
||
protocols, filesystems and NLS support on demand.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504922767968" name=
|
||
"idm46504922767968"></a>7.3.2.4. Handling
|
||
Hotpluggable/Dynamic Devices
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
When you plug in a device, such as a Universal Serial Bus
|
||
(USB) MP3 player, the kernel recognizes that the device is
|
||
now connected and generates a uevent. This uevent is then
|
||
handled by <span class=
|
||
"command"><strong>udevd</strong></span> as described above.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
7.3.3. Problems with Loading Modules and Creating Devices
|
||
</h3>
|
||
<p>
|
||
There are a few possible problems when it comes to
|
||
automatically creating device nodes.
|
||
</p>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504922764496" name=
|
||
"idm46504922764496"></a>7.3.3.1. A kernel module
|
||
is not loaded automatically
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Udev will only load a module if it has a bus-specific alias
|
||
and the bus driver properly exports the necessary aliases
|
||
to <code class="systemitem">sysfs</code>. In other cases,
|
||
one should arrange module loading by other means. With
|
||
Linux-5.5.3, Udev is known to load properly-written drivers
|
||
for INPUT, IDE, PCI, USB, SCSI, SERIO, and FireWire
|
||
devices.
|
||
</p>
|
||
<p>
|
||
To determine if the device driver you require has the
|
||
necessary support for Udev, run <span class=
|
||
"command"><strong>modinfo</strong></span> with the module
|
||
name as the argument. Now try locating the device directory
|
||
under <code class="filename">/sys/bus</code> and check
|
||
whether there is a <code class="filename">modalias</code>
|
||
file there.
|
||
</p>
|
||
<p>
|
||
If the <code class="filename">modalias</code> file exists
|
||
in <code class="systemitem">sysfs</code>, the driver
|
||
supports the device and can talk to it directly, but
|
||
doesn't have the alias, it is a bug in the driver. Load the
|
||
driver without the help from Udev and expect the issue to
|
||
be fixed later.
|
||
</p>
|
||
<p>
|
||
If there is no <code class="filename">modalias</code> file
|
||
in the relevant directory under <code class=
|
||
"filename">/sys/bus</code>, this means that the kernel
|
||
developers have not yet added modalias support to this bus
|
||
type. With Linux-5.5.3, this is the case with ISA busses.
|
||
Expect this issue to be fixed in later kernel versions.
|
||
</p>
|
||
<p>
|
||
Udev is not intended to load <span class=
|
||
"quote">“<span class=
|
||
"quote">wrapper</span>”</span> drivers such as
|
||
<span class="emphasis"><em>snd-pcm-oss</em></span> and
|
||
non-hardware drivers such as <span class=
|
||
"emphasis"><em>loop</em></span> at all.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504922752416" name=
|
||
"idm46504922752416"></a>7.3.3.2. A kernel module
|
||
is not loaded automatically, and Udev is not intended
|
||
to load it
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
If the <span class="quote">“<span class=
|
||
"quote">wrapper</span>”</span> module only enhances
|
||
the functionality provided by some other module (e.g.,
|
||
<span class="emphasis"><em>snd-pcm-oss</em></span> enhances
|
||
the functionality of <span class=
|
||
"emphasis"><em>snd-pcm</em></span> by making the sound
|
||
cards available to OSS applications), configure
|
||
<span class="command"><strong>modprobe</strong></span> to
|
||
load the wrapper after Udev loads the wrapped module. To do
|
||
this, add a <span class="quote">“<span class=
|
||
"quote">softdep</span>”</span> line to the
|
||
corresponding <code class=
|
||
"filename">/etc/modprobe.d/<em class=
|
||
"replaceable"><code><filename></code></em>.conf</code>
|
||
file. For example:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="literal">softdep snd-pcm post: snd-pcm-oss</code>
|
||
</pre>
|
||
<p>
|
||
Note that the <span class="quote">“<span class=
|
||
"quote">softdep</span>”</span> command also allows
|
||
<code class="literal">pre:</code> dependencies, or a
|
||
mixture of both <code class="literal">pre:</code> and
|
||
<code class="literal">post:</code>. See the <code class=
|
||
"filename">modprobe.d(5)</code> manual page for more
|
||
information on <span class="quote">“<span class=
|
||
"quote">softdep</span>”</span> syntax and
|
||
capabilities.
|
||
</p>
|
||
<p>
|
||
If the module in question is not a wrapper and is useful by
|
||
itself, configure the <span class=
|
||
"command"><strong>modules</strong></span> bootscript to
|
||
load this module on system boot. To do this, add the module
|
||
name to the <code class=
|
||
"filename">/etc/sysconfig/modules</code> file on a separate
|
||
line. This works for wrapper modules too, but is suboptimal
|
||
in that case.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504922739424" name=
|
||
"idm46504922739424"></a>7.3.3.3. Udev loads some
|
||
unwanted module
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Either don't build the module, or blacklist it in a
|
||
<code class=
|
||
"filename">/etc/modprobe.d/blacklist.conf</code> file as
|
||
done with the <span class="emphasis"><em>forte</em></span>
|
||
module in the example below:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="literal">blacklist forte</code>
|
||
</pre>
|
||
<p>
|
||
Blacklisted modules can still be loaded manually with the
|
||
explicit <span class=
|
||
"command"><strong>modprobe</strong></span> command.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504922734368" name=
|
||
"idm46504922734368"></a>7.3.3.4. Udev creates a
|
||
device incorrectly, or makes a wrong symlink
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
This usually happens if a rule unexpectedly matches a
|
||
device. For example, a poorly-written rule can match both a
|
||
SCSI disk (as desired) and the corresponding SCSI generic
|
||
device (incorrectly) by vendor. Find the offending rule and
|
||
make it more specific, with the help of the <span class=
|
||
"command"><strong>udevadm info</strong></span> command.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504922732096" name=
|
||
"idm46504922732096"></a>7.3.3.5. Udev rule works
|
||
unreliably
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
This may be another manifestation of the previous problem.
|
||
If not, and your rule uses <code class=
|
||
"systemitem">sysfs</code> attributes, it may be a kernel
|
||
timing issue, to be fixed in later kernels. For now, you
|
||
can work around it by creating a rule that waits for the
|
||
used <code class="systemitem">sysfs</code> attribute and
|
||
appending it to the <code class=
|
||
"filename">/etc/udev/rules.d/10-wait_for_sysfs.rules</code>
|
||
file (create this file if it does not exist). Please notify
|
||
the LFS Development list if you do so and it helps.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504922727744" name=
|
||
"idm46504922727744"></a>7.3.3.6. Udev does not
|
||
create a device
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Further text assumes that the driver is built statically
|
||
into the kernel or already loaded as a module, and that you
|
||
have already checked that Udev doesn't create a misnamed
|
||
device.
|
||
</p>
|
||
<p>
|
||
Udev has no information needed to create a device node if a
|
||
kernel driver does not export its data to <code class=
|
||
"systemitem">sysfs</code>. This is most common with third
|
||
party drivers from outside the kernel tree. Create a static
|
||
device node in <code class=
|
||
"filename">/lib/udev/devices</code> with the appropriate
|
||
major/minor numbers (see the file <code class=
|
||
"filename">devices.txt</code> inside the kernel
|
||
documentation or the documentation provided by the third
|
||
party driver vendor). The static device node will be copied
|
||
to <code class="filename">/dev</code> by <span class=
|
||
"command"><strong>udev</strong></span>.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504922721424" name=
|
||
"idm46504922721424"></a>7.3.3.7. Device naming
|
||
order changes randomly after rebooting
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
This is due to the fact that Udev, by design, handles
|
||
uevents and loads modules in parallel, and thus in an
|
||
unpredictable order. This will never be <span class=
|
||
"quote">“<span class=
|
||
"quote">fixed</span>”</span>. You should not rely
|
||
upon the kernel device names being stable. Instead, create
|
||
your own rules that make symlinks with stable names based
|
||
on some stable attributes of the device, such as a serial
|
||
number or the output of various *_id utilities installed by
|
||
Udev. See <a class="xref" href="#ch-config-symlinks" title=
|
||
"7.4. Managing Devices">Section 7.4,
|
||
“Managing Devices”</a> and <a class="xref"
|
||
href="#ch-config-network" title=
|
||
"7.5. General Network Configuration">Section 7.5,
|
||
“General Network Configuration”</a> for
|
||
examples.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
7.3.4. Useful Reading
|
||
</h3>
|
||
<p>
|
||
Additional helpful documentation is available at the
|
||
following sites:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
A Userspace Implementation of <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>
|
||
The <code class="systemitem">sysfs</code> Filesystem
|
||
<a class="ulink" href=
|
||
"http://www.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf">
|
||
http://www.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf</a>
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-config-symlinks" name=
|
||
"ch-config-symlinks"></a>7.4. Managing Devices
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
7.4.1. Network Devices
|
||
</h3>
|
||
<p>
|
||
Udev, by default, names network devices according to
|
||
Firmware/BIOS data or physical characteristics like the bus,
|
||
slot, or MAC address. The purpose of this naming convention
|
||
is to ensure that network devices are named consistently and
|
||
not based on the time the network card was discovered. For
|
||
example, on a computer having two network cards made by Intel
|
||
and Realtek, the network card manufactured by Intel may
|
||
become eth0 and the Realtek card becomes eth1. In some cases,
|
||
after a reboot the cards get renumbered the other way around.
|
||
</p>
|
||
<p>
|
||
In the new naming scheme, typical network device names would
|
||
then be something like enp5s0 or wlp3s0. If this naming
|
||
convention is not desired, the traditional naming scheme or a
|
||
custom scheme can be implemented.
|
||
</p>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504922706752" name=
|
||
"idm46504922706752"></a>7.4.1.1. Disabling
|
||
Persistent Naming on the Kernel Command Line
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The traditional naming scheme using eth0, eth1, etc can be
|
||
restored by adding <strong class=
|
||
"userinput"><code>net.ifnames=0</code></strong> on the
|
||
kernel command line. This is most appropriate for those
|
||
systems that have only one ethernet device of the same
|
||
type. Laptops often have multiple ethernet connections that
|
||
are named eth0 and wlan0 and are also candidates for this
|
||
method. The command line is passed in the GRUB
|
||
configuration file. See <a class="xref" href="#grub-cfg"
|
||
title=
|
||
"8.4.4. Creating the GRUB Configuration File">Section 8.4.4,
|
||
“Creating the GRUB Configuration File”</a>.
|
||
</p>
|
||
</div>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="idm46504922703488" name=
|
||
"idm46504922703488"></a>7.4.1.2. Creating Custom
|
||
Udev Rules
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The naming scheme can be customized by creating custom Udev
|
||
rules. A script has been included that generates the
|
||
initial rules. Generate these rules by running:
|
||
</p>
|
||
<pre class="install">
|
||
<kbd class="command">bash /lib/udev/init-net-rules.sh</kbd>
|
||
</pre>
|
||
<p>
|
||
Now, inspect the <code class=
|
||
"filename">/etc/udev/rules.d/70-persistent-net.rules</code>
|
||
file, to find out which name was assigned to which network
|
||
device:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat /etc/udev/rules.d/70-persistent-net.rules</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
In some cases such as when MAC addresses have been
|
||
assigned to a network card manually or in a virtual
|
||
environment such as Qemu or Xen, the network rules file
|
||
may not have been generated because addresses are not
|
||
consistently assigned. In these cases, this method cannot
|
||
be used.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
The file begins with a comment block followed by two lines
|
||
for each NIC. The first line for each NIC is a commented
|
||
description showing its hardware IDs (e.g. its PCI vendor
|
||
and device IDs, if it's a PCI card), along with its driver
|
||
in parentheses, if the driver can be found. Neither the
|
||
hardware ID nor the driver is used to determine which name
|
||
to give an interface; this information is only for
|
||
reference. The second line is the Udev rule that matches
|
||
this NIC and actually assigns it a name.
|
||
</p>
|
||
<p>
|
||
All Udev rules are made up of several keys, separated by
|
||
commas and optional whitespace. This rule's keys and an
|
||
explanation of each of them are as follows:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
<code class="literal">SUBSYSTEM=="net"</code> - This
|
||
tells Udev to ignore devices that are not network
|
||
cards.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<code class="literal">ACTION=="add"</code> - This
|
||
tells Udev to ignore this rule for a uevent that
|
||
isn't an add ("remove" and "change" uevents also
|
||
happen, but don't need to rename network interfaces).
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<code class="literal">DRIVERS=="?*"</code> - This
|
||
exists so that Udev will ignore VLAN or bridge
|
||
sub-interfaces (because these sub-interfaces do not
|
||
have drivers). These sub-interfaces are skipped
|
||
because the name that would be assigned would collide
|
||
with their parent devices.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<code class="literal">ATTR{address}</code> - The
|
||
value of this key is the NIC's MAC address.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<code class="literal">ATTR{type}=="1"</code> - This
|
||
ensures the rule only matches the primary interface
|
||
in the case of certain wireless drivers, which create
|
||
multiple virtual interfaces. The secondary interfaces
|
||
are skipped for the same reason that VLAN and bridge
|
||
sub-interfaces are skipped: there would be a name
|
||
collision otherwise.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<code class="literal">NAME</code> - The value of this
|
||
key is the name that Udev will assign to this
|
||
interface.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<p>
|
||
The value of <code class="literal">NAME</code> is the
|
||
important part. Make sure you know which name has been
|
||
assigned to each of your network cards before proceeding,
|
||
and be sure to use that <code class="literal">NAME</code>
|
||
value when creating your configuration files below.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
7.4.2. CD-ROM symlinks
|
||
</h3>
|
||
<p>
|
||
Some software that you may want to install later (e.g.,
|
||
various media players) expect the <code class=
|
||
"filename">/dev/cdrom</code> and <code class=
|
||
"filename">/dev/dvd</code> symlinks to exist, and to point to
|
||
a CD-ROM or DVD-ROM device. Also, it may be convenient to put
|
||
references to those symlinks into <code class=
|
||
"filename">/etc/fstab</code>. Udev comes with a script that
|
||
will generate rules files to create these symlinks for you,
|
||
depending on the capabilities of each device, but you need to
|
||
decide which of two modes of operation you wish to have the
|
||
script use.
|
||
</p>
|
||
<p>
|
||
First, the script can operate in <span class=
|
||
"quote">“<span class=
|
||
"quote">by-path</span>”</span> mode (used by default
|
||
for USB and FireWire devices), where the rules it creates
|
||
depend on the physical path to the CD or DVD device. Second,
|
||
it can operate in <span class="quote">“<span class=
|
||
"quote">by-id</span>”</span> mode (default for IDE and
|
||
SCSI devices), where the rules it creates depend on
|
||
identification strings stored in the CD or DVD device itself.
|
||
The path is determined by Udev's <span class=
|
||
"command"><strong>path_id</strong></span> script, and the
|
||
identification strings are read from the hardware by its
|
||
<span class="command"><strong>ata_id</strong></span> or
|
||
<span class="command"><strong>scsi_id</strong></span>
|
||
programs, depending on which type of device you have.
|
||
</p>
|
||
<p>
|
||
There are advantages to each approach; the correct approach
|
||
to use will depend on what kinds of device changes may
|
||
happen. If you expect the physical path to the device (that
|
||
is, the ports and/or slots that it plugs into) to change, for
|
||
example because you plan on moving the drive to a different
|
||
IDE port or a different USB connector, then you should use
|
||
the <span class="quote">“<span class=
|
||
"quote">by-id</span>”</span> mode. On the other hand,
|
||
if you expect the device's identification to change, for
|
||
example because it may die, and you would replace it with a
|
||
different device with the same capabilities and which is
|
||
plugged into the same connectors, then you should use the
|
||
<span class="quote">“<span class=
|
||
"quote">by-path</span>”</span> mode.
|
||
</p>
|
||
<p>
|
||
If either type of change is possible with your drive, then
|
||
choose a mode based on the type of change you expect to
|
||
happen more often.
|
||
</p>
|
||
<div class="admon important">
|
||
<h3>
|
||
Important
|
||
</h3>
|
||
<p>
|
||
External devices (for example, a USB-connected CD drive)
|
||
should not use by-path persistence, because each time the
|
||
device is plugged into a new external port, its physical
|
||
path will change. All externally-connected devices will
|
||
have this problem if you write Udev rules to recognize them
|
||
by their physical path; the problem is not limited to CD
|
||
and DVD drives.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
If you wish to see the values that the Udev scripts will use,
|
||
then for the appropriate CD-ROM device, find the
|
||
corresponding directory under <code class=
|
||
"filename">/sys</code> (e.g., this can be <code class=
|
||
"filename">/sys/block/hdd</code>) and run a command similar
|
||
to the following:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">udevadm test /sys/block/hdd</kbd>
|
||
</pre>
|
||
<p>
|
||
Look at the lines containing the output of various *_id
|
||
programs. The <span class="quote">“<span class=
|
||
"quote">by-id</span>”</span> mode will use the
|
||
ID_SERIAL value if it exists and is not empty, otherwise it
|
||
will use a combination of ID_MODEL and ID_REVISION. The
|
||
<span class="quote">“<span class=
|
||
"quote">by-path</span>”</span> mode will use the
|
||
ID_PATH value.
|
||
</p>
|
||
<p>
|
||
If the default mode is not suitable for your situation, then
|
||
the following modification can be made to the <code class=
|
||
"filename">/etc/udev/rules.d/83-cdrom-symlinks.rules</code>
|
||
file, as follows (where <em class=
|
||
"replaceable"><code>mode</code></em> is one of <span class=
|
||
"quote">“<span class="quote">by-id</span>”</span>
|
||
or <span class="quote">“<span class=
|
||
"quote">by-path</span>”</span>):
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">sed -i -e 's/"write_cd_rules"/"write_cd_rules <em class=
|
||
"replaceable"><code>mode</code></em>"/' \
|
||
/etc/udev/rules.d/83-cdrom-symlinks.rules</kbd>
|
||
</pre>
|
||
<p>
|
||
Note that it is not necessary to create the rules files or
|
||
symlinks at this time, because you have bind-mounted the
|
||
host's <code class="filename">/dev</code> directory into the
|
||
LFS system, and we assume the symlinks exist on the host. The
|
||
rules and symlinks will be created the first time you boot
|
||
your LFS system.
|
||
</p>
|
||
<p>
|
||
However, if you have multiple CD-ROM devices, then the
|
||
symlinks generated at that time may point to different
|
||
devices than they point to on your host, because devices are
|
||
not discovered in a predictable order. The assignments
|
||
created when you first boot the LFS system will be stable, so
|
||
this is only an issue if you need the symlinks on both
|
||
systems to point to the same device. If you need that, then
|
||
inspect (and possibly edit) the generated <code class=
|
||
"filename">/etc/udev/rules.d/70-persistent-cd.rules</code>
|
||
file after booting, to make sure the assigned symlinks match
|
||
what you need.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
7.4.3. Dealing with duplicate devices
|
||
</h3>
|
||
<p>
|
||
As explained in <a class="xref" href="#ch-config-udev" title=
|
||
"7.3. Overview of Device and Module Handling">Section 7.3,
|
||
“Overview of Device and Module Handling”</a>, the
|
||
order in which devices with the same function appear in
|
||
<code class="filename">/dev</code> is essentially random.
|
||
E.g., if you have a USB web camera and a TV tuner, sometimes
|
||
<code class="filename">/dev/video0</code> refers to the
|
||
camera and <code class="filename">/dev/video1</code> refers
|
||
to the tuner, and sometimes after a reboot the order changes
|
||
to the opposite one. For all classes of hardware except sound
|
||
cards and network cards, this is fixable by creating Udev
|
||
rules for custom persistent symlinks. The case of network
|
||
cards is covered separately in <a class="xref" href=
|
||
"#ch-config-network" title=
|
||
"7.5. General Network Configuration">Section 7.5,
|
||
“General Network Configuration”</a>, and sound
|
||
card configuration can be found in <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/devices.html">
|
||
BLFS</a>.
|
||
</p>
|
||
<p>
|
||
For each of your devices that is likely to have this problem
|
||
(even if the problem doesn't exist in your current Linux
|
||
distribution), find the corresponding directory under
|
||
<code class="filename">/sys/class</code> or <code class=
|
||
"filename">/sys/block</code>. For video devices, this may be
|
||
<code class="filename">/sys/class/video4linux/video<em class=
|
||
"replaceable"><code>X</code></em></code>. Figure out the
|
||
attributes that identify the device uniquely (usually, vendor
|
||
and product IDs and/or serial numbers work):
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">udevadm info -a -p /sys/class/video4linux/video0</kbd>
|
||
</pre>
|
||
<p>
|
||
Then write rules that create the symlinks, e.g.:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">cat > /etc/udev/rules.d/83-duplicate_devs.rules << "EOF"
|
||
<code class="literal">
|
||
# Persistent symlinks for webcam and tuner
|
||
KERNEL=="video*", ATTRS{idProduct}=="1910", ATTRS{idVendor}=="0d81", \
|
||
SYMLINK+="webcam"
|
||
KERNEL=="video*", ATTRS{device}=="0x036f", ATTRS{vendor}=="0x109e", \
|
||
SYMLINK+="tvtuner"
|
||
</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
The result is that <code class="filename">/dev/video0</code>
|
||
and <code class="filename">/dev/video1</code> devices still
|
||
refer randomly to the tuner and the web camera (and thus
|
||
should never be used directly), but there are symlinks
|
||
<code class="filename">/dev/tvtuner</code> and <code class=
|
||
"filename">/dev/webcam</code> that always point to the
|
||
correct device.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-config-network" name=
|
||
"ch-config-network"></a>7.5. General Network
|
||
Configuration
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
7.5.1. Creating Network Interface Configuration Files
|
||
</h3>
|
||
<p>
|
||
Which interfaces are brought up and down by the network
|
||
script usually depends on the files in <code class=
|
||
"filename">/etc/sysconfig/</code>. This directory should
|
||
contain a file for each interface to be configured, such as
|
||
<code class="filename">ifconfig.xyz</code>, where
|
||
<span class="quote">“<span class=
|
||
"quote">xyz</span>”</span> should describe the network
|
||
card. The interface name (e.g. eth0) is usually appropriate.
|
||
Inside this file are attributes to this interface, such as
|
||
its IP address(es), subnet masks, and so forth. It is
|
||
necessary that the stem of the filename be <span class=
|
||
"emphasis"><em>ifconfig</em></span>.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
If the procedure in the previous section was not used, Udev
|
||
will assign network card interface names based on system
|
||
physical characteristics such as enp2s1. If you are not
|
||
sure what your interface name is, you can always run
|
||
<span class="command"><strong>ip link</strong></span> or
|
||
<span class="command"><strong>ls
|
||
/sys/class/net</strong></span> after you have booted your
|
||
system.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
The following command creates a sample file for the
|
||
<span class="emphasis"><em>eth0</em></span> device with a
|
||
static IP address:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cd /etc/sysconfig/
|
||
cat > ifconfig.<em class=
|
||
"replaceable"><code>eth0</code></em> << "EOF"
|
||
<code class="literal">ONBOOT=<em class="replaceable"><code>yes</code></em>
|
||
IFACE=<em class="replaceable"><code>eth0</code></em>
|
||
SERVICE=<em class="replaceable"><code>ipv4-static</code></em>
|
||
IP=<em class="replaceable"><code>192.168.1.2</code></em>
|
||
GATEWAY=<em class="replaceable"><code>192.168.1.1</code></em>
|
||
PREFIX=<em class="replaceable"><code>24</code></em>
|
||
BROADCAST=<em class="replaceable"><code>192.168.1.255</code></em></code>
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
The values in italics must be changed in every file to match
|
||
the proper setup.
|
||
</p>
|
||
<p>
|
||
If the <code class="envar">ONBOOT</code> variable is set to
|
||
<span class="quote">“<span class=
|
||
"quote">yes</span>”</span> the System V network script
|
||
will bring up the Network Interface Card (NIC) during booting
|
||
of the system. If set to anything but <span class=
|
||
"quote">“<span class="quote">yes</span>”</span>
|
||
the NIC will be ignored by the network script and not be
|
||
automatically brought up. The interface can be manually
|
||
started or stopped with the <span class=
|
||
"command"><strong>ifup</strong></span> and <span class=
|
||
"command"><strong>ifdown</strong></span> commands.
|
||
</p>
|
||
<p>
|
||
The <code class="envar">IFACE</code> variable defines the
|
||
interface name, for example, eth0. It is required for all
|
||
network device configuration files. The filename extension
|
||
must match this value.
|
||
</p>
|
||
<p>
|
||
The <code class="envar">SERVICE</code> variable defines the
|
||
method used for obtaining the IP address. The LFS-Bootscripts
|
||
package has a modular IP assignment format, and creating
|
||
additional files in the <code class=
|
||
"filename">/lib/services/</code> directory allows other IP
|
||
assignment methods. This is commonly used for Dynamic Host
|
||
Configuration Protocol (DHCP), which is addressed in the BLFS
|
||
book.
|
||
</p>
|
||
<p>
|
||
The <code class="envar">GATEWAY</code> variable should
|
||
contain the default gateway IP address, if one is present. If
|
||
not, then comment out the variable entirely.
|
||
</p>
|
||
<p>
|
||
The <code class="envar">PREFIX</code> variable contains the
|
||
number of bits used in the subnet. Each octet in an IP
|
||
address is 8 bits. If the subnet's netmask is 255.255.255.0,
|
||
then it is using the first three octets (24 bits) to specify
|
||
the network number. If the netmask is 255.255.255.240, it
|
||
would be using the first 28 bits. Prefixes longer than 24
|
||
bits are commonly used by DSL and cable-based Internet
|
||
Service Providers (ISPs). In this example (PREFIX=24), the
|
||
netmask is 255.255.255.0. Adjust the <code class=
|
||
"envar">PREFIX</code> variable according to your specific
|
||
subnet. If omitted, the PREFIX defaults to 24.
|
||
</p>
|
||
<p>
|
||
For more information see the <span class=
|
||
"command"><strong>ifup</strong></span> man page.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="resolv.conf" name="resolv.conf"></a>7.5.2. Creating
|
||
the /etc/resolv.conf File
|
||
</h3>
|
||
<p>
|
||
The system will need some means of obtaining Domain Name
|
||
Service (DNS) name resolution to resolve Internet domain
|
||
names to IP addresses, and vice versa. This is best achieved
|
||
by placing the IP address of the DNS server, available from
|
||
the ISP or network administrator, into <code class=
|
||
"filename">/etc/resolv.conf</code>. Create the file by
|
||
running the following:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/resolv.conf << "EOF"
|
||
<code class="literal"># Begin /etc/resolv.conf
|
||
|
||
domain <em class="replaceable"><code><Your Domain Name></code></em>
|
||
nameserver <em class=
|
||
"replaceable"><code><IP address of your primary nameserver></code></em>
|
||
nameserver <em class=
|
||
"replaceable"><code><IP address of your secondary nameserver></code></em>
|
||
|
||
# End /etc/resolv.conf</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
The <code class="varname">domain</code> statement can be
|
||
omitted or replaced with a <code class=
|
||
"varname">search</code> statement. See the man page for
|
||
resolv.conf for more details.
|
||
</p>
|
||
<p>
|
||
Replace <em class="replaceable"><code><IP address of the
|
||
nameserver></code></em> with the IP address of the DNS
|
||
most appropriate for the setup. There will often be more than
|
||
one entry (requirements demand secondary servers for fallback
|
||
capability). If you only need or want one DNS server, remove
|
||
the second <span class="emphasis"><em>nameserver</em></span>
|
||
line from the file. The IP address may also be a router on
|
||
the local network.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The Google Public IPv4 DNS addresses are 8.8.8.8 and
|
||
8.8.4.4.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="ch-config-hostname" name=
|
||
"ch-config-hostname"></a>7.5.3. Configuring the system
|
||
hostname
|
||
</h3>
|
||
<p>
|
||
During the boot process, the file <code class=
|
||
"filename">/etc/hostname</code> is used for establishing the
|
||
system's hostname.
|
||
</p>
|
||
<p>
|
||
Create the <code class="filename">/etc/hostname</code> file
|
||
and enter a hostname by running:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">echo "<em class=
|
||
"replaceable"><code><lfs></code></em>" > /etc/hostname</kbd>
|
||
</pre>
|
||
<p>
|
||
<em class="replaceable"><code><lfs></code></em> needs
|
||
to be replaced with the name given to the computer. Do not
|
||
enter the Fully Qualified Domain Name (FQDN) here. That
|
||
information is put in the <code class=
|
||
"filename">/etc/hosts</code> file.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="ch-config-hosts" name="ch-config-hosts"></a>7.5.4.
|
||
Customizing the /etc/hosts File
|
||
</h3>
|
||
<p>
|
||
Decide on the IP address, fully-qualified domain name (FQDN),
|
||
and possible aliases for use in the <code class=
|
||
"filename">/etc/hosts</code> file. The syntax is:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="literal">IP_address myhost.example.org aliases</code>
|
||
</pre>
|
||
<p>
|
||
Unless the computer is to be visible to the Internet (i.e.,
|
||
there is a registered domain and a valid block of assigned IP
|
||
addresses—most users do not have this), make sure that
|
||
the IP address is in the private network IP address range.
|
||
Valid ranges are:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="literal">Private Network Address Range Normal Prefix
|
||
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 can be any number in the range 16-31. y can be any number
|
||
in the range 0-255.
|
||
</p>
|
||
<p>
|
||
A valid private IP address could be 192.168.1.1. A valid FQDN
|
||
for this IP could be lfs.example.org.
|
||
</p>
|
||
<p>
|
||
Even if not using a network card, a valid FQDN is still
|
||
required. This is necessary for certain programs to operate
|
||
correctly.
|
||
</p>
|
||
<p>
|
||
Create the <code class="filename">/etc/hosts</code> file by
|
||
running:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/hosts << "EOF"
|
||
<code class="literal"># Begin /etc/hosts
|
||
|
||
127.0.0.1 localhost
|
||
127.0.1.1 <em class="replaceable"><code><FQDN></code></em> <em class=
|
||
"replaceable"><code><HOSTNAME></code></em>
|
||
<em class="replaceable"><code><192.168.1.1></code></em> <em class=
|
||
"replaceable"><code><FQDN></code></em> <em class=
|
||
"replaceable"><code><HOSTNAME></code></em> <em class=
|
||
"replaceable"><code>[alias1] [alias2 ...]</code></em>
|
||
::1 localhost ip6-localhost ip6-loopback
|
||
ff02::1 ip6-allnodes
|
||
ff02::2 ip6-allrouters
|
||
|
||
# End /etc/hosts</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
The <em class=
|
||
"replaceable"><code><192.168.1.1></code></em>,
|
||
<em class="replaceable"><code><FQDN></code></em>, and
|
||
<em class="replaceable"><code><HOSTNAME></code></em>
|
||
values need to be changed for specific uses or requirements
|
||
(if assigned an IP address by a network/system administrator
|
||
and the machine will be connected to an existing network).
|
||
The optional alias name(s) can be omitted.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-config-usage" name=
|
||
"ch-config-usage"></a>7.6. System V Bootscript Usage
|
||
and Configuration
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
7.6.1. How Do the System V Bootscripts Work?
|
||
</h3>
|
||
<p>
|
||
Linux uses a special booting facility named SysVinit that is
|
||
based on a concept of <span class=
|
||
"emphasis"><em>run-levels</em></span>. It can be quite
|
||
different from one system to another, so it cannot be assumed
|
||
that because things worked in one particular Linux
|
||
distribution, they should work the same in LFS too. LFS has
|
||
its own way of doing things, but it respects generally
|
||
accepted standards.
|
||
</p>
|
||
<p>
|
||
SysVinit (which will be referred to as <span class=
|
||
"quote">“<span class="quote">init</span>”</span>
|
||
from now on) works using a run-levels scheme. There are seven
|
||
(numbered 0 to 6) run-levels (actually, there are more
|
||
run-levels, but they are for special cases and are generally
|
||
not used. See <code class="filename">init(8)</code> for more
|
||
details), and each one of those corresponds to the actions
|
||
the computer is supposed to perform when it starts up. The
|
||
default run-level is 3. Here are the descriptions of the
|
||
different run-levels as they are implemented:
|
||
</p>
|
||
<div class="literallayout">
|
||
<p>
|
||
0: halt the computer<br />
|
||
1: single-user mode<br />
|
||
2: multi-user mode without networking<br />
|
||
|
||
3: multi-user mode with networking<br />
|
||
|
||
4: reserved for customization, otherwise does the same as 3<br />
|
||
|
||
5: same as 4, it is usually used for GUI login (like X's <span class="command"><strong>xdm</strong></span> or KDE's <span class="command"><strong>kdm</strong></span>)<br />
|
||
|
||
6: reboot the computer
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="configuration" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="conf-sysvinit" name="conf-sysvinit"></a>7.6.2.
|
||
Configuring Sysvinit
|
||
</h3>
|
||
<p>
|
||
During the kernel initialization, the first program that is
|
||
run is either specified on the command line or, by default
|
||
<span class="command"><strong>init</strong></span>. This
|
||
program reads the initialization file <code class=
|
||
"filename">/etc/inittab</code>. Create this file with:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/inittab << "EOF"
|
||
<code class="literal"># Begin /etc/inittab
|
||
|
||
id:3:initdefault:
|
||
|
||
si::sysinit:/etc/rc.d/init.d/rc S
|
||
|
||
l0:0:wait:/etc/rc.d/init.d/rc 0
|
||
l1:S1:wait:/etc/rc.d/init.d/rc 1
|
||
l2:2:wait:/etc/rc.d/init.d/rc 2
|
||
l3:3:wait:/etc/rc.d/init.d/rc 3
|
||
l4:4:wait:/etc/rc.d/init.d/rc 4
|
||
l5:5:wait:/etc/rc.d/init.d/rc 5
|
||
l6:6:wait:/etc/rc.d/init.d/rc 6
|
||
|
||
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
|
||
|
||
su:S016:once:/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>
|
||
An explanation of this initialization file is in the man page
|
||
for <span class="emphasis"><em>inittab</em></span>. For LFS,
|
||
the key command that is run is <span class=
|
||
"command"><strong>rc</strong></span>. The initialization file
|
||
above will instruct <span class=
|
||
"command"><strong>rc</strong></span> to run all the scripts
|
||
starting with an S in the <code class=
|
||
"filename">/etc/rc.d/rcS.d</code> directory followed by all
|
||
the scripts starting with an S in the <code class=
|
||
"filename">/etc/rc.d/rc?.d</code> directory where the
|
||
question mark is specified by the initdefault value.
|
||
</p>
|
||
<p>
|
||
As a convenience, the <span class=
|
||
"command"><strong>rc</strong></span> script reads a library
|
||
of functions in <code class=
|
||
"filename">/lib/lsb/init-functions</code>. This library also
|
||
reads an optional configuration file, <code class=
|
||
"filename">/etc/sysconfig/rc.site</code>. Any of the system
|
||
configuration file parameters described in subsequent
|
||
sections can be alternatively placed in this file allowing
|
||
consolidation of all system parameters in this one file.
|
||
</p>
|
||
<p>
|
||
As a debugging convenience, the functions script also logs
|
||
all output to <code class="filename">/run/var/bootlog</code>.
|
||
Since the <code class="filename">/run</code> directory is a
|
||
tmpfs, this file is not persistent across boots, however it
|
||
is appended to the more permanent file <code class=
|
||
"filename">/var/log/boot.log</code> at the end of the boot
|
||
process.
|
||
</p>
|
||
<div class="sect3">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title">
|
||
<a id="init-levels" name=
|
||
"init-levels"></a>7.6.2.1. Changing Run Levels
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Changing run-levels is done with <span class=
|
||
"command"><strong>init <em class=
|
||
"replaceable"><code><runlevel></code></em></strong></span>,
|
||
where <em class=
|
||
"replaceable"><code><runlevel></code></em> is the
|
||
target run-level. For example, to reboot the computer, a
|
||
user could issue the <span class="command"><strong>init
|
||
6</strong></span> command, which is an alias for the
|
||
<span class="command"><strong>reboot</strong></span>
|
||
command. Likewise, <span class="command"><strong>init
|
||
0</strong></span> is an alias for the <span class=
|
||
"command"><strong>halt</strong></span> command.
|
||
</p>
|
||
<p>
|
||
There are a number of directories under <code class=
|
||
"filename">/etc/rc.d</code> that look like <code class=
|
||
"filename">rc?.d</code> (where ? is the number of the
|
||
run-level) and <code class="filename">rcsysinit.d</code>,
|
||
all containing a number of symbolic links. Some begin with
|
||
a <span class="emphasis"><em>K</em></span>, the others
|
||
begin with an <span class="emphasis"><em>S</em></span>, and
|
||
all of them have two numbers following the initial letter.
|
||
The K means to stop (kill) a service and the S means to
|
||
start a service. The numbers determine the order in which
|
||
the scripts are run, from 00 to 99—the lower the
|
||
number the earlier it gets executed. When <span class=
|
||
"command"><strong>init</strong></span> switches to another
|
||
run-level, the appropriate services are either started or
|
||
stopped, depending on the runlevel chosen.
|
||
</p>
|
||
<p>
|
||
The real scripts are in <code class=
|
||
"filename">/etc/rc.d/init.d</code>. They do the actual
|
||
work, and the symlinks all point to them. K links and S
|
||
links point to the same script in <code class=
|
||
"filename">/etc/rc.d/init.d</code>. This is because the
|
||
scripts can be called with different parameters like
|
||
<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>, and <em class=
|
||
"parameter"><code>status</code></em>. When a K link is
|
||
encountered, the appropriate script is run with the
|
||
<em class="parameter"><code>stop</code></em> argument. When
|
||
an S link is encountered, the appropriate script is run
|
||
with the <em class="parameter"><code>start</code></em>
|
||
argument.
|
||
</p>
|
||
<p>
|
||
There is one exception to this explanation. Links that
|
||
start with an <span class="emphasis"><em>S</em></span> in
|
||
the <code class="filename">rc0.d</code> and <code class=
|
||
"filename">rc6.d</code> directories will not cause anything
|
||
to be started. They will be called with the parameter
|
||
<em class="parameter"><code>stop</code></em> to stop
|
||
something. The logic behind this is that when a user is
|
||
going to reboot or halt the system, nothing needs to be
|
||
started. The system only needs to be stopped.
|
||
</p>
|
||
<p>
|
||
These are descriptions of what the arguments make the
|
||
scripts do:
|
||
</p>
|
||
<div class="variablelist">
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>start</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
The service is started.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>stop</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
The service is stopped.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>restart</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
The service is stopped and then started again.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>reload</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
The configuration of the service is updated. This is
|
||
used after the configuration file of a service was
|
||
modified, when the service does not need to be
|
||
restarted.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>status</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Tells if the service is running and with which PIDs.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Feel free to modify the way the boot process works (after
|
||
all, it is your own LFS system). The files given here are
|
||
an example of how it can be done.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
7.6.3. Udev Bootscripts
|
||
</h3>
|
||
<p>
|
||
The <code class="filename">/etc/rc.d/init.d/udev</code>
|
||
initscript starts <span class=
|
||
"command"><strong>udevd</strong></span>, triggers any
|
||
"coldplug" devices that have already been created by the
|
||
kernel and waits for any rules to complete. The script also
|
||
unsets the uevent handler from the default of <code class=
|
||
"filename">/sbin/hotplug</code> . This is done because the
|
||
kernel no longer needs to call out to an external binary.
|
||
Instead <span class="command"><strong>udevd</strong></span>
|
||
will listen on a netlink socket for uevents that the kernel
|
||
raises.
|
||
</p>
|
||
<p>
|
||
The <span class=
|
||
"command"><strong>/etc/rc.d/init.d/udev_retry</strong></span>
|
||
initscript takes care of re-triggering events for subsystems
|
||
whose rules may rely on filesystems that are not mounted
|
||
until the <span class=
|
||
"command"><strong>mountfs</strong></span> script is run (in
|
||
particular, <code class="filename">/usr</code> and
|
||
<code class="filename">/var</code> may cause this). This
|
||
script runs after the <span class=
|
||
"command"><strong>mountfs</strong></span> script, so those
|
||
rules (if re-triggered) should succeed the second time
|
||
around. It is configured from the <code class=
|
||
"filename">/etc/sysconfig/udev_retry</code> file; any words
|
||
in this file other than comments are considered subsystem
|
||
names to trigger at retry time. To find the subsystem of a
|
||
device, use <span class="command"><strong>udevadm info
|
||
--attribute-walk <device></strong></span> where
|
||
<device> is an absolute path in /dev or /sys such as
|
||
/dev/sr0 or /sys/class/rtc.
|
||
</p>
|
||
<p>
|
||
For information on kernel module loading and udev, see
|
||
<a class="xref" href="#module-loading" title=
|
||
"7.3.2.3. Module Loading">Section 7.3.2.3,
|
||
“Module Loading”</a>.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="ch-config-clock" name="ch-config-clock"></a>7.6.4.
|
||
Configuring the System Clock
|
||
</h3>
|
||
<p>
|
||
The <span class="command"><strong>setclock</strong></span>
|
||
script reads the time from the hardware clock, also known as
|
||
the BIOS or the Complementary Metal Oxide Semiconductor
|
||
(CMOS) clock. If the hardware clock is set to UTC, this
|
||
script will convert the hardware clock's time to the local
|
||
time using the <code class="filename">/etc/localtime</code>
|
||
file (which tells the <span class=
|
||
"command"><strong>hwclock</strong></span> program which
|
||
timezone the user is in). There is no way to detect whether
|
||
or not the hardware clock is set to UTC, so this needs to be
|
||
configured manually.
|
||
</p>
|
||
<p>
|
||
The <span class="command"><strong>setclock</strong></span> is
|
||
run via <span class="application">udev</span> when the kernel
|
||
detects the hardware capability upon boot. It can also be run
|
||
manually with the stop parameter to store the system time to
|
||
the CMOS clock.
|
||
</p>
|
||
<p>
|
||
If you cannot remember whether or not the hardware clock is
|
||
set to UTC, find out by running the <strong class=
|
||
"userinput"><code>hwclock --localtime --show</code></strong>
|
||
command. This will display what the current time is according
|
||
to the hardware clock. If this time matches whatever your
|
||
watch says, then the hardware clock is set to local time. If
|
||
the output from <span class=
|
||
"command"><strong>hwclock</strong></span> is not local time,
|
||
chances are it is set to UTC time. Verify this by adding or
|
||
subtracting the proper amount of hours for the timezone to
|
||
the time shown by <span class=
|
||
"command"><strong>hwclock</strong></span>. For example, if
|
||
you are currently in the MST timezone, which is also known as
|
||
GMT -0700, add seven hours to the local time.
|
||
</p>
|
||
<p>
|
||
Change the value of the <code class="envar">UTC</code>
|
||
variable below to a value of <em class=
|
||
"parameter"><code>0</code></em> (zero) if the hardware clock
|
||
is <span class="emphasis"><em>not</em></span> set to UTC
|
||
time.
|
||
</p>
|
||
<p>
|
||
Create a new file <code class=
|
||
"filename">/etc/sysconfig/clock</code> by running the
|
||
following:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/sysconfig/clock << "EOF"
|
||
<code class="literal"># Begin /etc/sysconfig/clock
|
||
|
||
UTC=1
|
||
|
||
# Set this to any options you might need to give to hwclock,
|
||
# such as machine hardware clock type for Alphas.
|
||
CLOCKPARAMS=
|
||
|
||
# End /etc/sysconfig/clock</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
A good hint explaining how to deal with time on LFS is
|
||
available at <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/hints/downloads/files/time.txt">
|
||
http://www.linuxfromscratch.org/hints/downloads/files/time.txt</a>.
|
||
It explains issues such as time zones, UTC, and the
|
||
<code class="envar">TZ</code> environment variable.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The CLOCKPARAMS and UTC paramaters may be alternatively set
|
||
in the <code class="filename">/etc/sysconfig/rc.site</code>
|
||
file.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="ch-config-console" name="ch-config-console"></a>7.6.5.
|
||
Configuring the Linux Console
|
||
</h3>
|
||
<p>
|
||
This section discusses how to configure the <span class=
|
||
"command"><strong>console</strong></span> bootscript that
|
||
sets up the keyboard map, console font and console kernel log
|
||
level. If non-ASCII characters (e.g., the copyright sign, the
|
||
British pound sign and Euro symbol) will not be used and the
|
||
keyboard is a U.S. one, much of this section can be skipped.
|
||
Without the configuration file, (or equivalent settings in
|
||
<code class="filename">rc.site</code>), the <span class=
|
||
"command"><strong>console</strong></span> bootscript will do
|
||
nothing.
|
||
</p>
|
||
<p>
|
||
The <span class="command"><strong>console</strong></span>
|
||
script reads the <code class=
|
||
"filename">/etc/sysconfig/console</code> file for
|
||
configuration information. Decide which keymap and screen
|
||
font will be used. Various language-specific HOWTOs can also
|
||
help with this, see <a class="ulink" href=
|
||
"http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html">http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html</a>.
|
||
If still in doubt, look in the <code class=
|
||
"filename">/usr/share/keymaps</code> and <code class=
|
||
"filename">/usr/share/consolefonts</code> directories for
|
||
valid keymaps and screen fonts. Read <code class=
|
||
"filename">loadkeys(1)</code> and <code class=
|
||
"filename">setfont(8)</code> manual pages to determine the
|
||
correct arguments for these programs.
|
||
</p>
|
||
<p>
|
||
The <code class="filename">/etc/sysconfig/console</code> file
|
||
should contain lines of the form: VARIABLE="value". The
|
||
following variables are recognized:
|
||
</p>
|
||
<div class="variablelist">
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term">LOGLEVEL</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This variable specifies the log level for kernel
|
||
messages sent to the console as set by <span class=
|
||
"command"><strong>dmesg</strong></span>. Valid levels
|
||
are from "1" (no messages) to "8". The default level is
|
||
"7".
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">KEYMAP</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This variable specifies the arguments for the
|
||
<span class="command"><strong>loadkeys</strong></span>
|
||
program, typically, the name of keymap to load, e.g.,
|
||
<span class="quote">“<span class=
|
||
"quote">it</span>”</span>. If this variable is
|
||
not set, the bootscript will not run the <span class=
|
||
"command"><strong>loadkeys</strong></span> program, and
|
||
the default kernel keymap will be used. Note that a few
|
||
keymaps have multiple versions with the same name (cz
|
||
and its variants in qwerty/ and qwertz/, es in olpc/
|
||
and qwerty/, and trf in fgGIod/ and qwerty/). In these
|
||
cases the parent directory should also be specified
|
||
(e.g. qwerty/es) to ensure the proper keymap is loaded.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">KEYMAP_CORRECTIONS</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This (rarely used) variable specifies the arguments for
|
||
the second call to the <span class=
|
||
"command"><strong>loadkeys</strong></span> program.
|
||
This is useful if the stock keymap is not completely
|
||
satisfactory and a small adjustment has to be made.
|
||
E.g., to include the Euro sign into a keymap that
|
||
normally doesn't have it, set this variable to
|
||
<span class="quote">“<span class=
|
||
"quote">euro2</span>”</span>.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">FONT</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This variable specifies the arguments for the
|
||
<span class="command"><strong>setfont</strong></span>
|
||
program. Typically, this includes the font name,
|
||
<span class="quote">“<span class=
|
||
"quote">-m</span>”</span>, and the name of the
|
||
application character map to load. E.g., in order to
|
||
load the <span class="quote">“<span class=
|
||
"quote">lat1-16</span>”</span> font together with
|
||
the <span class="quote">“<span class=
|
||
"quote">8859-1</span>”</span> application
|
||
character map (as it is appropriate in the USA), set
|
||
this variable to <span class=
|
||
"quote">“<span class="quote">lat1-16 -m
|
||
8859-1</span>”</span>. In UTF-8 mode, the kernel
|
||
uses the application character map for conversion of
|
||
composed 8-bit key codes in the keymap to UTF-8, and
|
||
thus the argument of the "-m" parameter should be set
|
||
to the encoding of the composed key codes in the
|
||
keymap.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">UNICODE</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Set this variable to <span class=
|
||
"quote">“<span class=
|
||
"quote">1</span>”</span>, <span class=
|
||
"quote">“<span class=
|
||
"quote">yes</span>”</span> or <span class=
|
||
"quote">“<span class=
|
||
"quote">true</span>”</span> in order to put the
|
||
console into UTF-8 mode. This is useful in UTF-8 based
|
||
locales and harmful otherwise.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term">LEGACY_CHARSET</span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
For many keyboard layouts, there is no stock Unicode
|
||
keymap in the Kbd package. The <span class=
|
||
"command"><strong>console</strong></span> bootscript
|
||
will convert an available keymap to UTF-8 on the fly if
|
||
this variable is set to the encoding of the available
|
||
non-UTF-8 keymap.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Some examples:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
For a non-Unicode setup, only the KEYMAP and FONT
|
||
variables are generally needed. E.g., for a Polish
|
||
setup, one would use:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/sysconfig/console << "EOF"
|
||
<code class="literal"># Begin /etc/sysconfig/console
|
||
|
||
KEYMAP="pl2"
|
||
FONT="lat2a-16 -m 8859-2"
|
||
|
||
# End /etc/sysconfig/console</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
As mentioned above, it is sometimes necessary to adjust
|
||
a stock keymap slightly. The following example adds the
|
||
Euro symbol to the German keymap:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/sysconfig/console << "EOF"
|
||
<code class="literal"># Begin /etc/sysconfig/console
|
||
|
||
KEYMAP="de-latin1"
|
||
KEYMAP_CORRECTIONS="euro2"
|
||
FONT="lat0-16 -m 8859-15"
|
||
UNICODE="1"
|
||
|
||
# End /etc/sysconfig/console</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The following is a Unicode-enabled example for
|
||
Bulgarian, where a stock UTF-8 keymap exists:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/sysconfig/console << "EOF"
|
||
<code class="literal"># Begin /etc/sysconfig/console
|
||
|
||
UNICODE="1"
|
||
KEYMAP="bg_bds-utf8"
|
||
FONT="LatArCyrHeb-16"
|
||
|
||
# End /etc/sysconfig/console</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Due to the use of a 512-glyph LatArCyrHeb-16 font in
|
||
the previous example, bright colors are no longer
|
||
available on the Linux console unless a framebuffer is
|
||
used. If one wants to have bright colors without
|
||
framebuffer and can live without characters not
|
||
belonging to his language, it is still possible to use
|
||
a language-specific 256-glyph font, as illustrated
|
||
below:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/sysconfig/console << "EOF"
|
||
<code class="literal"># Begin /etc/sysconfig/console
|
||
|
||
UNICODE="1"
|
||
KEYMAP="bg_bds-utf8"
|
||
FONT="cyr-sun16"
|
||
|
||
# End /etc/sysconfig/console</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The following example illustrates keymap autoconversion
|
||
from ISO-8859-15 to UTF-8 and enabling dead keys in
|
||
Unicode mode:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/sysconfig/console << "EOF"
|
||
<code class="literal"># Begin /etc/sysconfig/console
|
||
|
||
UNICODE="1"
|
||
KEYMAP="de-latin1"
|
||
KEYMAP_CORRECTIONS="euro2"
|
||
LEGACY_CHARSET="iso-8859-15"
|
||
FONT="LatArCyrHeb-16 -m 8859-15"
|
||
|
||
# End /etc/sysconfig/console</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Some keymaps have dead keys (i.e., keys that don't
|
||
produce a character by themselves, but put an accent on
|
||
the character produced by the next key) or define
|
||
composition rules (such as: <span class=
|
||
"quote">“<span class="quote">press Ctrl+. A E to
|
||
get <20></span>”</span> in the default keymap).
|
||
Linux-5.5.3 interprets dead keys and composition rules
|
||
in the keymap correctly only when the source characters
|
||
to be composed together are not multibyte. This
|
||
deficiency doesn't affect keymaps for European
|
||
languages, because there accents are added to
|
||
unaccented ASCII characters, or two ASCII characters
|
||
are composed together. However, in UTF-8 mode it is a
|
||
problem, e.g., for the Greek language, where one
|
||
sometimes needs to put an accent on the letter
|
||
<span class="quote">“<span class=
|
||
"quote">alpha</span>”</span>. The solution is
|
||
either to avoid the use of UTF-8, or to install the X
|
||
window system that doesn't have this limitation in its
|
||
input handling.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
For Chinese, Japanese, Korean and some other languages,
|
||
the Linux console cannot be configured to display the
|
||
needed characters. Users who need such languages should
|
||
install the X Window System, fonts that cover the
|
||
necessary character ranges, and the proper input method
|
||
(e.g., SCIM, it supports a wide variety of languages).
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
The <code class="filename">/etc/sysconfig/console</code>
|
||
file only controls the Linux text console localization. It
|
||
has nothing to do with setting the proper keyboard layout
|
||
and terminal fonts in the X Window System, with ssh
|
||
sessions or with a serial console. In such situations,
|
||
limitations mentioned in the last two list items above do
|
||
not apply.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="ch-config-createfiles" name=
|
||
"ch-config-createfiles"></a>7.6.6. Creating Files at Boot
|
||
</h3>
|
||
<p>
|
||
At times, it is desired to create files at boot time. For
|
||
instance, the <code class="filename">/tmp/.ICE-unix</code>
|
||
directory may be desired. This can be done by creating an
|
||
entry in the <code class=
|
||
"filename">/etc/sysconfig/createfiles</code> configuration
|
||
script. The format of this file is embedded in the comments
|
||
of the default configuration file.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="ch-config-sysklogd" name=
|
||
"ch-config-sysklogd"></a>7.6.7. Configuring the sysklogd
|
||
Script
|
||
</h3>
|
||
<p>
|
||
The <code class="filename">sysklogd</code> script invokes the
|
||
<span class="command"><strong>syslogd</strong></span> program
|
||
as a part of System V initialization. The <em class=
|
||
"parameter"><code>-m 0</code></em> option turns off the
|
||
periodic timestamp mark that <span class=
|
||
"command"><strong>syslogd</strong></span> writes to the log
|
||
files every 20 minutes by default. If you want to turn on
|
||
this periodic timestamp mark, edit <code class=
|
||
"filename">/etc/sysconfig/rc.site</code> and define the
|
||
variable SYSKLOGD_PARMS to the desired value. For instance,
|
||
to remove all parameters, set the variable to a null value:
|
||
</p>
|
||
<pre class="screen">
|
||
SYSKLOGD_PARMS=
|
||
</pre>
|
||
<p>
|
||
See <strong class="userinput"><code>man
|
||
syslogd</code></strong> for more options.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="ch-config-site" name="ch-config-site"></a>7.6.8. The
|
||
rc.site File
|
||
</h3>
|
||
<p>
|
||
The optional <code class=
|
||
"filename">/etc/sysconfig/rc.site</code> file contains
|
||
settings that are automatically set for each SystemV boot
|
||
script. It can alternatively set the values specified in the
|
||
<code class="filename">hostname</code>, <code class=
|
||
"filename">console</code>, and <code class=
|
||
"filename">clock</code> files in the <code class=
|
||
"filename">/etc/sysconfig/</code> directory. If the
|
||
associated variables are present in both these separate files
|
||
and <code class="filename">rc.site</code>, the values in the
|
||
script specific files have precedence.
|
||
</p>
|
||
<p>
|
||
<code class="filename">rc.site</code> also contains
|
||
parameters that can customize other aspects of the boot
|
||
process. Setting the IPROMPT variable will enable selective
|
||
running of bootscripts. Other options are described in the
|
||
file comments. The default version of the file is as follows:
|
||
</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@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 seet 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="idm46504922378304" name=
|
||
"idm46504922378304"></a>7.6.8.1. Customizing the
|
||
Boot and Shutdown Scripts
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The LFS boot scripts boot and shut down a system in a
|
||
fairly efficient manner, but there are a few tweaks that
|
||
you can make in the rc.site file to improve speed even more
|
||
and to adjust messages according to your preferences. To do
|
||
this, adjust the settings in the <code class=
|
||
"filename">/etc/sysconfig/rc.site</code> file above.
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
During the boot script <code class=
|
||
"filename">udev</code>, there is a call to
|
||
<span class="command"><strong>udev
|
||
settle</strong></span> that requires some time to
|
||
complete. This time may or may not be required
|
||
depending on devices present in the system. If you
|
||
only have simple partitions and a single ethernet
|
||
card, the boot process will probably not need to wait
|
||
for this command. To skip it, set the variable
|
||
OMIT_UDEV_SETTLE=y.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The boot script <code class=
|
||
"filename">udev_retry</code> also runs <span class=
|
||
"command"><strong>udev settle</strong></span> by
|
||
default. This command is only needed by default if
|
||
the <code class="filename">/var</code> directory is
|
||
separately mounted. This is because the clock needs
|
||
the file <code class=
|
||
"filename">/var/lib/hwclock/adjtime</code>. Other
|
||
customizations may also need to wait for udev to
|
||
complete, but in many installations it is not needed.
|
||
Skip the command by setting the variable
|
||
OMIT_UDEV_RETRY_SETTLE=y.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
By default, the file system checks are silent. This
|
||
can appear to be a delay during the bootup process.
|
||
To turn on the <span class=
|
||
"command"><strong>fsck</strong></span> output, set
|
||
the variable VERBOSE_FSCK=y.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
When rebooting, you may want to skip the filesystem
|
||
check, <span class=
|
||
"command"><strong>fsck</strong></span>, completely.
|
||
To do this, either create the file <code class=
|
||
"filename">/fastboot</code> or reboot the system with
|
||
the command <span class=
|
||
"command"><strong>/sbin/shutdown -f -r
|
||
now</strong></span>. On the other hand, you can force
|
||
all file systems to be checked by creating
|
||
<code class="filename">/forcefsck</code> or running
|
||
<span class=
|
||
"command"><strong>shutdown</strong></span> with the
|
||
<em class="parameter"><code>-F</code></em> parameter
|
||
instead of <em class=
|
||
"parameter"><code>-f</code></em>.
|
||
</p>
|
||
<p>
|
||
Setting the variable FASTBOOT=y will disable
|
||
<span class="command"><strong>fsck</strong></span>
|
||
during the boot process until it is removed. This is
|
||
not recommended on a permanent basis.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Normally, all files in the <code class=
|
||
"filename">/tmp</code> directory are deleted at boot
|
||
time. Depending on the number of files or directories
|
||
present, this can cause a noticeable delay in the
|
||
boot process. To skip removing these files set the
|
||
variable SKIPTMPCLEAN=y.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
During shutdown, the <span class=
|
||
"command"><strong>init</strong></span> program sends
|
||
a TERM signal to each program it has started (e.g.
|
||
agetty), waits for a set time (default 3 seconds),
|
||
and sends each process a KILL signal and waits again.
|
||
This process is repeated in the <span class=
|
||
"command"><strong>sendsignals</strong></span> script
|
||
for any processes that are not shut down by their own
|
||
scripts. The delay for <span class=
|
||
"command"><strong>init</strong></span> can be set by
|
||
passing a parameter. For example to remove the delay
|
||
in <span class=
|
||
"command"><strong>init</strong></span>, pass the -t0
|
||
parameter when shutting down or rebooting (e.g.
|
||
<span class="command"><strong>/sbin/shutdown -t0 -r
|
||
now</strong></span>). The delay for the <span class=
|
||
"command"><strong>sendsignals</strong></span> script
|
||
can be skipped by setting the parameter KILLDELAY=0.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-config-profile" name=
|
||
"ch-config-profile"></a>7.7. The Bash Shell Startup
|
||
Files
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The shell program <span class=
|
||
"command"><strong>/bin/bash</strong></span> (hereafter referred
|
||
to as <span class="quote">“<span class="quote">the
|
||
shell</span>”</span>) uses a collection of startup files
|
||
to help create an environment to run in. Each file has a
|
||
specific use and may affect login and interactive environments
|
||
differently. The files in the <code class=
|
||
"filename">/etc</code> directory provide global settings. If an
|
||
equivalent file exists in the home directory, it may override
|
||
the global settings.
|
||
</p>
|
||
<p>
|
||
An interactive login shell is started after a successful login,
|
||
using <span class="command"><strong>/bin/login</strong></span>,
|
||
by reading the <code class="filename">/etc/passwd</code> file.
|
||
An interactive non-login shell is started at the command-line
|
||
(e.g., <code class="prompt">[prompt]$</code><span class=
|
||
"command"><strong>/bin/bash</strong></span>). A non-interactive
|
||
shell is usually present when a shell script is running. It is
|
||
non-interactive because it is processing a script and not
|
||
waiting for user input between commands.
|
||
</p>
|
||
<p>
|
||
For more information, see <span class="command"><strong>info
|
||
bash</strong></span> under the <span class="emphasis"><em>Bash
|
||
Startup Files and Interactive Shells</em></span> section.
|
||
</p>
|
||
<p>
|
||
The files <code class="filename">/etc/profile</code> and
|
||
<code class="filename">~/.bash_profile</code> are read when the
|
||
shell is invoked as an interactive login shell.
|
||
</p>
|
||
<p>
|
||
The base <code class="filename">/etc/profile</code> below sets
|
||
some environment variables necessary for native language
|
||
support. Setting them properly results in:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
The output of programs translated into the native
|
||
language
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Correct classification of characters into letters, digits
|
||
and other classes. This is necessary for <span class=
|
||
"command"><strong>bash</strong></span> to properly accept
|
||
non-ASCII characters in command lines in non-English
|
||
locales
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The correct alphabetical sorting order for the country
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Appropriate default paper size
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Correct formatting of monetary, time, and date values
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<p>
|
||
Replace <em class="replaceable"><code><ll></code></em>
|
||
below with the two-letter code for the desired language (e.g.,
|
||
<span class="quote">“<span class=
|
||
"quote">en</span>”</span>) and <em class=
|
||
"replaceable"><code><CC></code></em> with the two-letter
|
||
code for the appropriate country (e.g., <span class=
|
||
"quote">“<span class="quote">GB</span>”</span>).
|
||
<em class="replaceable"><code><charmap></code></em>
|
||
should be replaced with the canonical charmap for your chosen
|
||
locale. Optional modifiers such as <span class=
|
||
"quote">“<span class="quote">@euro</span>”</span>
|
||
may also be present.
|
||
</p>
|
||
<p>
|
||
The list of all locales supported by Glibc can be obtained by
|
||
running the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">locale -a</kbd>
|
||
</pre>
|
||
<p>
|
||
Charmaps can have a number of aliases, e.g., <span class=
|
||
"quote">“<span class=
|
||
"quote">ISO-8859-1</span>”</span> is also referred to as
|
||
<span class="quote">“<span class=
|
||
"quote">iso8859-1</span>”</span> and <span class=
|
||
"quote">“<span class=
|
||
"quote">iso88591</span>”</span>. Some applications cannot
|
||
handle the various synonyms correctly (e.g., require that
|
||
<span class="quote">“<span class=
|
||
"quote">UTF-8</span>”</span> is written as <span class=
|
||
"quote">“<span class="quote">UTF-8</span>”</span>,
|
||
not <span class="quote">“<span class=
|
||
"quote">utf8</span>”</span>), so it is safest in most
|
||
cases to choose the canonical name for a particular locale. To
|
||
determine the canonical name, run the following command, where
|
||
<em class="replaceable"><code><locale name></code></em>
|
||
is the output given by <span class="command"><strong>locale
|
||
-a</strong></span> for your preferred locale (<span class=
|
||
"quote">“<span class=
|
||
"quote">en_GB.iso88591</span>”</span> in our example).
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">LC_ALL=<em class=
|
||
"replaceable"><code><locale name></code></em> locale charmap</kbd>
|
||
</pre>
|
||
<p>
|
||
For the <span class="quote">“<span class=
|
||
"quote">en_GB.iso88591</span>”</span> locale, the above
|
||
command will print:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="computeroutput">ISO-8859-1</code>
|
||
</pre>
|
||
<p>
|
||
This results in a final locale setting of <span class=
|
||
"quote">“<span class=
|
||
"quote">en_GB.ISO-8859-1</span>”</span>. It is important
|
||
that the locale found using the heuristic above is tested prior
|
||
to it being added to the Bash startup files:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">LC_ALL=<locale name> locale language
|
||
LC_ALL=<locale name> locale charmap
|
||
LC_ALL=<locale name> locale int_curr_symbol
|
||
LC_ALL=<locale name> locale int_prefix</kbd>
|
||
</pre>
|
||
<p>
|
||
The above commands should print the language name, the
|
||
character encoding used by the locale, the local currency, and
|
||
the prefix to dial before the telephone number in order to get
|
||
into the country. If any of the commands above fail with a
|
||
message similar to the one shown below, this means that your
|
||
locale was either not installed in Chapter 6 or is not
|
||
supported by the default installation of Glibc.
|
||
</p>
|
||
<pre class="screen">
|
||
<code class=
|
||
"computeroutput">locale: Cannot set LC_* to default locale: No such file or directory</code>
|
||
</pre>
|
||
<p>
|
||
If this happens, you should either install the desired locale
|
||
using the <span class=
|
||
"command"><strong>localedef</strong></span> command, or
|
||
consider choosing a different locale. Further instructions
|
||
assume that there are no such error messages from Glibc.
|
||
</p>
|
||
<p>
|
||
Some packages beyond LFS may also lack support for your chosen
|
||
locale. One example is the X library (part of the X Window
|
||
System), which outputs the following error message if the
|
||
locale does not exactly match one of the character map names in
|
||
its internal files:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class=
|
||
"computeroutput">Warning: locale not supported by Xlib, locale set to C</code>
|
||
</pre>
|
||
<p>
|
||
In several cases Xlib expects that the character map will be
|
||
listed in uppercase notation with canonical dashes. For
|
||
instance, "ISO-8859-1" rather than "iso88591". It is also
|
||
possible to find an appropriate specification by removing the
|
||
charmap part of the locale specification. This can be checked
|
||
by running the <span class="command"><strong>locale
|
||
charmap</strong></span> command in both locales. For example,
|
||
one would have to change "de_DE.ISO-8859-15@euro" to
|
||
"de_DE@euro" in order to get this locale recognized by Xlib.
|
||
</p>
|
||
<p>
|
||
Other packages can also function incorrectly (but may not
|
||
necessarily display any error messages) if the locale name does
|
||
not meet their expectations. In those cases, investigating how
|
||
other Linux distributions support your locale might provide
|
||
some useful information.
|
||
</p>
|
||
<p>
|
||
Once the proper locale settings have been determined, create
|
||
the <code class="filename">/etc/profile</code> file:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/profile << "EOF"
|
||
<code class="literal"># Begin /etc/profile
|
||
|
||
export LANG=<em class=
|
||
"replaceable"><code><ll>_<CC>.<charmap><@modifiers></code></em>
|
||
|
||
# End /etc/profile</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
The <span class="quote">“<span class=
|
||
"quote">C</span>”</span> (default) and <span class=
|
||
"quote">“<span class="quote">en_US</span>”</span>
|
||
(the recommended one for United States English users) locales
|
||
are different. <span class="quote">“<span class=
|
||
"quote">C</span>”</span> uses the US-ASCII 7-bit
|
||
character set, and treats bytes with the high bit set as
|
||
invalid characters. That's why, e.g., the <span class=
|
||
"command"><strong>ls</strong></span> command substitutes them
|
||
with question marks in that locale. Also, an attempt to send
|
||
mail with such characters from Mutt or Pine results in
|
||
non-RFC-conforming messages being sent (the charset in the
|
||
outgoing mail is indicated as <span class=
|
||
"quote">“<span class="quote">unknown
|
||
8-bit</span>”</span>). So you can use the <span class=
|
||
"quote">“<span class="quote">C</span>”</span>
|
||
locale only if you are sure that you will never need 8-bit
|
||
characters.
|
||
</p>
|
||
<p>
|
||
UTF-8 based locales are not supported well by some programs.
|
||
Work is in progress to document and, if possible, fix such
|
||
problems, see <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/introduction/locale-issues.html">
|
||
http://www.linuxfromscratch.org/blfs/view/9.1/introduction/locale-issues.html</a>.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-config-inputrc" name=
|
||
"ch-config-inputrc"></a>7.8. Creating the
|
||
/etc/inputrc File
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The <code class="filename">inputrc</code> file is the
|
||
configuration file for the Readline library, which provides
|
||
editing capabilities while the user is entering a line from the
|
||
terminal. It works by translating keyboard inputs into specific
|
||
actions. Readline is used by Bash and most other shells as well
|
||
as many other applications.
|
||
</p>
|
||
<p>
|
||
Most people do not need user-specific functionality so the
|
||
command below creates a global <code class=
|
||
"filename">/etc/inputrc</code> used by everyone who logs in. If
|
||
you later decide you need to override the defaults on a
|
||
per-user basis, you can create a <code class=
|
||
"filename">.inputrc</code> file in the user's home directory
|
||
with the modified mappings.
|
||
</p>
|
||
<p>
|
||
For more information on how to edit the <code class=
|
||
"filename">inputrc</code> file, see <span class=
|
||
"command"><strong>info bash</strong></span> under the
|
||
<span class="emphasis"><em>Readline Init File</em></span>
|
||
section. <span class="command"><strong>info
|
||
readline</strong></span> is also a good source of information.
|
||
</p>
|
||
<p>
|
||
Below is a generic global <code class="filename">inputrc</code>
|
||
along with comments to explain what the various options do.
|
||
Note that comments cannot be on the same line as commands.
|
||
Create the file using the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/inputrc << "EOF"
|
||
<code class="literal"># Begin /etc/inputrc
|
||
# Modified by Chris Lynn <roryo@roryo.dynup.net>
|
||
|
||
# Allow the command prompt to wrap to the next line
|
||
set horizontal-scroll-mode Off
|
||
|
||
# Enable 8bit input
|
||
set meta-flag On
|
||
set input-meta On
|
||
|
||
# Turns off 8th bit stripping
|
||
set convert-meta Off
|
||
|
||
# Keep the 8th bit for display
|
||
set output-meta On
|
||
|
||
# none, visible or audible
|
||
set bell-style none
|
||
|
||
# All of the following map the escape sequence of the value
|
||
# contained in the 1st argument to the readline specific functions
|
||
"\eOd": backward-word
|
||
"\eOc": forward-word
|
||
|
||
# for linux console
|
||
"\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
|
||
|
||
# for xterm
|
||
"\eOH": beginning-of-line
|
||
"\eOF": end-of-line
|
||
|
||
# for Konsole
|
||
"\e[H": beginning-of-line
|
||
"\e[F": end-of-line
|
||
|
||
# End /etc/inputrc</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-config-shells" name=
|
||
"ch-config-shells"></a>7.9. Creating the /etc/shells
|
||
File
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The <code class="filename">shells</code> file contains a list
|
||
of login shells on the system. Applications use this file to
|
||
determine whether a shell is valid. For each shell a single
|
||
line should be present, consisting of the shell's path,
|
||
relative to the root of the directory structure (/).
|
||
</p>
|
||
<p>
|
||
For example, this file is consulted by <span class=
|
||
"command"><strong>chsh</strong></span> to determine whether an
|
||
unprivileged user may change the login shell for her own
|
||
account. If the command name is not listed, the user will be
|
||
denied of change.
|
||
</p>
|
||
<p>
|
||
It is a requirement for applications such as <span class=
|
||
"application">GDM</span> which does not populate the face
|
||
browser if it can't find <code class=
|
||
"filename">/etc/shells</code>, or FTP daemons which
|
||
traditionally disallow access to users with shells not included
|
||
in this file.
|
||
</p>
|
||
<pre class="root">
|
||
<kbd class="command">cat > /etc/shells << "EOF"
|
||
<code class="literal"># Begin /etc/shells
|
||
|
||
/bin/sh
|
||
/bin/bash
|
||
|
||
# End /etc/shells</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="chapter" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="chapter-bootable" name=
|
||
"chapter-bootable"></a>Chapter 8. Making the LFS
|
||
System Bootable
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-bootable-introduction" name=
|
||
"ch-bootable-introduction"></a>8.1. Introduction
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
It is time to make the LFS system bootable. This chapter
|
||
discusses creating an <code class="filename">fstab</code> file,
|
||
building a kernel for the new LFS system, and installing the
|
||
GRUB boot loader so that the LFS system can be selected for
|
||
booting at startup.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-bootable-fstab" name=
|
||
"ch-bootable-fstab"></a>8.2. Creating the /etc/fstab
|
||
File
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The <code class="filename">/etc/fstab</code> file is used by
|
||
some programs to determine where file systems are to be mounted
|
||
by default, in which order, and which must be checked (for
|
||
integrity errors) prior to mounting. Create a new file systems
|
||
table like this:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/fstab << "EOF"
|
||
<code class="literal"># Begin /etc/fstab
|
||
|
||
# file system mount-point type options dump fsck
|
||
# order
|
||
|
||
/dev/<em class=
|
||
"replaceable"><code><xxx></code></em> / <em class=
|
||
"replaceable"><code><fff></code></em> defaults 1 1
|
||
/dev/<em class=
|
||
"replaceable"><code><yyy></code></em> swap swap pri=1 0 0
|
||
proc /proc proc nosuid,noexec,nodev 0 0
|
||
sysfs /sys sysfs nosuid,noexec,nodev 0 0
|
||
devpts /dev/pts devpts gid=5,mode=620 0 0
|
||
tmpfs /run tmpfs defaults 0 0
|
||
devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
|
||
|
||
# End /etc/fstab</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
Replace <em class="replaceable"><code><xxx></code></em>,
|
||
<em class="replaceable"><code><yyy></code></em>, and
|
||
<em class="replaceable"><code><fff></code></em> with the
|
||
values appropriate for the system, for example, <code class=
|
||
"filename">sda2</code>, <code class="filename">sda5</code>, and
|
||
<code class="systemitem">ext4</code>. For details on the six
|
||
fields in this file, see <span class="command"><strong>man 5
|
||
fstab</strong></span>.
|
||
</p>
|
||
<p>
|
||
Filesystems with MS-DOS or Windows origin (i.e. vfat, ntfs,
|
||
smbfs, cifs, iso9660, udf) need a special option, utf8, in
|
||
order for non-ASCII characters in file names to be interpreted
|
||
properly. For non-UTF-8 locales, the value of <code class=
|
||
"option">iocharset</code> should be set to be the same as the
|
||
character set of the locale, adjusted in such a way that the
|
||
kernel understands it. This works if the relevant character set
|
||
definition (found under File systems -> Native Language
|
||
Support when configuring the kernel) has been compiled into the
|
||
kernel or built as a module. However, if the character set of
|
||
the locale is UTF-8, the corresponding option <code class=
|
||
"option">iocharset=utf8</code> would make the file system case
|
||
sensitive. To fix this, use the special option <code class=
|
||
"option">utf8</code> instead of <code class=
|
||
"option">iocharset=utf8</code>, for UTF-8 locales. The
|
||
<span class="quote">“<span class=
|
||
"quote">codepage</span>”</span> option is also needed for
|
||
vfat and smbfs filesystems. It should be set to the codepage
|
||
number used under MS-DOS in your country. For example, in order
|
||
to mount USB flash drives, a ru_RU.KOI8-R user would need the
|
||
following in the options portion of its mount line in
|
||
<code class="filename">/etc/fstab</code>:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class=
|
||
"literal">noauto,user,quiet,showexec,codepage=866,iocharset=koi8r</code>
|
||
</pre>
|
||
<p>
|
||
The corresponding options fragment for ru_RU.UTF-8 users is:
|
||
</p>
|
||
<pre class="screen">
|
||
<code class="literal">noauto,user,quiet,showexec,codepage=866,utf8</code>
|
||
</pre>
|
||
<p>
|
||
Note that using <code class="option">iocharset</code> is the
|
||
default for <code class="literal">iso8859-1</code> (which keeps
|
||
the file system case insensitive), and the <code class=
|
||
"option">utf8</code> option tells the kernel to convert the
|
||
file names using UTF-8 so they can be interpreted in the UTF-8
|
||
locale.
|
||
</p>
|
||
<p>
|
||
It is also possible to specify default codepage and iocharset
|
||
values for some filesystems during kernel configuration. The
|
||
relevant parameters are named <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>), and <span class=
|
||
"quote">“<span class="quote">Default iocharset for
|
||
FAT</span>”</span> (<code class=
|
||
"option">CONFIG_FAT_DEFAULT_IOCHARSET</code>). There is no way
|
||
to specify these settings for the ntfs filesystem at kernel
|
||
compilation time.
|
||
</p>
|
||
<p>
|
||
It is possible to make the ext3 filesystem reliable across
|
||
power failures for some hard disk types. To do this, add the
|
||
<code class="option">barrier=1</code> mount option to the
|
||
appropriate entry in <code class="filename">/etc/fstab</code>.
|
||
To check if the disk drive supports this option, run <a class=
|
||
"ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/general/hdparm.html">
|
||
hdparm</a> on the applicable disk drive. For example, if:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">hdparm -I /dev/sda | grep NCQ</kbd>
|
||
</pre>
|
||
<p>
|
||
returns non-empty output, the option is supported.
|
||
</p>
|
||
<p>
|
||
Note: Logical Volume Management (LVM) based partitions cannot
|
||
use the <code class="option">barrier</code> option.
|
||
</p>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-bootable-kernel" name=
|
||
"ch-bootable-kernel"></a>8.3. Linux-5.5.3
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="package" lang="en" xml:lang="en">
|
||
<p>
|
||
The Linux package contains the Linux kernel.
|
||
</p>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Approximate build time:</strong>
|
||
<span class="segbody">4.4 - 66.0 SBU (typically about 6
|
||
SBU)</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Required disk space:</strong>
|
||
<span class="segbody">960 - 4250 MB (typically about 1100
|
||
MB)</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="installation" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
8.3.1. Installation of the kernel
|
||
</h3>
|
||
<p>
|
||
Building the kernel involves a few steps—configuration,
|
||
compilation, and installation. Read the <code class=
|
||
"filename">README</code> file in the kernel source tree for
|
||
alternative methods to the way this book configures the
|
||
kernel.
|
||
</p>
|
||
<p>
|
||
Prepare for compilation by running the following command:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make mrproper</kbd>
|
||
</pre>
|
||
<p>
|
||
This ensures that the kernel tree is absolutely clean. The
|
||
kernel team recommends that this command be issued prior to
|
||
each kernel compilation. Do not rely on the source tree being
|
||
clean after un-tarring.
|
||
</p>
|
||
<p>
|
||
Configure the kernel via a menu-driven interface. For general
|
||
information on kernel configuration see <a class="ulink"
|
||
href="http://www.linuxfromscratch.org/hints/downloads/files/kernel-configuration.txt">
|
||
http://www.linuxfromscratch.org/hints/downloads/files/kernel-configuration.txt</a>.
|
||
BLFS has some information regarding particular kernel
|
||
configuration requirements of packages outside of LFS at
|
||
<a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/longindex.html#kernel-config-index">
|
||
http://www.linuxfromscratch.org/blfs/view/9.1/longindex.html#kernel-config-index</a>.
|
||
Additional information about configuring and building the
|
||
kernel can be found at <a class="ulink" href=
|
||
"http://www.kroah.com/lkn/">http://www.kroah.com/lkn/</a>
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
A good starting place for setting up the kernel
|
||
configuration is to run <span class="command"><strong>make
|
||
defconfig</strong></span>. This will set the base
|
||
configuration to a good state that takes your current
|
||
system architecture into account.
|
||
</p>
|
||
<p>
|
||
Be sure to enable/disable/set the following features or the
|
||
system might not work correctly or boot at all:
|
||
</p>
|
||
<pre class="screen">
|
||
Device Drivers --->
|
||
Generic Driver Options --->
|
||
[ ] Support for uevent helper [CONFIG_UEVENT_HELPER]
|
||
[*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS]
|
||
|
||
Kernel hacking --->
|
||
Choose kernel unwinder (Frame pointer unwinder) ---> [CONFIG_UNWINDER_FRAME_POINTER]
|
||
</pre>
|
||
</div>
|
||
<p>
|
||
There are several other options that may be desired depending
|
||
on the requirements for the system. For a list of options
|
||
needed for BLFS packages, see the <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/longindex.html#kernel-config-index">
|
||
BLFS Index of Kernel Settings</a>
|
||
(http://www.linuxfromscratch.org/blfs/view/9.1/longindex.html#kernel-config-index).
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
If your host hardware is using UEFI, then the 'make
|
||
defconfig' above should automatically add in some
|
||
EFI-related kernel options.
|
||
</p>
|
||
<p>
|
||
In order to allow your LFS kernel to be booted from within
|
||
your host's UEFI boot environment, your kernel must have
|
||
this option selected:
|
||
</p>
|
||
<pre class="screen">
|
||
Processor type and features --->
|
||
[*] EFI stub support [CONFIG_EFI_STUB]
|
||
</pre>
|
||
<p>
|
||
A fuller description of managing UEFI environments from
|
||
within LFS is covered by the lfs-uefi.txt hint at <a class=
|
||
"ulink" href=
|
||
"http://www.linuxfromscratch.org/hints/downloads/files/lfs-uefi.txt">
|
||
http://www.linuxfromscratch.org/hints/downloads/files/lfs-uefi.txt</a>.
|
||
</p>
|
||
</div>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The rationale for the above configuration
|
||
items:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code>Support
|
||
for uevent helper</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
Having this option set may interfere with device
|
||
management when using Udev/Eudev.
|
||
</p>
|
||
</dd>
|
||
<dt>
|
||
<span class="term"><em class="parameter"><code>Maintain a
|
||
devtmpfs</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This will create automated device nodes which are
|
||
populated by the kernel, even without Udev running.
|
||
Udev then runs on top of this, managing permissions and
|
||
adding symlinks. This configuration item is required
|
||
for all users of Udev/Eudev.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<pre class="userinput">
|
||
<kbd class="command">make menuconfig</kbd>
|
||
</pre>
|
||
<div class="variablelist">
|
||
<p class="title">
|
||
<strong>The meaning of optional make environment
|
||
variables:</strong>
|
||
</p>
|
||
<dl class="variablelist">
|
||
<dt>
|
||
<span class="term"><em class=
|
||
"parameter"><code>LANG=<host_LANG_value>
|
||
LC_ALL=</code></em></span>
|
||
</dt>
|
||
<dd>
|
||
<p>
|
||
This establishes the locale setting to the one used on
|
||
the host. This may be needed for a proper menuconfig
|
||
ncurses interface line drawing on a UTF-8 linux text
|
||
console.
|
||
</p>
|
||
<p>
|
||
If used, be sure to replace <em class=
|
||
"replaceable"><code><host_LANG_value></code></em>
|
||
by the value of the <code class="envar">$LANG</code>
|
||
variable from your host. You can alternatively use
|
||
instead the host's value of <code class=
|
||
"envar">$LC_ALL</code> or <code class=
|
||
"envar">$LC_CTYPE</code>.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
<p>
|
||
Alternatively, <span class="command"><strong>make
|
||
oldconfig</strong></span> may be more appropriate in some
|
||
situations. See the <code class="filename">README</code> file
|
||
for more information.
|
||
</p>
|
||
<p>
|
||
If desired, skip kernel configuration by copying the kernel
|
||
config file, <code class="filename">.config</code>, from the
|
||
host system (assuming it is available) to the unpacked
|
||
<code class="filename">linux-5.5.3</code> directory. However,
|
||
we do not recommend this option. It is often better to
|
||
explore all the configuration menus and create the kernel
|
||
configuration from scratch.
|
||
</p>
|
||
<p>
|
||
Compile the kernel image and modules:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make</kbd>
|
||
</pre>
|
||
<p>
|
||
If using kernel modules, module configuration in <code class=
|
||
"filename">/etc/modprobe.d</code> may be required.
|
||
Information pertaining to modules and kernel configuration is
|
||
located in <a class="xref" href="#ch-config-udev" title=
|
||
"7.3. Overview of Device and Module Handling">Section 7.3,
|
||
“Overview of Device and Module Handling”</a> and
|
||
in the kernel documentation in the <code class=
|
||
"filename">linux-5.5.3/Documentation</code> directory. Also,
|
||
<code class="filename">modprobe.d(5)</code> may be of
|
||
interest.
|
||
</p>
|
||
<p>
|
||
Unless module support has been disabled in the kernel
|
||
configuration, install the modules with:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">make modules_install</kbd>
|
||
</pre>
|
||
<p>
|
||
After kernel compilation is complete, additional steps are
|
||
required to complete the installation. Some files need to be
|
||
copied to the <code class="filename">/boot</code> directory.
|
||
</p>
|
||
<div class="admon caution">
|
||
<h3>
|
||
Caution
|
||
</h3>
|
||
<p>
|
||
If the host system has a separate /boot partition, the
|
||
files copied below should go there. The easiest way to do
|
||
that is to bind /boot on the host (outside chroot) to
|
||
/mnt/lfs/boot before proceeding. As the root user in the
|
||
<span class="emphasis"><em>host system</em></span>:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">mount --bind /boot /mnt/lfs/boot</kbd>
|
||
</pre>
|
||
</div>
|
||
<p>
|
||
The path to the kernel image may vary depending on the
|
||
platform being used. The filename below can be changed to
|
||
suit your taste, but the stem of the filename should be
|
||
<span class="emphasis"><em>vmlinuz</em></span> to be
|
||
compatible with the automatic setup of the boot process
|
||
described in the next section. The following command assumes
|
||
an x86 architecture:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class=
|
||
"command">cp -iv arch/x86/boot/bzImage /boot/vmlinuz-5.5.3-lfs-9.1</kbd>
|
||
</pre>
|
||
<p>
|
||
<code class="filename">System.map</code> is a symbol file for
|
||
the kernel. It maps the function entry points of every
|
||
function in the kernel API, as well as the addresses of the
|
||
kernel data structures for the running kernel. It is used as
|
||
a resource when investigating kernel problems. Issue the
|
||
following command to install the map file:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cp -iv System.map /boot/System.map-5.5.3</kbd>
|
||
</pre>
|
||
<p>
|
||
The kernel configuration file <code class=
|
||
"filename">.config</code> produced by the <span class=
|
||
"command"><strong>make menuconfig</strong></span> step above
|
||
contains all the configuration selections for the kernel that
|
||
was just compiled. It is a good idea to keep this file for
|
||
future reference:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cp -iv .config /boot/config-5.5.3</kbd>
|
||
</pre>
|
||
<p>
|
||
Install the documentation for the Linux kernel:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">install -d /usr/share/doc/linux-5.5.3
|
||
cp -r Documentation/* /usr/share/doc/linux-5.5.3</kbd>
|
||
</pre>
|
||
<p>
|
||
It is important to note that the files in the kernel source
|
||
directory are not owned by <span class=
|
||
"emphasis"><em>root</em></span>. Whenever a package is
|
||
unpacked as user <span class="emphasis"><em>root</em></span>
|
||
(like we did inside chroot), the files have the user and
|
||
group IDs of whatever they were on the packager's computer.
|
||
This is usually not a problem for any other package to be
|
||
installed because the source tree is removed after the
|
||
installation. However, the Linux source tree is often
|
||
retained for a long time. Because of this, there is a chance
|
||
that whatever user ID the packager used will be assigned to
|
||
somebody on the machine. That person would then have write
|
||
access to the kernel source.
|
||
</p>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
In many cases, the configuration of the kernel will need to
|
||
be updated for packages that will be installed later in
|
||
BLFS. Unlike other packages, it is not necessary to remove
|
||
the kernel source tree after the newly built kernel is
|
||
installed.
|
||
</p>
|
||
<p>
|
||
If the kernel source tree is going to be retained, run
|
||
<span class="command"><strong>chown -R 0:0</strong></span>
|
||
on the <code class="filename">linux-5.5.3</code> directory
|
||
to ensure all files are owned by user <span class=
|
||
"emphasis"><em>root</em></span>.
|
||
</p>
|
||
</div>
|
||
<div class="admon warning">
|
||
<h3>
|
||
Warning
|
||
</h3>
|
||
<p>
|
||
Some kernel documentation recommends creating a symlink
|
||
from <code class="filename">/usr/src/linux</code> pointing
|
||
to the kernel source directory. This is specific to kernels
|
||
prior to the 2.6 series and <span class="emphasis"><em>must
|
||
not</em></span> be created on an LFS system as it can cause
|
||
problems for packages you may wish to build once your base
|
||
LFS system is complete.
|
||
</p>
|
||
</div>
|
||
<div class="admon warning">
|
||
<h3>
|
||
Warning
|
||
</h3>
|
||
<p>
|
||
The headers in the system's <code class=
|
||
"filename">include</code> directory (<code class=
|
||
"filename">/usr/include</code>) should <span class=
|
||
"emphasis"><em>always</em></span> be the ones against which
|
||
Glibc was compiled, that is, the sanitised headers
|
||
installed in <a class="xref" href=
|
||
"#ch-system-linux-headers" title=
|
||
"6.7. Linux-5.5.3 API Headers">Section 6.7,
|
||
“Linux-5.5.3 API Headers”</a>. Therefore, they
|
||
should <span class="emphasis"><em>never</em></span> be
|
||
replaced by either the raw kernel headers or any other
|
||
kernel sanitized headers.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="configuration" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="conf-modprobe" name="conf-modprobe"></a>8.3.2.
|
||
Configuring Linux Module Load Order
|
||
</h3>
|
||
<p>
|
||
Most of the time Linux modules are loaded automatically, but
|
||
sometimes it needs some specific direction. The program that
|
||
loads modules, <span class=
|
||
"command"><strong>modprobe</strong></span> or <span class=
|
||
"command"><strong>insmod</strong></span>, uses <code class=
|
||
"filename">/etc/modprobe.d/usb.conf</code> for this purpose.
|
||
This file needs to be created so that if the USB drivers
|
||
(ehci_hcd, ohci_hcd and uhci_hcd) have been built as modules,
|
||
they will be loaded in the correct order; ehci_hcd needs to
|
||
be loaded prior to ohci_hcd and uhci_hcd in order to avoid a
|
||
warning being output at boot time.
|
||
</p>
|
||
<p>
|
||
Create a new file <code class=
|
||
"filename">/etc/modprobe.d/usb.conf</code> by running the
|
||
following:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">install -v -m755 -d /etc/modprobe.d
|
||
cat > /etc/modprobe.d/usb.conf << "EOF"
|
||
<code class="literal"># Begin /etc/modprobe.d/usb.conf
|
||
|
||
install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
|
||
install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true
|
||
|
||
# End /etc/modprobe.d/usb.conf</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
</div>
|
||
<div class="content" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="contents-kernel" name="contents-kernel"></a>8.3.3.
|
||
Contents of Linux
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed files:</strong>
|
||
<span class="segbody">config-5.5.3, <span class=
|
||
"phrase">vmlinuz-5.5.3-lfs-9.1,</span> and
|
||
System.map-5.5.3</span>
|
||
</div>
|
||
<div class="seg">
|
||
<strong class="segtitle">Installed directories:</strong>
|
||
<span class="segbody">/lib/modules,
|
||
/usr/share/doc/linux-5.5.3</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="variablelist">
|
||
<h4>
|
||
<a id="idm46504922141632" name=
|
||
"idm46504922141632"></a>Short Descriptions
|
||
</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-5.5.3</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
Contains all the configuration selections for the
|
||
kernel
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="lfskernel" name="lfskernel"></a><span class=
|
||
"term"><code class=
|
||
"filename">vmlinuz-5.5.3-lfs-9.1</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
The engine of the Linux system. When turning on the
|
||
computer, the kernel is the first part of the
|
||
operating system that gets loaded. It detects and
|
||
initializes all components of the computer's
|
||
hardware, then makes these components available as
|
||
a tree of files to the software and turns a single
|
||
CPU into a multitasking machine capable of running
|
||
scores of programs seemingly at the same time
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<p>
|
||
<a id="System.map" name=
|
||
"System.map"></a><span class="term"><code class=
|
||
"filename">System.map-5.5.3</code></span>
|
||
</p>
|
||
</td>
|
||
<td>
|
||
<p>
|
||
A list of addresses and symbols; it maps the entry
|
||
points and addresses of all the functions and data
|
||
structures in the kernel
|
||
</p>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-bootable-grub" name=
|
||
"ch-bootable-grub"></a>8.4. Using GRUB to Set Up the
|
||
Boot Process
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
8.4.1. Introduction
|
||
</h3>
|
||
<div class="admon warning">
|
||
<h3>
|
||
Warning
|
||
</h3>
|
||
<p>
|
||
Configuring GRUB incorrectly can render your system
|
||
inoperable without an alternate boot device such as a
|
||
CD-ROM. This section is not required to boot your LFS
|
||
system. You may just want to modify your current boot
|
||
loader, e.g. Grub-Legacy, GRUB2, or LILO.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
Ensure that an emergency boot disk is ready to <span class=
|
||
"quote">“<span class=
|
||
"quote">rescue</span>”</span> the computer if the
|
||
computer becomes unusable (un-bootable). If you do not
|
||
already have a boot device, you can create one. In order for
|
||
the procedure below to work, you need to jump ahead to BLFS
|
||
and install <strong class=
|
||
"userinput"><code>xorriso</code></strong> from the <a class=
|
||
"ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/multimedia/libisoburn.html">
|
||
libisoburn</a> package.
|
||
</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 class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
To boot LFS on host systems that have UEFI enabled, the
|
||
kernel needs to have been built with the CONFIG_EFI_STUB
|
||
capabality described in the previous section. However, LFS
|
||
can be booted using GRUB2 without such an addition. To do
|
||
this, the UEFI Mode and Secure Boot capabilities in the
|
||
host system's BIOS need to be turned off. For details, see
|
||
<a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/hints/downloads/files/lfs-uefi.txt">
|
||
the lfs-uefi.txt hint</a> at
|
||
http://www.linuxfromscratch.org/hints/downloads/files/lfs-uefi.txt.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
8.4.2. GRUB Naming Conventions
|
||
</h3>
|
||
<p>
|
||
GRUB uses its own naming structure for drives and partitions
|
||
in the form of <span class=
|
||
"emphasis"><em>(hdn,m)</em></span>, where <span class=
|
||
"emphasis"><em>n</em></span> is the hard drive number and
|
||
<span class="emphasis"><em>m</em></span> is the partition
|
||
number. The hard drive number starts from zero, but the
|
||
partition number starts from one for normal partitions and
|
||
five for extended partitions. Note that this is different
|
||
from earlier versions where both numbers started from zero.
|
||
For example, partition <code class="filename">sda1</code> is
|
||
<span class="emphasis"><em>(hd0,1)</em></span> to GRUB and
|
||
<code class="filename">sdb3</code> is <span class=
|
||
"emphasis"><em>(hd1,3)</em></span>. In contrast to Linux,
|
||
GRUB does not consider CD-ROM drives to be hard drives. For
|
||
example, if using a CD on <code class="filename">hdb</code>
|
||
and a second hard drive on <code class="filename">hdc</code>,
|
||
that second hard drive would still be <span class=
|
||
"emphasis"><em>(hd1)</em></span>.
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
8.4.3. Setting Up the Configuration
|
||
</h3>
|
||
<p>
|
||
GRUB works by writing data to the first physical track of the
|
||
hard disk. This area is not part of any file system. The
|
||
programs there access GRUB modules in the boot partition. The
|
||
default location is /boot/grub/.
|
||
</p>
|
||
<p>
|
||
The location of the boot partition is a choice of the user
|
||
that affects the configuration. One recommendation is to have
|
||
a separate small (suggested size is 100 MB) partition just
|
||
for boot information. That way each build, whether LFS or
|
||
some commercial distro, can access the same boot files and
|
||
access can be made from any booted system. If you choose to
|
||
do this, you will need to mount the separate partition, move
|
||
all files in the current <code class="filename">/boot</code>
|
||
directory (e.g. the linux kernel you just built in the
|
||
previous section) to the new partition. You will then need to
|
||
unmount the partition and remount it as <code class=
|
||
"filename">/boot</code>. If you do this, be sure to update
|
||
<code class="filename">/etc/fstab</code>.
|
||
</p>
|
||
<p>
|
||
Using the current lfs partition will also work, but
|
||
configuration for multiple systems is more difficult.
|
||
</p>
|
||
<p>
|
||
Using the above information, determine the appropriate
|
||
designator for the root partition (or boot partition, if a
|
||
separate one is used). For the following example, it is
|
||
assumed that the root (or separate boot) partition is
|
||
<code class="filename">sda2</code>.
|
||
</p>
|
||
<p>
|
||
Install the GRUB files into <code class=
|
||
"filename">/boot/grub</code> and set up the boot track:
|
||
</p>
|
||
<div class="admon warning">
|
||
<h3>
|
||
Warning
|
||
</h3>
|
||
<p>
|
||
The following command will overwrite the current boot
|
||
loader. Do not run the command if this is not desired, for
|
||
example, if using a third party boot manager to manage the
|
||
Master Boot Record (MBR).
|
||
</p>
|
||
</div>
|
||
<pre class="userinput">
|
||
<kbd class="command">grub-install /dev/sda</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
If the system has been booted using UEFI, <span class=
|
||
"command"><strong>grub-install</strong></span> will try to
|
||
install files for the <span class=
|
||
"emphasis"><em>x86_64-efi</em></span> target, but those
|
||
files have not been installed in chapter 6. If this is the
|
||
case, add <code class="option">--target i386-pc</code> to
|
||
the command above.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<h3 class="sect2">
|
||
<a id="grub-cfg" name="grub-cfg"></a>8.4.4. Creating the GRUB
|
||
Configuration File
|
||
</h3>
|
||
<p>
|
||
Generate <code class="filename">/boot/grub/grub.cfg</code>:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /boot/grub/grub.cfg << "EOF"
|
||
<code class="literal"># Begin /boot/grub/grub.cfg
|
||
set default=0
|
||
set timeout=5
|
||
|
||
insmod ext2
|
||
set root=(hd0,2)
|
||
|
||
menuentry "GNU/Linux, Linux 5.5.3-lfs-9.1" {
|
||
linux /boot/vmlinuz-5.5.3-lfs-9.1 root=/dev/sda2 ro
|
||
}</code>
|
||
EOF</kbd>
|
||
</pre>
|
||
<div class="admon note">
|
||
<h3>
|
||
Note
|
||
</h3>
|
||
<p>
|
||
From <span class="application">GRUB</span>'s perspective,
|
||
the kernel files are relative to the partition used. If you
|
||
used a separate /boot partition, remove /boot from the
|
||
above <span class="emphasis"><em>linux</em></span> line.
|
||
You will also need to change the <span class=
|
||
"emphasis"><em>set root</em></span> line to point to the
|
||
boot partition.
|
||
</p>
|
||
</div>
|
||
<p>
|
||
GRUB is an extremely powerful program and it provides a
|
||
tremendous number of options for booting from a wide variety
|
||
of devices, operating systems, and partition types. There are
|
||
also many options for customization such as graphical splash
|
||
screens, playing sounds, mouse input, etc. The details of
|
||
these options are beyond the scope of this introduction.
|
||
</p>
|
||
<div class="admon caution">
|
||
<h3>
|
||
Caution
|
||
</h3>
|
||
<p>
|
||
There is a command, <span class=
|
||
"application">grub-mkconfig</span>, that can write a
|
||
configuration file automatically. It uses a set of scripts
|
||
in /etc/grub.d/ and will destroy any customizations that
|
||
you make. These scripts are designed primarily for
|
||
non-source distributions and are not recommended for LFS.
|
||
If you install a commercial Linux distribution, there is a
|
||
good chance that this program will be run. Be sure to back
|
||
up your grub.cfg file.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="chapter" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="chapter-finalizing" name=
|
||
"chapter-finalizing"></a>Chapter 9. The End
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-finish-theend" name=
|
||
"ch-finish-theend"></a>9.1. The End
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Well done! The new LFS system is installed! We wish you much
|
||
success with your shiny new custom-built Linux system.
|
||
</p>
|
||
<p>
|
||
It may be a good idea to create an <code class=
|
||
"filename">/etc/lfs-release</code> file. By having this file,
|
||
it is very easy for you (and for us if you need to ask for help
|
||
at some point) to find out which LFS version is installed on
|
||
the system. Create this file by running:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">echo 9.1 > /etc/lfs-release</kbd>
|
||
</pre>
|
||
<p>
|
||
Two files describing the installed system may be used by
|
||
packages that will be installed on the system, either in binary
|
||
form or by building them.
|
||
</p>
|
||
<p>
|
||
The first one shows the status of your new system with respect
|
||
to the Linux Standards Base (LSB). To create this file, run:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/lsb-release << "EOF"
|
||
DISTRIB_ID="Linux From Scratch"
|
||
DISTRIB_RELEASE="9.1"
|
||
DISTRIB_CODENAME="<your name here>"
|
||
DISTRIB_DESCRIPTION="Linux From Scratch"
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
The second one contains roughly the same information, and is
|
||
used by systemd and some graphical desktop environments. To
|
||
create this file, run:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">cat > /etc/os-release << "EOF"
|
||
NAME="Linux From Scratch"
|
||
VERSION="9.1"
|
||
ID=lfs
|
||
PRETTY_NAME="Linux From Scratch 9.1"
|
||
VERSION_CODENAME="<your name here>"
|
||
EOF</kbd>
|
||
</pre>
|
||
<p>
|
||
Be sure to put some sort of customization for the fields
|
||
'DISTRIB_CODENAME' and 'VERSION_CODENAME' to make the system
|
||
uniquely yours.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-finish-getcounted" name=
|
||
"ch-finish-getcounted"></a>9.2. Get Counted
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Now that you have finished the book, do you want to be counted
|
||
as an LFS user? Head over to <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/cgi-bin/lfscounter.php">http://www.linuxfromscratch.org/cgi-bin/lfscounter.php</a>
|
||
and register as an LFS user by entering your name and the first
|
||
LFS version you have used.
|
||
</p>
|
||
<p>
|
||
Let's reboot into LFS now.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-finish-reboot" name=
|
||
"ch-finish-reboot"></a>9.3. Rebooting the System
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Now that all of the software has been installed, it is time to
|
||
reboot your computer. However, you should be aware of a few
|
||
things. The system you have created in this book is quite
|
||
minimal, and most likely will not have the functionality you
|
||
would need to be able to continue forward. By installing a few
|
||
extra packages from the BLFS book while still in our current
|
||
chroot environment, you can leave yourself in a much better
|
||
position to continue on once you reboot into your new LFS
|
||
installation. Here are some suggestions:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
A text mode browser such as <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/basicnet/lynx.html">
|
||
Lynx</a> will allow you to easily view the BLFS book in
|
||
one virtual terminal, while building packages in another.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/general/gpm.html">
|
||
GPM</a> package will allow you to perform copy/paste
|
||
actions in your virtual terminals.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
If you are in a situation where static IP configuration
|
||
does not meet your networking requirements, installing a
|
||
package such as <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/basicnet/dhcpcd.html">
|
||
dhcpcd</a> or the client portion of <a class="ulink"
|
||
href="http://www.linuxfromscratch.org/blfs/view/9.1/basicnet/dhcp.html">
|
||
dhcp</a> may be useful.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Installing <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/sudo.html">
|
||
sudo</a> may be useful for building packages as a
|
||
non-root user and easily installing the resulting
|
||
packages in your new system.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
If you want to access your new system from a remote
|
||
system within a comfortable GUI environment, install
|
||
<a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/openssh.html">
|
||
openssh</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
To make fetching files over the internet easier, install
|
||
<a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/basicnet/wget.html">
|
||
wget</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
If one or more of your disk drives have a GUID partition
|
||
table (GPT), either <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/gptfdisk.html">
|
||
gptfdisk</a> or <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/9.1/postlfs/parted.html">
|
||
parted</a> will be useful.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Finally, a review of the following configuration files is
|
||
also appropriate at this point.
|
||
</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>
|
||
Now that we have said that, let's move on to booting our shiny
|
||
new LFS installation for the first time! First exit from the
|
||
chroot environment:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">logout</kbd>
|
||
</pre>
|
||
<p>
|
||
Then unmount the virtual file systems:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">umount -v $LFS/dev/pts
|
||
umount -v $LFS/dev
|
||
umount -v $LFS/run
|
||
umount -v $LFS/proc
|
||
umount -v $LFS/sys</kbd>
|
||
</pre>
|
||
<p>
|
||
Unmount the LFS file system itself:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">umount -v $LFS</kbd>
|
||
</pre>
|
||
<p>
|
||
If multiple partitions were created, unmount the other
|
||
partitions before unmounting the main one, like this:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">umount -v $LFS/usr
|
||
umount -v $LFS/home
|
||
umount -v $LFS</kbd>
|
||
</pre>
|
||
<p>
|
||
Now, reboot the system with:
|
||
</p>
|
||
<pre class="userinput">
|
||
<kbd class="command">shutdown -r now</kbd>
|
||
</pre>
|
||
<p>
|
||
Assuming the GRUB boot loader was set up as outlined earlier,
|
||
the menu is set to boot <span class="emphasis"><em>LFS
|
||
9.1</em></span> automatically.
|
||
</p>
|
||
<p>
|
||
When the reboot is complete, the LFS system is ready for use
|
||
and more software may be added to suit your needs.
|
||
</p>
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ch-finish-whatnow" name=
|
||
"ch-finish-whatnow"></a>9.4. What Now?
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Thank you for reading this LFS book. We hope that you have
|
||
found this book helpful and have learned more about the system
|
||
creation process.
|
||
</p>
|
||
<p>
|
||
Now that the LFS system is installed, you may be wondering
|
||
<span class="quote">“<span class="quote">What
|
||
next?</span>”</span> To answer that question, we have
|
||
compiled a list of resources for you.
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
Maintenance
|
||
</p>
|
||
<p>
|
||
Bugs and security notices are reported regularly for all
|
||
software. Since an LFS system is compiled from source, it
|
||
is up to you to keep abreast of such reports. There are
|
||
several online resources that track such reports, some of
|
||
which are shown below:
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"http://www.cert.org/">CERT</a> (Computer Emergency
|
||
Response Team)
|
||
</p>
|
||
<p>
|
||
CERT has a mailing list that publishes security
|
||
alerts concerning various operating systems and
|
||
applications. Subscription information is available
|
||
at <a class="ulink" href=
|
||
"http://www.us-cert.gov/cas/signup.html">http://www.us-cert.gov/cas/signup.html</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Bugtraq
|
||
</p>
|
||
<p>
|
||
Bugtraq is a full-disclosure computer security
|
||
mailing list. It publishes newly discovered
|
||
security issues, and occasionally potential fixes
|
||
for them. Subscription information is available at
|
||
<a class="ulink" href=
|
||
"http://www.securityfocus.com/archive">http://www.securityfocus.com/archive</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Beyond Linux From Scratch
|
||
</p>
|
||
<p>
|
||
The Beyond Linux From Scratch book covers installation
|
||
procedures for a wide range of software beyond the scope
|
||
of the LFS Book. The BLFS project is located at <a class=
|
||
"ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/">http://www.linuxfromscratch.org/blfs/</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
LFS Hints
|
||
</p>
|
||
<p>
|
||
The LFS Hints are a collection of educational documents
|
||
submitted by volunteers in the LFS community. The hints
|
||
are available at <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/hints/list.html">http://www.linuxfromscratch.org/hints/list.html</a>.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Mailing lists
|
||
</p>
|
||
<p>
|
||
There are several LFS mailing lists you may subscribe to
|
||
if you are in need of help, want to stay current with the
|
||
latest developments, want to contribute to the project,
|
||
and more. See <a class="xref" href="#ch-intro-maillists"
|
||
title="1.4.2. Mailing Lists">Chapter 1 -
|
||
Mailing Lists</a> for more information.
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
The Linux Documentation Project
|
||
</p>
|
||
<p>
|
||
The goal of The Linux Documentation Project (TLDP) is to
|
||
collaborate on all of the issues of Linux documentation.
|
||
The TLDP features a large collection of HOWTOs, guides,
|
||
and man pages. It is located at <a class="ulink" href=
|
||
"http://www.tldp.org/">http://www.tldp.org/</a>.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="part">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h1 class="title">
|
||
<a id="part4" name="part4"></a>Part IV. Appendices
|
||
</h1>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="appendix">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="appendixa" name=
|
||
"appendixa"></a>Appendix A. Acronyms and Terms
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<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
|
||
</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
|
||
</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
|
||
</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
|
||
</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
|
||
</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
|
||
</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
|
||
</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
|
||
</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="appendix">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="appendixb" name=
|
||
"appendixb"></a>Appendix B. Acknowledgments
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
We would like to thank the following people and organizations for
|
||
their contributions to the Linux From Scratch Project.
|
||
</p>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:gerard@linuxfromscratch.org">Gerard Beekmans</a>
|
||
<gerard AT linuxfromscratch D0T org> – LFS Creator
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:bdubbs@linuxfromscratch.org">Bruce Dubbs</a>
|
||
<bdubbs AT linuxfromscratch D0T org> – LFS Managing
|
||
Editor
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:jim@linuxfromscratch.org">Jim
|
||
Gifford</a> <jim AT linuxfromscratch D0T org> – CLFS
|
||
Project Co-Leader
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:pierre@linuxfromscratch.org">Pierre Labastie</a>
|
||
<pierre AT linuxfromscratch D0T org> – BLFS Editor and
|
||
ALFS Lead
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:dj@linuxfromscratch.org">DJ
|
||
Lucas</a> <dj AT linuxfromscratch D0T org> – LFS and
|
||
BLFS Editor
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:ken@linuxfromscratch.org">Ken
|
||
Moffat</a> <ken AT linuxfromscratch D0T org> – BLFS
|
||
Editor
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Countless other people on the various LFS and BLFS mailing
|
||
lists who helped make this book possible by giving their
|
||
suggestions, testing the book, and submitting bug reports,
|
||
instructions, and their experiences with installing various
|
||
packages.
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<h3>
|
||
<a id="idm46504921844912" name=
|
||
"idm46504921844912"></a>Translators
|
||
</h3>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:macana@macana-es.com">Manuel
|
||
Canales Esparcia</a> <macana AT macana-es D0T com> –
|
||
Spanish LFS translation project
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:johan@linuxfromscratch.org">Johan Lenglet</a>
|
||
<johan AT linuxfromscratch D0T org> – French LFS
|
||
translation project until 2008
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:jmengual@linuxfromscratch.org">Jean-Philippe
|
||
Mengual</a> <jmengual AT linuxfromscratch D0T org> –
|
||
French LFS translation project 2008-2016
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:jlepiller@linuxfromscratch.org">Julien Lepiller</a>
|
||
<jlepiller AT linuxfromscratch D0T org> – French LFS
|
||
translation project 2017-present
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:lizardo@linuxfromscratch.org">Anderson Lizardo</a>
|
||
<lizardo AT linuxfromscratch D0T org> – Portuguese LFS
|
||
translation project
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:tr@erdfunkstelle.de">Thomas
|
||
Reitelbach</a> <tr AT erdfunkstelle D0T de> – German
|
||
LFS translation project
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:info@linuxfromscratch.org.ru">Anton Maisak</a>
|
||
<info AT linuxfromscratch D0T org D0T ru> – Russian LFS
|
||
translation project
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:helen@linuxfromscratch.org.ru">Elena Shevcova</a>
|
||
<helen AT linuxfromscratch D0T org D0T ru> – Russian LFS
|
||
translation project
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<h3>
|
||
<a id="idm46504921831408" name="idm46504921831408"></a>Mirror
|
||
Maintainers
|
||
</h3>
|
||
<h4>
|
||
<a id="idm46504921830720" name="idm46504921830720"></a>North
|
||
American Mirrors
|
||
</h4>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:scott@osuosl.org">Scott
|
||
Kveton</a> <scott AT osuosl D0T org> –
|
||
lfs.oregonstate.edu mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:lost@l-w.net">William
|
||
Astle</a> <lost AT l-w D0T net> –
|
||
ca.linuxfromscratch.org mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:eujon.sellers@gmail.com">Eujon Sellers</a>
|
||
<jpolen@rackspace.com> – lfs.introspeed.com
|
||
mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:justin@knierim.org">Justin
|
||
Knierim</a> <tim@idge.net> – lfs-matrix.net
|
||
mirror
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<h4>
|
||
<a id="idm46504921823968" name="idm46504921823968"></a>South
|
||
American Mirrors
|
||
</h4>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:manuel@linuxfromscratch.org">Manuel Canales
|
||
Esparcia</a> <manuel AT linuxfromscratch D0T org> –
|
||
lfsmirror.lfs-es.info mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:lfalcon@thymbra.com">Luis
|
||
Falcon</a> <Luis Falcon> – torredehanoi.org
|
||
mirror
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<h4>
|
||
<a id="idm46504921819888" name="idm46504921819888"></a>European
|
||
Mirrors
|
||
</h4>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:guido@primerelay.net">Guido
|
||
Passet</a> <guido AT primerelay D0T net> –
|
||
nl.linuxfromscratch.org mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:baafie@planet.nl">Bastiaan
|
||
Jacques</a> <baafie AT planet D0T nl> –
|
||
lfs.pagefault.net mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:sven.cranshoff@lineo.be">Sven
|
||
Cranshoff</a> <sven D0T cranshoff AT lineo D0T be> –
|
||
lfs.lineo.be mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Scarlet Belgium – lfs.scarlet.be mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:info@aliensoft.org">Sebastian
|
||
Faulborn</a> <info AT aliensoft D0T org> –
|
||
lfs.aliensoft.org mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:stuart@dontuse.ms">Stuart
|
||
Fox</a> <stuart AT dontuse D0T ms> – lfs.dontuse.ms
|
||
mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:admin@realhost.de">Ralf
|
||
Uhlemann</a> <admin AT realhost D0T de> –
|
||
lfs.oss-mirror.org mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:Antonin.Sprinzl@tuwien.ac.at">Antonin Sprinzl</a>
|
||
<Antonin D0T Sprinzl AT tuwien D0T ac D0T at> –
|
||
at.linuxfromscratch.org mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:fredan-lfs@fredan.org">Fredrik Danerklint</a>
|
||
<fredan-lfs AT fredan D0T org> –
|
||
se.linuxfromscratch.org mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:franck@linuxpourtous.com">Franck</a>
|
||
<franck AT linuxpourtous D0T com> –
|
||
lfs.linuxpourtous.com mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:baque@cict.fr">Philippe
|
||
Baque</a> <baque AT cict D0T fr> – lfs.cict.fr mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:gyouja@pilgrims.ru">Vitaly
|
||
Chekasin</a> <gyouja AT pilgrims D0T ru> –
|
||
lfs.pilgrims.ru mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:kontakt@wankoo.org">Benjamin
|
||
Heil</a> <kontakt AT wankoo D0T org> – lfs.wankoo.org
|
||
mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:info@linuxfromscratch.org.ru">Anton Maisak</a>
|
||
<info AT linuxfromscratch D0T org D0T ru> –
|
||
linuxfromscratch.org.ru mirror
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<h4>
|
||
<a id="idm46504921799104" name="idm46504921799104"></a>Asian
|
||
Mirrors
|
||
</h4>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:satit@wbac.ac.th">Satit
|
||
Phermsawang</a> <satit AT wbac D0T ac D0T th> –
|
||
lfs.phayoune.org mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:info@shizu-net.jp">Shizunet
|
||
Co.,Ltd.</a> <info AT shizu-net D0T jp> –
|
||
lfs.mirror.shizu-net.jp mirror
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="http://www.initworld.com/">Init
|
||
World</a> <http://www.initworld.com/> –
|
||
lfs.initworld.com mirror
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<h4>
|
||
<a id="idm46504921793760" name="idm46504921793760"></a>Australian
|
||
Mirrors
|
||
</h4>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:jason@dstc.edu.au">Jason
|
||
Andrade</a> <jason AT dstc D0T edu D0T au> –
|
||
au.linuxfromscratch.org mirror
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<h3>
|
||
<a id="idm46504921791264" name="idm46504921791264"></a>Former
|
||
Project Team Members
|
||
</h3>
|
||
<div class="itemizedlist">
|
||
<ul>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:theladyskye@linuxfromscratch.org">Christine
|
||
Barczak</a> <theladyskye AT linuxfromscratch D0T org>
|
||
– LFS Book Editor
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Archaic <archaic@linuxfromscratch.org> – LFS
|
||
Technical Writer/Editor, HLFS Project Leader, BLFS Editor,
|
||
Hints and Patches Project Maintainer
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:matthew@linuxfromscratch.org">Matthew Burgess</a>
|
||
<matthew AT linuxfromscratch D0T org> – LFS Project
|
||
Leader, LFS Technical Writer/Editor
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:nathan@linuxfromscratch.org">Nathan Coulson</a>
|
||
<nathan AT linuxfromscratch D0T org> – LFS-Bootscripts
|
||
Maintainer
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Timothy Bauscher
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Robert Briggs
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Ian Chilton
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:jeroen@linuxfromscratch.org">Jeroen Coumans</a>
|
||
<jeroen AT linuxfromscratch D0T org> – Website
|
||
Developer, FAQ Maintainer
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:manuel@linuxfromscratch.org">Manuel Canales
|
||
Esparcia</a> <manuel AT linuxfromscratch D0T org> –
|
||
LFS/BLFS/HLFS XML and XSL Maintainer
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Alex Groenewoud – LFS Technical Writer
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Marc Heerdink
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:jhuntwork@linuxfromscratch.org">Jeremy Huntwork</a>
|
||
<jhuntwork AT linuxfromscratch D0T org> – LFS
|
||
Technical Writer, LFS LiveCD Maintainer
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:bryan@linuxfromscratch.org">Bryan Kadzban</a>
|
||
<bryan AT linuxfromscratch D0T org> – LFS Technical
|
||
Writer
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Mark Hymers
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Seth W. Klein – FAQ maintainer
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:nicholas@linuxfromscratch.org">Nicholas Leippe</a>
|
||
<nicholas AT linuxfromscratch D0T org> – Wiki
|
||
Maintainer
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:lizardo@linuxfromscratch.org">Anderson Lizardo</a>
|
||
<lizardo AT linuxfromscratch D0T org> – Website
|
||
Backend-Scripts Maintainer
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:randy@linuxfromscratch.org">Randy McMurchy</a>
|
||
<randy AT linuxfromscratch D0T org> – BLFS Project
|
||
Leader, LFS Editor
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:dnicholson@linuxfromscratch.org">Dan Nicholson</a>
|
||
<dnicholson AT linuxfromscratch D0T org> – LFS and
|
||
BLFS Editor
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:alexander@linuxfromscratch.org">Alexander E.
|
||
Patrakov</a> <alexander AT linuxfromscratch D0T org> –
|
||
LFS Technical Writer, LFS Internationalization Editor, LFS
|
||
Live CD Maintainer
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Simon Perreault
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:scot@linuxfromscratch.org">Scot Mc Pherson</a>
|
||
<scot AT linuxfromscratch D0T org> – LFS NNTP Gateway
|
||
Maintainer
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:renodr@linuxfromscratch.org">Douglas R. Reno</a>
|
||
<renodr AT linuxfromscratch D0T org> – Systemd Editor
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:ryan@linuxfromscratch.org">Ryan Oliver</a>
|
||
<ryan AT linuxfromscratch D0T org> – CLFS Project
|
||
Co-Leader
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:gschafer@zip.com.au">Greg
|
||
Schafer</a> <gschafer AT zip D0T com D0T au> – LFS
|
||
Technical Writer and Architect of the Next Generation
|
||
64-bit-enabling Build Method
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
Jesse Tie-Ten-Quee – LFS Technical Writer
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:jwrober@linuxfromscratch.org">James Robertson</a>
|
||
<jwrober AT linuxfromscratch D0T org> – Bugzilla
|
||
Maintainer
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:tushar@linuxfromscratch.org">Tushar Teredesai</a>
|
||
<tushar AT linuxfromscratch D0T org> – BLFS Book
|
||
Editor, Hints and Patches Project Leader
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href=
|
||
"mailto:jeremy@linuxfromscratch.org">Jeremy Utley</a>
|
||
<jeremy AT linuxfromscratch D0T org> – LFS Technical
|
||
Writer, Bugzilla Maintainer, LFS-Bootscripts Maintainer
|
||
</p>
|
||
</li>
|
||
<li class="listitem">
|
||
<p>
|
||
<a class="ulink" href="mailto:zwinkles@gmail.com">Zack
|
||
Winkles</a> <zwinkles AT gmail D0T com> – LFS
|
||
Technical Writer
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="appendix">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="appendixc" name=
|
||
"appendixc"></a>Appendix C. Dependencies
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Every package built in LFS relies on one or more other packages
|
||
in order to build and install properly. Some packages even
|
||
participate in circular dependencies, that is, the first package
|
||
depends on the second which in turn depends on the first. Because
|
||
of these dependencies, the order in which packages are built in
|
||
LFS is very important. The purpose of this page is to document
|
||
the dependencies of each package built in LFS.
|
||
</p>
|
||
<p>
|
||
For each package we build, we have listed three, and sometimes
|
||
four, types of dependencies. The first lists what other packages
|
||
need to be available in order to compile and install the package
|
||
in question. The second lists what packages, in addition to those
|
||
on the first list, need to be available in order to run the test
|
||
suites. The third list of dependencies are packages that require
|
||
this package to be built and installed in its final location
|
||
before they are built and installed. In most cases, this is
|
||
because these packages will hard code paths to binaries within
|
||
their scripts. If not built in a certain order, this could result
|
||
in paths of /tools/bin/[binary] being placed inside scripts
|
||
installed to the final system. This is obviously not desirable.
|
||
</p>
|
||
<p>
|
||
The last list of dependencies are optional packages that are not
|
||
addressed in LFS, but could be useful to the user. These packages
|
||
may have additional mandatory or optional dependencies of their
|
||
own. For these dependencies, the recommended practice is to
|
||
install them after completion of the LFS book and then go back
|
||
and rebuild the LFS package. In several cases, re-installation is
|
||
addressed in BLFS.
|
||
</p>
|
||
<h3>
|
||
<a id="acl-dep" name="acl-dep"></a>Acl
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Attr, Bash, Binutils, Coreutils, GCC,
|
||
Gettext, Grep, M4, Make, Perl, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Automake, Diffutils, Findutils, and
|
||
Libtool</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Coreutils, Sed, Tar, and Vim</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="attr-dep" name="attr-dep"></a>Attr
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC,
|
||
Gettext, Grep, M4, Make, Perl, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Automake, Diffutils, Findutils, and
|
||
Libtool</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Acl and Libcap</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="autoconf-dep" name="autoconf-dep"></a>Autoconf
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Coreutils, Grep, M4, Make, Perl,
|
||
Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Automake, Diffutils, Findutils, GCC,
|
||
and Libtool</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Automake</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">Emacs</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="automake-dep" name="automake-dep"></a>Automake
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Autoconf, Bash, Coreutils, Gettext,
|
||
Grep, M4, Make, Perl, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Binutils, Bison, Bzip2, DejaGNU,
|
||
Diffutils, Expect, Findutils, Flex, GCC, Gettext, Gzip,
|
||
Libtool, and Tar</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="bash-dep" name="bash-dep"></a>Bash
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Bison, Coreutils,
|
||
Diffutils, Gawk, GCC, Glibc, Grep, Make, Ncurses, Patch,
|
||
Readline, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Shadow</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">Xorg</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="bc-dep" name="bc-dep"></a>Bc
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Bison, Coreutils, GCC,
|
||
Glibc, Grep, Make, Perl, and Readline</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Gawk</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Linux Kernel</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="binutils-dep" name="binutils-dep"></a>Binutils
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
File, Gawk, GCC, Glibc, Grep, Make, Perl, Sed, Texinfo and
|
||
Zlib</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">DejaGNU and Expect</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="bison-dep" name="bison-dep"></a>Bison
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC,
|
||
Gettext, Glibc, Grep, M4, Make, Perl, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Diffutils, Findutils, and Flex</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Kbd and Tar</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">Doxygen (test suite)</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="bzip2-dep" name="bzip2-dep"></a>Bzip2
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
GCC, Glibc, Make, and Patch</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">File</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="check-dep" name="check-dep"></a>Check
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">GCC, Grep, Make, Sed, and
|
||
Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="coreutils-dep" name="coreutils-dep"></a>Coreutils
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC,
|
||
Gettext, Glibc, GMP, Grep, Libcap, Make, Patch, Perl, Sed,
|
||
and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Diffutils, E2fsprogs, Findutils,
|
||
Shadow, and Util-linux</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Bash, Diffutils, Eudev, Findutils, and
|
||
Man-DB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">Perl Expect and IO:Tty modules (for
|
||
test suite)</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="dejagnu-dep" name="dejagnu-dep"></a>DejaGNU
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Coreutils, Diffutils, GCC, Grep,
|
||
Make, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="diffutils-dep" name="diffutils-dep"></a>Diffutils
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Gawk, GCC,
|
||
Gettext, Glibc, Grep, Make, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Perl</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="e2fsprogs-dep" name="e2fsprogs-dep"></a>E2fsprogs
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
Gawk, GCC, Glibc, Grep, Gzip, Make, Sed, Texinfo, and
|
||
Util-linux</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Procps-ng and Psmisc</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="eudev-dep" name="eudev-dep"></a>Eudev
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Gawk, GCC,
|
||
Glibc, Grep, Gperf, Make, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="expat-dep" name="expat-dep"></a>Expat
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Gawk, GCC,
|
||
Glibc, Grep, Make, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">XML::Parser</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="expect-dep" name="expect-dep"></a>Expect
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
GCC, Glibc, Grep, Make, Patch, Sed, and Tcl</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="file-dep" name="file-dep"></a>File
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Bzip2, Coreutils,
|
||
Diffutils, Gawk, GCC, Glibc, Grep, Make, Sed, Xz, and
|
||
Zlib</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="findutils-dep" name="findutils-dep"></a>Findutils
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC,
|
||
Gettext, Glibc, Grep, Make, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">DejaGNU, Diffutils, and Expect</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="flex-dep" name="flex-dep"></a>Flex
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC,
|
||
Gettext, Glibc, Grep, M4, Make, Patch, Sed, and
|
||
Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Bison and Gawk</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">IPRoute2, Kbd, and Man-DB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="gawk-dep" name="gawk-dep"></a>Gawk
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC,
|
||
Gettext, Glibc, GMP, Grep, Make, MPFR, Patch, Readline, Sed,
|
||
and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Diffutils</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="gcc-dep" name="gcc-dep"></a>Gcc
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
Findutils, Gawk, GCC, Gettext, Glibc, GMP, Grep, M4, Make,
|
||
MPC, MPFR, Patch, Perl, Sed, Tar, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">DejaGNU, Expect, and Shadow</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody"><a class="ulink" href=
|
||
"http://gcc.gnu.org/wiki/GNAT">GNAT</a> and <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">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
GCC, Grep, Make, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="gettext-dep" name="gettext-dep"></a>Gettext
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Gawk, GCC,
|
||
Glibc, Grep, Make, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Diffutils, Perl, and Tcl</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Automake</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="glibc-dep" name="glibc-dep"></a>Glibc
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
Gawk, GCC, Gettext, Grep, Gzip, Linux API Headers, Make,
|
||
Perl, Python, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">File</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="gmp-dep" name="gmp-dep"></a>GMP
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
Gawk, GCC, Glibc, Grep, M4, Make, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">MPFR and GCC</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="gperf-dep" name="gperf-dep"></a>Gperf
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc,
|
||
and Make</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Diffutils and Expect</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="grep-dep" name="grep-dep"></a>Grep
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
GCC, Gettext, Glibc, Grep, Make, Patch, Sed, and
|
||
Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Gawk</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Man-DB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">Pcre</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="groff-dep" name="groff-dep"></a>Groff
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Bison, Coreutils, Gawk,
|
||
GCC, Glibc, Grep, Make, Patch, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Man-DB and Perl</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">Ghostscript</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="grub-dep" name="grub-dep"></a>GRUB
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Bison, Coreutils,
|
||
Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed,
|
||
Texinfo, and Xz</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="gzip-dep" name="gzip-dep"></a>Gzip
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc,
|
||
Grep, Make, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Diffutils and Less</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Man-DB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="iana-etc-dep" name="iana-etc-dep"></a>Iana-Etc
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Coreutils, Gawk, and Make</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Perl</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="inetutils-dep" name="inetutils-dep"></a>Inetutils
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc,
|
||
Grep, Make, Ncurses, Patch, Sed, Texinfo, and Zlib</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Tar</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="intltool-dep" name="intltool-dep"></a>Intltool
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Gawk, Glibc, Make, Perl, Sed, and
|
||
XML::Parser</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Perl</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="iproute2-dep" name="iproute2-dep"></a>IProute2
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Bison, Coreutils, Flex, GCC,
|
||
Glibc, Make, and Linux API Headers</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="kbd-dep" name="kbd-dep"></a>Kbd
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Bison, Check,
|
||
Coreutils, Flex, GCC, Gettext, Glibc, Gzip, Make, Patch, and
|
||
Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="kmod-dep" name="kmod-dep"></a>Kmod
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Bison, Coreutils, Flex,
|
||
GCC, Gettext, Glibc, Gzip, Make, Pkg-config, Sed, Xz-Utils,
|
||
and Zlib</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Eudev</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="less-dep" name="less-dep"></a>Less
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
GCC, Glibc, Grep, Make, Ncurses, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Gzip</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">Pcre</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="libcap-dep" name="libcap-dep"></a>Libcap
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Attr, Bash, Binutils, Coreutils, GCC,
|
||
Glibc, Perl, Make, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">Linux-PAM</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="libelf-dep" name="libelf-dep"></a>Libelf
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc,
|
||
and Make</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Linux Kernel</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="libffi-dep" name="libffi-dep"></a>Libffi
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc,
|
||
Make, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">DejaGnu</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Python</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="libpipeline-dep" name="libpipeline-dep"></a>Libpipeline
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
Gawk, GCC, Glibc, Grep, Make, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Check</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Man-DB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="libtool-dep" name="libtool-dep"></a>Libtool
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
Gawk, GCC, Glibc, Grep, Make, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Autoconf, Automake, and
|
||
Findutils</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="linux-dep" name="linux-dep"></a>Linux Kernel
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Bc, Binutils, Coreutils,
|
||
Diffutils, Findutils, GCC, Glibc, Grep, Gzip, Kmod, Libelf,
|
||
Make, Ncurses, OpenSSL, Perl, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="m4-dep" name="m4-dep"></a>M4
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc,
|
||
Grep, Make, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Diffutils</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Autoconf and Bison</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">libsigsegv</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="make-dep" name="make-dep"></a>Make
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC,
|
||
Gettext, Glibc, Grep, Make, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Perl and Procps-ng</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="man-db-dep" name="man-db-dep"></a>Man-DB
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Bzip2, Coreutils, Flex,
|
||
GCC, GDBM, Gettext, Glibc, Grep, Groff, Gzip, Less,
|
||
Libpipeline, Make, Sed, and Xz</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Util-linux</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="man-pages-dep" name="man-pages-dep"></a>Man-Pages
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Coreutils, and Make</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="meson-dep" name="meson-dep"></a>Meson
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Ninja and Python</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Systemd</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="mpc-dep" name="mpc-dep"></a>MPC
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
Gawk, GCC, Glibc, Grep, GMP, Make, MPFR, Sed, and
|
||
Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">GCC</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="mpfr-dep" name="mpfr-dep"></a>MPFR
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
Gawk, GCC, Glibc, Grep, GMP, Make, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Gawk and GCC</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="ncurses-dep" name="ncurses-dep"></a>Ncurses
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
Gawk, GCC, Glibc, Grep, Make, Patch, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Bash, GRUB, Inetutils, Less, Procps-ng,
|
||
Psmisc, Readline, Texinfo, Util-linux, and Vim</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="ninja-dep" name="ninja-dep"></a>Ninja
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Binutils, Coreutils, Gcc, and
|
||
Python</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Meson</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">Asciidoc, Doxygen, Emacs, and
|
||
re2c</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="openssl-dep" name="openssl-dep"></a>Openssl
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Binutils, Coreutils, Gcc, Make, and
|
||
Perl</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Linux</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="patch-dep" name="patch-dep"></a>Patch
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc,
|
||
Grep, Make, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Diffutils</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">Ed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="perl-dep" name="perl-dep"></a>Perl
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Gawk, GCC,
|
||
GDBM, Glibc, Grep, Groff, Make, Sed, and Zlib</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Iana-Etc and Procps-ng</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Autoconf</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="pkgconfig-dep" name="pkgconfig-dep"></a>Pkg-config
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Gawk, GCC,
|
||
Glibc, Grep, Make, Popt, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Kmod</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="popt-dep" name="popt-dep"></a>Popt
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Gawk, GCC,
|
||
Glibc, Grep, and Make</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Diffutils and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Pkg-config</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="procps-dep" name="procps-dep"></a>Procps-ng
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc,
|
||
Make, and Ncurses</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">DejaGNU</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="psmisc-dep" name="psmisc-dep"></a>Psmisc
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC,
|
||
Gettext, Glibc, Grep, Make, Ncurses, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="python-dep" name="python-dep"></a>Python
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC, Gdbm,
|
||
Gettext, Glibc, Grep, Libffi, Make, Ncurses, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">GDB and Valgrind</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Ninja</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">Berkeley DB, OpenSSL, SQLite, and
|
||
Tk</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="readline-dep" name="readline-dep"></a>Readline
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Gawk, GCC,
|
||
Glibc, Grep, Make, Ncurses, Patch, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Bash and Gawk</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="sed-dep" name="sed-dep"></a>Sed
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC,
|
||
Gettext, Glibc, Grep, Make, Sed, and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Diffutils and Gawk</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">E2fsprogs, File, Libtool, and
|
||
Shadow</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="shadow-dep" name="shadow-dep"></a>Shadow
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Acl, Attr, Bash, Binutils, Coreutils,
|
||
Diffutils, Findutils, Gawk, GCC, Gettext, Glibc, Grep, Make,
|
||
and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Coreutils</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">Cracklib, and PAM</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="sysklogd-dep" name="sysklogd-dep"></a>Sysklogd
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Binutils, Coreutils, GCC, Glibc, Make,
|
||
and Patch</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="systemd-dep" name="systemd-dep"></a>Systemd
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Acl, Attr, Bash, Binutils, Coreutils,
|
||
Diffutils, Expat, Gawk, GCC, Glibc, Gperf, Grep, Intltool,
|
||
Libcap, Meson, Sed, and Util-linux</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">Many, see <a class="ulink" href=
|
||
"http://www.linuxfromscratch.org/blfs/view/systemd/general/systemd.html">
|
||
BLFS systemd page</a></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="sysvinit-dep" name="sysvinit-dep"></a>Sysvinit
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Binutils, Coreutils, GCC, Glibc, Make,
|
||
and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">No test suite available</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="tar-dep" name="tar-dep"></a>Tar
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Acl, Attr, Bash, Binutils, Bison,
|
||
Coreutils, GCC, Gettext, Glibc, Grep, Inetutils, Make, Sed,
|
||
and Texinfo</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Autoconf, Diffutils, Findutils, Gawk,
|
||
and Gzip</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="tcl-dep" name="tcl-dep"></a>Tcl
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
GCC, Glibc, Grep, Make, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="texinfo-dep" name="texinfo-dep"></a>Texinfo
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC,
|
||
Gettext, Glibc, Grep, Make, Ncurses, Patch, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="util-linux-dep" name="util-linux-dep"></a>Util-linux
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
Eudev, Findutils, Gawk, GCC, Gettext, Glibc, Grep, Make,
|
||
Ncurses, Sed, and Zlib</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody"><a class="ulink" href=
|
||
"https://people.redhat.com/sgrubb/libcap-ng/">Libcap-ng</a></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="vim-dep" name="vim-dep"></a>Vim
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Acl, Attr, Bash, Binutils, Coreutils,
|
||
Diffutils, GCC, Glibc, Grep, Make, Ncurses, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">Xorg, GTK+2, LessTif, Python, Tcl,
|
||
Ruby, and GPM</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="xml-parser-dep" name="xml-parser-dep"></a>XML::Parser
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Expat, GCC,
|
||
Glibc, Make, and Perl</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">Perl</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Intltool</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="xz-dep" name="xz-dep"></a>Xz
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, Diffutils,
|
||
GCC, Glibc, and Make</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">Eudev, File, GRUB, Kmod, and
|
||
Man-DB</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="zlib-dep" name="zlib-dep"></a>Zlib
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Bash, Binutils, Coreutils, GCC, Glibc,
|
||
Make, and Sed</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">File, Kmod, Perl, and Util-linux</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<h3>
|
||
<a id="zstd-dep" name="zstd-dep"></a>Zstd
|
||
</h3>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Installation depends on:</strong>
|
||
<span class="segbody">Binutils, Coreutils, GCC, Glibc, Gzip,
|
||
Make, and Xz</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Test suite depends on:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Must be installed before:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="segmentedlist">
|
||
<div class="seglistitem">
|
||
<div class="seg">
|
||
<strong class="segtitle">Optional dependencies:</strong>
|
||
<span class="segbody">None</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="appendix">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="scripts" name=
|
||
"scripts"></a>Appendix D. Boot and sysconfig
|
||
scripts version-20191031
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The scripts in this appendix are listed by the directory where
|
||
they normally reside. The order is <code class=
|
||
"filename">/etc/rc.d/init.d</code>, <code class=
|
||
"filename">/etc/sysconfig</code>, <code class=
|
||
"filename">/etc/sysconfig/network-devices</code>, and
|
||
<code class="filename">/etc/sysconfig/network-devices/services</code>.
|
||
Within each section, the files are listed in the order they are
|
||
normally called.
|
||
</p>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<p>
|
||
The <code class="systemitem">rc</code> script is the first
|
||
script called by <span class="application">init</span> and
|
||
initiates the boot process.
|
||
</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
|
||
# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
|
||
#
|
||
# Version : LFS 7.0
|
||
#
|
||
########################################################################
|
||
|
||
. /lib/lsb/init-functions
|
||
|
||
print_error_msg()
|
||
{
|
||
log_failure_msg
|
||
# $i is set when called
|
||
MSG="FAILURE:\n\nYou should not be reading this error message.\n\n"
|
||
MSG="${MSG}It means that an unforeseen error took place in\n"
|
||
MSG="${MSG}${i},\n"
|
||
MSG="${MSG}which exited with a return value of ${error_value}.\n"
|
||
|
||
MSG="${MSG}If you're able to track this error down to a bug in one of\n"
|
||
MSG="${MSG}the files provided by the ${DISTRO_MINI} book,\n"
|
||
MSG="${MSG}please be so kind to inform us at ${DISTRO_CONTACT}.\n"
|
||
log_failure_msg "${MSG}"
|
||
|
||
log_info_msg "Press Enter to continue..."
|
||
wait_for_user
|
||
}
|
||
|
||
check_script_status()
|
||
{
|
||
# $i is set when called
|
||
if [ ! -f ${i} ]; then
|
||
log_warning_msg "${i} is not a valid symlink."
|
||
SCRIPT_STAT="1"
|
||
fi
|
||
|
||
if [ ! -x ${i} ]; then
|
||
log_warning_msg "${i} is not executable, skipping."
|
||
SCRIPT_STAT="1"
|
||
fi
|
||
}
|
||
|
||
run()
|
||
{
|
||
if [ -z $interactive ]; then
|
||
${1} ${2}
|
||
return $?
|
||
fi
|
||
|
||
while true; do
|
||
read -p "Run ${1} ${2} (Yes/no/continue)? " -n 1 runit
|
||
echo
|
||
|
||
case ${runit} in
|
||
c | C)
|
||
interactive=""
|
||
${i} ${2}
|
||
ret=${?}
|
||
break;
|
||
;;
|
||
|
||
n | N)
|
||
return 0
|
||
;;
|
||
|
||
y | Y)
|
||
${i} ${2}
|
||
ret=${?}
|
||
break
|
||
;;
|
||
esac
|
||
done
|
||
|
||
return $ret
|
||
}
|
||
|
||
# Read any local settings/overrides
|
||
[ -r /etc/sysconfig/rc.site ] && source /etc/sysconfig/rc.site
|
||
|
||
DISTRO=${DISTRO:-"Linux From Scratch"}
|
||
DISTRO_CONTACT=${DISTRO_CONTACT:-"lfs-dev@linuxfromscratch.org (Registration required)"}
|
||
DISTRO_MINI=${DISTRO_MINI:-"LFS"}
|
||
IPROMPT=${IPROMPT:-"no"}
|
||
|
||
# These 3 signals will not cause our script to exit
|
||
trap "" INT QUIT TSTP
|
||
|
||
[ "${1}" != "" ] && runlevel=${1}
|
||
|
||
if [ "${runlevel}" == "" ]; then
|
||
echo "Usage: ${0} <runlevel>" >&2
|
||
exit 1
|
||
fi
|
||
|
||
previous=${PREVLEVEL}
|
||
[ "${previous}" == "" ] && previous=N
|
||
|
||
if [ ! -d /etc/rc.d/rc${runlevel}.d ]; then
|
||
log_info_msg "/etc/rc.d/rc${runlevel}.d does not exist.\n"
|
||
exit 1
|
||
fi
|
||
|
||
if [ "$runlevel" == "6" -o "$runlevel" == "0" ]; then IPROMPT="no"; fi
|
||
|
||
# Note: In ${LOGLEVEL:-7}, it is ':' 'dash' '7', not minus 7
|
||
if [ "$runlevel" == "S" ]; then
|
||
[ -r /etc/sysconfig/console ] && source /etc/sysconfig/console
|
||
dmesg -n "${LOGLEVEL:-7}"
|
||
fi
|
||
|
||
if [ "${IPROMPT}" == "yes" -a "${runlevel}" == "S" ]; then
|
||
# The total length of the distro welcome string, without escape codes
|
||
wlen=${wlen:-$(echo "Welcome to ${DISTRO}" | wc -c )}
|
||
welcome_message=${welcome_message:-"Welcome to ${INFO}${DISTRO}${NORMAL}"}
|
||
|
||
# The total length of the interactive string, without escape codes
|
||
ilen=${ilen:-$(echo "Press 'I' to enter interactive startup" | wc -c )}
|
||
i_message=${i_message:-"Press '${FAILURE}I${NORMAL}' to enter interactive startup"}
|
||
|
||
|
||
# dcol and icol are spaces before the message to center the message
|
||
# on screen. itime is the amount of wait time for the user to press a key
|
||
wcol=$(( ( ${COLUMNS} - ${wlen} ) / 2 ))
|
||
icol=$(( ( ${COLUMNS} - ${ilen} ) / 2 ))
|
||
itime=${itime:-"3"}
|
||
|
||
echo -e "\n\n"
|
||
echo -e "\\033[${wcol}G${welcome_message}"
|
||
echo -e "\\033[${icol}G${i_message}${NORMAL}"
|
||
echo ""
|
||
read -t "${itime}" -n 1 interactive 2>&1 > /dev/null
|
||
fi
|
||
|
||
# Make lower case
|
||
[ "${interactive}" == "I" ] && interactive="i"
|
||
[ "${interactive}" != "i" ] && interactive=""
|
||
|
||
# Read the state file if it exists from runlevel S
|
||
[ -r /var/run/interactive ] && source /var/run/interactive
|
||
|
||
# Attempt to stop all services started by the previous runlevel,
|
||
# and killed in this runlevel
|
||
if [ "${previous}" != "N" ]; then
|
||
for i in $(ls -v /etc/rc.d/rc${runlevel}.d/K* 2> /dev/null)
|
||
do
|
||
check_script_status
|
||
if [ "${SCRIPT_STAT}" == "1" ]; then
|
||
SCRIPT_STAT="0"
|
||
continue
|
||
fi
|
||
|
||
suffix=${i#/etc/rc.d/rc$runlevel.d/K[0-9][0-9]}
|
||
prev_start=/etc/rc.d/rc$previous.d/S[0-9][0-9]$suffix
|
||
sysinit_start=/etc/rc.d/rcS.d/S[0-9][0-9]$suffix
|
||
|
||
if [ "${runlevel}" != "0" -a "${runlevel}" != "6" ]; then
|
||
if [ ! -f ${prev_start} -a ! -f ${sysinit_start} ]; then
|
||
MSG="WARNING:\n\n${i} can't be "
|
||
MSG="${MSG}executed because it was not "
|
||
MSG="${MSG}not started in the previous "
|
||
MSG="${MSG}runlevel (${previous})."
|
||
log_warning_msg "$MSG"
|
||
continue
|
||
fi
|
||
fi
|
||
|
||
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 functions in this runlevel
|
||
for i in $( ls -v /etc/rc.d/rc${runlevel}.d/S* 2> /dev/null)
|
||
do
|
||
if [ "${previous}" != "N" ]; then
|
||
suffix=${i#/etc/rc.d/rc$runlevel.d/S[0-9][0-9]}
|
||
stop=/etc/rc.d/rc$runlevel.d/K[0-9][0-9]$suffix
|
||
prev_start=/etc/rc.d/rc$previous.d/S[0-9][0-9]$suffix
|
||
|
||
[ -f ${prev_start} -a ! -f ${stop} ] && continue
|
||
fi
|
||
|
||
check_script_status
|
||
if [ "${SCRIPT_STAT}" == "1" ]; then
|
||
SCRIPT_STAT="0"
|
||
continue
|
||
fi
|
||
|
||
case ${runlevel} in
|
||
0|6)
|
||
run ${i} stop
|
||
;;
|
||
*)
|
||
run ${i} start
|
||
;;
|
||
esac
|
||
|
||
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\"" > /var/run/interactive
|
||
else
|
||
rm -f /var/run/interactive 2> /dev/null
|
||
fi
|
||
|
||
# Copy the boot log on initial boot only
|
||
if [ "${previous}" == "N" -a "${runlevel}" != "S" ]; then
|
||
cat $BOOTLOG >> /var/log/boot.log
|
||
|
||
# Mark the end of boot
|
||
echo "--------" >> /var/log/boot.log
|
||
|
||
# Remove the temporary file
|
||
rm -f $BOOTLOG 2> /dev/null
|
||
fi
|
||
|
||
# End rc
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<pre class="screen">
|
||
#!/bin/sh
|
||
########################################################################
|
||
#
|
||
# Begin /lib/lsb/init-funtions
|
||
#
|
||
# Description : Run Level Control Functions
|
||
#
|
||
# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org
|
||
# : DJ Lucas - dj AT linuxfromscratch D0T org
|
||
# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
|
||
#
|
||
# Version : LFS 7.0
|
||
#
|
||
# Notes : With code based on Matthias Benkmann's simpleinit-msb
|
||
# http://winterdrache.de/linux/newboot/index.html
|
||
#
|
||
# The file should be located in /lib/lsb
|
||
#
|
||
########################################################################
|
||
|
||
## Environmental setup
|
||
# Setup default values for environment
|
||
umask 022
|
||
export PATH="/bin:/usr/bin:/sbin:/usr/sbin"
|
||
|
||
## Set color commands, used via echo
|
||
# Please consult `man console_codes for more information
|
||
# under the "ECMA-48 Set Graphics Rendition" section
|
||
#
|
||
# Warning: when switching from a 8bit to a 9bit font,
|
||
# the linux console will reinterpret the bold (1;) to
|
||
# the top 256 glyphs of the 9bit font. This does
|
||
# not affect framebuffer consoles
|
||
|
||
NORMAL="\\033[0;39m" # Standard console grey
|
||
SUCCESS="\\033[1;32m" # Success is green
|
||
WARNING="\\033[1;33m" # Warnings are yellow
|
||
FAILURE="\\033[1;31m" # Failures are red
|
||
INFO="\\033[1;36m" # Information is light cyan
|
||
BRACKET="\\033[1;34m" # Brackets are blue
|
||
|
||
# Use a colored prefix
|
||
BMPREFIX=" "
|
||
SUCCESS_PREFIX="${SUCCESS} * ${NORMAL} "
|
||
FAILURE_PREFIX="${FAILURE}*****${NORMAL} "
|
||
WARNING_PREFIX="${WARNING} *** ${NORMAL} "
|
||
SKIP_PREFIX="${INFO} S ${NORMAL}"
|
||
|
||
SUCCESS_SUFFIX="${BRACKET}[${SUCCESS} OK ${BRACKET}]${NORMAL}"
|
||
FAILURE_SUFFIX="${BRACKET}[${FAILURE} FAIL ${BRACKET}]${NORMAL}"
|
||
WARNING_SUFFIX="${BRACKET}[${WARNING} WARN ${BRACKET}]${NORMAL}"
|
||
SKIP_SUFFIX="${BRACKET}[${INFO} SKIP ${BRACKET}]${NORMAL}"
|
||
|
||
BOOTLOG=/run/bootlog
|
||
KILLDELAY=3
|
||
SCRIPT_STAT="0"
|
||
|
||
# Set any user specified environment variables e.g. HEADLESS
|
||
[ -r /etc/sysconfig/rc.site ] && . /etc/sysconfig/rc.site
|
||
|
||
## Screen Dimensions
|
||
# Find current screen size
|
||
if [ -z "${COLUMNS}" ]; then
|
||
COLUMNS=$(stty size)
|
||
COLUMNS=${COLUMNS##* }
|
||
fi
|
||
|
||
# When using remote connections, such as a serial port, stty size returns 0
|
||
if [ "${COLUMNS}" = "0" ]; then
|
||
COLUMNS=80
|
||
fi
|
||
|
||
## Measurements for positioning result messages
|
||
COL=$((${COLUMNS} - 8))
|
||
WCOL=$((${COL} - 2))
|
||
|
||
## Set Cursor Position Commands, used via echo
|
||
SET_COL="\\033[${COL}G" # at the $COL char
|
||
SET_WCOL="\\033[${WCOL}G" # at the $WCOL char
|
||
CURS_UP="\\033[1A\\033[0G" # Up one line, at the 0'th char
|
||
CURS_ZERO="\\033[0G"
|
||
|
||
################################################################################
|
||
# start_daemon() #
|
||
# Usage: start_daemon [-f] [-n nicelevel] [-p pidfile] pathname [args...] #
|
||
# #
|
||
# Purpose: This runs the specified program as a daemon #
|
||
# #
|
||
# Inputs: -f: (force) run the program even if it is already running. #
|
||
# -n nicelevel: specify a nice level. See 'man nice(1)'. #
|
||
# -p pidfile: use the specified file to determine PIDs. #
|
||
# pathname: the complete path to the specified program #
|
||
# args: additional arguments passed to the program (pathname) #
|
||
# #
|
||
# Return values (as defined by LSB exit codes): #
|
||
# 0 - program is running or service is OK #
|
||
# 1 - generic or unspecified error #
|
||
# 2 - invalid or excessive argument(s) #
|
||
# 5 - program is not installed #
|
||
################################################################################
|
||
start_daemon()
|
||
{
|
||
local force=""
|
||
local nice="0"
|
||
local pidfile=""
|
||
local pidlist=""
|
||
local retval=""
|
||
|
||
# Process arguments
|
||
while true
|
||
do
|
||
case "${1}" in
|
||
|
||
-f)
|
||
force="1"
|
||
shift 1
|
||
;;
|
||
|
||
-n)
|
||
nice="${2}"
|
||
shift 2
|
||
;;
|
||
|
||
-p)
|
||
pidfile="${2}"
|
||
shift 2
|
||
;;
|
||
|
||
-*)
|
||
return 2
|
||
;;
|
||
|
||
*)
|
||
program="${1}"
|
||
break
|
||
;;
|
||
esac
|
||
done
|
||
|
||
# Check for a valid program
|
||
if [ ! -e "${program}" ]; then return 5; fi
|
||
|
||
# Execute
|
||
if [ -z "${force}" ]; then
|
||
if [ -z "${pidfile}" ]; then
|
||
# Determine the pid by discovery
|
||
pidlist=`pidofproc "${1}"`
|
||
retval="${?}"
|
||
else
|
||
# The PID file contains the needed PIDs
|
||
# Note that by LSB requirement, the path must be given to pidofproc,
|
||
# however, it is not used by the current implementation or standard.
|
||
pidlist=`pidofproc -p "${pidfile}" "${1}"`
|
||
retval="${?}"
|
||
fi
|
||
|
||
# Return a value ONLY
|
||
# It is the init script's (or distribution's functions) responsibilty
|
||
# 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) responsibilty
|
||
# 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.
|
||
rm -f "${pidfile}"
|
||
|
||
# This is only a success if no signal was passed.
|
||
if [ -n "${nosig}" ]; then
|
||
return 0
|
||
else
|
||
return 7
|
||
fi
|
||
;;
|
||
|
||
3)
|
||
# Program is not running and no pidfile exists
|
||
# This is only a success if no signal was passed.
|
||
if [ -n "${nosig}" ]; then
|
||
return 0
|
||
else
|
||
return 7
|
||
fi
|
||
;;
|
||
|
||
*)
|
||
# Others as returned by status values shall not be interpreted
|
||
# and returned as an unspecified error.
|
||
return 1
|
||
;;
|
||
esac
|
||
|
||
# Perform different actions for exit signals and control signals
|
||
check_sig_type "${signal}"
|
||
|
||
if [ "${?}" -eq "0" ]; then # Signal is used to terminate the program
|
||
|
||
# Account for empty pidlist (pid file still exists and no
|
||
# signal was given)
|
||
if [ "${pidlist}" != "" ]; then
|
||
|
||
# Kill the list of pids
|
||
for pid in ${pidlist}; do
|
||
|
||
kill -0 "${pid}" 2> /dev/null
|
||
|
||
if [ "${?}" -ne "0" ]; then
|
||
# Process is dead, continue to next and assume all is well
|
||
continue
|
||
else
|
||
kill "${signal}" "${pid}" 2> /dev/null
|
||
|
||
# Wait up to ${delay}/10 seconds to for "${pid}" to
|
||
# terminate in 10ths of a second
|
||
|
||
while [ "${delay}" -ne "0" ]; do
|
||
kill -0 "${pid}" 2> /dev/null || piddead="1"
|
||
if [ "${piddead}" = "1" ]; then break; fi
|
||
sleep 0.1
|
||
delay="$(( ${delay} - 1 ))"
|
||
done
|
||
|
||
# If a fallback is set, and program is still running, then
|
||
# use the fallback
|
||
if [ -n "${fallback}" -a "${piddead}" != "1" ]; then
|
||
kill "${fallback}" "${pid}" 2> /dev/null
|
||
sleep 1
|
||
# Check again, and fail if still running
|
||
kill -0 "${pid}" 2> /dev/null && return 1
|
||
fi
|
||
fi
|
||
done
|
||
fi
|
||
|
||
# Check for and remove stale PID files.
|
||
if [ -z "${pidfile}" ]; then
|
||
# Find the basename of $program
|
||
prefix=`echo "${program}" | sed 's/[^/]*$//'`
|
||
progname=`echo "${program}" | sed "s@${prefix}@@"`
|
||
|
||
if [ -e "/var/run/${progname}.pid" ]; then
|
||
rm -f "/var/run/${progname}.pid" 2> /dev/null
|
||
fi
|
||
else
|
||
if [ -e "${pidfile}" ]; then rm -f "${pidfile}" 2> /dev/null; fi
|
||
fi
|
||
|
||
# For signals that do not expect a program to exit, simply
|
||
# let kill do its job, and evaluate kill's return for value
|
||
|
||
else # check_sig_type - signal is not used to terminate program
|
||
for pid in ${pidlist}; do
|
||
kill "${signal}" "${pid}"
|
||
if [ "${?}" -ne "0" ]; then return 1; fi
|
||
done
|
||
fi
|
||
}
|
||
|
||
################################################################################
|
||
# pidofproc() #
|
||
# Usage: pidofproc [-p pidfile] pathname #
|
||
# #
|
||
# Purpose: This function returns one or more pid(s) for a particular daemon #
|
||
# #
|
||
# Inputs: -p pidfile, use the specified pidfile instead of pidof #
|
||
# pathname, path to the specified program #
|
||
# #
|
||
# Return values (as defined by LSB status codes): #
|
||
# 0 - Success (PIDs to stdout) #
|
||
# 1 - Program is dead, PID file still exists (remaining PIDs output) #
|
||
# 3 - Program is not running (no output) #
|
||
################################################################################
|
||
pidofproc()
|
||
{
|
||
local pidfile
|
||
local program
|
||
local prefix
|
||
local progname
|
||
local pidlist
|
||
local lpids
|
||
local exitstatus="0"
|
||
|
||
# Process arguments
|
||
while true; do
|
||
case "${1}" in
|
||
|
||
-p)
|
||
pidfile="${2}"
|
||
shift 2
|
||
;;
|
||
|
||
*)
|
||
program="${1}"
|
||
if [ -n "${2}" ]; then
|
||
# Too many arguments
|
||
# Since this is status, return unknown
|
||
return 4
|
||
else
|
||
break
|
||
fi
|
||
;;
|
||
esac
|
||
done
|
||
|
||
# If a PID file is not specified, try and find one.
|
||
if [ -z "${pidfile}" ]; then
|
||
# Get the program's basename
|
||
prefix=`echo "${program}" | sed 's/[^/]*$//'`
|
||
|
||
if [ -z "${prefix}" ]; then
|
||
progname="${program}"
|
||
else
|
||
progname=`echo "${program}" | sed "s@${prefix}@@"`
|
||
fi
|
||
|
||
# If a PID file exists with that name, assume that is it.
|
||
if [ -e "/var/run/${progname}.pid" ]; then
|
||
pidfile="/var/run/${progname}.pid"
|
||
fi
|
||
fi
|
||
|
||
# If a PID file is set and exists, use it.
|
||
if [ -n "${pidfile}" -a -e "${pidfile}" ]; then
|
||
|
||
# Use the value in the first line of the pidfile
|
||
pidlist=`/bin/head -n1 "${pidfile}"`
|
||
# This can optionally be written as 'sed 1q' to repalce 'head -n1'
|
||
# should LFS move /bin/head to /usr/bin/head
|
||
else
|
||
# Use pidof
|
||
pidlist=`pidof "${program}"`
|
||
fi
|
||
|
||
# Figure out if all listed PIDs are running.
|
||
for pid in ${pidlist}; do
|
||
kill -0 ${pid} 2> /dev/null
|
||
|
||
if [ "${?}" -eq "0" ]; then
|
||
lpids="${lpids}${pid} "
|
||
else
|
||
exitstatus="1"
|
||
fi
|
||
done
|
||
|
||
if [ -z "${lpids}" -a ! -f "${pidfile}" ]; then
|
||
return 3
|
||
else
|
||
echo "${lpids}"
|
||
return "${exitstatus}"
|
||
fi
|
||
}
|
||
|
||
################################################################################
|
||
# statusproc() #
|
||
# Usage: statusproc [-p pidfile] pathname #
|
||
# #
|
||
# Purpose: This function prints the status of a particular daemon to stdout #
|
||
# #
|
||
# Inputs: -p pidfile, use the specified pidfile instead of pidof #
|
||
# pathname, path to the specified program #
|
||
# #
|
||
# Return values: #
|
||
# 0 - Status printed #
|
||
# 1 - Input error. The daemon to check was not specified. #
|
||
################################################################################
|
||
statusproc()
|
||
{
|
||
local pidfile
|
||
local pidlist
|
||
|
||
if [ "${#}" = "0" ]; then
|
||
echo "Usage: statusproc [-p pidfle] {program}"
|
||
exit 1
|
||
fi
|
||
|
||
# Process arguments
|
||
while true; do
|
||
case "${1}" in
|
||
|
||
-p)
|
||
pidfile="${2}"
|
||
shift 2
|
||
;;
|
||
|
||
*)
|
||
if [ -n "${2}" ]; then
|
||
echo "Too many arguments"
|
||
return 1
|
||
else
|
||
break
|
||
fi
|
||
;;
|
||
esac
|
||
done
|
||
|
||
if [ -n "${pidfile}" ]; then
|
||
pidlist=`pidofproc -p "${pidfile}" $@`
|
||
else
|
||
pidlist=`pidofproc $@`
|
||
fi
|
||
|
||
# Trim trailing blanks
|
||
pidlist=`echo "${pidlist}" | sed -r 's/ +$//'`
|
||
|
||
base="${1##*/}"
|
||
|
||
if [ -n "${pidlist}" ]; then
|
||
/bin/echo -e "${INFO}${base} is running with Process" \
|
||
"ID(s) ${pidlist}.${NORMAL}"
|
||
else
|
||
if [ -n "${base}" -a -e "/var/run/${base}.pid" ]; then
|
||
/bin/echo -e "${WARNING}${1} is not running but" \
|
||
"/var/run/${base}.pid exists.${NORMAL}"
|
||
else
|
||
if [ -n "${pidfile}" -a -e "${pidfile}" ]; then
|
||
/bin/echo -e "${WARNING}${1} is not running" \
|
||
"but ${pidfile} exists.${NORMAL}"
|
||
else
|
||
/bin/echo -e "${INFO}${1} is not running.${NORMAL}"
|
||
fi
|
||
fi
|
||
fi
|
||
}
|
||
|
||
################################################################################
|
||
# timespec() #
|
||
# #
|
||
# Purpose: An internal utility function to format a timestamp #
|
||
# a boot log file. Sets the STAMP variable. #
|
||
# #
|
||
# Return value: Not used #
|
||
################################################################################
|
||
timespec()
|
||
{
|
||
STAMP="$(echo `date +"%b %d %T %:z"` `hostname`) "
|
||
return 0
|
||
}
|
||
|
||
################################################################################
|
||
# log_success_msg() #
|
||
# Usage: log_success_msg ["message"] #
|
||
# #
|
||
# Purpose: Print a successful status message to the screen and #
|
||
# a boot log file. #
|
||
# #
|
||
# Inputs: $@ - Message #
|
||
# #
|
||
# Return values: Not used #
|
||
################################################################################
|
||
log_success_msg()
|
||
{
|
||
/bin/echo -n -e "${BMPREFIX}${@}"
|
||
/bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"
|
||
|
||
# Strip non-printable characters from log file
|
||
logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
|
||
|
||
timespec
|
||
/bin/echo -e "${STAMP} ${logmessage} OK" >> ${BOOTLOG}
|
||
|
||
return 0
|
||
}
|
||
|
||
log_success_msg2()
|
||
{
|
||
/bin/echo -n -e "${BMPREFIX}${@}"
|
||
/bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"
|
||
|
||
echo " OK" >> ${BOOTLOG}
|
||
|
||
return 0
|
||
}
|
||
|
||
################################################################################
|
||
# log_failure_msg() #
|
||
# Usage: log_failure_msg ["message"] #
|
||
# #
|
||
# Purpose: Print a failure status message to the screen and #
|
||
# a boot log file. #
|
||
# #
|
||
# Inputs: $@ - Message #
|
||
# #
|
||
# Return values: Not used #
|
||
################################################################################
|
||
log_failure_msg()
|
||
{
|
||
/bin/echo -n -e "${BMPREFIX}${@}"
|
||
/bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"
|
||
|
||
# Strip non-printable characters from log file
|
||
|
||
timespec
|
||
logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
|
||
/bin/echo -e "${STAMP} ${logmessage} FAIL" >> ${BOOTLOG}
|
||
|
||
return 0
|
||
}
|
||
|
||
log_failure_msg2()
|
||
{
|
||
/bin/echo -n -e "${BMPREFIX}${@}"
|
||
/bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"
|
||
|
||
echo "FAIL" >> ${BOOTLOG}
|
||
|
||
return 0
|
||
}
|
||
|
||
################################################################################
|
||
# log_warning_msg() #
|
||
# Usage: log_warning_msg ["message"] #
|
||
# #
|
||
# Purpose: Print a warning status message to the screen and #
|
||
# a boot log file. #
|
||
# #
|
||
# Return values: Not used #
|
||
################################################################################
|
||
log_warning_msg()
|
||
{
|
||
/bin/echo -n -e "${BMPREFIX}${@}"
|
||
/bin/echo -e "${CURS_ZERO}${WARNING_PREFIX}${SET_COL}${WARNING_SUFFIX}"
|
||
|
||
# Strip non-printable characters from log file
|
||
logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
|
||
timespec
|
||
/bin/echo -e "${STAMP} ${logmessage} WARN" >> ${BOOTLOG}
|
||
|
||
return 0
|
||
}
|
||
|
||
log_skip_msg()
|
||
{
|
||
/bin/echo -n -e "${BMPREFIX}${@}"
|
||
/bin/echo -e "${CURS_ZERO}${SKIP_PREFIX}${SET_COL}${SKIP_SUFFIX}"
|
||
|
||
# Strip non-printable characters from log file
|
||
logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
|
||
/bin/echo "SKIP" >> ${BOOTLOG}
|
||
|
||
return 0
|
||
}
|
||
|
||
################################################################################
|
||
# log_info_msg() #
|
||
# Usage: log_info_msg message #
|
||
# #
|
||
# Purpose: Print an information message to the screen and #
|
||
# a boot log file. Does not print a trailing newline character. #
|
||
# #
|
||
# Return values: Not used #
|
||
################################################################################
|
||
log_info_msg()
|
||
{
|
||
/bin/echo -n -e "${BMPREFIX}${@}"
|
||
|
||
# Strip non-printable characters from log file
|
||
logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
|
||
timespec
|
||
/bin/echo -n -e "${STAMP} ${logmessage}" >> ${BOOTLOG}
|
||
|
||
return 0
|
||
}
|
||
|
||
log_info_msg2()
|
||
{
|
||
/bin/echo -n -e "${@}"
|
||
|
||
# Strip non-printable characters from log file
|
||
logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
|
||
/bin/echo -n -e "${logmessage}" >> ${BOOTLOG}
|
||
|
||
return 0
|
||
}
|
||
|
||
################################################################################
|
||
# evaluate_retval() #
|
||
# Usage: Evaluate a return value and print success or failyure 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} | {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 or -{signal} or {signal} #
|
||
# #
|
||
# Return values: #
|
||
# 0 - Success (signal is valid #
|
||
# 1 - Signal is not valid #
|
||
################################################################################
|
||
check_signal()
|
||
{
|
||
local valsig
|
||
|
||
# Add error handling for invalid signals
|
||
valsig="-ALRM -HUP -INT -KILL -PIPE -POLL -PROF -TERM -USR1 -USR2"
|
||
valsig="${valsig} -VTALRM -STKFLT -PWR -WINCH -CHLD -URG -TSTP -TTIN"
|
||
valsig="${valsig} -TTOU -STOP -CONT -ABRT -FPE -ILL -QUIT -SEGV -TRAP"
|
||
valsig="${valsig} -SYS -EMT -BUS -XCPU -XFSZ -0 -1 -2 -3 -4 -5 -6 -8 -9"
|
||
valsig="${valsig} -11 -13 -14 -15"
|
||
|
||
echo "${valsig}" | grep -- " ${1} " > /dev/null
|
||
|
||
if [ "${?}" -eq "0" ]; then
|
||
return 0
|
||
else
|
||
return 1
|
||
fi
|
||
}
|
||
|
||
################################################################################
|
||
# check_sig_type() #
|
||
# Usage: check_signal [ -{signal} | {signal} ] #
|
||
# #
|
||
# Purpose: Check if signal is a program termination signal or a control signal #
|
||
# This is not defined by any LSB draft, however, it is required to #
|
||
# check the signals to determine if they are intended to end a #
|
||
# program or simply to control it. #
|
||
# #
|
||
# Inputs: Accepts a single string value in the form or -{signal} or {signal} #
|
||
# #
|
||
# Return values: #
|
||
# 0 - Signal is used for program termination #
|
||
# 1 - Signal is used for program control #
|
||
################################################################################
|
||
check_sig_type()
|
||
{
|
||
local valsig
|
||
|
||
# The list of termination signals (limited to generally used items)
|
||
valsig="-ALRM -INT -KILL -TERM -PWR -STOP -ABRT -QUIT -2 -3 -6 -9 -14 -15"
|
||
|
||
echo "${valsig}" | grep -- " ${1} " > /dev/null
|
||
|
||
if [ "${?}" -eq "0" ]; then
|
||
return 0
|
||
else
|
||
return 1
|
||
fi
|
||
}
|
||
|
||
################################################################################
|
||
# wait_for_user() #
|
||
# #
|
||
# Purpose: Wait for the user to respond if not a headless system #
|
||
# #
|
||
################################################################################
|
||
wait_for_user()
|
||
{
|
||
# Wait for the user by default
|
||
[ "${HEADLESS=0}" = "0" ] && read ENTER
|
||
return 0
|
||
}
|
||
|
||
################################################################################
|
||
# is_true() #
|
||
# #
|
||
# Purpose: Utility to test if a variable is true | yes | 1 #
|
||
# #
|
||
################################################################################
|
||
is_true()
|
||
{
|
||
[ "$1" = "1" ] || [ "$1" = "yes" ] || [ "$1" = "true" ] || [ "$1" = "y" ] ||
|
||
[ "$1" = "t" ]
|
||
}
|
||
|
||
# End /lib/lsb/init-functions
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<pre class="screen">
|
||
#!/bin/sh
|
||
########################################################################
|
||
# Begin mountvirtfs
|
||
#
|
||
# Description : Mount proc, sysfs, and run
|
||
#
|
||
# 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: mountvirtfs
|
||
# Required-Start: $first
|
||
# Should-Start:
|
||
# Required-Stop:
|
||
# Should-Stop:
|
||
# Default-Start: S
|
||
# Default-Stop:
|
||
# Short-Description: Mounts /sys and /proc virtual (kernel) filesystems.
|
||
# Mounts /run (tmpfs) and /dev (devtmpfs).
|
||
# Description: Mounts /sys and /proc virtual (kernel) filesystems.
|
||
# Mounts /run (tmpfs) and /dev (devtmpfs).
|
||
# X-LFS-Provided-By: LFS
|
||
### END INIT INFO
|
||
|
||
. /lib/lsb/init-functions
|
||
|
||
case "${1}" in
|
||
start)
|
||
# Make sure /run is available before logging any messages
|
||
if ! mountpoint /run >/dev/null; then
|
||
mount /run || failed=1
|
||
fi
|
||
|
||
mkdir -p /run/lock /run/shm
|
||
chmod 1777 /run/shm /run/lock
|
||
|
||
log_info_msg "Mounting virtual file systems: ${INFO}/run"
|
||
|
||
if ! mountpoint /proc >/dev/null; then
|
||
log_info_msg2 " ${INFO}/proc"
|
||
mount -o nosuid,noexec,nodev /proc || failed=1
|
||
fi
|
||
|
||
if ! mountpoint /sys >/dev/null; then
|
||
log_info_msg2 " ${INFO}/sys"
|
||
mount -o nosuid,noexec,nodev /sys || failed=1
|
||
fi
|
||
|
||
if ! mountpoint /dev >/dev/null; then
|
||
log_info_msg2 " ${INFO}/dev"
|
||
mount -o mode=0755,nosuid /dev || failed=1
|
||
fi
|
||
|
||
ln -sfn /run/shm /dev/shm
|
||
|
||
(exit ${failed})
|
||
evaluate_retval
|
||
exit $failed
|
||
;;
|
||
|
||
*)
|
||
echo "Usage: ${0} {start}"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
# End mountvirtfs
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<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
|
||
egrep -qv '^($|#)' /etc/sysconfig/modules || exit 0
|
||
|
||
log_info_msg "Loading modules:"
|
||
|
||
# Only try to load modules if the user has actually given us
|
||
# some modules to load.
|
||
|
||
while read module args; do
|
||
|
||
# Ignore comments and blank lines.
|
||
case "$module" in
|
||
""|"#"*) continue ;;
|
||
esac
|
||
|
||
# Attempt to load the module, passing any arguments provided.
|
||
modprobe ${module} ${args} >/dev/null
|
||
|
||
# Print the module name if successful, otherwise take note.
|
||
if [ $? -eq 0 ]; then
|
||
log_info_msg2 " ${module}"
|
||
else
|
||
failedmod="${failedmod} ${module}"
|
||
fi
|
||
done < /etc/sysconfig/modules
|
||
|
||
# Print a message about successfully loaded modules on the correct line.
|
||
log_success_msg2
|
||
|
||
# Print a failure message with a list of any modules that
|
||
# may have failed to load.
|
||
if [ -n "${failedmod}" ]; then
|
||
log_failure_msg "Failed to load modules:${failedmod}"
|
||
exit 1
|
||
fi
|
||
;;
|
||
|
||
*)
|
||
echo "Usage: ${0} {start}"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
exit 0
|
||
|
||
# End modules
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<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
|
||
#
|
||
# Version : LFS 7.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 stop
|
||
fi
|
||
|
||
# Start the udev daemon to continually watch for, and act on,
|
||
# uevents
|
||
/sbin/udevd --daemon
|
||
|
||
# Now traverse /sys in order to "coldplug" devices that have
|
||
# already been discovered
|
||
/sbin/udevadm trigger --action=add --type=subsystems
|
||
/sbin/udevadm trigger --action=add --type=devices
|
||
/sbin/udevadm trigger --action=change --type=devices
|
||
|
||
# Now wait for udevd to process the uevents we triggered
|
||
if ! is_true "$OMIT_UDEV_SETTLE"; then
|
||
/sbin/udevadm settle
|
||
fi
|
||
|
||
# If any LVM based partitions are on the system, ensure they
|
||
# are activated so they can be used.
|
||
if [ -x /sbin/vgchange ]; then /sbin/vgchange -a y >/dev/null; fi
|
||
|
||
log_success_msg2
|
||
;;
|
||
|
||
*)
|
||
echo "Usage ${0} {start}"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
exit 0
|
||
|
||
# End udev
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<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 $local_fs
|
||
# Should-Stop:
|
||
# Default-Start: S
|
||
# Default-Stop: 0 6
|
||
# Short-Description: Mounts and unmounts swap partitions.
|
||
# Description: Mounts and unmounts 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="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<pre class="screen">
|
||
#!/bin/sh
|
||
########################################################################
|
||
# Begin setclock
|
||
#
|
||
# Description : Setting Linux Clock
|
||
#
|
||
# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org
|
||
# DJ Lucas - dj AT linuxfromscratch D0T org
|
||
# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
|
||
#
|
||
# Version : LFS 7.0
|
||
#
|
||
########################################################################
|
||
|
||
### BEGIN INIT INFO
|
||
# Provides:
|
||
# Required-Start:
|
||
# Should-Start: modules
|
||
# Required-Stop:
|
||
# Should-Stop: $syslog
|
||
# Default-Start: S
|
||
# Default-Stop:
|
||
# Short-Description: Stores and restores time from the hardware clock
|
||
# Description: On boot, system time is obtained from hwclock. The
|
||
# hardware clock can also be set on shutdown.
|
||
# X-LFS-Provided-By: LFS
|
||
### END INIT INFO
|
||
|
||
. /lib/lsb/init-functions
|
||
|
||
[ -r /etc/sysconfig/clock ] && . /etc/sysconfig/clock
|
||
|
||
|
||
case "${UTC}" in
|
||
yes|true|1)
|
||
CLOCKPARAMS="${CLOCKPARAMS} --utc"
|
||
;;
|
||
|
||
no|false|0)
|
||
CLOCKPARAMS="${CLOCKPARAMS} --localtime"
|
||
;;
|
||
|
||
esac
|
||
|
||
case ${1} in
|
||
start)
|
||
hwclock --hctosys ${CLOCKPARAMS} >/dev/null
|
||
;;
|
||
|
||
stop)
|
||
log_info_msg "Setting hardware clock..."
|
||
hwclock --systohc ${CLOCKPARAMS} >/dev/null
|
||
evaluate_retval
|
||
;;
|
||
|
||
*)
|
||
echo "Usage: ${0} {start|stop}"
|
||
exit 1
|
||
;;
|
||
|
||
esac
|
||
|
||
exit 0
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<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
|
||
# Should-Start:
|
||
# Required-Stop:
|
||
# Should-Stop:
|
||
# Default-Start: S
|
||
# Default-Stop:
|
||
# Short-Description: Checks local filesystems before mounting.
|
||
# Description: Checks local filesystmes before mounting.
|
||
# X-LFS-Provided-By: LFS
|
||
### END INIT INFO
|
||
|
||
. /lib/lsb/init-functions
|
||
|
||
case "${1}" in
|
||
start)
|
||
if [ -f /fastboot ]; then
|
||
msg="/fastboot found, will omit "
|
||
msg="${msg} file system checks as requested.\n"
|
||
log_info_msg "${msg}"
|
||
exit 0
|
||
fi
|
||
|
||
log_info_msg "Mounting root file system in read-only mode... "
|
||
mount -n -o remount,ro / >/dev/null
|
||
|
||
if [ ${?} != 0 ]; then
|
||
log_failure_msg2
|
||
msg="\n\nCannot check root "
|
||
msg="${msg}filesystem because it could not be mounted "
|
||
msg="${msg}in read-only mode.\n\n"
|
||
msg="${msg}After you press Enter, this system will be "
|
||
msg="${msg}halted and powered off.\n\n"
|
||
log_failure_msg "${msg}"
|
||
|
||
log_info_msg "Press Enter to continue..."
|
||
wait_for_user
|
||
/etc/rc.d/init.d/halt stop
|
||
else
|
||
log_success_msg2
|
||
fi
|
||
|
||
if [ -f /forcefsck ]; then
|
||
msg="/forcefsck found, forcing file"
|
||
msg="${msg} system checks as requested."
|
||
log_success_msg "$msg"
|
||
options="-f"
|
||
else
|
||
options=""
|
||
fi
|
||
|
||
log_info_msg "Checking file systems..."
|
||
# Note: -a option used to be -p; but this fails e.g. on fsck.minix
|
||
if is_true "$VERBOSE_FSCK"; then
|
||
fsck ${options} -a -A -C -T
|
||
else
|
||
fsck ${options} -a -A -C -T >/dev/null
|
||
fi
|
||
|
||
error_value=${?}
|
||
|
||
if [ "${error_value}" = 0 ]; then
|
||
log_success_msg2
|
||
fi
|
||
|
||
if [ "${error_value}" = 1 ]; then
|
||
msg="\nWARNING:\n\nFile system errors "
|
||
msg="${msg}were found and have been corrected.\n"
|
||
msg="${msg} You may want to double-check that "
|
||
msg="${msg}everything was fixed properly."
|
||
log_warning_msg "$msg"
|
||
fi
|
||
|
||
if [ "${error_value}" = 2 -o "${error_value}" = 3 ]; then
|
||
msg="\nWARNING:\n\nFile system errors "
|
||
msg="${msg}were found and have been 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 stop
|
||
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="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<pre class="screen">
|
||
#!/bin/sh
|
||
########################################################################
|
||
# Begin mountfs
|
||
#
|
||
# Description : File System Mount Script
|
||
#
|
||
# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org
|
||
# DJ Lucas - dj AT linuxfromscratch D0T org
|
||
# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
|
||
#
|
||
# Version : LFS 7.0
|
||
#
|
||
########################################################################
|
||
|
||
### BEGIN INIT INFO
|
||
# Provides: $local_fs
|
||
# Required-Start: udev checkfs
|
||
# Should-Start: modules
|
||
# Required-Stop: localnet
|
||
# Should-Stop:
|
||
# Default-Start: S
|
||
# Default-Stop: 0 6
|
||
# Short-Description: Mounts/unmounts local filesystems defined in /etc/fstab.
|
||
# Description: Remounts root filesystem read/write and mounts all
|
||
# remaining local filesystems defined in /etc/fstab on
|
||
# start. Remounts root filesystem read-only and unmounts
|
||
# remaining filesystems on stop.
|
||
# X-LFS-Provided-By: LFS
|
||
### END INIT INFO
|
||
|
||
. /lib/lsb/init-functions
|
||
|
||
case "${1}" in
|
||
start)
|
||
log_info_msg "Remounting root file system in read-write mode..."
|
||
mount --options remount,rw / >/dev/null
|
||
evaluate_retval
|
||
|
||
# Remove fsck-related file system watermarks.
|
||
rm -f /fastboot /forcefsck
|
||
|
||
# Make sure /dev/pts exists
|
||
mkdir -p /dev/pts
|
||
|
||
# This will mount all filesystems that do not have _netdev in
|
||
# their option list. _netdev denotes a network filesystem.
|
||
|
||
log_info_msg "Mounting remaining file systems..."
|
||
mount --all --test-opts no_netdev >/dev/null
|
||
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 devies are removed
|
||
losetup -D
|
||
umount --all --detach-loop --read-only \
|
||
--types notmpfs,nosysfs,nodevtmpfs,noproc,nodevpts >/dev/null
|
||
evaluate_retval
|
||
|
||
# Make sure / is mounted read only (umount bug)
|
||
mount --options remount,ro /
|
||
|
||
# Make all LVM volume groups unavailable, if appropriate
|
||
# This fails if swap or / are on an LVM partition
|
||
#if [ -x /sbin/vgchange ]; then /sbin/vgchange -an > /dev/null; fi
|
||
;;
|
||
|
||
*)
|
||
echo "Usage: ${0} {start|stop}"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
# End mountfs
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<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..."
|
||
|
||
# As of udev-186, the --run option is no longer valid
|
||
#rundir=$(/sbin/udevadm info --run)
|
||
rundir=/run/udev
|
||
# From Debian: "copy the rules generated before / was mounted
|
||
# read-write":
|
||
|
||
for file in ${rundir}/tmp-rules--*; do
|
||
dest=${file##*tmp-rules--}
|
||
[ "$dest" = '*' ] && break
|
||
cat $file >> /etc/udev/rules.d/$dest
|
||
rm -f $file
|
||
done
|
||
|
||
# Re-trigger the uevents that may have failed,
|
||
# in hope they will succeed now
|
||
/bin/sed -e 's/#.*$//' /etc/sysconfig/udev_retry | /bin/grep -v '^$' | \
|
||
while read line ; do
|
||
for subsystem in $line ; do
|
||
/sbin/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
|
||
/sbin/udevadm settle
|
||
fi
|
||
|
||
evaluate_retval
|
||
;;
|
||
|
||
*)
|
||
echo "Usage ${0} {start}"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
exit 0
|
||
|
||
# End udev_retry
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<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 /var/run, /var/lock, and
|
||
# optionally, /tmp. cleanfs also creates /var/run/utmp
|
||
# and any files defined in /etc/sysconfig/createfiles.
|
||
# X-LFS-Provided-By: LFS
|
||
### END INIT INFO
|
||
|
||
. /lib/lsb/init-functions
|
||
|
||
# Function to create files/directory on boot.
|
||
create_files()
|
||
{
|
||
# Input to file descriptor 9 and output to stdin (redirection)
|
||
exec 9>&0 < /etc/sysconfig/createfiles
|
||
|
||
while read name type perm usr grp dtype maj min junk
|
||
do
|
||
# Ignore comments and blank lines.
|
||
case "${name}" in
|
||
""|\#*) continue ;;
|
||
esac
|
||
|
||
# Ignore existing files.
|
||
if [ ! -e "${name}" ]; then
|
||
# Create stuff based on its type.
|
||
case "${type}" in
|
||
dir)
|
||
mkdir "${name}"
|
||
;;
|
||
file)
|
||
:> "${name}"
|
||
;;
|
||
dev)
|
||
case "${dtype}" in
|
||
char)
|
||
mknod "${name}" c ${maj} ${min}
|
||
;;
|
||
block)
|
||
mknod "${name}" b ${maj} ${min}
|
||
;;
|
||
pipe)
|
||
mknod "${name}" p
|
||
;;
|
||
*)
|
||
log_warning_msg "\nUnknown device type: ${dtype}"
|
||
;;
|
||
esac
|
||
;;
|
||
*)
|
||
log_warning_msg "\nUnknown type: ${type}"
|
||
continue
|
||
;;
|
||
esac
|
||
|
||
# Set up the permissions, too.
|
||
chown ${usr}:${grp} "${name}"
|
||
chmod ${perm} "${name}"
|
||
fi
|
||
done
|
||
|
||
# Close file descriptor 9 (end redirection)
|
||
exec 0>&9 9>&-
|
||
return 0
|
||
}
|
||
|
||
case "${1}" in
|
||
start)
|
||
log_info_msg "Cleaning file systems:"
|
||
|
||
if [ "${SKIPTMPCLEAN}" = "" ]; then
|
||
log_info_msg2 " /tmp"
|
||
cd /tmp &&
|
||
find . -xdev -mindepth 1 ! -name lost+found -delete || failed=1
|
||
fi
|
||
|
||
> /var/run/utmp
|
||
|
||
if grep -q '^utmp:' /etc/group ; then
|
||
chmod 664 /var/run/utmp
|
||
chgrp utmp /var/run/utmp
|
||
fi
|
||
|
||
(exit ${failed})
|
||
evaluate_retval
|
||
|
||
if egrep -qv '^(#|$)' /etc/sysconfig/createfiles 2>/dev/null; then
|
||
log_info_msg "Creating files and directories... "
|
||
create_files # Always returns 0
|
||
evaluate_retval
|
||
fi
|
||
|
||
exit $failed
|
||
;;
|
||
*)
|
||
echo "Usage: ${0} {start}"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
# End cleanfs
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<pre class="screen">
|
||
#!/bin/sh
|
||
########################################################################
|
||
# Begin console
|
||
#
|
||
# Description : Sets keymap and screen font
|
||
#
|
||
# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org
|
||
# Alexander E. Patrakov
|
||
# DJ Lucas - dj AT linuxfromscratch D0T org
|
||
# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
|
||
#
|
||
# Version : LFS 7.0
|
||
#
|
||
########################################################################
|
||
|
||
### BEGIN INIT INFO
|
||
# Provides: console
|
||
# Required-Start: $local_fs
|
||
# Should-Start: udev_retry
|
||
# Required-Stop:
|
||
# Should-Stop:
|
||
# Default-Start: S
|
||
# Default-Stop:
|
||
# Short-Description: Sets up a localised console.
|
||
# Description: Sets up fonts and language settings for the user's
|
||
# local as defined by /etc/sysconfig/console.
|
||
# X-LFS-Provided-By: LFS
|
||
### END INIT INFO
|
||
|
||
. /lib/lsb/init-functions
|
||
|
||
# Native English speakers probably don't have /etc/sysconfig/console at all
|
||
[ -r /etc/sysconfig/console ] && . /etc/sysconfig/console
|
||
|
||
is_true()
|
||
{
|
||
[ "$1" = "1" ] || [ "$1" = "yes" ] || [ "$1" = "true" ]
|
||
}
|
||
|
||
failed=0
|
||
|
||
case "${1}" in
|
||
start)
|
||
# See if we need to do anything
|
||
if [ -z "${KEYMAP}" ] && [ -z "${KEYMAP_CORRECTIONS}" ] &&
|
||
[ -z "${FONT}" ] && [ -z "${LEGACY_CHARSET}" ] &&
|
||
! is_true "${UNICODE}"; then
|
||
exit 0
|
||
fi
|
||
|
||
# There should be no bogus failures below this line!
|
||
log_info_msg "Setting up Linux console..."
|
||
|
||
# Figure out if a framebuffer console is used
|
||
[ -d /sys/class/graphics/fb0 ] && use_fb=1 || use_fb=0
|
||
|
||
# Figure out the command to set the console into the
|
||
# desired mode
|
||
is_true "${UNICODE}" &&
|
||
MODE_COMMAND="echo -en '\033%G' && kbd_mode -u" ||
|
||
MODE_COMMAND="echo -en '\033%@\033(K' && kbd_mode -a"
|
||
|
||
# On framebuffer consoles, font has to be set for each vt in
|
||
# UTF-8 mode. This doesn't hurt in non-UTF-8 mode also.
|
||
|
||
! is_true "${use_fb}" || [ -z "${FONT}" ] ||
|
||
MODE_COMMAND="${MODE_COMMAND} && setfont ${FONT}"
|
||
|
||
# Apply that command to all consoles mentioned in
|
||
# /etc/inittab. Important: in the UTF-8 mode this should
|
||
# happen before setfont, otherwise a kernel bug will
|
||
# show up and the unicode map of the font will not be
|
||
# used.
|
||
|
||
for TTY in `grep '^[^#].*respawn:/sbin/agetty' /etc/inittab |
|
||
grep -o '\btty[[:digit:]]*\b'`
|
||
do
|
||
openvt -f -w -c ${TTY#tty} -- \
|
||
/bin/sh -c "${MODE_COMMAND}" || failed=1
|
||
done
|
||
|
||
# Set the font (if not already set above) and the keymap
|
||
[ "${use_fb}" == "1" ] || [ -z "${FONT}" ] || setfont $FONT || failed=1
|
||
|
||
[ -z "${KEYMAP}" ] ||
|
||
loadkeys ${KEYMAP} >/dev/null 2>&1 ||
|
||
failed=1
|
||
|
||
[ -z "${KEYMAP_CORRECTIONS}" ] ||
|
||
loadkeys ${KEYMAP_CORRECTIONS} >/dev/null 2>&1 ||
|
||
failed=1
|
||
|
||
# Convert the keymap from $LEGACY_CHARSET to UTF-8
|
||
[ -z "$LEGACY_CHARSET" ] ||
|
||
dumpkeys -c "$LEGACY_CHARSET" | loadkeys -u >/dev/null 2>&1 ||
|
||
failed=1
|
||
|
||
# If any of the commands above failed, the trap at the
|
||
# top would set $failed to 1
|
||
( exit $failed )
|
||
evaluate_retval
|
||
|
||
exit $failed
|
||
;;
|
||
|
||
*)
|
||
echo "Usage: ${0} {start}"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
# End console
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<pre class="screen">
|
||
#!/bin/sh
|
||
########################################################################
|
||
# Begin localnet
|
||
#
|
||
# Description : Loopback device
|
||
#
|
||
# Authors : Gerard Beekmans - gerard AT linuxfromscratch D0T org
|
||
# DJ Lucas - dj AT linuxfromscratch D0T org
|
||
# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
|
||
#
|
||
# Version : LFS 7.0
|
||
#
|
||
########################################################################
|
||
|
||
### BEGIN INIT INFO
|
||
# Provides: localnet
|
||
# Required-Start: mountvirtfs
|
||
# Should-Start: modules
|
||
# Required-Stop:
|
||
# Should-Stop:
|
||
# Default-Start: S
|
||
# Default-Stop: 0 6
|
||
# Short-Description: Starts the local network.
|
||
# Description: Sets the hostname of the machine and starts the
|
||
# loopback interface.
|
||
# X-LFS-Provided-By: LFS
|
||
### END INIT INFO
|
||
|
||
. /lib/lsb/init-functions
|
||
[ -r /etc/sysconfig/network ] && . /etc/sysconfig/network
|
||
[ -r /etc/hostname ] && HOSTNAME=`cat /etc/hostname`
|
||
|
||
case "${1}" in
|
||
start)
|
||
log_info_msg "Bringing up the loopback interface..."
|
||
ip addr add 127.0.0.1/8 label lo dev lo
|
||
ip link set lo up
|
||
evaluate_retval
|
||
|
||
log_info_msg "Setting hostname to ${HOSTNAME}..."
|
||
hostname ${HOSTNAME}
|
||
evaluate_retval
|
||
;;
|
||
|
||
stop)
|
||
log_info_msg "Bringing down the loopback interface..."
|
||
ip link set lo down
|
||
evaluate_retval
|
||
;;
|
||
|
||
restart)
|
||
${0} stop
|
||
sleep 1
|
||
${0} start
|
||
;;
|
||
|
||
status)
|
||
echo "Hostname is: $(hostname)"
|
||
ip link show lo
|
||
;;
|
||
|
||
*)
|
||
echo "Usage: ${0} {start|stop|restart|status}"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
exit 0
|
||
|
||
# End localnet
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<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="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<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: 3 4 5
|
||
# Default-Stop: 0 1 2 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
|
||
|
||
# Note: sysklogd is not started in runlevel 2 due to possible
|
||
# remote logging configurations
|
||
|
||
. /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="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<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 $syslog localnet swap
|
||
# Should-Start: firewalld iptables nftables
|
||
# Required-Stop: $local_fs $syslog localnet swap
|
||
# Should-Stop: firewalld iptables nftables
|
||
# Default-Start: 3 4 5
|
||
# Default-Stop: 0 1 2 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)
|
||
# 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
|
||
|
||
/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="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<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)
|
||
log_info_msg "Sending all processes the TERM signal..."
|
||
killall5 -15
|
||
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
|
||
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="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<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
|
||
# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
|
||
#
|
||
# Version : LFS 7.0
|
||
#
|
||
########################################################################
|
||
|
||
### BEGIN INIT INFO
|
||
# Provides: reboot
|
||
# Required-Start:
|
||
# 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
|
||
stop)
|
||
log_info_msg "Restarting system..."
|
||
reboot -d -f -i
|
||
;;
|
||
|
||
*)
|
||
echo "Usage: ${0} {stop}"
|
||
exit 1
|
||
;;
|
||
|
||
esac
|
||
|
||
# End reboot
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<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
|
||
#
|
||
# Version : LFS 7.0
|
||
#
|
||
########################################################################
|
||
|
||
### BEGIN INIT INFO
|
||
# Provides: halt
|
||
# Required-Start:
|
||
# 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
|
||
stop)
|
||
halt -d -f -i -p
|
||
;;
|
||
|
||
*)
|
||
echo "Usage: {stop}"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
# End halt
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<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..."
|
||
start_daemon fully_qualified_path
|
||
;;
|
||
|
||
stop)
|
||
log_info_msg "Stopping..."
|
||
killproc fully_qualified_path
|
||
;;
|
||
|
||
restart)
|
||
${0} stop
|
||
sleep 1
|
||
${0} start
|
||
;;
|
||
|
||
*)
|
||
echo "Usage: ${0} {start|stop|restart}"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
exit 0
|
||
|
||
# End scriptname
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="modulessys" name=
|
||
"modulessys"></a>D.21. /etc/sysconfig/modules
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<pre class="screen">
|
||
########################################################################
|
||
# Begin /etc/sysconfig/modules
|
||
#
|
||
# Description : Module auto-loading configuration
|
||
#
|
||
# Authors :
|
||
#
|
||
# Version : 00.00
|
||
#
|
||
# Notes : The syntax of this file is as follows:
|
||
# <module> [<arg1> <arg2> ...]
|
||
#
|
||
# Each module should be on its own line, and any options that you want
|
||
# passed to the module should follow it. The line deliminator is either
|
||
# a space or a tab.
|
||
########################################################################
|
||
|
||
# End /etc/sysconfig/modules
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="createfiles" name=
|
||
"createfiles"></a>D.22. /etc/sysconfig/createfiles
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<pre class="screen">
|
||
########################################################################
|
||
# Begin /etc/sysconfig/createfiles
|
||
#
|
||
# Description : Createfiles script config file
|
||
#
|
||
# Authors :
|
||
#
|
||
# Version : 00.00
|
||
#
|
||
# Notes : The syntax of this file is as follows:
|
||
# if type is equal to "file" or "dir"
|
||
# <filename> <type> <permissions> <user> <group>
|
||
# if type is equal to "dev"
|
||
# <filename> <type> <permissions> <user> <group> <devtype>
|
||
# <major> <minor>
|
||
#
|
||
# <filename> is the name of the file which is to be created
|
||
# <type> is either file, dir, or dev.
|
||
# file creates a new file
|
||
# dir creates a new directory
|
||
# dev creates a new device
|
||
# <devtype> is either block, char or pipe
|
||
# block creates a block device
|
||
# char creates a character deivce
|
||
# pipe creates a pipe, this will ignore the <major> and
|
||
# <minor> fields
|
||
# <major> and <minor> are the major and minor numbers used for
|
||
# the device.
|
||
########################################################################
|
||
|
||
# End /etc/sysconfig/createfiles
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<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="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ifup" name="ifup"></a>D.24. /sbin/ifup
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<pre class="screen">
|
||
#!/bin/sh
|
||
########################################################################
|
||
# Begin /sbin/ifup
|
||
#
|
||
# Description : Interface Up
|
||
#
|
||
# Authors : Nathan Coulson - nathan AT linuxfromscratch D0T org
|
||
# Kevin P. Fleming - kpfleming@linuxfromscratch.org
|
||
# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
|
||
# DJ Lucas - dj AT linuxfromscratch D0T org
|
||
#
|
||
# Version : LFS 7.7
|
||
#
|
||
# Notes : The IFCONFIG variable is passed to the SERVICE script
|
||
# in the /lib/services directory, to indicate what file the
|
||
# service should source to get interface specifications.
|
||
#
|
||
########################################################################
|
||
|
||
up()
|
||
{
|
||
log_info_msg "Bringing up the ${1} interface..."
|
||
|
||
if ip link show $1 > /dev/null 2>&1; then
|
||
link_status=`ip link show $1`
|
||
|
||
if [ -n "${link_status}" ]; then
|
||
if ! echo "${link_status}" | grep -q UP; then
|
||
ip link set $1 up
|
||
fi
|
||
fi
|
||
|
||
else
|
||
log_failure_msg "Interface ${IFACE} doesn't exist."
|
||
exit 1
|
||
fi
|
||
|
||
evaluate_retval
|
||
}
|
||
|
||
RELEASE="7.7"
|
||
|
||
USAGE="Usage: $0 [ -hV ] [--help] [--version] interface"
|
||
VERSTR="LFS ifup, version ${RELEASE}"
|
||
|
||
while [ $# -gt 0 ]; do
|
||
case "$1" in
|
||
--help | -h) help="y"; break ;;
|
||
|
||
--version | -V) echo "${VERSTR}"; exit 0 ;;
|
||
|
||
-*) echo "ifup: ${1}: invalid option" >&2
|
||
echo "${USAGE}" >& 2
|
||
exit 2 ;;
|
||
|
||
*) break ;;
|
||
esac
|
||
done
|
||
|
||
if [ -n "$help" ]; then
|
||
echo "${VERSTR}"
|
||
echo "${USAGE}"
|
||
echo
|
||
cat << HERE_EOF
|
||
ifup is used to bring up a network interface. The interface
|
||
parameter, e.g. eth0 or eth0:2, must match the trailing part of the
|
||
interface specifications file, e.g. /etc/sysconfig/ifconfig.eth0:2.
|
||
|
||
HERE_EOF
|
||
exit 0
|
||
fi
|
||
|
||
file=/etc/sysconfig/ifconfig.${1}
|
||
|
||
# Skip backup files
|
||
[ "${file}" = "${file%""~""}" ] || exit 0
|
||
|
||
. /lib/lsb/init-functions
|
||
|
||
if [ ! -r "${file}" ]; then
|
||
log_failure_msg "Unable to bring up ${1} interface! ${file} is missing or cannot be accessed."
|
||
exit 1
|
||
fi
|
||
|
||
. $file
|
||
|
||
if [ "$IFACE" = "" ]; then
|
||
log_failure_msg "Unable to bring up ${1} interface! ${file} does not define an interface [IFACE]."
|
||
exit 1
|
||
fi
|
||
|
||
# Do not process this service if started by boot, and ONBOOT
|
||
# is not set to yes
|
||
if [ "${IN_BOOT}" = "1" -a "${ONBOOT}" != "yes" ]; then
|
||
exit 0
|
||
fi
|
||
|
||
# Bring up the interface
|
||
if [ "$VIRTINT" != "yes" ]; then
|
||
up ${IFACE}
|
||
fi
|
||
|
||
for S in ${SERVICE}; do
|
||
if [ ! -x "/lib/services/${S}" ]; then
|
||
MSG="\nUnable to process ${file}. Either "
|
||
MSG="${MSG}the SERVICE '${S} was not present "
|
||
MSG="${MSG}or cannot be executed."
|
||
log_failure_msg "$MSG"
|
||
exit 1
|
||
fi
|
||
done
|
||
|
||
if [ "${SERVICE}" = "wpa" ]; then log_success_msg; fi
|
||
|
||
# Create/configure the interface
|
||
for S in ${SERVICE}; do
|
||
IFCONFIG=${file} /lib/services/${S} ${IFACE} up
|
||
done
|
||
|
||
# Set link up virtual interfaces
|
||
if [ "${VIRTINT}" == "yes" ]; then
|
||
up ${IFACE}
|
||
fi
|
||
|
||
# Bring up any additional interface components
|
||
for I in $INTERFACE_COMPONENTS; do up $I; done
|
||
|
||
# Set MTU if requested. Check if MTU has a "good" value.
|
||
if test -n "${MTU}"; then
|
||
if [[ ${MTU} =~ ^[0-9]+$ ]] && [[ $MTU -ge 68 ]] ; then
|
||
for I in $IFACE $INTERFACE_COMPONENTS; do
|
||
ip link set dev $I mtu $MTU;
|
||
done
|
||
else
|
||
log_info_msg2 "Invalid MTU $MTU"
|
||
fi
|
||
fi
|
||
|
||
# Set the route default gateway if requested
|
||
if [ -n "${GATEWAY}" ]; then
|
||
if ip route | grep -q default; then
|
||
log_warning_msg "Gateway already setup; skipping."
|
||
else
|
||
log_info_msg "Adding default gateway ${GATEWAY} to the ${IFACE} interface..."
|
||
ip route add default via ${GATEWAY} dev ${IFACE}
|
||
evaluate_retval
|
||
fi
|
||
fi
|
||
|
||
# End /sbin/ifup
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ifdown" name="ifdown"></a>D.25. /sbin/ifdown
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<pre class="screen">
|
||
#!/bin/bash
|
||
########################################################################
|
||
# Begin /sbin/ifdown
|
||
#
|
||
# Description : Interface Down
|
||
#
|
||
# Authors : Nathan Coulson - nathan AT linuxfromscratch D0T org
|
||
# Kevin P. Fleming - kpfleming@linuxfromscratch.org
|
||
# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
|
||
#
|
||
# Version : LFS 7.0
|
||
#
|
||
# Notes : the IFCONFIG variable is passed to the scripts found
|
||
# in the /lib/services directory, to indicate what file the
|
||
# service should source to get interface specifications.
|
||
#
|
||
########################################################################
|
||
|
||
RELEASE="7.0"
|
||
|
||
USAGE="Usage: $0 [ -hV ] [--help] [--version] interface"
|
||
VERSTR="LFS ifdown, version ${RELEASE}"
|
||
|
||
while [ $# -gt 0 ]; do
|
||
case "$1" in
|
||
--help | -h) help="y"; break ;;
|
||
|
||
--version | -V) echo "${VERSTR}"; exit 0 ;;
|
||
|
||
-*) echo "ifup: ${1}: invalid option" >&2
|
||
echo "${USAGE}" >& 2
|
||
exit 2 ;;
|
||
|
||
*) break ;;
|
||
esac
|
||
done
|
||
|
||
if [ -n "$help" ]; then
|
||
echo "${VERSTR}"
|
||
echo "${USAGE}"
|
||
echo
|
||
cat << HERE_EOF
|
||
ifdown is used to bring down a network interface. The interface
|
||
parameter, e.g. eth0 or eth0:2, must match the trailing part of the
|
||
interface specifications file, e.g. /etc/sysconfig/ifconfig.eth0:2.
|
||
|
||
HERE_EOF
|
||
exit 0
|
||
fi
|
||
|
||
file=/etc/sysconfig/ifconfig.${1}
|
||
|
||
# Skip backup files
|
||
[ "${file}" = "${file%""~""}" ] || exit 0
|
||
|
||
. /lib/lsb/init-functions
|
||
|
||
if [ ! -r "${file}" ]; then
|
||
log_warning_msg "${file} is missing or cannot be accessed."
|
||
exit 1
|
||
fi
|
||
|
||
. ${file}
|
||
|
||
if [ "$IFACE" = "" ]; then
|
||
log_failure_msg "${file} does not define an interface [IFACE]."
|
||
exit 1
|
||
fi
|
||
|
||
# We only need to first service to bring down the interface
|
||
S=`echo ${SERVICE} | cut -f1 -d" "`
|
||
|
||
if ip link show ${IFACE} > /dev/null 2>&1; then
|
||
if [ -n "${S}" -a -x "/lib/services/${S}" ]; then
|
||
IFCONFIG=${file} /lib/services/${S} ${IFACE} down
|
||
else
|
||
MSG="Unable to process ${file}. Either "
|
||
MSG="${MSG}the SERVICE variable was not set "
|
||
MSG="${MSG}or the specified service cannot be executed."
|
||
log_failure_msg "$MSG"
|
||
exit 1
|
||
fi
|
||
else
|
||
log_warning_msg "Interface ${1} doesn't exist."
|
||
fi
|
||
|
||
# Leave the interface up if there are additional interfaces in the device
|
||
link_status=`ip link show ${IFACE} 2>/dev/null`
|
||
|
||
if [ -n "${link_status}" ]; then
|
||
if [ "$(echo "${link_status}" | grep UP)" != "" ]; then
|
||
if [ "$(ip addr show ${IFACE} | grep 'inet ')" == "" ]; then
|
||
log_info_msg "Bringing down the ${IFACE} interface..."
|
||
ip link set ${IFACE} down
|
||
evaluate_retval
|
||
fi
|
||
fi
|
||
fi
|
||
|
||
# End /sbin/ifdown
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="ipv4static" name=
|
||
"ipv4static"></a>D.26. /lib/services/ipv4-static
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<pre class="screen">
|
||
#!/bin/sh
|
||
########################################################################
|
||
# Begin /lib/services/ipv4-static
|
||
#
|
||
# Description : IPV4 Static Boot Script
|
||
#
|
||
# Authors : Nathan Coulson - nathan AT linuxfromscratch D0T org
|
||
# Kevin P. Fleming - kpfleming@linuxfromscratch.org
|
||
# Update : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
|
||
#
|
||
# Version : LFS 7.0
|
||
#
|
||
########################################################################
|
||
|
||
. /lib/lsb/init-functions
|
||
. ${IFCONFIG}
|
||
|
||
if [ -z "${IP}" ]; then
|
||
log_failure_msg "\nIP variable missing from ${IFCONFIG}, cannot continue."
|
||
exit 1
|
||
fi
|
||
|
||
if [ -z "${PREFIX}" -a -z "${PEER}" ]; then
|
||
log_warning_msg "\nPREFIX variable missing from ${IFCONFIG}, assuming 24."
|
||
PREFIX=24
|
||
args="${args} ${IP}/${PREFIX}"
|
||
|
||
elif [ -n "${PREFIX}" -a -n "${PEER}" ]; then
|
||
log_failure_msg "\nPREFIX and PEER both specified in ${IFCONFIG}, cannot continue."
|
||
exit 1
|
||
|
||
elif [ -n "${PREFIX}" ]; then
|
||
args="${args} ${IP}/${PREFIX}"
|
||
|
||
elif [ -n "${PEER}" ]; then
|
||
args="${args} ${IP} peer ${PEER}"
|
||
fi
|
||
|
||
if [ -n "${LABEL}" ]; then
|
||
args="${args} label ${LABEL}"
|
||
fi
|
||
|
||
if [ -n "${BROADCAST}" ]; then
|
||
args="${args} broadcast ${BROADCAST}"
|
||
fi
|
||
|
||
case "${2}" in
|
||
up)
|
||
if [ "$(ip addr show ${1} 2>/dev/null | grep ${IP}/)" = "" ]; then
|
||
log_info_msg "Adding IPv4 address ${IP} to the ${1} interface..."
|
||
ip addr add ${args} dev ${1}
|
||
evaluate_retval
|
||
else
|
||
log_warning_msg "Cannot add IPv4 address ${IP} to ${1}. Already present."
|
||
fi
|
||
;;
|
||
|
||
down)
|
||
if [ "$(ip addr show ${1} 2>/dev/null | grep ${IP}/)" != "" ]; then
|
||
log_info_msg "Removing IPv4 address ${IP} from the ${1} interface..."
|
||
ip addr del ${args} dev ${1}
|
||
evaluate_retval
|
||
fi
|
||
|
||
if [ -n "${GATEWAY}" ]; then
|
||
# Only remove the gateway if there are no remaining ipv4 addresses
|
||
if [ "$(ip addr show ${1} 2>/dev/null | grep 'inet ')" != "" ]; then
|
||
log_info_msg "Removing default gateway..."
|
||
ip route del default
|
||
evaluate_retval
|
||
fi
|
||
fi
|
||
;;
|
||
|
||
*)
|
||
echo "Usage: ${0} [interface] {up|down}"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
# End /lib/services/ipv4-static
|
||
</pre>
|
||
</div>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<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>
|
||
<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="appendix">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="rules" name="rules"></a>Appendix E. Udev
|
||
configuration rules
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The rules in this appendix are listed for convenience.
|
||
Installation is normally done via instructions in <a class="xref"
|
||
href="#ch-system-eudev" title=
|
||
"6.78. Eudev-3.2.9">Section 6.78,
|
||
“Eudev-3.2.9”</a>.
|
||
</p>
|
||
<div class="wrap" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="lfsrules" name=
|
||
"lfsrules"></a>E.1. 55-lfs.rules
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<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"
|
||
|
||
# Comms devices
|
||
|
||
KERNEL=="ippp[0-9]*", GROUP="dialout"
|
||
KERNEL=="isdn[0-9]*", GROUP="dialout"
|
||
KERNEL=="isdnctrl[0-9]*", GROUP="dialout"
|
||
KERNEL=="dcbri[0-9]*", GROUP="dialout"
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="appendix">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="Licenses" name=
|
||
"Licenses"></a>Appendix F. LFS Licenses
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
This book is licensed under the Creative Commons
|
||
Attribution-NonCommercial-ShareAlike 2.0 License.
|
||
</p>
|
||
<p>
|
||
Computer instructions may be extracted from the book under the
|
||
MIT License.
|
||
</p>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="CC" name="CC"></a>F.1. Creative Commons
|
||
License
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p class="title">
|
||
Creative Commons Legal Code
|
||
</p>
|
||
<p class="title">
|
||
Attribution-NonCommercial-ShareAlike 2.0
|
||
</p>
|
||
<div class="admon important">
|
||
<h3>
|
||
Important
|
||
</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>
|
||
Important
|
||
</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="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title">
|
||
<a id="MIT" name="MIT"></a>F.2. The MIT License
|
||
</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
Copyright © 1999-2020 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="idm46504920870448" name="idm46504920870448"></a>Index
|
||
</h1>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="index">
|
||
<h2>
|
||
<a id="package-index" name="package-index"></a>Packages
|
||
</h2>
|
||
<ul>
|
||
<li>
|
||
<strong class="item">Acl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-acl">Acl-2.2.53</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Attr:</strong> <span class=
|
||
"indexref"><a href="#ch-system-attr">Attr-2.4.48</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Autoconf:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-autoconf">Autoconf-2.69</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Automake:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-automake">Automake-1.16.1</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Bash:</strong> <span class=
|
||
"indexref"><a href="#ch-system-bash">Bash-5.0</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-bash">Bash-5.0</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Bc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-bc">Bc-2.5.3</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Binutils:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-binutils">Binutils-2.34</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools, pass 1:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-tools-binutils-pass1">Binutils-2.34 - Pass
|
||
1</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="secitem">tools, pass 2:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-tools-binutils-pass2">Binutils-2.34 - Pass
|
||
2</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Bison:</strong> <span class=
|
||
"indexref"><a href="#ch-system-bison">Bison-3.5.2</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-bison">Bison-3.5.2</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Bootscripts:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">usage:</strong> <span class=
|
||
"indexref"><a href="#ch-config-usage">System V Bootscript
|
||
Usage and Configuration</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>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-bzip2">Bzip2-1.0.8</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Check:</strong> <span class=
|
||
"indexref"><a href="#ch-system-check">Check-0.14.0</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Coreutils:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-coreutils">Coreutils-8.31</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-tools-coreutils">Coreutils-8.31</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">DejaGNU:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-dejagnu">DejaGNU-1.6.2</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Diffutils:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-diffutils">Diffutils-3.7</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-tools-diffutils">Diffutils-3.7</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">E2fsprogs:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-e2fsprogs">E2fsprogs-1.45.5</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Eudev:</strong> <span class=
|
||
"indexref"><a href="#ch-system-eudev">Eudev-3.2.9</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">configuring:</strong> <span class=
|
||
"indexref"><a href="#conf-eudev">Configuring
|
||
Eudev</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Expat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-expat">Expat-2.2.9</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Expect:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-expect">Expect-5.45.4</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">File:</strong> <span class=
|
||
"indexref"><a href="#ch-system-file">File-5.38</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-file">File-5.38</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Findutils:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-findutils">Findutils-4.7.0</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-tools-findutils">Findutils-4.7.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">Gawk:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gawk">Gawk-5.0.1</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-gawk">Gawk-5.0.1</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">GCC:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools, libstdc++:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-tools-libstdcpp">Libstdc++ from GCC-9.2.0</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="secitem">tools, pass 1:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-tools-gcc-pass1">GCC-9.2.0 - Pass 1</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="secitem">tools, pass 2:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-tools-gcc-pass2">GCC-9.2.0 - Pass 2</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">GDBM:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gdbm">GDBM-1.18.1</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Gettext:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-gettext">Gettext-0.20.1</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-tools-gettext">Gettext-0.20.1</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Glibc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-glibc">Glibc-2.31</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">GMP:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gmp">GMP-6.2.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.4</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-grep">Grep-3.4</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Groff:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">GRUB:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Gzip:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gzip">Gzip-1.10</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-gzip">Gzip-1.10</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Iana-Etc:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-iana-etc">Iana-Etc-2.30</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Inetutils:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-inetutils">Inetutils-1.9.4</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-5.5.0</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Kbd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Kmod:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kmod">Kmod-26</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Less:</strong> <span class=
|
||
"indexref"><a href="#ch-system-less">Less-551</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Libcap:</strong> <span class=
|
||
"indexref"><a href="#ch-system-libcap">Libcap-2.31</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Libelf:</strong> <span class=
|
||
"indexref"><a href="#ch-system-libelf">Libelf from
|
||
Elfutils-0.178</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libffi:</strong> <span class=
|
||
"indexref"><a href="#ch-system-libffi">Libffi-3.3</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Libpipeline:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-libpipeline">Libpipeline-1.5.2</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Libtool:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-libtool">Libtool-2.4.6</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Linux:</strong> <span class=
|
||
"indexref"><a href="#ch-bootable-kernel">Linux-5.5.3</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">API headers:</strong> <span class=
|
||
"indexref"><a href="#ch-system-linux-headers">Linux-5.5.3
|
||
API Headers</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="secitem">tools, API headers:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-tools-linux-headers">Linux-5.5.3 API
|
||
Headers</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">M4:</strong> <span class=
|
||
"indexref"><a href="#ch-system-m4">M4-1.4.18</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-m4">M4-1.4.18</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Make:</strong> <span class=
|
||
"indexref"><a href="#ch-system-make">Make-4.3</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-make">Make-4.3</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Man-DB:</strong> <span class=
|
||
"indexref"><a href="#ch-system-man-db">Man-DB-2.9.0</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Man-pages:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-man-pages">Man-pages-5.05</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Meson:</strong> <span class=
|
||
"indexref"><a href="#ch-system-meson">Meson-0.53.1</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">MPC:</strong> <span class=
|
||
"indexref"><a href="#ch-system-mpc">MPC-1.1.0</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">MPFR:</strong> <span class=
|
||
"indexref"><a href="#ch-system-mpfr">MPFR-4.0.2</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Ncurses:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-tools-ncurses">Ncurses-6.2</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Ninja:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ninja">Ninja-1.10.0</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">OpenSSL:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-openssl">OpenSSL-1.1.1d</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.30.1</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-perl">Perl-5.30.1</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Pkgconfig:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-pkgconfig">Pkg-config-0.29.2</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Procps-ng:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-procps">Procps-ng-3.3.15</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Psmisc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-psmisc">Psmisc-23.2</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Python:</strong>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-tools-Python">Python-3.8.1</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">python:</strong> <span class=
|
||
"indexref"><a href="#ch-system-Python">Python-3.8.1</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">rc.site:</strong> <span class=
|
||
"indexref"><a href="#ch-config-site">The rc.site
|
||
File</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Readline:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-readline">Readline-8.0</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Sed:</strong> <span class=
|
||
"indexref"><a href="#ch-system-sed">Sed-4.8</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-sed">Sed-4.8</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Shadow:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">configuring:</strong> <span class=
|
||
"indexref"><a href="#conf-shadow">Configuring
|
||
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">Configuring
|
||
Sysklogd</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Sysvinit:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-sysvinit">Sysvinit-2.96</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">configuring:</strong> <span class=
|
||
"indexref"><a href="#conf-sysvinit">Configuring
|
||
Sysvinit</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Tar:</strong> <span class=
|
||
"indexref"><a href="#ch-system-tar">Tar-1.32</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-tar">Tar-1.32</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Tcl:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-tcl">Tcl-8.6.10</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Texinfo:</strong> <span class=
|
||
"indexref"><a href="#ch-system-texinfo">Texinfo-6.7</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-tools-texinfo">Texinfo-6.7</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Udev:</strong>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">usage:</strong> <span class=
|
||
"indexref"><a href="#ch-config-udev">Overview of Device and
|
||
Module Handling</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Util-linux:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Vim:</strong> <span class=
|
||
"indexref"><a href="#ch-system-vim">Vim-8.2.0190</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">XML::Parser:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-xml-parser">XML::Parser-2.46</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Xz:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">tools:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-xz">Xz-5.2.4</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">Zlib:</strong> <span class=
|
||
"indexref"><a href="#ch-system-zlib">Zlib-1.2.11</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zstd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-zstd">Zstd-1.4.4</a></span>
|
||
</li>
|
||
</ul>
|
||
<h2>
|
||
<a id="program-index" name="program-index"></a>Programs
|
||
</h2>
|
||
<ul>
|
||
<li>
|
||
<strong class="item">2to3:</strong> <span class=
|
||
"indexref"><a href="#ch-system-Python">Python-3.8.1</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">accessdb:</strong> <span class=
|
||
"indexref"><a href="#ch-system-man-db">Man-DB-2.9.0</a> --
|
||
<a href="#accessdb">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">aclocal:</strong> <span class=
|
||
"indexref"><a href="#ch-system-automake">Automake-1.16.1</a> --
|
||
<a href="#aclocal">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">aclocal-1.16:</strong> <span class=
|
||
"indexref"><a href="#ch-system-automake">Automake-1.16.1</a> --
|
||
<a href="#aclocalversion">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">addftinfo:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#addftinfo">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">addpart:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#addpart">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">addr2line:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#addr2line">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">afmtodit:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#afmtodit">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">agetty:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#agetty">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">apropos:</strong> <span class=
|
||
"indexref"><a href="#ch-system-man-db">Man-DB-2.9.0</a> --
|
||
<a href="#apropos">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ar:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#ar">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">as:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#as">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">attr:</strong> <span class=
|
||
"indexref"><a href="#ch-system-attr">Attr-2.4.48</a> --
|
||
<a href="#attr">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">autoconf:</strong> <span class=
|
||
"indexref"><a href="#ch-system-autoconf">Autoconf-2.69</a> --
|
||
<a href="#autoconf">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">autoheader:</strong> <span class=
|
||
"indexref"><a href="#ch-system-autoconf">Autoconf-2.69</a> --
|
||
<a href="#autoheader">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">autom4te:</strong> <span class=
|
||
"indexref"><a href="#ch-system-autoconf">Autoconf-2.69</a> --
|
||
<a href="#autom4te">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">automake:</strong> <span class=
|
||
"indexref"><a href="#ch-system-automake">Automake-1.16.1</a> --
|
||
<a href="#automake">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">automake-1.16:</strong> <span class=
|
||
"indexref"><a href="#ch-system-automake">Automake-1.16.1</a> --
|
||
<a href="#automake-version">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">autopoint:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#autopoint">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">autoreconf:</strong> <span class=
|
||
"indexref"><a href="#ch-system-autoconf">Autoconf-2.69</a> --
|
||
<a href="#autoreconf">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">autoscan:</strong> <span class=
|
||
"indexref"><a href="#ch-system-autoconf">Autoconf-2.69</a> --
|
||
<a href="#autoscan">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">autoupdate:</strong> <span class=
|
||
"indexref"><a href="#ch-system-autoconf">Autoconf-2.69</a> --
|
||
<a href="#autoupdate">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">awk:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gawk">Gawk-5.0.1</a> -- <a href=
|
||
"#awk">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">b2sum:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#b2sum">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">badblocks:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#badblocks">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">base64:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#base64">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">basename:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#basename">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">basenc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#basenc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">bash:</strong> <span class=
|
||
"indexref"><a href="#ch-system-bash">Bash-5.0</a> -- <a href=
|
||
"#bash">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">bashbug:</strong> <span class=
|
||
"indexref"><a href="#ch-system-bash">Bash-5.0</a> -- <a href=
|
||
"#bashbug">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">bc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-bc">Bc-2.5.3</a> -- <a href=
|
||
"#bc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">bison:</strong> <span class=
|
||
"indexref"><a href="#ch-system-bison">Bison-3.5.2</a> --
|
||
<a href="#bison">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">blkdiscard:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#blkdiscard">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">blkid:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#blkid">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">blkzone:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#blkzone">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">blockdev:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#blockdev">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">bootlogd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-sysvinit">Sysvinit-2.96</a> --
|
||
<a href="#bootlogd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">bridge:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#bridge">description</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">description</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">description</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">description</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">description</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">description</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">description</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">description</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">description</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">description</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">description</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">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">c++:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#c">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">c++filt:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#c-filt">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">cal:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#cal">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">capsh:</strong> <span class=
|
||
"indexref"><a href="#ch-system-libcap">Libcap-2.31</a> --
|
||
<a href="#capsh">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">captoinfo:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#captoinfo">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">cat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#cat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">catchsegv:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#catchsegv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">catman:</strong> <span class=
|
||
"indexref"><a href="#ch-system-man-db">Man-DB-2.9.0</a> --
|
||
<a href="#catman">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">cc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#cc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">cfdisk:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#cfdisk">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chacl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-acl">Acl-2.2.53</a> -- <a href=
|
||
"#chacl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chage:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#chage">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chattr:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#chattr">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chcon:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#chcon">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chcpu:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#chcpu">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">checkmk:</strong> <span class=
|
||
"indexref"><a href="#ch-system-check">Check-0.14.0</a> --
|
||
<a href="#checkmk">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chem:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#chem">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chfn:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#chfn">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chgpasswd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#chgpasswd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chgrp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#chgrp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chmem:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#chmem">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chmod:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#chmod">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">choom:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#choom">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chown:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#chown">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chpasswd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#chpasswd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chroot:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#chroot">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chrt:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#chrt">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chsh:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#chsh">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">chvt:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#chvt">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">cksum:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#cksum">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">clear:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#clear">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">cmp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-diffutils">Diffutils-3.7</a> --
|
||
<a href="#cmp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">col:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#col">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">colcrt:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#colcrt">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">colrm:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#colrm">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">column:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#column">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">comm:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#comm">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">compile_et:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#compile_et">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">corelist:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#corelist">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">cp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#cp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">cpan:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#cpan">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">cpp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#cpp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">csplit:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#csplit">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ctrlaltdel:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#ctrlaltdel">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ctstat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#ctstat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">cut:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#cut">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">c_rehash:</strong> <span class=
|
||
"indexref"><a href="#ch-system-openssl">OpenSSL-1.1.1d</a> --
|
||
<a href="#c_rehash">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">date:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#date">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">dc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-bc">Bc-2.5.3</a> -- <a href=
|
||
"#dc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">dd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#dd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">deallocvt:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#deallocvt">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">debugfs:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#debugfs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">delpart:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#delpart">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">depmod:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kmod">Kmod-26</a> -- <a href=
|
||
"#depmod">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">df:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#df">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">diff:</strong> <span class=
|
||
"indexref"><a href="#ch-system-diffutils">Diffutils-3.7</a> --
|
||
<a href="#diff">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">diff3:</strong> <span class=
|
||
"indexref"><a href="#ch-system-diffutils">Diffutils-3.7</a> --
|
||
<a href="#diff3">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">dir:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#dir">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">dircolors:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#dircolors">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">dirname:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#dirname">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">dmesg:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#dmesg">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">dnsdomainname:</strong> <span class=
|
||
"indexref"><a href="#ch-system-inetutils">Inetutils-1.9.4</a>
|
||
-- <a href="#dnsdomainname">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">du:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#du">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">dumpe2fs:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#dumpe2fs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">dumpkeys:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#dumpkeys">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">e2freefrag:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#e2freefrag">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">e2fsck:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#e2fsck">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">e2image:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#e2image">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">e2label:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#e2label">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">e2mmpstatus:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#e2mmpstatus">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">e2scrub:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#e2scrub">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">e2scrub_all:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#e2scrub_all">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">e2undo:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#e2undo">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">e4crypt:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#e4crypt">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">e4defrag:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#e4defrag">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">echo:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#echo">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">egrep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grep">Grep-3.4</a> -- <a href=
|
||
"#egrep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">eject:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#eject">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">elfedit:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#elfedit">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">enc2xs:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#enc2xs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">encguess:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#encguess">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">env:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#env">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">envsubst:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#envsubst">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">eqn:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#eqn">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">eqn2graph:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#eqn2graph">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ex:</strong> <span class=
|
||
"indexref"><a href="#ch-system-vim">Vim-8.2.0190</a> --
|
||
<a href="#ex">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">expand:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#expand">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">expect:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-expect">Expect-5.45.4</a> --
|
||
<a href="#expect">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">expiry:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#expiry">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">expr:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#expr">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">factor:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#factor">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">faillog:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#faillog">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fallocate:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#fallocate">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">false:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#false">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fdformat:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#fdformat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fdisk:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#fdisk">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fgconsole:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#fgconsole">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fgrep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grep">Grep-3.4</a> -- <a href=
|
||
"#fgrep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">file:</strong> <span class=
|
||
"indexref"><a href="#ch-system-file">File-5.38</a> -- <a href=
|
||
"#file">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">filefrag:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#filefrag">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fincore:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#fincore">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">find:</strong> <span class=
|
||
"indexref"><a href="#ch-system-findutils">Findutils-4.7.0</a>
|
||
-- <a href="#find">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">findfs:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#findfs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">findmnt:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#findmnt">description</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">description</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">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">flock:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#flock">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fmt:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#fmt">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fold:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#fold">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">free:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#free">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fsck:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#fsck">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fsck.cramfs:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#fsck.cramfs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fsck.ext2:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#fsck.ext2">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fsck.ext3:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#fsck.ext3">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fsck.ext4:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#fsck.ext4">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fsck.minix:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#fsck.minix">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fsfreeze:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#fsfreeze">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fstab-decode:</strong> <span class=
|
||
"indexref"><a href="#ch-system-sysvinit">Sysvinit-2.96</a> --
|
||
<a href="#fstab-decode">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fstrim:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#fstrim">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ftp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-inetutils">Inetutils-1.9.4</a>
|
||
-- <a href="#ftp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">fuser:</strong> <span class=
|
||
"indexref"><a href="#ch-system-psmisc">Psmisc-23.2</a> --
|
||
<a href="#fuser">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">g++:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#g">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gawk:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gawk">Gawk-5.0.1</a> -- <a href=
|
||
"#gawk">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gawk-5.0.1:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gawk">Gawk-5.0.1</a> -- <a href=
|
||
"#gawk-version">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gcc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#gcc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gc-ar:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#gcc-ar">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gc-nm:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#gcc-nm">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gc-ranlib:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#gcc-ranlib">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gcov:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#gcov">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gcov-dump:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#gcov-dump">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gcov-tool:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#gcov-tool">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gdbmtool:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gdbm">GDBM-1.18.1</a> --
|
||
<a href="#gdbmtool">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gdbm_dump:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gdbm">GDBM-1.18.1</a> --
|
||
<a href="#gdbm_dump">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gdbm_load:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gdbm">GDBM-1.18.1</a> --
|
||
<a href="#gdbm_load">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gdiffmk:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#gdiffmk">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gencat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#gencat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">genl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#genl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">getcap:</strong> <span class=
|
||
"indexref"><a href="#ch-system-libcap">Libcap-2.31</a> --
|
||
<a href="#getcap">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">getconf:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#getconf">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">getent:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#getent">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">getfacl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-acl">Acl-2.2.53</a> -- <a href=
|
||
"#getfacl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">getfattr:</strong> <span class=
|
||
"indexref"><a href="#ch-system-attr">Attr-2.4.48</a> --
|
||
<a href="#getfattr">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">getkeycodes:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#getkeycodes">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">getopt:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#getopt">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">getpcaps:</strong> <span class=
|
||
"indexref"><a href="#ch-system-libcap">Libcap-2.31</a> --
|
||
<a href="#getpcaps">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gettext:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#gettext">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gettext.sh:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#gettext.sh">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gettextize:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#gettextize">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">glilypond:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#glilypond">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gpasswd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#gpasswd">description</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">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gperl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#gperl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gpinyin:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#gpinyin">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gprof:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#gprof">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grap2graph:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#grap2graph">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grep">Grep-3.4</a> -- <a href=
|
||
"#grep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grn:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#grn">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grodvi:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#grodvi">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">groff:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#groff">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">groffer:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#groffer">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grog:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#grog">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grolbp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#grolbp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grolj4:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#grolj4">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gropdf:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#gropdf">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grops:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#grops">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grotty:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#grotty">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">groupadd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#groupadd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">groupdel:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#groupdel">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">groupmems:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#groupmems">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">groupmod:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#groupmod">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">groups:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#groups">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grpck:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#grpck">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grpconv:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#grpconv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grpunconv:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#grpunconv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-bios-setup:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-bios-setup">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-editenv:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-editenv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-file:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-file">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-fstest:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-fstest">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-glue-efi:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-glue-efi">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-install:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-install">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-kbdcomp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-kbdcomp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-macbless:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-macbless">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-menulst2cfg:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-menulst2cfg">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-mkconfig:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-mkconfig">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-mkimage:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-mkimage">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-mklayout:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-mklayout">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-mknetdir:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-mknetdir">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-mkpasswd-pbkdf2:</strong>
|
||
<span class="indexref"><a href="#ch-system-grub">GRUB-2.04</a>
|
||
-- <a href="#grub-mkpasswd-pbkdf2">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-mkrelpath:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-mkrelpath">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-mkrescue:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-mkrescue">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-mkstandalone:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-mkstandalone">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-ofpathname:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-ofpathname">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-probe:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-probe">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-reboot:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-reboot">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-render-label:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-render-label">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-script-check:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-script-check">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-set-default:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-set-default">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-setup:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-sparc64-setup">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">grub-syslinux2cfg:</strong> <span class=
|
||
"indexref"><a href="#ch-system-grub">GRUB-2.04</a> -- <a href=
|
||
"#grub-syslinux2cfg">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gunzip:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gzip">Gzip-1.10</a> -- <a href=
|
||
"#gunzip">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gzexe:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gzip">Gzip-1.10</a> -- <a href=
|
||
"#gzexe">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">gzip:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gzip">Gzip-1.10</a> -- <a href=
|
||
"#gzip">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">h2ph:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#h2ph">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">h2xs:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#h2xs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">halt:</strong> <span class=
|
||
"indexref"><a href="#ch-system-sysvinit">Sysvinit-2.96</a> --
|
||
<a href="#halt-sysv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">head:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#head">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">hexdump:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#hexdump">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">hostid:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#hostid">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">hostname:</strong> <span class=
|
||
"indexref"><a href="#ch-system-inetutils">Inetutils-1.9.4</a>
|
||
-- <a href="#hostname">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">hpftodit:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#hpftodit">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">hwclock:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#hwclock">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">i386:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#i386">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">iconv:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#iconv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">iconvconfig:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#iconvconfig">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">id:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#id">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">idle3:</strong> <span class=
|
||
"indexref"><a href="#ch-system-Python">Python-3.8.1</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ifcfg:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#ifcfg">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ifconfig:</strong> <span class=
|
||
"indexref"><a href="#ch-system-inetutils">Inetutils-1.9.4</a>
|
||
-- <a href="#ifconfig">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ifnames:</strong> <span class=
|
||
"indexref"><a href="#ch-system-autoconf">Autoconf-2.69</a> --
|
||
<a href="#ifnames">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ifstat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#ifstat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">indxbib:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#indxbib">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">info:</strong> <span class=
|
||
"indexref"><a href="#ch-system-texinfo">Texinfo-6.7</a> --
|
||
<a href="#info">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">infocmp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#infocmp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">infotocap:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#infotocap">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">init:</strong> <span class=
|
||
"indexref"><a href="#ch-system-sysvinit">Sysvinit-2.96</a> --
|
||
<a href="#init-sysv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">insmod:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kmod">Kmod-26</a> -- <a href=
|
||
"#insmod">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">install:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#install">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">install-info:</strong> <span class=
|
||
"indexref"><a href="#ch-system-texinfo">Texinfo-6.7</a> --
|
||
<a href="#install-info">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">instmodsh:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#instmodsh">description</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">description</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">description</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">description</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">description</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">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ionice:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#ionice">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ip:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#ip">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ipcmk:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#ipcmk">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ipcrm:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#ipcrm">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ipcs:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#ipcs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">isosize:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#isosize">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">join:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#join">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">json_pp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#json_pp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">kbdinfo:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#kbdinfo">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">kbdrate:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#kbdrate">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">kbd_mode:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#kbd_mode">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">kill:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#kill">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">killall:</strong> <span class=
|
||
"indexref"><a href="#ch-system-psmisc">Psmisc-23.2</a> --
|
||
<a href="#killall">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">killall5:</strong> <span class=
|
||
"indexref"><a href="#ch-system-sysvinit">Sysvinit-2.96</a> --
|
||
<a href="#killall5">description</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">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">kmod:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kmod">Kmod-26</a> -- <a href=
|
||
"#kmod">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">last:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#last">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lastb:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#lastb">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lastlog:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#lastlog">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ld:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#ld">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ld.bfd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#ld.bfd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ld.gold:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#ld.gold">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ldattach:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#ldattach">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ldconfig:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#ldconfig">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ldd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#ldd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lddlibc4:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#lddlibc4">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">less:</strong> <span class=
|
||
"indexref"><a href="#ch-system-less">Less-551</a> -- <a href=
|
||
"#less">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lessecho:</strong> <span class=
|
||
"indexref"><a href="#ch-system-less">Less-551</a> -- <a href=
|
||
"#lessecho">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lesskey:</strong> <span class=
|
||
"indexref"><a href="#ch-system-less">Less-551</a> -- <a href=
|
||
"#lesskey">description</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">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lexgrog:</strong> <span class=
|
||
"indexref"><a href="#ch-system-man-db">Man-DB-2.9.0</a> --
|
||
<a href="#lexgrog">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lfskernel-5.5.3:</strong> <span class=
|
||
"indexref"><a href="#ch-bootable-kernel">Linux-5.5.3</a> --
|
||
<a href="#lfskernel">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libasan:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#libasan">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libatomic:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#libatomic">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libcc1:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#libcc1">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libnetcfg:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#libnetcfg">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libtool:</strong> <span class=
|
||
"indexref"><a href="#ch-system-libtool">Libtool-2.4.6</a> --
|
||
<a href="#libtool">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libtoolize:</strong> <span class=
|
||
"indexref"><a href="#ch-system-libtool">Libtool-2.4.6</a> --
|
||
<a href="#libtoolize">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">link:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#link">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">linux32:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#linux32">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">linux64:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#linux64">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lkbib:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#lkbib">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ln:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#ln">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lnstat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#lnstat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">loadkeys:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#loadkeys">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">loadunimap:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#loadunimap">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">locale:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#locale">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">localedef:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#localedef">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">locate:</strong> <span class=
|
||
"indexref"><a href="#ch-system-findutils">Findutils-4.7.0</a>
|
||
-- <a href="#locate">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">logger:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#logger">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">login:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#login">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">logname:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#logname">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">logoutd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#logoutd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">logsave:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#logsave">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">look:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#look">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lookbib:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#lookbib">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">losetup:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#losetup">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ls:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#ls">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lsattr:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#lsattr">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lsblk:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#lsblk">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lscpu:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#lscpu">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lsipc:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#lsipc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lslocks:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#lslocks">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lslogins:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#lslogins">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lsmem:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#lsmem">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lsmod:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kmod">Kmod-26</a> -- <a href=
|
||
"#lsmod">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lsns:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#lsns">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lzcat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#lzcat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lzcmp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#lzcmp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lzdiff:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#lzdiff">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lzegrep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#lzegrep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lzfgrep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#lzfgrep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lzgrep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#lzgrep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lzless:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#lzless">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lzma:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#lzma">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lzmadec:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#lzmadec">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lzmainfo:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#lzmainfo">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">lzmore:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#lzmore">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">m4:</strong> <span class=
|
||
"indexref"><a href="#ch-system-m4">M4-1.4.18</a> -- <a href=
|
||
"#m4">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">make:</strong> <span class=
|
||
"indexref"><a href="#ch-system-make">Make-4.3</a> -- <a href=
|
||
"#make">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">makedb:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#makedb">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">makeinfo:</strong> <span class=
|
||
"indexref"><a href="#ch-system-texinfo">Texinfo-6.7</a> --
|
||
<a href="#makeinfo">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">man:</strong> <span class=
|
||
"indexref"><a href="#ch-system-man-db">Man-DB-2.9.0</a> --
|
||
<a href="#man">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mandb:</strong> <span class=
|
||
"indexref"><a href="#ch-system-man-db">Man-DB-2.9.0</a> --
|
||
<a href="#mandb">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">manpath:</strong> <span class=
|
||
"indexref"><a href="#ch-system-man-db">Man-DB-2.9.0</a> --
|
||
<a href="#manpath">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mapscrn:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#mapscrn">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mcookie:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#mcookie">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">md5sum:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#md5sum">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mesg:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#mesg">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">meson:</strong> <span class=
|
||
"indexref"><a href="#ch-system-meson">Meson-0.53.1</a> --
|
||
<a href="#meson">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mkdir:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#mkdir">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mke2fs:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#mke2fs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mkfifo:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#mkfifo">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mkfs:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#mkfs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mkfs.bfs:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#mkfs.bfs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mkfs.cramfs:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#mkfs.cramfs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mkfs.ext2:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#mkfs.ext2">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mkfs.ext3:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#mkfs.ext3">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mkfs.ext4:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#mkfs.ext4">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mkfs.minix:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#mkfs.minix">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mklost+found:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#mklost-found">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mknod:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#mknod">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mkswap:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#mkswap">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mktemp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#mktemp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mk_cmds:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#mk_cmds">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mmroff:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#mmroff">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">modinfo:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kmod">Kmod-26</a> -- <a href=
|
||
"#modinfo">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">modprobe:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kmod">Kmod-26</a> -- <a href=
|
||
"#modprobe">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">more:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#more">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mount:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#mount">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mountpoint:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#mountpoint">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">msgattrib:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#msgattrib">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">msgcat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#msgcat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">msgcmp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#msgcmp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">msgcomm:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#msgcomm">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">msgconv:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#msgconv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">msgen:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#msgen">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">msgexec:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#msgexec">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">msgfilter:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#msgfilter">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">msgfmt:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#msgfmt">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">msggrep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#msggrep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">msginit:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#msginit">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">msgmerge:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#msgmerge">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">msgunfmt:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#msgunfmt">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">msguniq:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#msguniq">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mtrace:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#mtrace">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mv:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#mv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">namei:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#namei">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ncursesw6-config:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#ncursesw6-config">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">neqn:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#neqn">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">newgidmap:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#newgidmap">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">newgrp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#newgrp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">newuidmap:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#newuidmap">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">newusers:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#newusers">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ngettext:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#ngettext">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">nice:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#nice">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ninja:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ninja">Ninja-1.10.0</a> --
|
||
<a href="#ninja">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">nl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#nl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">nm:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#nm">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">nohup:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#nohup">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">nologin:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#nologin">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">nproc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#nproc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">nroff:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#nroff">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">nscd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#nscd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">nsenter:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#nsenter">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">nstat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#nstat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">numfmt:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#numfmt">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">objcopy:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#objcopy">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">objdump:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#objdump">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">od:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#od">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">openssl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-openssl">OpenSSL-1.1.1d</a> --
|
||
<a href="#openssl-prog">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">openvt:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#openvt">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">partx:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#partx">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">passwd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#passwd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">paste:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#paste">description</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">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pathchk:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#pathchk">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pcprofiledump:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#pcprofiledump">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pdfmom:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#pdfmom">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pdfroff:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#pdfroff">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pdftexi2dvi:</strong> <span class=
|
||
"indexref"><a href="#ch-system-texinfo">Texinfo-6.7</a> --
|
||
<a href="#pdftexi2dvi">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">peekfd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-psmisc">Psmisc-23.2</a> --
|
||
<a href="#peekfd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">perl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#perl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">perl5.30.1:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#perl-version">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">perlbug:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#perlbug">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">perldoc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#perldoc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">perlivp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#perlivp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">perlthanks:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#perlthanks">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pfbtops:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#pfbtops">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pgrep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#pgrep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pic:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#pic">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pic2graph:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#pic2graph">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">piconv:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#piconv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pidof:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#pidof">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ping:</strong> <span class=
|
||
"indexref"><a href="#ch-system-inetutils">Inetutils-1.9.4</a>
|
||
-- <a href="#ping">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ping6:</strong> <span class=
|
||
"indexref"><a href="#ch-system-inetutils">Inetutils-1.9.4</a>
|
||
-- <a href="#ping6">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pinky:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#pinky">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pip3:</strong> <span class=
|
||
"indexref"><a href="#ch-system-Python">Python-3.8.1</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pivot_root:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#pivot_root">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pkg-config:</strong> <span class=
|
||
"indexref"><a href="#ch-system-pkgconfig">Pkg-config-0.29.2</a>
|
||
-- <a href="#pkgconfig">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pkill:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#pkill">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pl2pm:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#pl2pm">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pldd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#pldd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pmap:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#pmap">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pod2html:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#pod2html">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pod2man:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#pod2man">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pod2texi:</strong> <span class=
|
||
"indexref"><a href="#ch-system-texinfo">Texinfo-6.7</a> --
|
||
<a href="#pod2texi">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pod2text:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#pod2text">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pod2usage:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#pod2usage">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">podchecker:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#podchecker">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">podselect:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#podselect">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">post-grohtml:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#post-grohtml">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">poweroff:</strong> <span class=
|
||
"indexref"><a href="#ch-system-sysvinit">Sysvinit-2.96</a> --
|
||
<a href="#poweroff-sysv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pr:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#pr">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pre-grohtml:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#pre-grohtml">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">preconv:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#preconv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">printenv:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#printenv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">printf:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#printf">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">prlimit:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#prlimit">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">prove:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#prove">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">prtstat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-psmisc">Psmisc-23.2</a> --
|
||
<a href="#prtstat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ps:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#ps">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">psfaddtable:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#psfaddtable">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">psfgettable:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#psfgettable">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">psfstriptable:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#psfstriptable">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">psfxtable:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#psfxtable">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pslog:</strong> <span class=
|
||
"indexref"><a href="#ch-system-psmisc">Psmisc-23.2</a> --
|
||
<a href="#pslog">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pstree:</strong> <span class=
|
||
"indexref"><a href="#ch-system-psmisc">Psmisc-23.2</a> --
|
||
<a href="#pstree">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pstree.x11:</strong> <span class=
|
||
"indexref"><a href="#ch-system-psmisc">Psmisc-23.2</a> --
|
||
<a href="#pstree.x11">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ptar:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#ptar">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ptardiff:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#ptardiff">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ptargrep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#ptargrep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ptx:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#ptx">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pwck:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#pwck">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pwconv:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#pwconv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pwd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#pwd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pwdx:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#pwdx">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pwunconv:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#pwunconv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">pydoc3:</strong> <span class=
|
||
"indexref"><a href="#ch-system-Python">Python-3.8.1</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">python3:</strong> <span class=
|
||
"indexref"><a href="#ch-system-Python">Python-3.8.1</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ranlib:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#ranlib">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">raw:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#raw">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">readelf:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#readelf">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">readlink:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#readlink">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">readprofile:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#readprofile">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">realpath:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#realpath">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">reboot:</strong> <span class=
|
||
"indexref"><a href="#ch-system-sysvinit">Sysvinit-2.96</a> --
|
||
<a href="#reboot-sysv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">recode-sr-latin:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#recode-sr-latin">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">refer:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#refer">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">rename:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#rename">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">renice:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#renice">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">reset:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#reset">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">resize2fs:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#resize2fs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">resizepart:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#resizepart">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">rev:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#rev">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">rkfill:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#rkfill">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">rm:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#rm">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">rmdir:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#rmdir">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">rmmod:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kmod">Kmod-26</a> -- <a href=
|
||
"#rmmod">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">roff2dvi:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#roff2dvi">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">roff2html:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#roff2html">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">roff2pdf:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#roff2pdf">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">roff2ps:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#roff2ps">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">roff2text:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#roff2text">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">roff2x:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#roff2x">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">routef:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#routef">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">routel:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#routel">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">rtacct:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#rtacct">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">rtcwake:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#rtcwake">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">rtmon:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#rtmon">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">rtpr:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#rtpr">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">rtstat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#rtstat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">runcon:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#runcon">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">runlevel:</strong> <span class=
|
||
"indexref"><a href="#ch-system-sysvinit">Sysvinit-2.96</a> --
|
||
<a href="#runlevel-sysv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">runtest:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-dejagnu">DejaGNU-1.6.2</a> --
|
||
<a href="#runtest">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">rview:</strong> <span class=
|
||
"indexref"><a href="#ch-system-vim">Vim-8.2.0190</a> --
|
||
<a href="#rview">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">rvim:</strong> <span class=
|
||
"indexref"><a href="#ch-system-vim">Vim-8.2.0190</a> --
|
||
<a href="#rvim">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">script:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#script">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">scriptreplay:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#scriptreplay">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sdiff:</strong> <span class=
|
||
"indexref"><a href="#ch-system-diffutils">Diffutils-3.7</a> --
|
||
<a href="#sdiff">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sed:</strong> <span class=
|
||
"indexref"><a href="#ch-system-sed">Sed-4.8</a> -- <a href=
|
||
"#sed">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">seq:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#seq">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">setarch:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#setarch">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">setcap:</strong> <span class=
|
||
"indexref"><a href="#ch-system-libcap">Libcap-2.31</a> --
|
||
<a href="#setcap">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">setfacl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-acl">Acl-2.2.53</a> -- <a href=
|
||
"#setfacl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">setfattr:</strong> <span class=
|
||
"indexref"><a href="#ch-system-attr">Attr-2.4.48</a> --
|
||
<a href="#setfattr">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">setfont:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#setfont">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">setkeycodes:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#setkeycodes">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">setleds:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#setleds">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">setmetamode:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#setmetamode">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">setsid:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#setsid">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">setterm:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#setterm">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">setvtrgb:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#setvtrgb">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sfdisk:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#sfdisk">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sg:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#sg">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sh:</strong> <span class=
|
||
"indexref"><a href="#ch-system-bash">Bash-5.0</a> -- <a href=
|
||
"#sh">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sha1sum:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#sha1sum">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sha224sum:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#sha224sum">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sha256sum:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#sha256sum">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sha384sum:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#sha384sum">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sha512sum:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#sha512sum">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">shasum:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#shasum">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">showconsolefont:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#showconsolefont">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">showkey:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#showkey">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">shred:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#shred">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">shuf:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#shuf">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">shutdown:</strong> <span class=
|
||
"indexref"><a href="#ch-system-sysvinit">Sysvinit-2.96</a> --
|
||
<a href="#shutdown-sysv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">size:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#size">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">slabtop:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#slabtop">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sleep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#sleep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sln:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#sln">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">soelim:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#soelim">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sort:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#sort">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sotruss:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#sotruss">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">splain:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#splain">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">split:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#split">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sprof:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#sprof">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ss:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#ss">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">stat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#stat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">stdbuf:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#stdbuf">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">strings:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#strings">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">strip:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#strip">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">stty:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#stty">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">su:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#su">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sulogin:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#sulogin">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sum:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#sum">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">swaplabel:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#swaplabel">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">swapoff:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#swapoff">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">swapon:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#swapon">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">switch_root:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#switch_root">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sync:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#sync">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sysctl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#sysctl">description</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">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tabs:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#tabs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tac:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#tac">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tail:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#tail">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tailf:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#tailf">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">talk:</strong> <span class=
|
||
"indexref"><a href="#ch-system-inetutils">Inetutils-1.9.4</a>
|
||
-- <a href="#talk">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tar:</strong> <span class=
|
||
"indexref"><a href="#ch-system-tar">Tar-1.32</a> -- <a href=
|
||
"#tar">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">taskset:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#taskset">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tbl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#tbl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-iproute2">IPRoute2-5.5.0</a> --
|
||
<a href="#ss">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tclsh:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-tcl">Tcl-8.6.10</a> -- <a href=
|
||
"#tclsh">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tclsh8.6:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-tcl">Tcl-8.6.10</a> -- <a href=
|
||
"#tclsh8.6">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tee:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#tee">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">telinit:</strong> <span class=
|
||
"indexref"><a href="#ch-system-sysvinit">Sysvinit-2.96</a> --
|
||
<a href="#telinit-sysv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">telnet:</strong> <span class=
|
||
"indexref"><a href="#ch-system-inetutils">Inetutils-1.9.4</a>
|
||
-- <a href="#telnet">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">test:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#test">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">texi2dvi:</strong> <span class=
|
||
"indexref"><a href="#ch-system-texinfo">Texinfo-6.7</a> --
|
||
<a href="#texi2dvi">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">texi2pdf:</strong> <span class=
|
||
"indexref"><a href="#ch-system-texinfo">Texinfo-6.7</a> --
|
||
<a href="#texi2pdf">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">texi2any:</strong> <span class=
|
||
"indexref"><a href="#ch-system-texinfo">Texinfo-6.7</a> --
|
||
<a href="#texi2any">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">texindex:</strong> <span class=
|
||
"indexref"><a href="#ch-system-texinfo">Texinfo-6.7</a> --
|
||
<a href="#texindex">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tfmtodit:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#tfmtodit">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tftp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-inetutils">Inetutils-1.9.4</a>
|
||
-- <a href="#tftp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tic:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#tic">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">timeout:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#timeout">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tload:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#tload">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">toe:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#toe">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">top:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#top">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">touch:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#touch">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tput:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#tput">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tr:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#tr">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">traceroute:</strong> <span class=
|
||
"indexref"><a href="#ch-system-inetutils">Inetutils-1.9.4</a>
|
||
-- <a href="#traceroute">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">troff:</strong> <span class=
|
||
"indexref"><a href="#ch-system-groff">Groff-1.22.4</a> --
|
||
<a href="#troff">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">true:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#true">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">truncate:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#truncate">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tset:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#tset">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tsort:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#tsort">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tty:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#tty">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tune2fs:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#tune2fs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">tzselect:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#tzselect">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">udevadm:</strong> <span class=
|
||
"indexref"><a href="#ch-system-eudev">Eudev-3.2.9</a> --
|
||
<a href="#udevadm">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">udevd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-eudev">Eudev-3.2.9</a> --
|
||
<a href="#udevd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ul:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#ul">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">umount:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#umount">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">uname:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#uname">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">uname26:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#uname26">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">uncompress:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gzip">Gzip-1.10</a> -- <a href=
|
||
"#uncompress">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">unexpand:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#unexpand">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">unicode_start:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#unicode_start">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">unicode_stop:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kbd">Kbd-2.2.0</a> -- <a href=
|
||
"#unicode_stop">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">uniq:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#uniq">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">unlink:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#unlink">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">unlzma:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#unlzma">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">unshare:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#unshare">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">unxz:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#unxz">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">updatedb:</strong> <span class=
|
||
"indexref"><a href="#ch-system-findutils">Findutils-4.7.0</a>
|
||
-- <a href="#updatedb">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">uptime:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#uptime">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">useradd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#useradd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">userdel:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#userdel">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">usermod:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#usermod">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">users:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#users">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">utmpdump:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#utmpdump">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">uuidd:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#uuidd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">uuidgen:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#uuidgen">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">uuidparse:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#uuidparse">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">vdir:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#vdir">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">vi:</strong> <span class=
|
||
"indexref"><a href="#ch-system-vim">Vim-8.2.0190</a> --
|
||
<a href="#vi">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">view:</strong> <span class=
|
||
"indexref"><a href="#ch-system-vim">Vim-8.2.0190</a> --
|
||
<a href="#view">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">vigr:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#vigr">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">vim:</strong> <span class=
|
||
"indexref"><a href="#ch-system-vim">Vim-8.2.0190</a> --
|
||
<a href="#vim">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">vimdiff:</strong> <span class=
|
||
"indexref"><a href="#ch-system-vim">Vim-8.2.0190</a> --
|
||
<a href="#vimdiff">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">vimtutor:</strong> <span class=
|
||
"indexref"><a href="#ch-system-vim">Vim-8.2.0190</a> --
|
||
<a href="#vimtutor">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">vipw:</strong> <span class=
|
||
"indexref"><a href="#ch-system-shadow">Shadow-4.8.1</a> --
|
||
<a href="#vipw">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">vmstat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#vmstat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">w:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#w">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">wall:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#wall">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">watch:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#watch">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">wc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#wc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">wdctl:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#wdctl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">whatis:</strong> <span class=
|
||
"indexref"><a href="#ch-system-man-db">Man-DB-2.9.0</a> --
|
||
<a href="#whatis">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">whereis:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#whereis">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">who:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#who">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">whoami:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#whoami">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">wipefs:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#wipefs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">x86_64:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#x86_64">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xargs:</strong> <span class=
|
||
"indexref"><a href="#ch-system-findutils">Findutils-4.7.0</a>
|
||
-- <a href="#xargs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xgettext:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#xgettext">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xmlwf:</strong> <span class=
|
||
"indexref"><a href="#ch-system-expat">Expat-2.2.9</a> --
|
||
<a href="#xmlwf">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xsubpp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#xsubpp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xtrace:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#xtrace">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xxd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-vim">Vim-8.2.0190</a> --
|
||
<a href="#xxd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xz:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#xz">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xzcat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#xzcat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xzcmp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#xzcmp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xzdec:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#xzdec">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xzdiff:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#xzdiff">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xzegrep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#xzegrep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xzfgrep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#xzfgrep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xzgrep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#xzgrep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xzless:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#xzless">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">xzmore:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#xzmore">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">yacc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-bison">Bison-3.5.2</a> --
|
||
<a href="#yacc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">yes:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#yes">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zcat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gzip">Gzip-1.10</a> -- <a href=
|
||
"#zcat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zcmp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gzip">Gzip-1.10</a> -- <a href=
|
||
"#zcmp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zdiff:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gzip">Gzip-1.10</a> -- <a href=
|
||
"#zdiff">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zdump:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#zdump">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zegrep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gzip">Gzip-1.10</a> -- <a href=
|
||
"#zegrep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zfgrep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gzip">Gzip-1.10</a> -- <a href=
|
||
"#zfgrep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zforce:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gzip">Gzip-1.10</a> -- <a href=
|
||
"#zforce">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zgrep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gzip">Gzip-1.10</a> -- <a href=
|
||
"#zgrep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zic:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#zic">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zipdetails:</strong> <span class=
|
||
"indexref"><a href="#ch-system-perl">Perl-5.30.1</a> --
|
||
<a href="#zipdetails">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zless:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gzip">Gzip-1.10</a> -- <a href=
|
||
"#zless">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zmore:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gzip">Gzip-1.10</a> -- <a href=
|
||
"#zmore">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">znew:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gzip">Gzip-1.10</a> -- <a href=
|
||
"#znew">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zramctl:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#zramctl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zstd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-zstd">Zstd-1.4.4</a> -- <a href=
|
||
"#zstd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zstdgrep:</strong> <span class=
|
||
"indexref"><a href="#ch-system-zstd">Zstd-1.4.4</a> -- <a href=
|
||
"#zstdgrep">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">zstdless:</strong> <span class=
|
||
"indexref"><a href="#ch-system-zstd">Zstd-1.4.4</a> -- <a href=
|
||
"#zstdless">description</a><br /></span>
|
||
</li>
|
||
</ul>
|
||
<h2>
|
||
<a id="library-index" name="library-index"></a>Libraries
|
||
</h2>
|
||
<ul>
|
||
<li>
|
||
<strong class="item">Expat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xml-parser">XML::Parser-2.46</a>
|
||
-- <a href="#Expat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ld-2.31.so:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#ld.so">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libacl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-acl">Acl-2.2.53</a> -- <a href=
|
||
"#libacl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libanl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libanl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libasprintf:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#libasprintf">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libattr:</strong> <span class=
|
||
"indexref"><a href="#ch-system-attr">Attr-2.4.48</a> --
|
||
<a href="#libattr">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libbfd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#libbfd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libblkid:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#libblkid">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libBrokenLocale:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libBrokenLocale">description</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">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libcap:</strong> <span class=
|
||
"indexref"><a href="#ch-system-libcap">Libcap-2.31</a> --
|
||
<a href="#libcap">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libcheck:</strong> <span class=
|
||
"indexref"><a href="#ch-system-check">Check-0.14.0</a> --
|
||
<a href="#libcheck">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libcom_err:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#libcom_err">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libcrypt:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libcrypt">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libcrypto.so:</strong> <span class=
|
||
"indexref"><a href="#ch-system-openssl">OpenSSL-1.1.1d</a> --
|
||
<a href="#libcrypto">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libctf:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#libctf">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libctf-nobfd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#libctf-nobfd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libcursesw:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#libcursesw">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libdl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libdl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libe2p:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#libe2p">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libexpat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-expat">Expat-2.2.9</a> --
|
||
<a href="#libexpat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libexpect-5.45:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-expect">Expect-5.45.4</a> --
|
||
<a href="#libexpect">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libext2fs:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#libext2fs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libfdisk:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#libfdisk">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libffi:</strong> <span class=
|
||
"indexref"><a href="#ch-system-libffi">Libffi-3.3</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">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libformw:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#libformw">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libg:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libg">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libgcc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#libgcc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libgcov:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#libgcov">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libgdbm:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gdbm">GDBM-1.18.1</a> --
|
||
<a href="#libgdbm">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libgdbm_compat:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gdbm">GDBM-1.18.1</a> --
|
||
<a href="#libgdbm_compat">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libgettextlib:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#libgettextlib">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libgettextpo:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#libgettextpo">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libgettextsrc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#libgettextsrc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libgmp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gmp">GMP-6.2.0</a> -- <a href=
|
||
"#libgmp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libgmpxx:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gmp">GMP-6.2.0</a> -- <a href=
|
||
"#libgmpxx">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libgomp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#libgomp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libhistory:</strong> <span class=
|
||
"indexref"><a href="#ch-system-readline">Readline-8.0</a> --
|
||
<a href="#libhistory">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libkmod:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kmod">Kmod-26</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">liblsan:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#liblsan">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libltdl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-libtool">Libtool-2.4.6</a> --
|
||
<a href="#libltdl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">liblto_plugin:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#liblto_plugin">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">liblzma:</strong> <span class=
|
||
"indexref"><a href="#ch-system-xz">Xz-5.2.4</a> -- <a href=
|
||
"#liblzma">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libm:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libm">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libmagic:</strong> <span class=
|
||
"indexref"><a href="#ch-system-file">File-5.38</a> -- <a href=
|
||
"#libmagic">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libman:</strong> <span class=
|
||
"indexref"><a href="#ch-system-man-db">Man-DB-2.9.0</a> --
|
||
<a href="#libman">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libmandb:</strong> <span class=
|
||
"indexref"><a href="#ch-system-man-db">Man-DB-2.9.0</a> --
|
||
<a href="#libmandb">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libmcheck:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libmcheck">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libmemusage:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libmemusage">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libmenuw:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#libmenuw">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libmount:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#libmount">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libmpc:</strong> <span class=
|
||
"indexref"><a href="#ch-system-mpc">MPC-1.1.0</a> -- <a href=
|
||
"#libmpc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libmpfr:</strong> <span class=
|
||
"indexref"><a href="#ch-system-mpfr">MPFR-4.0.2</a> -- <a href=
|
||
"#libmpfr">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libncursesw:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#libncursesw">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libnsl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libnsl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libnss:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libnss">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libopcodes:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#libopcodes">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libpanelw:</strong> <span class=
|
||
"indexref"><a href="#ch-system-ncurses">Ncurses-6.2</a> --
|
||
<a href="#libpanelw">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libpcprofile:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libpcprofile">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libpipeline:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-libpipeline">Libpipeline-1.5.2</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libprocps:</strong> <span class=
|
||
"indexref"><a href="#ch-system-procps">Procps-ng-3.3.15</a> --
|
||
<a href="#libprocps">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libpsx:</strong> <span class=
|
||
"indexref"><a href="#ch-system-libcap">Libcap-2.31</a> --
|
||
<a href="#libpsx">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libpthread:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libpthread">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libquadmath:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#libquadmath">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libreadline:</strong> <span class=
|
||
"indexref"><a href="#ch-system-readline">Readline-8.0</a> --
|
||
<a href="#libreadline">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libresolv:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libresolv">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">librt:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#librt">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libSegFault:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libSegFault">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libsmartcols:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#libsmartcols">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libss:</strong> <span class=
|
||
"indexref"><a href="#ch-system-e2fsprogs">E2fsprogs-1.45.5</a>
|
||
-- <a href="#libss">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libssl.so:</strong> <span class=
|
||
"indexref"><a href="#ch-system-openssl">OpenSSL-1.1.1d</a> --
|
||
<a href="#libssl">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libssp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#libssp">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libstdbuf:</strong> <span class=
|
||
"indexref"><a href="#ch-system-coreutils">Coreutils-8.31</a> --
|
||
<a href="#libstdbuf">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libstdc++:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#libstdc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libstdc++fs:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#libstdcfs">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libsupc++:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#libsupc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libtcl8.6.so:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-tcl">Tcl-8.6.10</a> -- <a href=
|
||
"#libtcl8.6.so">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libtclstub8.6.a:</strong> <span class=
|
||
"indexref"><a href="#ch-tools-tcl">Tcl-8.6.10</a> -- <a href=
|
||
"#libtclstub8.6.a">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libtextstyle:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#libtextstyle">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libthread_db:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libthread_db">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libtsan:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#libtsan">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libubsan:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gcc">GCC-9.2.0</a> -- <a href=
|
||
"#libubsan">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libudev:</strong> <span class=
|
||
"indexref"><a href="#ch-system-eudev">Eudev-3.2.9</a> --
|
||
<a href="#libudev">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libutil:</strong> <span class=
|
||
"indexref"><a href="#ch-system-glibc">Glibc-2.31</a> --
|
||
<a href="#libutil">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libuuid:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-util-linux">Util-linux-2.35.1</a> -- <a href=
|
||
"#libuuid">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">liby:</strong> <span class=
|
||
"indexref"><a href="#ch-system-bison">Bison-3.5.2</a> --
|
||
<a href="#liby">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libz:</strong> <span class=
|
||
"indexref"><a href="#ch-system-zlib">Zlib-1.2.11</a> --
|
||
<a href="#libz">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">libzstd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-zstd">Zstd-1.4.4</a> -- <a href=
|
||
"#libzstd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">preloadable_libintl:</strong> <span class=
|
||
"indexref"><a href="#ch-system-gettext">Gettext-0.20.1</a> --
|
||
<a href="#preloadable_libintl">description</a><br /></span>
|
||
</li>
|
||
</ul>
|
||
<h2>
|
||
<a id="scripts-index" name="scripts-index"></a>Scripts
|
||
</h2>
|
||
<ul>
|
||
<li>
|
||
<strong class="item">checkfs:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#checkfs-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">cleanfs:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#cleanfs-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">console:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#console-bootscripts">description</a><br /></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">configuring:</strong> <span class=
|
||
"indexref"><a href="#ch-config-console">Configuring the
|
||
Linux Console</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">Creating Files
|
||
at Boot</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">functions:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#functions-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">halt:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#halt-bootscripts">description</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">Configuring the
|
||
system hostname</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ifdown:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#ifdown-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ifup:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#ifup-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">ipv4-static:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#ipv4-static-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">localnet:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#localnet-bootscripts">description</a><br /></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">/etc/hosts:</strong> <span class=
|
||
"indexref"><a href="#ch-config-hosts">Customizing the
|
||
/etc/hosts File</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">modules:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#modules-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mountfs:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#mountfs-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">mountvirtfs:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#mountvirtfs-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">network:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#network-bootscripts">description</a><br /></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">/etc/hosts:</strong> <span class=
|
||
"indexref"><a href="#ch-config-hosts">Customizing the
|
||
/etc/hosts File</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="secitem">configuring:</strong> <span class=
|
||
"indexref"><a href="#ch-config-network">General Network
|
||
Configuration</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">rc:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#rc-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">reboot:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#reboot-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sendsignals:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#sendsignals-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">setclock:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#setclock-bootscripts">description</a><br /></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">configuring:</strong> <span class=
|
||
"indexref"><a href="#ch-config-clock">Configuring the
|
||
System Clock</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">swap:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#swap-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sysctl:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#sysctl-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">sysklogd:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#sysklogd-bootscripts">description</a><br /></span>
|
||
<ul>
|
||
<li>
|
||
<strong class="secitem">configuring:</strong> <span class=
|
||
"indexref"><a href="#ch-config-sysklogd">Configuring the
|
||
sysklogd Script</a></span>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<strong class="item">template:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#template-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">udev:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#udev-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">udev_retry:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-config-bootscripts">LFS-Bootscripts-20191031</a> --
|
||
<a href="#udev-retry-bootscripts">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">dwp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-binutils">Binutils-2.34</a> --
|
||
<a href="#dwp">description</a><br /></span>
|
||
</li>
|
||
</ul>
|
||
<h2>
|
||
<a id="other-index" name="other-index"></a>Others
|
||
</h2>
|
||
<ul>
|
||
<li>
|
||
<strong class="item">/boot/config-5.5.3:</strong> <span class=
|
||
"indexref"><a href="#ch-bootable-kernel">Linux-5.5.3</a> --
|
||
<a href="#config">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/boot/System.map-5.5.3:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-bootable-kernel">Linux-5.5.3</a> -- <a href=
|
||
"#System.map">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/dev/*:</strong> <span class=
|
||
"indexref"><a href="#ch-system-kernfs">Preparing Virtual Kernel
|
||
File Systems</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/fstab:</strong> <span class=
|
||
"indexref"><a href="#ch-bootable-fstab">Creating the /etc/fstab
|
||
File</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/group:</strong> <span class=
|
||
"indexref"><a href="#ch-system-createfiles">Creating Essential
|
||
Files and Symlinks</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/hosts:</strong> <span class=
|
||
"indexref"><a href="#ch-config-hosts">Customizing the
|
||
/etc/hosts File</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/inittab:</strong> <span class=
|
||
"indexref"><a href="#conf-sysvinit">Configuring
|
||
Sysvinit</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/inputrc:</strong> <span class=
|
||
"indexref"><a href="#ch-config-inputrc">Creating the
|
||
/etc/inputrc File</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/ld.so.conf:</strong> <span class=
|
||
"indexref"><a href="#conf-ld">Configuring the Dynamic
|
||
Loader</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/lfs-release:</strong> <span class=
|
||
"indexref"><a href="#ch-finish-theend">The End</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/localtime:</strong> <span class=
|
||
"indexref"><a href="#conf-glibc">Configuring Glibc</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/lsb-release:</strong> <span class=
|
||
"indexref"><a href="#ch-finish-theend">The End</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/modprobe.d/usb.conf:</strong>
|
||
<span class="indexref"><a href="#conf-modprobe">Configuring
|
||
Linux Module Load Order</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/nsswitch.conf:</strong> <span class=
|
||
"indexref"><a href="#conf-glibc">Configuring Glibc</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/os-release:</strong> <span class=
|
||
"indexref"><a href="#ch-finish-theend">The End</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/passwd:</strong> <span class=
|
||
"indexref"><a href="#ch-system-createfiles">Creating Essential
|
||
Files and Symlinks</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/profile:</strong> <span class=
|
||
"indexref"><a href="#ch-config-profile">The Bash Shell Startup
|
||
Files</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/protocols:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-iana-etc">Iana-Etc-2.30</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/resolv.conf:</strong> <span class=
|
||
"indexref"><a href="#resolv.conf">Creating the /etc/resolv.conf
|
||
File</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/services:</strong> <span class=
|
||
"indexref"><a href=
|
||
"#ch-system-iana-etc">Iana-Etc-2.30</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/syslog.conf:</strong> <span class=
|
||
"indexref"><a href="#conf-sysklogd">Configuring
|
||
Sysklogd</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/udev:</strong> <span class=
|
||
"indexref"><a href="#ch-system-eudev">Eudev-3.2.9</a> --
|
||
<a href="#etc-udev">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/udev/hwdb.bin:</strong> <span class=
|
||
"indexref"><a href="#conf-eudev">Configuring Eudev</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/vimrc:</strong> <span class=
|
||
"indexref"><a href="#conf-vim">Configuring Vim</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/usr/include/asm-generic/*.h:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-system-linux-headers">Linux-5.5.3 API Headers</a> --
|
||
<a href="#asm-generic">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/usr/include/asm/*.h:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-system-linux-headers">Linux-5.5.3 API Headers</a> --
|
||
<a href="#asm">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/usr/include/drm/*.h:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-system-linux-headers">Linux-5.5.3 API Headers</a> --
|
||
<a href="#drm">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/usr/include/linux/*.h:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-system-linux-headers">Linux-5.5.3 API Headers</a> --
|
||
<a href="#linux">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/usr/include/misc/*.h:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-system-linux-headers">Linux-5.5.3 API Headers</a> --
|
||
<a href="#misc">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/usr/include/mtd/*.h:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-system-linux-headers">Linux-5.5.3 API Headers</a> --
|
||
<a href="#mtd">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/usr/include/rdma/*.h:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-system-linux-headers">Linux-5.5.3 API Headers</a> --
|
||
<a href="#rdma">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/usr/include/scsi/*.h:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-system-linux-headers">Linux-5.5.3 API Headers</a> --
|
||
<a href="#scsi">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/usr/include/sound/*.h:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-system-linux-headers">Linux-5.5.3 API Headers</a> --
|
||
<a href="#sound">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/usr/include/video/*.h:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-system-linux-headers">Linux-5.5.3 API Headers</a> --
|
||
<a href="#video">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/usr/include/xen/*.h:</strong>
|
||
<span class="indexref"><a href=
|
||
"#ch-system-linux-headers">Linux-5.5.3 API Headers</a> --
|
||
<a href="#xen">description</a><br /></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/var/log/btmp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-createfiles">Creating Essential
|
||
Files and Symlinks</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/var/log/lastlog:</strong> <span class=
|
||
"indexref"><a href="#ch-system-createfiles">Creating Essential
|
||
Files and Symlinks</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/var/log/wtmp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-createfiles">Creating Essential
|
||
Files and Symlinks</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/var/run/utmp:</strong> <span class=
|
||
"indexref"><a href="#ch-system-createfiles">Creating Essential
|
||
Files and Symlinks</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">/etc/shells:</strong> <span class=
|
||
"indexref"><a href="#ch-config-shells">Creating the /etc/shells
|
||
File</a></span>
|
||
</li>
|
||
<li>
|
||
<strong class="item">man pages:</strong> <span class=
|
||
"indexref"><a href="#ch-system-man-pages">Man-pages-5.05</a> --
|
||
<a href="#man-pages">description</a><br /></span>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</body>
|
||
</html>
|