1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
<sect2><title> </title><para> </para></sect2>
<sect2>
<title>Installation of Bash</title>
<para>Before you attempt to install Bash, you have to check to make sure
your distribution has the <filename>/usr/lib/libcurses.a</filename> and
<filename>/usr/lib/libncurses.a</filename> files. If your host
distribution is an LFS system, all files will be present if you followed
the instructions of the book version you read exactly.</para>
<para>If both of the files are missing, you have to install the Ncurses
development package. This package is often called something like
<emphasis>ncurses-dev</emphasis> or <emphasis>ncurses-static</emphasis>. If
this package is already installed, or you just installed it, check for the
two files again. Often the <filename>libcurses.a</filename> file is (still)
missing. If so, create <filename>libcurses.a</filename> as a symlink
by running the following commands as user <emphasis>root:</emphasis></para>
<para><screen><userinput>ln -s libncurses.a /usr/lib/libcurses.a</userinput></screen></para>
<para>Now we can really start. Prepare Bash to be compiled by running the
following command:</para>
<para><screen><userinput>./configure --enable-static-link \
--prefix=$LFS/static --with-curses</userinput></screen></para>
<para>The meaning of the configure switches are:</para>
<itemizedlist>
<listitem><para><userinput>--enable-static-link:</userinput> This option
caused the <userinput>bash</userinput> program to be statically
linked.</para></listitem>
<listitem><para><userinput>--prefix=$LFS/static</userinput> This option
installs all of Bash's files under the $LFS/static directory, which becomes
the /static directory when chroot'ed or reboot'ed into
LFS.</para></listitem>
<listitem><para><userinput>--with-curses:</userinput> This option caused
bash to be linked against the curses library instead of the default termcap
library which is being phased out and has become obsolete. Note, on most
all Linux systems, the curses library is provided by the Ncurses
package (so in truth we link against the ncurses library).</para>
<para>It is not strictly necessary for the static bash to be linked
against libncurses (it can link against a static termcap for the time
being just fine because we will reinstall Bash in Chapter 6 anyways,
where we will use libncurses), but it's a good test to make sure that
the Ncurses package has been installed properly. If not, you will get in
trouble later on in this chapter when you install the Texinfo package.
That package requires ncurses, and termcap can't reliably be used
there.</para></listitem>
</itemizedlist>
<para>Now we can continue compiling Bash:</para>
<para><screen><userinput>make</userinput></screen></para>
<para>And finish off the installation by installing Bash:</para>
<para><screen><userinput>make install</userinput></screen></para>
<para>If the <userinput>make install</userinput> phase ends with something
along the lines of the following:</para>
<blockquote><screen>install-info: unknown option `--dir-file=/mnt/lfs/usr/info/dir'
usage: install-info [--version] [--help] [--debug] [--maxwidth=nnn]
[--section regexp title] [--infodir=xxx] [--align=nnn]
[--calign=nnn] [--quiet] [--menuentry=xxx]
[--info-dir=xxx]
[--keep-old] [--description=xxx] [--test]
[--remove] [--] filename
make[1]: *** [install] Error 1
make[1]: Leaving directory `/mnt/lfs/usr/src/bash-&bash-version;/doc'
make: [install] Error 2 (ignored)</screen></blockquote>
<para>then that means that you are probably using Debian-2.2 (potato), and
that you have an old version of the texinfo package and the info pages
can't be installed at this time. This error is not a problem as the info
pages will be installed when we recompile bash dynamically in Chapter 6, so
you can ignore it. It is reported that the current release of Debian
(3.0; also known as Woody) doesn't have this problem.</para>
</sect2>
|