aboutsummaryrefslogtreecommitdiffstats
path: root/chapter06/readline.xml
blob: f56bb7a603e9b1658e2a3bec3bab24c8ed08eac6 (plain)
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="ch-system-readline" role="wrap">
  <?dbhtml filename="readline.html"?>

  <sect1info condition="script">
    <productname>readline</productname>
    <productnumber>&readline-version;</productnumber>
    <address>&readline-url;</address>
  </sect1info>

  <title>Readline-&readline-version;</title>

  <indexterm zone="ch-system-readline">
    <primary sortas="a-Readline">Readline</primary>
  </indexterm>

  <sect2 role="package">
    <title/>

    <para>The Readline package is a set of libraries that offers command-line
    editing and history capabilities.</para>

    <segmentedlist>
      <segtitle>&buildtime;</segtitle>
      <segtitle>&diskspace;</segtitle>

      <seglistitem>
        <seg>&readline-ch6-sbu;</seg>
        <seg>&readline-ch6-du;</seg>
      </seglistitem>
    </segmentedlist>

  </sect2>

  <sect2 role="installation">
    <title>Installation of Readline</title>

    <para>Reinstalling Readline will cause the old libraries to be moved to
    &lt;libraryname&gt;.old. While this is normally not a problem, in some cases
    it can trigger a linking bug in <command>ldconfig</command>. This can be
    avoided by issuing the following two seds:</para>

<screen><userinput remap="pre">sed -i '/MV.*old/d' Makefile.in
sed -i '/{OLDSUFF}/c:' support/shlib-install</userinput></screen>

    <para>Apply a patch to fix a known bug that has been fixed upstream:</para>

<screen><userinput remap="pre">patch -Np1 -i ../&readline-fixes-patch;</userinput></screen>

    <para>Prepare Readline for compilation:</para>

<screen><userinput remap="configure">./configure --prefix=/usr --libdir=/lib</userinput></screen>

    <para>Compile the package:</para>

<screen><userinput remap="make">make SHLIB_LIBS=-lncurses</userinput></screen>

    <variablelist>
      <title>The meaning of the make option:</title>

      <varlistentry>
        <term><parameter>SHLIB_LIBS=-lncurses</parameter></term>
        <listitem>
          <para>This option forces Readline to link against the
          <filename class="libraryfile">libncurses</filename> (really,
          <filename class="libraryfile">libncursesw</filename>) library.</para>
        </listitem>
      </varlistentry>

    </variablelist>

    <para>This package does not come with a test suite.</para>

    <para>Install the package:</para>

<screen><userinput remap="install">make install</userinput></screen>

    <para>Now move the static libraries to a more appropriate location:</para>

<screen><userinput remap="install">mv -v /lib/lib{readline,history}.a /usr/lib</userinput></screen>

    <para>Next, remove the <filename class="extension">.so</filename> files in
    <filename class="directory">/lib</filename> and relink them into <filename
    class="directory">/usr/lib</filename>:</para>

<screen><userinput remap="install">rm -v /lib/lib{readline,history}.so
ln -sfv ../../lib/libreadline.so.6 /usr/lib/libreadline.so
ln -sfv ../../lib/libhistory.so.6 /usr/lib/libhistory.so</userinput></screen>

    <para>If desired, install the documentation:</para>

<screen><userinput remap="install">mkdir   -v       /usr/share/doc/readline-&readline-version;
install -v -m644 doc/*.{ps,pdf,html,dvi} \
                 /usr/share/doc/readline-&readline-version;</userinput></screen>

  </sect2>

  <sect2 id="contents-readline" role="content">
    <title>Contents of Readline</title>

    <segmentedlist>
      <segtitle>Installed libraries</segtitle>
      <segtitle>Installed directories</segtitle>

      <seglistitem>
        <seg>libhistory.{a,so}, and libreadline.{a,so}</seg>
        <seg>/usr/include/readline, /usr/share/readline,
        /usr/share/doc/readline-&readline-version;</seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <varlistentry id="libhistory">
        <term><filename class="libraryfile">libhistory</filename></term>
        <listitem>
          <para>Provides a consistent user interface for recalling lines
          of history</para>
          <indexterm zone="ch-system-readline libhistory">
            <primary sortas="c-libhistory">libhistory</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="libreadline">
        <term><filename class="libraryfile">libreadline</filename></term>
        <listitem>
          <para>Aids in the consistency of user interface across discrete
          programs that need to provide a command line interface</para>
          <indexterm zone="ch-system-readline libreadline">
            <primary sortas="c-libreadline">libreadline</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>