The next step in the build process is to tell Asterisk which modules to compile and install, as well as set various compiler options. These settings are all controlled via a menu-driven system called Menuselect. To access the Menuselect system, type:
Your terminal window size must be at least eighty characters wide and twenty-seven lines high, or Menuselect will not work. Instead, you'll get an error message stating
The Menuselect menu should look like the screen-shot below. On the left-hand side, you have a list of categories, such as Applications, Channel Drivers, and PBX Modules. On the right-hand side, you'll see a list of modules that correspond with the select category. At the bottom of the screen you'll see two buttons. You can use the Tab key to cycle between the various sections, and press the Enter key to select or unselect a particular module. If you see [*] next to a module name, it signifies that the module has been selected. If you see *XXX next to a module name, it signifies that the select module cannot be built, as one of its dependencies is missing. In that case, you can look at the bottom of the screen for the line labeled Depends upon: for a description of the missing dependency.
When you're first learning your way around Asterisk on a test system, you'll probably want to stick with the default settings in Menuselect. If you're building a production system, however, you may not wish to build all of the various modules, and instead only build the modules that your system is using.
When you are finished selecting the modules and options you'd like in Menuselect, press F12 to save and exit, or highlight the Save and Exit button and press enter.
Module Support Levels¶
Menuselect will also show the support level for a selected module or build option. The support level will always be one of
deprecated. For more information on these support levels, see Asterisk Module Support States.
|Modules that link with libraries that have licensing restrictions beyond what is allowed via the GPLv2 and Asterisk's dual licensing model. See README-addons.txt, delivered with Asterisk, for more information.
|Modules that provide call functionality to the system. An application might answer a call, play a sound prompt, hang up a call, and so forth.
|Modules that provide various bridge mixing technologies and other bridge related functionality.
|Call Detail Recording
|Modules that provide Call Detail Record (CDR) drivers for various permanent storage backends.
|Channel Event Logging
|Modules that provide Channel Event Logging (CEL) drivers for various permanent storage backends.
|Modules that provide communications with devices outside of Asterisk, and translate that particular signalling or protocol to the core.
|Modules that provide encoding/decoding for audio or video. Typically codecs are used to encode media so that it takes less bandwidth.
|Modules used to save media to disk in a particular file format, and to convert those files back to media streams on the network.
|Modules that are used to retrieve or set various settings on a call. A function might be used to set the Caller ID on an outbound call, for example.
|Modules that implement dialplan functionality or enhancements.
|Modules that provide additional resources to Asterisk. This can includes music on hold, calendar integration, database integration, various protocol stacks, etc.
|Unit test modules. These are typically only available when Asterisk has:* Been configured with the
TEST_FRAMEWORK compilation option has been selected in Compiler Flags - Development
|Compiler Flags - Development
|Various compilation flags that alter Asterisk's behaviour. These flags are often useful in debugging Asterisk, or obtaining information for Asterisk developers.
!!! tip Easier Debugging of Asterisk Crashes** As much as we may hate to admit it, Asterisk may sometimes have problems.If you're finding that Asterisk is crashing on you, there's are settings under **Compiler Flags - Development that are critical for developers attempting to assist you. For detailed instructions on enabling these settings, see Getting a Backtrace (Asterisk versions < 13.14.0 and 14.3.0).
| | Voicemail Build Options | Compilation flags that enable different Voicemail (via
app_voicemail) storage backends. | | Utilities | Various utilities for Asterisk. These include Asterisk Database upgrade utilities, Asterisk monitoring utilities, and other potentially useful tools. | | AGI Samples | Sample AGI applications. | | Module Embedding | Compilation flags to enable embedding of Asterisk dynamic modules into the Asterisk binary. | | Core Sound Packages | Core sounds used by Asterisk. Different sound formats can be selected in this menu; when Asterisk is installed, these sounds will be downloaded and installed. | | Music On Hold File Packages | Sample Music on Hold media used by Asterisk. Different formats can be selected in this menu; when Asterisk is installed, the various media samples will be downloaded and installed. | | Extras Sound Packages | Extra sounds that can be used by Asterisk integrators. Different sound formats can be selected in this menu; when Asterisk is installed, these sounds will be downloaded and installed. |
Options in Menuselect can be controlled from the command line. Menuselect can be built without invoking the user interface via the
Available options can be viewed using the
--help command line parameter:
Some of the more common options are shown below.
!!! tip Menuselect Output** Asterisk expects all Menuselect options to be written to the menuselect.makeopts file. When enabling/disabling **Menuselect options via the command line, your output should typically be to that file.
To list all options in Menuselect, use the
--list-options command line parameter:
To list only the categories, use the
--category-list command line parameter:
[root@server asterisk-14.X.Y]# menuselect/menuselect --category-list
To list the options in a category, use the
--list-category command line parameter:
Enabling an Option¶
To enable an option in Menuselect, use the
--enable command line parameter:
Disabling an Option¶
To disable an option in Menuselect, use the
--disable command line parameter:
Enabling a Category¶
An entire category can be enabled in Menuselect using the
--enable-category command line parameter: