From ccd971da2e43ab08cb8a9c920d13ba19c7430bb3 Mon Sep 17 00:00:00 2001 From: Esteban Mackay Q Date: Thu, 17 Aug 2023 17:41:05 -0500 Subject: [PATCH] update --- install.sh | 20 ---------- update.sh | 108 +++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 81 insertions(+), 47 deletions(-) diff --git a/install.sh b/install.sh index 4854654..0a9ff6c 100644 --- a/install.sh +++ b/install.sh @@ -94,26 +94,6 @@ echo "Instalación completa." ############## cd / -##################################################################################################################### -# rust -##################################################################################################################### -#!/bin/bash - -if command -v rustc &>/dev/null; then - echo "Rust está instalado. Versión:" - rustc --version -else - echo "Rust no está instalado. Instalando..." - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustup.sh - chmod +x rustup.sh - ./rustup.sh -y - source "$HOME/.cargo/env" - rustup update - rustup update stable - echo "Rust ha sido instalado correctamente. Versión:" - rustc --version - rm rustup.sh -fi ###################################################################################################################### # Cronedit diff --git a/update.sh b/update.sh index 57a70bd..0cb5462 100644 --- a/update.sh +++ b/update.sh @@ -1,30 +1,100 @@ #!/bin/bash -apps=("wget" "git" "sudo" "python3" "python3-pip" "python3-dev" "python3-venv" "libffi-dev" "libssl-dev" "cargo" "pkg-config" "sed" "default-libmysqlclient-dev" "libmysqlclient-dev" "build-essential" "zip" "unzip") + +# Verificar si el usuario tiene permisos de root +if [[ $EUID -ne 0 ]]; then + echo "Este script debe ejecutarse como usuario ROOT" + exit 1 +fi + +# Actualizar la lista de paquetes una vez al principio +sudo apt-get update # Función para verificar e instalar una aplicación check_and_install() { app=$1 - if ! dpkg -s $app 2>/dev/null | grep -q "Status: install ok installed"; then + if ! dpkg -s $app >/dev/null 2>&1; then echo "$app no está instalado. Instalando..." - sudo apt-get install -y $app + sudo apt-get install $app -y echo "$app instalado correctamente." else - echo "$app ya está instalado." + echo "Verificando si hay actualizaciones para $app..." + available_version=$(apt-cache policy $app | grep 'Candidate' | awk '{print $2}') + current_version=$(dpkg -s $app | grep 'Version' | awk '{print $2}') + + if [ "$available_version" != "$current_version" ]; then + echo "Hay una versión actualizada de $app disponible. Actualizando..." + sudo apt-get install --only-upgrade $app -y + echo "$app actualizado correctamente." + else + echo "$app ya está instalado y actualizado." + fi fi } +# Lista de aplicaciones para verificar e instalar +apps=("wget" "git" "sudo" "python3" "python3-pip" "python3-dev" "python3-venv" "libffi-dev" "libssl-dev" "cargo" "pkg-config" "sed" "default-libmysqlclient-dev" "libmysqlclient-dev" "build-essential" "zip" "unzip" "python3-distutils" "python3-twisted" "python3-bitarray" "rrdtool" "openssl") + + # Verificar e instalar cada aplicación for app in "${apps[@]}"; do check_and_install $app done -############# -apt-get install python3-venv -y -python3 -m venv env0 -source env0/bin/activate -pip3 install --upgrade pip -pip install pyopenssl --upgrade + +# Verificar y actualizar python3-venv si no está instalado +if ! dpkg -s python3-venv >/dev/null 2>&1; then + echo "python3-venv no está instalado. Instalando..." + sudo apt-get install python3-venv -y + echo "python3-venv instalado correctamente." +fi + +# Crear y activar un entorno virtual +cd /opt/ +python3 -m venv myenv +source myenv/bin/activate + +# Instalar pip en el entorno virtual +wget https://bootstrap.pypa.io/pip/get-pip.py +python3 get-pip.py +rm get-pip.py + +# Instalar paquetes en el entorno virtual +sudo apt install -y libssl-dev +python3 -m pip install --no-cache-dir --upgrade pip setuptools +python3 -m pip install --no-cache-dir cryptography pyopenssl autobahn Twisted dmr_utils3 bitstring jinja2 markupsafe bitarray configparser aprslib attrs + +# Instalar Rust y configurar versión +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y +source $HOME/.cargo/env + +rustup install 1.71.1 +rustup default 1.71.1 + +# Desactivar el entorno virtual deactivate +# Crear archivo requirements.txt y instalar paquetes +cat < /opt/fdmr-update.sh <<- "EOFD1" #!/bin/bash ##################################################################################################################### -# rust -##################################################################################################################### #!/bin/bash -if command -v rustc &>/dev/null; then - echo "Rust está instalado. Versión:" - rustc --version -else - echo "Rust no está instalado. Instalando..." - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustup.sh - chmod +x rustup.sh - ./rustup.sh -y - source "$HOME/.cargo/env" - rustup update - rustup update stable - echo "Rust ha sido instalado correctamente. Versión:" - rustc --version - rm rustup.sh -fi + variable=$(grep "SERVER_ID:" /opt/FreeDMR/config/FreeDMR.cfg | grep -Eo '[0-9]{1,9}') if [ -z "$variable" ] then variable=0000