AC Hosting Environment

AC Hosting Environment Documentation

  • 1 Release Notes
    • 1.1 End-Of-Life (EOL) Notice
    • 1.2 Support Policy
    • 1.3 Differences to CentOS
  • 2 Deployment
    • 2.1 Prerequisites
    • 2.2 Preparing to Install
    • 2.3 Installation
    • 2.4 Post Installation Steps
  • 3 AC Tools
    • 3.1 AC Configure Syslog
      • 3.1.1 Introduction
      • 3.1.2 Un/Installation
      • 3.1.3 Usage
    • 3.2 AC Firewall
      • 3.2.1 Introduction
      • 3.2.2 Un/Installation
      • 3.2.3 Usage
    • 3.3 AC Integrity
      • 3.3.1 Introduction
      • 3.3.2 Un/Installation
      • 3.3.3 Usage
      • 3.3.4 Integration Tips
    • 3.4 Make Bash Installer
      • 3.4.1 Introduction
      • 3.4.2 Un/Installation
      • 3.4.3 Usage
    • 3.5 AC X509 Authority
      • 3.5.1 Introduction
      • 3.5.2 Un/Installation
      • 3.5.3 Command Reference
      • 3.5.4 Certificates For Beginners
      • 3.5.5 CA Management
      • 3.5.6 Server, Client, and User Certificate Management
      • 3.5.7 Reporting Commands
      • 3.5.8 Troubleshooting

3.4.3 Usage

September 13th, 2025

Make Bash Installer is a configuration file driven tool. As such, the command line usage takes a single argument.

# make-bash-installer <CONFIG_FILE>

By convention, the config file is called appconf. However it can be any filename you wish.

3.4.3.1 Configuration file format

The configuration files contains a list of instructions. Each instruction is on a single line and instructions are always executed top to bottom in order.

Running the instructions top to bottom is important. It ensures that dependencies can be met such as creating a directory and then installing files into it.

The application config file is divided into four columns that have meaning as described in the table below which changes depending on the context defined in the first column.

Col 1 Context Col 2 Operation Col 3 Col 4 Result
%UNINSTALLER <APPLICATION_NAME> Creates script called uninstall_<APPLICATION_NAME>
GROUP group name [GUID] Creates a group if it does not exist with the optional GUID.
USER username group list [UID] Creates a user if it does not exist with the optional UID.
DIR path owner:group permissions (octet) Creates a directory
<FILENAME> <FILENAME> owner:group permissions (octet) Installs a file
<DIRNAME> TAR operating directory Assumes the specified filename is supplied outside of the installer and is a tar file. It will untar it.
<DIRNAME> MAKETAR operating directory Creates the tar file from the supplied directory to be unpacked during installation.
<FILENAME> RUN Embeds the file into the installer and runs it during installation. It must be a Bash script.
Column 1 file names

File names can be absolute or relative. If relative, they are relative to the location of the
location the make-bash-installer command is run from. To avoid confusion, it is best practice to run the command from the same directory as your appconf file.

Column 2 file name syntax

The installation path for directories and file names is absolute. However, that can get a little verbose. A file or directory can be prefixed with the "@" character to indicate it should be installed into the last directory that was created. For example:

DIR /opt/myApp apache:mysql 0750 DIR @config apache:mysql 0750 start.sh @start apache:mysql 0550 stop.sh @stop apache:mysql 0550

The instructions above create the following in order:

  1. /opt/myApp/
  2. /opt/myApp/config
  3. /opt/myApp/config/start
  4. /opt/myApp/config/stop
Column 3 owner:group syntax

Often, files will have the same ownership. It can be cumbersome to type out the same user and group name many times. Therefore, this column can be populated with the "@" character to indicate that the owner and group are the same as the last file or directory. For example:

DIR /opt/myApp apache:mysql 0750 DIR @config @ 0750 start.sh @start @ 0550 stop.sh @stop @ 0550

In this example, all files and directories will be created owned by the user apache and the group mysql.

Column 4 permissions syntax

Permissions must be written as a numerical octet. Often, files will have the same permissions.
It can be cumbersome to type out the same octet many times. Therefore, this column can be populated with the "@" character to indicate that the permissions are the same as the last file or directory. For example:

DIR /opt/myApp apache:mysql 0750 DIR @config @ @ start.sh @start @ 0550 stop.sh @stop @ @

In this example, both directories are created with octet 0750, and both files with octet 0550.

Example file

The following is a made up, but perfectly valid, file.

# OBJECT SAVE AS/RUN/TAR/USERS OWNERS/GROUPS/PATH PERMISSIONS/ID %UNINSTALLER AC-firewall GROUP myGroup 456 USER myUser myGroup,root DIR /home/myUser myUser 0700 bashrc @.bashrc @ @ DIR /etc/firewall-test root:root 0755 /etc/iptables @iptables @ 0550 /etc/ipconf @iptables.conf @ @ corefiles.tar TAR ../resources MAKETAR /var config_services RUN

Let us interpret that in plain language.

  1. Record all steps to the end of the installer and create an undo file called /sbin/uninstall_AC-firewall.
  2. Create a group called myGroup with GUID 456.
  3. Create a user called myUser with an auto assigned UID, in the groups myGroup and root.
  4. Create the directory /home/myUser owned by myUser with permissions 0700.
  5. Install the file bashrc to /home/myUser/.bashrc owned by myUser with permissions 0700.
  6. Create the directory /etc/firewall-test owned by user root and group root with permissions 0755.
  7. Install the file /etc/iptables to /etc/firewall-test/iptables owner by user root and group root with permissions 0550.
  8. Install the file /etc/ipconf to /etc/firewall-test/iptables.conf owner by user root and group root with permissions 0550.
  9. Unpack the file corefiles.tar from the current location assuming it exists in the same directory.
  10. Pack the directory ../resoruces and include it with the installer. Unpack it during installation from directory /var.
  11. Finally, run Bash script config_services which has been embedded in the installer.

3.4.3.2 Uninstallers

The %UNINSTALLER special directive is great, but it has the following limitations:

  • It can only remove file and directories that were created during installation.
  • It will not remove users or groups.
  • It cannot undo complex changes caused by scripts.
  • It cannot remove files that were the result of unpacked tar files.

This directive is really useful for simple software that was added to the system using a Make Bash Installer program. But is not suitable for rolling back changes. If you need to perform complex uninstalls, you should create a dedicated script for that instead and pack it in with the other files defined in the appconf file.

3.4.3.3 Logging

Make Bash Installer does not produce installation logs. But it does output all operations to standard output, which can be easily redirected to create an installation log. Make Bash Installer is itself packed using the make-bash-installer command. Here is what the output looks like during installation:

# ./install_make-bash-installer_3.4.1 Starting 'install_make-bash-installer_3.4.1' installation at 2021-11-11 14:33:58 Created file '/bin/make-bash-installer' Installation 'install_make-bash-installer_3.4.1' complete at 2021-11-11 14:33:58

As you can see, it just creates one file. Complex applications will output every step which also allows the user to see what stage an installation fails at.

previous: Un/Installation next: Introduction