Instalar ultimo libreoffice desde la web en debian/ubuntu

Este script es solo un ejemplo de bash avanzado, puede fallar si aunque sea se modifica algo en la url principal o dentro del código html.

#!/bin/bash

# Variables
CACHE_FOLDER=/tmp
DOWNLOAD_DIR=${CACHE_FOLDER}/Libreoffice
LIBREOFFICE_URL="https://download.documentfoundation.org/libreoffice/stable/"
VERSION=$(wget -qO- $LIBREOFFICE_URL | grep -oP '[0-9]+(\.[0-9]+)+' | sort -V | tail -1)
VERSION_INSTALLED=$(/usr/local/bin/libreoffice* --version 2>/dev/null | awk '{print $2}' )

#sudo find $DOWNLOAD_DIR -type f -name "*.tar.gz" -exec rm {} \; >/dev/null 2>&1
 sudo find $DOWNLOAD_DIR -type f -name "*.deb"    -exec rm {} \; >/dev/null 2>&1
#sudo rm -rf $DOWNLOAD_DIR >/dev/null 2>&1

# TODO remove this line
#export LANG=es_AR.UTF-8

# Detectar el idioma del sistema
LANGUAGE=$(echo $LANG | cut -d'_' -f1)

# Mensajes en español e inglés
if [ "$LANGUAGE" == "es" ]; then
        LO_LANG=es
        MSG_INSTALLED="LibreOffice está instalado. ---------------------------"
           MSG_PROMPT="¿Quieres eliminar LibreOffice? (s/n): "
         MSG_REMOVING="Eliminando LibreOffice. -------------------------------"
          MSG_REMOVED="LibreOffice ha sido eliminado. ------------------------"
      MSG_NOT_REMOVED="No se ha eliminado LibreOffice. -----------------------"
    MSG_NOT_INSTALLED="LibreOffice no está instalado. ------------------------"
         MSG_SAME_VER="No es necesario actualizar. Esta actualizado. ---------"
          MSG_UPGRADE="Es necesario actualizar. ------------------------------"
       ACCEPTED_REGEX="^[Ss]$"
      MSG_DOWNLOADING="Descargando LibreOffice. ------------------------------"
    MSG_UNCOMPRESSING="Descomprimiendo los archivos tar. ---------------------"
       MSG_INSTALLING="Instalando LibreOffice y sus paquetes de lenguaje. ----"
          MSG_OPENING="Abriendo todas las aplicaciones para probarlas. -------"
             MSG_DONE="Se finalizó la instalación de Libreoffice $VERSION"
else
        if [ "$LANGUAGE" == "de" ] || [ "$LANGUAGE" == "fr" ] || [ "$LANGUAGE" == "ja" ] || [ "$LANGUAGE" == "pl" ] \
        || [ "$LANGUAGE" == "ru" ] || [ "$LANGUAGE" == "ro" ] || [ "$LANGUAGE" == "it" ] || [ "$LANGUAGE" == "ko" ] \
        || [ "$LANGUAGE" == "gl" ]      ; then                                                                                                                                               
                LO_LANG=$LANGUAGE                                                                                                                                                            
        elif [ "$LANGUAGE" == "en" ] ; then                                                                                                                                                  
                LO_LANG=""                                                                                                                                                                   
        else                                                                                                                                                                                 
                LANG_LIST=$(wget -qO- ${LIBREOFFICE_URL}${VERSION}/deb/x86_64/ | grep -oP 'langpack_\K[^.]+(?=\.tar\.gz<)')                                                                  
                OPTIONS=()                                                                                                                                                                   
                for LANG in $LANG_LIST; do
                    OPTIONS+=("$LANG" "$LANG")
                done
                LO_LANG=$(whiptail --title "Select your language" --menu "Use the arrows and enter to select:" 20 60 10 "${OPTIONS[@]}" 3>&1 1>&2 2>&3)
        fi
        MSG_INSTALLED="LibreOffice is installed. -----------------------------"
           MSG_PROMPT="Do you want to remove LibreOffice? (y/n): "
         MSG_REMOVING="Removing LibreOffice. ---------------------------------"
          MSG_REMOVED="LibreOffice has been removed. -------------------------"
      MSG_NOT_REMOVED="LibreOffice was not removed. --------------------------"
    MSG_NOT_INSTALLED="LibreOffice is not installed. -------------------------"
         MSG_SAME_VER="Upgrade is not needed. It is up to date. --------------"
          MSG_UPGRADE="Upgrade is needed. ------------------------------------"
       ACCEPTED_REGEX="^[Yy]$"
      MSG_DOWNLOADING="Downloading LibreOffice. ------------------------------"
    MSG_UNCOMPRESSING="Uncompressing tar files. ------------------------------"
       MSG_INSTALLING="Installing LibreOffice and its language pack. ---------"
          MSG_OPENING="Opening all applications to test. ---------------------"
             MSG_DONE="Installation done. Libreoffice $VERSION "
