Table of Contents
- This page describes all helper functions defined in misc/tools.func
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This page describes all helper functions defined in misc/tools.func
The tools.func file is automatically sourced and can be used in all $APP-install.sh files.
fetch_and_deploy_gh_release
Description
fetch_and_deploy_gh_release()
- Checking the current installed version.
- Fetching the latest release info from GitHub API with retries.
- Detecting system architecture to download the appropriate release asset.
- Falling back to generic or source tarball if no matching asset found.
- Downloading, extracting, and copying the release files to
/opt/<app>
. - Saving the installed version for future checks.
- Automatic installation of
jq
if missing. - Handles GitHub API rate limits and errors gracefully.
- Uses
$STD
for command prefixing and$APP
or$APPLICATION
for app naming.
Usage
fetch_and_deploy_gh_release <github_repo>
fetch_and_deploy_gh_release "owner/repository"
install_node_and_modules
This function automates the installation of a specified version of Node.js and a list of global Node modules on a Debian-based system. It ensures the desired Node.js version is installed (replacing any existing version if necessary) and installs or updates specified Node.js global modules.
Description
install_node_and_modules()
:
- Checks if Node.js is installed.
- If Node.js is installed but not the desired version, it replaces it.
- If Node.js is not installed, it installs the specified version using the NodeSource APT repository.
- It can also install or update a list of global Node modules.
Usage
install_node_and_modules
to install the latest version of Node.js with no additional Modules. If you want to define a specified Version and install Modules use something like this:
NODE_VERSION=20 NODE_MODULE="yarn@latest,@vue/cli-service@5.0.0" install_node_and_modules
User-Configurable Variables
Variable | Description | Default Value |
---|---|---|
NODE_VERSION |
Specifies the major version of Node.js to install (e.g., 20 , 22 ). |
22 |
NODE_MODULE |
Comma-separated list of global npm modules to install or update. Examples: • yarn@latest • @vue/cli-service@5.0.0 • typescript |
(empty) |
install_postgresql
Description
install_postgresql()
:
- Checks if Postgressql is installed.
- If Postgressql is installed but not the desired version, it replaces it.
- If Postgressql is not installed, it installs the specified version.
Usage
install_postgresql
Specifie a Version:
PG_VERSION=15 install_postgresql
User-Configurable Variables
Variable | Description | Default Value |
---|---|---|
PG_VERSION |
Specifies the major version of PostgreSQL to install or upgrade to (e.g., 14 , 15 , 16 ). |
16 |
install_mariadb
Description
install_mariadb()
:
- Detecting the current version of MariaDB (if installed)
- Upgrading to the latest version if needed
- Replacing older versions while preserving data
- Configuring the appropriate MariaDB APT repository
- Installing the MariaDB packages
Usage
install_mariadb
You can optionally set the MARIADB_VERSION
environment variable before calling the function to specify a particular version to install.
Example:
MARIADB_VERSION="10.11.6" install_mariadb
If no version is specified, the script will automatically fetch and install the latest GA (Generally Available) version of MariaDB.
User-Configurable Variables
Variable | Description | Default Value |
---|---|---|
MARIADB_VERSION |
Specifies the version of MariaDB to install. If set to latest , the script will detect the most recent GA version from the MariaDB mirror site. |
latest |
install_mysql
Description
install_mysql()
:
- Detecting if MySQL is already installed
- Replacing it with the specified version if it differs
- Removing conflicting packages and cleaning up old sources
- Setting up the official MySQL APT repository
- Installing the MySQL server package
Usage
install_mysql
To install a specific version of MySQL, export the MYSQL_VERSION
variable before calling the function:
MYSQL_VERSION="5.7" install_mysql
User-Configurable Variables
Variable | Description | Default Value |
---|---|---|
MYSQL_VERSION |
Specifies the version of MySQL to install.. | 8.0 |
install_php
Description
install_php()
:
- Detects the current PHP version and upgrades or switches if necessary.
- Adds the
sury.org
repository if not already configured. - Installs the specified PHP version along with default and user-defined modules.
- Patches
php.ini
files with custom configuration values. - Optionally enables PHP for Apache or PHP-FPM.
Usage
install_php
You can set any of the environment variables below to customize the behavior:
PHP_VERSION="8.3" PHP_APACHE="YES" PHP_FPM="NO" PHP_MEMORY_LIMIT="1G" install_php
```bash
#### PHP Modules
These modules are installed by default:
```bash
bcmath, cli, curl, gd, intl, mbstring, opcache, readline, xml, zip
You can add custom modules with this command:
PHP_MODULE="mysql,redis" install_php
User-Configurable Variables
Variable | Description | Default Value |
---|---|---|
PHP_VERSION |
PHP version to install (e.g., 8.2 , 8.3 , 8.4 ) |
8.4 |
PHP_MODULE |
Comma-separated list of additional PHP modules (e.g., mysql,redis ) |
(empty) |
PHP_APACHE |
Set to YES to enable PHP module for Apache |
NO |
PHP_FPM |
Set to YES to install and configure PHP-FPM |
NO |
PHP_MEMORY_LIMIT |
Sets memory_limit in relevant php.ini files |
512M |
PHP_UPLOAD_MAX_FILESIZE |
Sets upload_max_filesize in relevant php.ini files |
128M |
PHP_POST_MAX_SIZE |
Sets post_max_size in relevant php.ini files |
128M |
PHP_MAX_EXECUTION_TIME |
Sets max_execution_time in relevant php.ini files |
300 |
install_composer
Description
install_composer()
:
- Detects existing Composer installation and updates if necessary.
- Installs the latest version using the official installer.
- Ensures the Composer binary is executable system-wide.
- Allows installation as root by setting
COMPOSER_ALLOW_SUPERUSER=1
.
Usage
Simply call the function:
install_composer
install_go Bash
Description
install_go()
:
- Detects system architecture (supports
x86_64
andaarch64
). - Automatically fetches the latest Go version (if
GO_VERSION
is unset or set tolatest
). - Installs Go system-wide to
/usr/local/go
, and symlinks the binary to/usr/local/bin/go
. - Replaces any existing Go installation if the version differs.
Usage
Simply call the function:
install_go
install_java
Description
install_java()
:
- Automatically adds the Adoptium APT repository if missing.
- Detects the currently installed version of the Temurin JDK (if any).
- Installs the desired JDK version (defaults to 21) or upgrades it if already present.
- Removes any existing Temurin JDK versions if they differ from the target version.
Usage
install_java
This will install the default version of Temurin JDK. You can set the JAVA_VERSION environment variable before calling the function:
JAVA_VERSION=17 install_java
User-Configurable Variables
Variable | Description | Default Value |
---|---|---|
JAVA_VERSION |
The version of Temurin JDK to install (e.g., 17, 21) | 21 |
Description
install_mongodb()
:
- Detects the currently installed version of MongoDB.
- Removes older versions (packages only; data is preserved).
- Adds the correct MongoDB APT repository and GPG key.
- Installs the specified version of MongoDB.
- Starts and enables the MongoDB service.
Usage
install_mongodb
Installs the default MongoDB version. To install a different version (e.g., 7.0):
MONGO_VERSION=7.0 install_mongodb
User-Configurable Variables
Variable | Description | Default Value |
---|---|---|
MONGO_VERSION |
Target MongoDB major version (e.g., 6.0, 7.0, 8.0) | 8.0 |
setup_uv
Description
setup_uv()
:
- Detects system architecture (
x86_64
oraarch64
). - Fetches the latest release version from GitHub.
- Checks if
uv
is already installed and at the latest version. - Downloads and installs or updates
uv
from the official GitHub releases. - Ensures
/usr/local/bin
is in thePATH
.
Usage
setup_uv
Installs or updates uv to the latest version.
setup_gs
Description
setup_gs()
:
- Checks the currently installed Ghostscript version.
- Fetches the latest Ghostscript release version from GitHub.
- Compares the installed version with the latest available.
- Downloads, compiles, and installs Ghostscript from source if an update or installation is needed.
- Installs required build dependencies automatically.
Usage
setup_gs
Checks and installs/updates Ghostscript.
setup_rbenv_stack
Description
setup_rbenv_stack()
:
- Fetches and installs the latest stable
rbenv
release. - Fetches and installs the latest stable
ruby-build
plugin release. - Adds necessary initialization commands to the user's profile (
~/.profile
) if missing. - Installs a specified Ruby version (default 3.4.4) via rbenv.
- Optionally installs the latest Rails gem (
true
by default). - Cleans up temporary files.
Usage
setup_rbenv_stack
Optionally, you can override defaults by setting environment variables:
RUBY_VERSION=3.3.2 RUBY_INSTALL_RAILS=false setup_rbenv_stack
User-Configurable Variables
Variable | Description | Default Value |
---|---|---|
RUBY_VERSION |
Ruby version to install | 3.4.4 |
RUBY_INSTALL_RAILS |
Whether to install Rails gem (true/false) | true |
download_with_progress
Description
donwload_with_progress()
:
- Installs
pv
if not already present. - Attempts to retrieve the file size (
Content-Length
) from the HTTP headers. - If
Content-Length
is available, it usespv
to show a progress bar during the download. - If
Content-Length
is unavailable, it falls back to a basic download with curl’s built-in progress. - Handles any existing spinner process cleanup.
- Provides error messages on failure.
Usage
download_with_progress <url> <output_path>
download_with_progress "https://example.com/file.zip" "/tmp/file.zip"
Parameter | Description |
---|---|
url |
URL of the file to download |
output |
Local file path to save the download |