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."