fi

# TODO remove this line
export LC_ALL=C LANGUAGE=C LANG=C

# Verificar si LibreOffice está instalado
dpkg -l | grep libreoffice &> /dev/null

if [ $? -eq 0 ]; then
    echo "$MSG_INSTALLED"
    dpkg -l | grep libreoffice
    echo $VERSION_INSTALLED | grep $VERSION >/dev/null
    if [ "$?" == "0" ] ; then
        echo WEB "$VERSION" LOCAL "$VERSION_INSTALLED"
        echo "$MSG_SAME_VER"
        exit
    else
        echo WEB "$VERSION" LOCAL "$VERSION_INSTALLED"
        echo "$MSG_UPGRADE"
    fi
    read -p "$MSG_PROMPT" respuesta
    if [[ "$respuesta" =~ $ACCEPTED_REGEX ]]; then
        echo "$MSG_REMOVING"
        sudo apt-get remove --purge -y $(dpkg -l | awk '{print $2}' | grep ^libreoffice) >/dev/null
        sudo apt-get autoremove -y >/dev/null
        sudo apt-get clean >/dev/null 2>&1
        echo "$MSG_REMOVED"
    else
        echo "$MSG_NOT_REMOVED"
    fi
else
    echo "$MSG_NOT_INSTALLED"
fi

echo "$MSG_DOWNLOADING"
        sudo mkdir -p $DOWNLOAD_DIR >/dev/null 2>&1
        sudo wget --show-progress -qN ${LIBREOFFICE_URL}${VERSION}/deb/x86_64/LibreOffice_${VERSION}_Linux_x86-64_deb.tar.gz -P $DOWNLOAD_DIR
        if [ ! -z "$LO_LANG" ] ; then
                sudo wget --show-progress -qN ${LIBREOFFICE_URL}${VERSION}/deb/x86_64/LibreOffice_${VERSION}_Linux_x86-64_deb_langpack_$LO_LANG.tar.gz -P $DOWNLOAD_DIR
                sudo wget --show-progress -qN ${LIBREOFFICE_URL}${VERSION}/deb/x86_64/LibreOffice_${VERSION}_Linux_x86-64_deb_helppack_$LO_LANG.tar.gz -P $DOWNLOAD_DIR
        fi

echo "$MSG_UNCOMPRESSING"
        sudo tar -xzf $DOWNLOAD_DIR/LibreOffice_${VERSION}_Linux_x86-64_deb.tar.gz -C $DOWNLOAD_DIR
        if [ ! -z "$LO_LANG" ] ; then
                sudo tar -xzf $DOWNLOAD_DIR/LibreOffice_${VERSION}_Linux_x86-64_deb_langpack_$LO_LANG.tar.gz -C $DOWNLOAD_DIR
                sudo tar -xzf $DOWNLOAD_DIR/LibreOffice_${VERSION}_Linux_x86-64_deb_helppack_$LO_LANG.tar.gz -C $DOWNLOAD_DIR
        fi

