Este posteo es para compartir un modelo de trabajo instalando aplicaciones hechas con Gambas.
Estoy dando un curso de edición ramificada basada en lenguaje de marcas con LaTeX en la UBA y los alumnos (39) tienen que instalar diferentes aplicaciones, esto incluye mi desarrollo en gambas, se instalaron sin problemas todas menos mi desarrollo, lo que fue un fiasco, se supone que al instalarse las aplicaciones, el instalador «lee» todos los componentes necesarios y los instala, pero por algún motivo solo instala algunos (el runtime y algunos más), desconozco que hace para decidir que instala y que no, la cuestión es que encontré una salida, que no es común, pero funciona 100% efectiva.
Hice un script (se corre con sudo su) en bash que lee que distro esta corriendo e instala todos los componentes que están listados, luego se puede instalar la app de gambas con 0 error, les comparto el script
Código:
#!/bin/bash
# Lista de componentes que necesita el programa
COMPONENTES=(
    gambas3-runtime
    gambas3-gb-db
    gambas3-gb-db-sqlite3
    gambas3-gb-dbus
    gambas3-gb-desktop
    gambas3-gb-form
    gambas3-gb-form-dialog
    gambas3-gb-form-terminal
    gambas3-gb-image
    gambas3-gb-inotify
    gambas3-gb-net
   gambas3-gb-net-curl
   gambas3-gb-qt5
   gambas3-gb-qt5-ext
   gambas3-gb-qt5-webview
   gambas3-gb-settings
   gambas3-gb-term
   gambas3-gb-util
   gambas3-gb-util-web
)
echo "Detectando distribución..."
# Detectar distribución
if [ -f /etc/os-release ]; then
    . /etc/os-release
    DISTRO=$ID
else
    echo "No se pudo detectar la distribución. Instalación cancelada."
    exit 1
fi
# Función para instalar componentes si no están instalados
instalar_si_faltan() {
    local comando_check=$1
    local comando_instalar=$2
    for comp in "${COMPONENTES[@]}"; do
        if ! eval "$comando_check $comp" &>/dev/null; then
            echo "Instalando $comp..."
            eval "$comando_instalar $comp"
        else
            echo "$comp ya está instalado. Omitiendo."
        fi
    done
}
# Instalar según distribución
case "$DISTRO" in
    ubuntu|debian|linuxmint)
        echo "Distribución Debian/Ubuntu/Mint detectada."
        apt update
        instalar_si_faltan "dpkg -s" "sudo apt install -y"
        ;;
    opensuse*|suse)
        echo "Distribución openSUSE detectada."
        instalar_si_faltan "rpm -q" "sudo zypper install -y"
        ;;
    fedora)
        echo "Distribución Fedora detectada."
        instalar_si_faltan "rpm -q" "sudo dnf install -y"
        ;;
    arch|manjaro)
        echo "Distribución Arch/Manjaro detectada."
        instalar_si_faltan "pacman -Q" "sudo pacman -S --noconfirm"
        ;;
    *)
        echo "Distribución $DISTRO no soportada automáticamente."
        echo "Por favor instala manualmente los siguientes componentes:"
        printf '%s\n' "${COMPONENTES[@]}"
        exit 1
        ;;
esac
echo "Todos los componentes de Gambas han sido verificados e instalados según necesidad."