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 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327
|
======================================================================
Yash Build and Installation Guide
======================================================================
A one-liner for experts:
./configure && make && sudo make install
----------------------------------------------------------------------
Contents:
1. What you need to build yash
2. Configuration
3. Building and testing
4. Installation and uninstallation
5. More configuration options
----------------------------------------------------------------------
1. What You Need to Build Yash
Yash is a program written in C99 (ISO/IEC 9899:1999), an extended
version of the C programming language, so you need a C99 compiler to
build it. If you do not have a C99 compiler installed on your system,
install one first. If you have a C99 compiler installed as the `c99'
command, it will suffice. Or if you have a recent version of the `gcc'
command installed from the GNU Compiler Collection, it will also do.
If you have a C99 compiler other than the `c99' or `gcc' command and
want to use that, you have to specify the compiler in configuration.
The build process of yash is automated using the `make' command, so
you need the `make' command installed in addition to the compiler. It
is recommended to use a version of `make' that conforms to POSIX. GNU
Make is confirmed to work, and most of other versions will also do.
Yash is based on API specified in the POSIX standard (IEEE Std
1003.1, 2008 Edition). If your system does not support the POSIX API,
yash may not be able to be built or work as expected.
Yash uses the `gettext' function to support localized messages. On
recent versions of GNU/Linux and Solaris, the `gettext' function is
provided in the standard C library, so you do not need any extra
library. On some other systems, the `gettext' function is provided in
an extra library called `libintl'. If you do not have the `libintl'
library installed on your system, first install the library or
disable the internationalization support in configuration to build
yash without it.
Yash uses the `curses' library to support powerful command line
editing. If you do not have the `curses' library installed on your
system, first install it or disable command line editing in
configuration to build yash without it.
----------------------------------------------------------------------
2. Configuration
The configuration process produces some files that are used in the
main build process. There files contain specific information about
which features are supported on your system, where yash will be
installed, etc.
The configuration is done by the shell script named `configure'. To
start the configuration, change the working directory of your shell to
the directory containing the `configure' script using the `cd' command
and invoke `sh configure'.
You can specify some options and/or variables when invoking the
`configure' script in order to specify:
* the compiler, the archiver, etc. that are used in the build
* features that will be supported by the resultant executable
* directories where executable and other files are installed.
For example, to configure with the command line editing feature
disabled, invoke the script as `sh configure --disable-lineedit'.
To use the `cc' command as the compiler during the build,
`sh configure CC=cc'
The rest of this section describes the options and variables that can
be specified.
The following options can be specified to enable or disable specific
features of yash. By default, yash is built with all features enabled.
--enable-array --disable-array
If disabled, the `array' built-in command is not available. Note
that array variables are available regardless of this option.
--enable-dirstack --disable-dirstack
If disabled, the `dirs', `pushd', and `popd' built-in commands are
not available.
--enable-double-bracket --disable-double-bracket
If disabled, the double-bracket command (the [[ ... ]] syntax) is
not available. When this feature is enabled, the `test' built-in
must also be enabled.
--enable-help --disable-help
If disabled, the `help' built-in command is not available.
--enable-history --disable-history
If disabled, the `fc' and `history' built-in commands are not
available.
--enable-lineedit --disable-lineedit
If disabled, command line editing for the interactive shell is
not available. When this feature is enabled, the history feature
must also be enabled.
--enable-printf --disable-printf
If disabled, the `printf' and `echo' built-in commands are not
available.
--enable-socket --disable-socket
If disabled, socket redirection is not available. To enable this
feature, your system have to support sockets.
--enable-test --disable-test
If disabled, the `test' and `[' built-in commands are not
available.
--enable-ulimit --disable-ulimit
If disabled, the `ulimit' built-in command is not available. To
enable this feature, your system must support the `getrlimit' and
`setrlimit' functions in the standard C library.
The following option specifies the behavior of yash:
--default-loadpath=...
When yash is invoked, the $YASH_LOADPATH variable is initialized
to this value.
(default: <datadir>/yash)
The following options specify where files are installed:
--prefix=...
The basic installation path prefix.
(default: /usr/local)
--exec-prefix=...
The basic installation path prefix for binaries.
(default: <prefix>)
--bindir=...
The directory where the main executable binary is installed.
(default: <exec-prefix>/bin)
--datarootdir=...
The basic installation path prefix for files other than the main
executable binary.
(default: <prefix>/share)
--datadir=...
The directory where auxiliary script files are installed.
(default: <datarootdir>)
--localedir=...
The directory where localized message data are installed.
(default: <datarootdir>/locale)
--mandir=...
The directory where roff-format manual pages are installed.
(default: <datarootdir>/man)
--docdir=...
The directory where non-roff-format manual pages are installed.
(default: <datarootdir>/doc/yash)
--htmldir=...
The directory where HTML manual pages are installed.
(default: <docdir>)
The following variables can be used to specify commands and their
options used during the build:
CC=...
This specifies the compiler/linker command used during the build.
CFLAGS=...
This specifies the compiler option used in compiling (but not in
linking). This overrides the options used in the default
configuration.
CADDS=...
This specifies the compiler option used in compiling (but not in
linking) in addition to the CFLAGS variable above. You can use
CADDS to add compiler options to the default ones.
LDFLAGS=...
This specifies the linker option used in linking (but not in
compiling). This overrides the options used in the default
configuration. This variable does not include options that specify
linked libraries (see LDLIBS below).
LDADDS=...
This specifies the linker option used in linking (but not in
compiling) in addition to the LDFLAGS variable above. You can use
LDADDS to add linker options to the default ones.
LDLIBS=...
This specifies the linker option that specify libraries linked to
the executable binary. This overrides the options automatically
detected by the configuration process.
AR=...
This specifies the archiver command used during the build.
ARFLAGS=...
This specifies the archiver option used in making a binary
archive. This overrides the options used in the default
configuration.
LINGUAS=...
This specifies the names of locales for which localized message
data are installed. To specify more than one locale, separate
names by spaces. (All space-separated names must be given at once
in one variable value. The whole variable value should be properly
quoted when invoking the `configure' script.)
INSTALL=...
This specifies the installer command used in installation.
----------------------------------------------------------------------
3. Building and Testing
Once the configuration is done, to build yash, invoke the `make'
command from your shell. The `make' command will automatically invoke
the compiler and linker in a proper order to produce the executable
binary of yash.
After yash is built, you can test the functionality of it by invoking
`make test'. (Actually, you can directly invoke `make test' before
`make' because the test process automatically builds yash if it is not
yet built.)
----------------------------------------------------------------------
4. Installation and Uninstallation
After yash is built, to install yash in your system, invoke
`make install'. This will install the main executable binary of yash
and all auxiliary files used by yash. If the installation directories
are not specified in the configuration, the files are installed into
the following directories by default:
Main executable binary: /usr/local/bin
Auxiliary shell scripts: /usr/local/share/yash
Localization data: /usr/local/share/locale
Roff-format manual: /usr/local/share/man
HTML-format manual: /usr/local/share/doc/yash
In most systems, a special permission is required to install files
into these directories. Use the `sudo' or other proper command to
obtain the permission or you may want to install into other
directories by specifying the directories in the configuration.
Instead of `make install', you can use `make install-binary' to
install the main binary only or `make install-data' to install the
other data files only.
Instead of `make install' or `make install-binary', you can use
`make install-strip' or `make install-binary-strip', respectively, to
remove debugging information from the binary during installation. This
makes the installed binary size smaller.
To uninstall yash, invoke `make uninstall'. You can instead use
`make uninstall-binary' or `make uninstall-data' to uninstall the main
binary or the other data files only, respectively.
----------------------------------------------------------------------
5. More Configuration Options
After invoking the `configure' script, you can manually edit the
`config.h' file to customize yash more. These options cannot be
configured by the `configure' script because they are not so
interesting for most people to customize.
The options can be set by defining macros in the `config.h' file as
described below. Some of the options are Boolean options. To enable a
Boolean option, define the corresponding macro as a non-zero integer
value. To disable a Boolean option, define the macro as zero or leave
it undefined. For non-Boolean options, the default value is shown to
the right of the macro name.
#define ALIAS_LIST_MAX 30
This macro must be defined as a positive integer.
This macro specifies the maximum number of aliases that can be
expanded recursively.
#define DOUBLE_DIVISION_BY_ZERO_ERROR 1 /* Boolean option */
If this macro is set to a non-zero, division by zero in floating-point
arithmetic is treated as an error. Otherwise, division by zero is
assumed to return a valid result (like infinity).
#define FG_DONT_SAVE_TERMINAL 1 /* Boolean option */
When a program that changes the terminal settings is invoked in the
background and later continued in the foreground by the `fg' built-in
command, it may leave the terminal in the wrong settings. By default,
the `fg' command works around this problem by saving the terminal
settings before continuing the program and restoring the settings
after the program has finished. Defining this macro as a non-zero
disables this workaround.
#define FIXED_SIGNAL_AS_ERROR 1 /* Boolean option */
As specified in the POSIX standard, if signal handlers that ignore
signals are inherited from the invoker process to a shell process, the
signal handlers cannot be removed by the `trap' built-in command if
the shell is non-interactive. This macro specifies the behavior of the
`trap' command in such a case. If this macro is set to a non-zero, the
command results in an error. Otherwise, the command returns the exit
status of success without any error message. Note that the signal
handlers are not removed regardless of this macro.
#define FORMAT_INDENT_WIDTH 3
This macro must be defined as a non-negative integer.
This macro specifies the number of spaces used to indent commands that
are formated and printed by the shell.
#define MAX_HISTSIZE 1000000
This macro specifies the maximum size of history.
The value must not over (INT_MAX / 10).
#define HISTORY_MIN_MAX_NUMBER 100000
This macro specifies the number of history entry at which the number
wraps back to 1. (If there are very many history entries, the entry
number may wrap at a number larger than this value.)
The value must be a power of 10 that is not less than 32768.
#define DEFAULT_HISTSIZE 500
This macro specifies the default history size.
The value must be 128 or larger.
#define LIST_AMBIGUOUS_OPTIONS 1 /* Boolean option */
When an option specified in invocation of the shell or a built-in
command is ambiguous, a list of option names that match the specified
ambiguous name is printed if this macro is defined as a non-zero.
#define MAX_PREDICTION_SAMPLE 10000
This macro must be defined as a non-negative integer.
This macro specifies the maximum number of history entries that are
considered in computing a command line prediction candidate.
#define SHELLFDMINMAX 100
This macro must be defined as an integer that is not less than 10.
When the shell opens a file that is not directly used by user
commands, the file descriptor for the file is chosen from integers
that is not less than the value of this macro.
#define YASH_DISABLE_SUPERUSER 1 /* Boolean option */
If this macro is set to a non-zero, the user whose user ID is zero is
not treated as a superuser, who is considered to have special
privilege about file access.
|