echo "$MSG_INSTALLING"
        sudo dpkg -i $(find $DOWNLOAD_DIR/ -type f -name \*.deb) >/dev/null 2>&1
        sudo apt install --fix-broken -y >/dev/null 2>&1
<<'SKIPTHIS'
echo "$MSG_OPENING"
        LANG=$LANG /usr/local/bin/libreoffice* --base    >/dev/null 2>&1 &
        sleep 2
        LANG=$LANG /usr/local/bin/libreoffice* --calc    >/dev/null 2>&1 &
        sleep 2
        LANG=$LANG /usr/local/bin/libreoffice* --draw    >/dev/null 2>&1 &
        sleep 2
        LANG=$LANG /usr/local/bin/libreoffice* --impress >/dev/null 2>&1 &
        sleep 2
        LANG=$LANG /usr/local/bin/libreoffice* --math    >/dev/null 2>&1 &
        sleep 2
        LANG=$LANG /usr/local/bin/libreoffice* --writer  >/dev/null 2>&1 &
        sleep 2
        LANG=$LANG /usr/local/bin/libreoffice*           >/dev/null 2>&1 &
SKIPTHIS

echo "$MSG_DONE"
        dpkg -l | grep libreoffice

Las siguientes son versiones viejas

#!/bin/bash
#Optional remove any old libreoffice
#apt remove --purge libreoffice* && apt autoremove -y

echo "Downloading Libreoffice -------------------------------------"
        # Variables
        CACHE_FOLDER=/var/cache/apt/archives
        LO_LANG=es  # Idioma para la instalación
        export LC_ALL=C LANGUAGE=C LANG=C
        export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
        DOWNLOAD_DIR=${CACHE_FOLDER}/Libreoffice
        LIBREOFFICE_URL="https://download.documentfoundation.org/libreoffice/stable/"
        VERSION=$(wget -qO- $LIBREOFFICE_URL | grep -oP '[0-9]+(\.[0-9]+)+' | sort -V | tail -1)

        mkdir -p $DOWNLOAD_DIR >/dev/null 2>&1
        wget -qN ${LIBREOFFICE_URL}${VERSION}/deb/x86_64/LibreOffice_${VERSION}_Linux_x86-64_deb.tar.gz -P $DOWNLOAD_DIR
        wget -qN ${LIBREOFFICE_URL}${VERSION}/deb/x86_64/LibreOffice_${VERSION}_Linux_x86-64_deb_langpack_$LO_LANG.tar.gz -P $DOWNLOAD_DIR
        tar -xzf $DOWNLOAD_DIR/LibreOffice_${VERSION}_Linux_x86-64_deb.tar.gz -C $DOWNLOAD_DIR
        tar -xzf $DOWNLOAD_DIR/LibreOffice_${VERSION}_Linux_x86-64_deb_langpack_$LO_LANG.tar.gz -C $DOWNLOAD_DIR

echo Installing LibreOffice and its language pack ----------------
        dpkg -i $(find $DOWNLOAD_DIR/ -type f -name \*.deb)
        apt install --fix-broken -y
        echo LibreOffice \$VERSION installation done.

#!/bin/bash
inestable=no
if [ "$inestable" == "no" ]; then 
        filtro="-v"
else
        filtro=""
fi
paquetes=$(dpkg -l | grep libreoffice | grep $filtro dev | awk '{print $2}')
if [ ! -z "$paquetes" ] ; then
        echo Esto es lo que tenemos hoy dia
        echo $paquetes

        echo Limpiando todo
        echo --desinstalando
        sudo apt remove $paquetes

        paquetes_restantes=$(dpkg -l | grep libreoffice | grep $filtro dev | awk '{print $2}')
        if [ ! -z "$paquetes_restantes" ] ; then
                echo --limpiando
                sudo dpkg --purge $paquetes_restantes
        fi
echo Listo
fi

#find /tmp/  -name "*?ibre?ffice*" -exec rm -rf {} \;

#padre base de la version
base_inestable0=libreoffice-24

#url base de dailys
base_inestable1=https://dev-builds.libreoffice.org/daily/

#hija base de la version
##TODO Esto seguramente haya que ponerle un tail o algo cuando hayan mas versiones 24
base_inestable2=$(curl -s $base_inestable1 | grep href | grep $base_inestable0 | cut -d "=" -f 7 | sed 's/\"//g' | cut -d "/" -f 1)

#archivo final
base_inestable3=$(curl -s ${base_inestable1}${base_inestable2}/Linux-rpm_deb-x86_64@tb99-TDF/current/ | grep x86-64_deb.tar.gz | sed 's/href/@/g'  | cut -d '@' -f 3 | cut -d '"' -f 2)

#url final con archivo final
base_inestable4=${base_inestable1}${base_inestable2}/Linux-rpm_deb-x86_64@tb99-TDF/current/${base_inestable3}

#archivo lenguaje español
base_inestable5=$(curl -s ${base_inestable1}${base_inestable2}/Linux-rpm_deb-x86_64@tb99-TDF/current/ | grep Linux_x86-64_deb_langpack_es.tar.gz | sed 's/href/@/g'  | cut -d '@' -f 2 | cut -d '"' -f 2)

base_inestable6=${base_inestable1}${base_inestable2}/Linux-rpm_deb-x86_64@tb99-TDF/current/${base_inestable5}

#COMENTADO PARA DEBUG SOLAMENTE
#echo $base_inestable4
#echo $base_inestable6

entusiasta=$(curl -s https://www.libreoffice.org/download/download-libreoffice/ | grep href=\'/download/download-libreoffice| head -n1 | cut -d \= -f 4 | cut -d \& -f 1)

estable=$(curl -s https://www.libreoffice.org/download/download-libreoffice/ | grep href=\'/download/download-libreoffice| head -n2 | cut -d \= -f 4 | cut -d \& -f 1 | tail -n1)

version=$estable

if [ "$inestable" == "no" ] ; then 
        echo La version parece ser $version

        echo Descargandolo!!
        wget --show-progress -qcO /tmp/LibreOffice.tar.gz https://download.documentfoundation.org/libreoffice/stable/${version}/deb/x86_64/LibreOffice_${version}_Linux_x86-64_deb.tar.gz  #>/dev/null 2>&1
        wget --show-progress -qcO /tmp/LibreOffice_es.tar.gz https://download.documentfoundation.org/libreoffice/stable/${version}/deb/x86_64/LibreOffice_${version}_Linux_x86-64_deb_langpack_es.tar.gz 2>&1 | grep tmp #>/dev/null 2>&1
else
        echo La version inestable parece ser $base_inestable3
        wget --show-progress -qcO /tmp/LibreOffice.tar.gz $base_inestable4 
        wget --show-progress -qcO /tmp/LibreOffice_es.tar.gz $base_inestable6

fi


echo Descomprimiendo
cd /tmp
tar xzvf /tmp/LibreOffice.tar.gz >/dev/null 2>&1
tar xzvf /tmp/LibreOffice_es.tar.gz >/dev/null 2>&1


echo Instalando
sudo su -c "apt --fix-broken install -y"
find /tmp/ -type f -name "*.deb" -exec chmod +x {} \; >/dev/null 2>&1
if [ "$inestable" == "no" ] ; then
        sudo dpkg -i $(find /tmp/LibreOffice_${version}*_Linux_x86-64_deb/ -type f -name "*.deb")
        sudo dpkg -i $(find /tmp/LibreOffice_${version}*_Linux_x86-64_deb_langpack_es/ -type f -name "*.deb")
else
        sudo dpkg -i $(find /tmp/$(echo $base_inestable3 | sed 's/\.tar\.gz//g')/ -type f -name "*.deb")
        sudo dpkg -i $(find /tmp/$(echo $base_inestable5 | sed 's/\.tar\.gz//g')/ -type f -name "*.deb")

fi
Scroll al inicio