449 lines
24 KiB
Bash
Executable file
449 lines
24 KiB
Bash
Executable file
#!/bin/bash
|
|
#Autor: Marcos Ferreira da Rocha
|
|
#Email: marcos.fr.rocha@gmail.com
|
|
#Blog: alfabech.com
|
|
#¿Dónde encontrar al creador del script?, Grupo de LibreOffice en Telegram https://t.me/libreofficebr, https://t.me/libreofficebrasil
|
|
#Versión en español: Daniel A. Rodriguez <drodriguez@libreoffice.org>
|
|
#Versión: 1.5
|
|
#Fecha: Mayo 2024
|
|
|
|
exec >& >(tee -a /tmp/$(date +"%d-%m-%y"--%Hhoras:%mmin:%Sseg)-install-libreoffice.log)
|
|
export PATH="/usr/local/sbin:/usr/sbin:/sbin:/bin:/usr/games:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
|
|
|
|
#0 ## Instalamos dependencias
|
|
|
|
YUM_CMD=$(which yum)
|
|
APT_CMD=$(which apt)
|
|
PACMAN_CMD=$(which pacman)
|
|
ZYPPER_CMD=$(which zypper)
|
|
|
|
SUDO_CMD=$(which sudo)
|
|
|
|
# YUM_ZEN=$(which zenity)
|
|
# APT_ZEN=$(which zenity)
|
|
# PACMAN_ZEN=$(which zenity)
|
|
# ZYPPER_ZEN=$(which zenity)
|
|
|
|
# YUM_CURL=$(which curl)
|
|
# APT_CURL=$(which curl)
|
|
# PACMAN_CURL=$(which curl)
|
|
# ZYPPER_CURL=$(which curl)
|
|
|
|
if ! [ -e $SUDO_CMD ]; then
|
|
|
|
if [[ ! -z $APT_CMD ]]; then
|
|
apt install sudo zenity curl -y
|
|
elif [[ ! -z $YUM_CMD ]]; then
|
|
dnf install sudo zenity curl -y
|
|
elif [[ ! -z $PACMAN_CMD ]]; then
|
|
pacman -Sy sudo zenity curl
|
|
elif [[ ! -z $ZYPPER_CMD ]]; then
|
|
zypper -n install sudo zenity curl
|
|
fi
|
|
else
|
|
echo "\e[1;32m\u2713\e[1;0m\e[1;32mSudo está presente\e[1;0m"
|
|
fi
|
|
|
|
if [ -e /usr/bin/dnf ]; then
|
|
#Archivo de aviso sobre el script
|
|
wget -c wget -c https://git.cuates.net/drodriguez/Instalacion-LibreOffice/raw/branch/main/README.md -P /tmp
|
|
FILE=/tmp/aviso
|
|
# zenity --text-info --width=800 --height=600 \
|
|
dialog \
|
|
--title="Acerca de LibreOffice" \
|
|
--filename=$FILE
|
|
else
|
|
# zenity --text-info --html --width=800 --height=600 \
|
|
# --title="Acerca de LibreOffice" \
|
|
# --url=https://es.libreoffice.org/descarga/
|
|
zenity --info --width=800 --height=600 --text="
|
|
LibreOffice es ofrecido por TDF | The Document Fundation
|
|
https://www.documentfoundation.org/ \n
|
|
|
|
https://es.libreoffice.org es el portal de la Comunidad Hispana. \n
|
|
|
|
Este script descarga e instala LibreOffice directamente de los repositorios oficiales.\n
|
|
Es posible modificar lista de acuerdo con su necesidad, para ambientes corporativos\n
|
|
sugerimos la creación de un repositorio local para LibreOffice, asi como en este script.\n
|
|
|
|
The Document Foundation mantiene dos ramas de LibreOffice disponibles,\n
|
|
una para los usuarios que desean las últimas funcionalidades y otra\n
|
|
para quienes prefieran una versión sometida a más pruebas y correcciones de errores.
|
|
|
|
Invitamos a visitar la página del projeto (LibreOffice).\n
|
|
http://www.libreoffice.org/
|
|
"
|
|
|
|
fi
|
|
case $? in
|
|
0)
|
|
echo "\e[1;32m\u2713\e[1;0m\e[1;32mIniciar Instalación\e[1;0m"
|
|
#1 Definimos el repositorio estable.
|
|
estadoversion="stable"
|
|
|
|
#2 ## Escogemos la versión de LibreOffice
|
|
# vs=$(zenity --entry --title="Ingrese la versión" --text="versión:")
|
|
|
|
curl -f -L https://download.documentfoundation.org/libreoffice/stable/ | grep -oP 'href="\K[0-9.]+' > data.txt
|
|
|
|
# Carga un array con cada línea del archivo
|
|
unset list
|
|
while read -r line
|
|
do
|
|
list+=("FALSE")
|
|
list+=("$line")
|
|
done < data.txt
|
|
|
|
# Mostrar el diálogo
|
|
vs=$(zenity --list --radiolist --width=450 --height=400 --title="Escoja la versión a instalar" --text "Escoja la versión a instalar" --column "Selección" --column "Versión" "${list[@]}" --separator=":")
|
|
echo $vs
|
|
|
|
if [ $? == 0 ]; then
|
|
#3 Aqui se pode ingresar una lista de servidoes prefereridos para descargar LibreOffice,
|
|
#con la posibilidad de ingresar un servidor local, ideal para ambientes empresariales
|
|
#En este caso utilicé el servidor de mi red con IP 192.168.0.193/tdf
|
|
|
|
servidor=$(zenity --list --radiolist --width=450 --height=400 \
|
|
--title="Escoja el servidor espejo" \
|
|
--text="Selecione el servidor para realizar la descarga de los paquetes de LibreOffice" \
|
|
--column="Selección" --column="Enlace" --column="Institución" \
|
|
TRUE http://tdf.c3sl.ufpr.br "UFPR - BR" \
|
|
FALSE https://mirror.clarkson.edu/tdf/ "Clarkson - EEUU" \
|
|
FALSE https://mirror1.cs-georgetown.net/tdf/ "Georgetown - EEUU" \
|
|
FALSE https://ftp.osuosl.org/pub/tdf/ "Open Source Lab - EEUU" \
|
|
FALSE https://mirror.cedia.org.ec/tdf/ "CEDIA - EC" \
|
|
FALSE http://linorg.usp.br/LibreOffice "USP - BR" \
|
|
FALSE https://ftp.unicamp.br/pub/libreoffice/ "UNICAMP - BR" \
|
|
FALSE http://mirror.pop-sc.rnp.br/mirror/tdf "Pop-SC - BR" \
|
|
FALSE 192.168.0.187/tdf "Servidor Local" )
|
|
|
|
if [ $? == 0 ]; then
|
|
|
|
#4 Verificando el gestor de paquetes"
|
|
if [ -e "/bin/rpm" ]; then
|
|
gestorPaquetes=rpm
|
|
directorio=RPMS
|
|
else
|
|
gestorPaquetes=deb
|
|
directorio=DEBS
|
|
fi
|
|
#5 Verificando arquitetura del sistema"
|
|
if [ `getconf LONG_BIT` = "64" ]
|
|
then
|
|
plataforma=x86_64
|
|
plataforma2=x86-64
|
|
else
|
|
plataforma=x86
|
|
plataforma2=x86
|
|
fi
|
|
|
|
#6 Selección del idioma local
|
|
idioma=$(zenity --list --radiolist --width=450 --height=500 \
|
|
--title="Seleccione el idioma local" \
|
|
--column="Selección" --column="Cod. Idioma" --column="Idioma" \
|
|
TRUE es "Spanish" \
|
|
FALSE am "Amharic - አማርኛ" \
|
|
FALSE ar "Arabic - العربية " \
|
|
FALSE ast "Asturian" \
|
|
FALSE bg "Bulgarian (Bulsgaria) " \
|
|
FALSE bn-IN "Bengali, India" \
|
|
FALSE bn "Bengali" \
|
|
FALSE bo "Tibetan Standard - བོད་ཡིག" \
|
|
FALSE bs "Bosnian (Bosnia and Herzegovina)" \
|
|
FALSE ca "Catalan" \
|
|
FALSE cs "Czech" \
|
|
FALSE da "Danish" \
|
|
FALSE de "German" \
|
|
FALSE dz "Dzgkha" \
|
|
FALSE el "Greek" \
|
|
FALSE en-US "English United Stats" \
|
|
FALSE en-GB "English (United Kingdom)" \
|
|
FALSE en-ZA "English (South Africa)" \
|
|
FALSE eo "Esperanto" \
|
|
FALSE et "Estian" \
|
|
FALSE eu "Basque" \
|
|
FALSE fi "Finnish" \
|
|
FALSE fr "French" \
|
|
FALSE gl "Galician" \
|
|
FALSE gu "Gujarati" \
|
|
FALSE he "Hebrew" \
|
|
FALSE hi "Hindi" \
|
|
FALSE hr "Croatian" \
|
|
FALSE hu "Hungarian" \
|
|
FALSE id "Indesian" \
|
|
FALSE is "Icelandic" \
|
|
FALSE it "Italian" \
|
|
FALSE ja "Japanese" \
|
|
FALSE ka "Georgian" \
|
|
FALSE km "Khmer" \
|
|
FALSE ko "Korean" \
|
|
FALSE lo "Lao" \
|
|
FALSE lt "Lithuanian" \
|
|
FALSE lv "Latvian" \
|
|
FALSE mk "FYRO Macedian" \
|
|
FALSE nb "Norwegian (Bokm?l)" \
|
|
FALSE ne "Nepali" \
|
|
FALSE nl "Dutch" \
|
|
FALSE nn "Norwegian Nynorsk" \
|
|
FALSE om "Oromo" \
|
|
FALSE pl "Polish" \
|
|
FALSE pt "Portuguese" \
|
|
FALSE pt-BR "Portuguese (Brazil)" \
|
|
FALSE ro "Romanian" \
|
|
FALSE ru "Russian" \
|
|
FALSE si "Sinhala; Sinhalese" \
|
|
FALSE sid "Sidamo" \
|
|
FALSE sk "Slovak" \
|
|
FALSE sl "Slovenian" \
|
|
FALSE sq "Albanian" \
|
|
FALSE sv "Swedish" \
|
|
FALSE ta "Tamil" \
|
|
FALSE tg "Tajik" \
|
|
FALSE tr "Turkish" \
|
|
FALSE ug "Uyghur" \
|
|
FALSE uk "Ukrainian" \
|
|
FALSE vi "Vietnamese (Vietnam)" \
|
|
FALSE zh-CN "Chinese Simplified" \
|
|
FALSE zh-TW "Chinese Traditial" )
|
|
status=$?
|
|
if [ $status = 0 ]
|
|
then
|
|
|
|
while true
|
|
do
|
|
resp=$(zenity --password --text "Ingrese su contraseña" --title "Autenticación")
|
|
|
|
#6.1 Toma la contraseña de la IU
|
|
clave=$(echo "$resp" | cut -f1 -d'|')
|
|
(
|
|
echo "1" ; sleep 1
|
|
echo "# Creando directorios" ; sleep 1
|
|
#6.2 # Pasa la contraseña
|
|
echo $clave | sudo -S -u root zenity --info --width=300 --height=60 --text "Iniciando instalación \nGuarde los trabajos abiertos en LibreOffice y haga clic en Aceptar"
|
|
|
|
if ! [ -e /usr/bin/notify-send ]; then
|
|
|
|
if [[ ! -z $APT_CMD ]]; then
|
|
apt install libnotify-bin -y
|
|
elif [[ ! -z $YUM_CMD ]]; then
|
|
dnf install libnotify -y
|
|
elif [[ ! -z $PACMAN_CMD ]]; then
|
|
pacman -Sy libnotify
|
|
elif [[ ! -z $ZYPPER_CMD ]]; then
|
|
zypper -n install notify-send
|
|
else
|
|
echo "\e[1;31m\u2717\e[1;0m\e[1;31mGestor no encontrado\e[1;0m"
|
|
fi
|
|
else
|
|
echo "\e[1;32m\u2713\e[1;0m\e[1;32mnotify-send ya instalado\e[1;0m"
|
|
|
|
fi
|
|
|
|
echo "5" ; sleep 1
|
|
echo "# Creando directorios" ; sleep 1
|
|
#6.3 # Creando directorio para bajar los paquetes de acuerdo con versión, gestor, arquitectura
|
|
mkdir -p "/home/"$USER"/Descargas/libreoffice/"$estadoversion"/"$vs"/"$gestorPaquetes"/"$plataforma""
|
|
destino="/home/"$USER"/Descargas/libreoffice/"$estadoversion"/"$vs"/"$gestorPaquetes"/"$plataforma""
|
|
|
|
#7 #Descargando LibreOffice
|
|
##notify-send -i libreoffice -t 50000 'LibreOffice '$vs'' 'Descargando paquetes'
|
|
|
|
echo "10" ; sleep 1
|
|
echo "# Descargando el paquete principal" ; sleep 1
|
|
wget -c "$servidor"/libreoffice/"$estadoversion"/"$vs"/"$gestorPaquetes"/"$plataforma"/LibreOffice_"$vs"_Linux_"$plataforma2"_"$gestorPaquetes".tar.gz -P "$destino"
|
|
|
|
echo "20" ; sleep 1
|
|
echo "# Descargando el paquete de ayuda" ; sleep 1
|
|
wget -c "$servidor"/libreoffice/"$estadoversion"/"$vs"/"$gestorPaquetes"/"$plataforma"/LibreOffice_"$vs"_Linux_"$plataforma2"_"$gestorPaquetes"_helppack_"$idioma".tar.gz -P "$destino"
|
|
|
|
#8 # Verificando si hay necesidad de descarga el paquete de idioma, si se trata de inglés no es necesario.
|
|
if ! [ "$idioma" = "en-US" ]
|
|
then
|
|
echo "30" ; sleep 1
|
|
echo "\e[1;32m\u2713\e[1;0m\e[1;32mDescargando el paquete de idioma\e[1;0m" ; sleep 1
|
|
wget -c "$servidor"/libreoffice/"$estadoversion"/"$vs"/"$gestorPaquetes"/"$plataforma"/LibreOffice_"$vs"_Linux_"$plataforma2"_"$gestorPaquetes"_langpack_"$idioma".tar.gz -P "$destino"
|
|
else
|
|
exit 1
|
|
fi
|
|
|
|
echo "40" ; sleep 1
|
|
echo "\e[1;32m\u2713\e[1;0m\e[1;32mQuitando versión anterior\e[1;0m" ; sleep 1
|
|
#9 #Verificando si el paquete principal LibreOffice fue bajado para dar continuidad al proceso, en caso afirmativo se realiza un test del gestor de paquetes para desinstalar la versión anterior de LibreOffice.
|
|
##notify-send -i libreoffice -t 50000 'LibreOffice '$vs'' 'Removiendo versión anterior '$comparar-version-instalada'. !'
|
|
if [ -e "$destino"/LibreOffice_"$vs"_Linux_"$plataforma2"_"$gestorPaquetes".tar.gz ]
|
|
then
|
|
|
|
if [[ ! -z $APT_CMD ]]; then
|
|
sudo -S apt remove libreoffice* -y
|
|
elif [[ ! -z $YUM_CMD ]]; then
|
|
sudo -S dnf remove libreoffice* -y
|
|
elif [[ ! -z $PACMAN_CMD ]]; then
|
|
sudo -S pacman -Rn libreoffice*
|
|
elif [[ ! -z $ZYPPER_CMD ]]; then
|
|
sudo -S zypper -n remove libreoffice*
|
|
else
|
|
echo "\e[1;32m\u2713\e[1;0m\e[1;32mLibreOffice no encontrado, continuar instalación\e[1;0m"
|
|
fi
|
|
|
|
#10 # Descomprimimos los paquetes de LibreOffice
|
|
##notify-send -i libreoffice -t 50000 'LibreOffice '$vs'' 'Extrayendo paquetes'
|
|
|
|
echo "50" ; sleep 1
|
|
echo "\e[1;32m\u2713\e[1;0m\e[1;32mDescompactando el paquete principal\e[1;0m" ; sleep 1
|
|
|
|
tar -xzf "$destino"/LibreOffice_"$vs"_Linux_"$plataforma2"_"$gestorPaquetes".tar.gz -C /tmp
|
|
|
|
#11 # Verificando la necesidad de instalar paquete de idioma
|
|
if ! [ "$idioma" = "en-US" ]
|
|
then
|
|
|
|
echo "60" ; sleep 1
|
|
echo "\e[1;32m\u2713\e[1;0m\e[1;32mDescompactando el paquete de idioma\e[1;0m" ; sleep 1
|
|
tar -xzf "$destino"/LibreOffice_"$vs"_Linux_"$plataforma2"_"$gestorPaquetes"_langpack_"$idioma".tar.gz -C /tmp
|
|
else
|
|
exit 1
|
|
fi
|
|
|
|
#12 # Paquete de ayuda
|
|
echo "70" ; sleep 1
|
|
echo "\e[1;32m\u2713\e[1;0m\e[1;32mDescompactando el paquete de ayuda\e[1;0m" ; sleep 1
|
|
tar -xzf "$destino"/LibreOffice_"$vs"_Linux_"$plataforma2"_"$gestorPaquetes"_helppack_"$idioma".tar.gz -C /tmp
|
|
|
|
# Aqui se instala el paquete principal de LibreOffice
|
|
|
|
#13 #PAQUETE PRINCIPAL
|
|
##notify-send -i libreoffice -t 50000 'LibreOffice '$vs'' 'Instalando paquete principal'
|
|
tar -tzf "$destino"/LibreOffice_"$vs"_Linux_"$plataforma2"_"$gestorPaquetes".tar.gz | cut -d '_' -f2 | uniq > /tmp/subversion
|
|
valorsubversion=$(</tmp/subversion)
|
|
|
|
echo "75" ; sleep 1
|
|
echo "\e[1;32m\u2713\e[1;0m\e[1;32mInstalando el paquete principal\e[1;0m" ; sleep 1
|
|
|
|
if [ -e $APT_CMD ]; then
|
|
|
|
sudo -S apt install /tmp/LibreOffice_"$valorsubversion"_Linux_"$plataforma2"_"$gestorPaquetes"/"$directorio"/*
|
|
else
|
|
sudo -S dnf install /tmp/LibreOffice_"$valorsubversion"_Linux_"$plataforma2"_"$gestorPaquetes"/"$directorio"/*
|
|
fi
|
|
|
|
#14 ##Instalación del PAQUETE DE IDIOMA
|
|
##notify-send -i libreoffice -t 50000 'LibreOffice '$vs'' 'Instalando paquetes de idioma'
|
|
if ! [ "$idioma" = "en-US" ]
|
|
then
|
|
tar -tzf "$destino"/LibreOffice_"$vs"_Linux_"$plataforma2"_"$gestorPaquetes".tar.gz | cut -d '_' -f2 | uniq > /tmp/subversion
|
|
valorsubversion=$(</tmp/subversion)
|
|
|
|
echo "80" ; sleep 1
|
|
echo "\e[1;32m\u2713\e[1;0m\e[1;32mInstalando el paquete de idioma\e[1;0m" ; sleep 1
|
|
|
|
if [ -e $APT_CMD ]; then
|
|
sudo -S apt install /tmp/LibreOffice_"$valorsubversion"_Linux_"$plataforma2"_"$gestorPaquetes"_langpack_"$idioma"/"$directorio"/*
|
|
else
|
|
sudo -S dnf install /tmp/LibreOffice_"$valorsubversion"_Linux_"$plataforma2"_"$gestorPaquetes"_langpack_"$idioma"/"$directorio"/*
|
|
fi
|
|
|
|
else
|
|
exit 1
|
|
fi
|
|
|
|
#14 ##PAQUETE DE AYUDA
|
|
echo "90" ; sleep 1
|
|
echo "\e[1;32m\u2713\e[1;0m\e[1;32mInstalando el paquete de ayuda\e[1;0m" ; sleep 1
|
|
##notify-send -i libreoffice -t 50000 'LibreOffice '$vs'' 'Instalando paquetes de ayuda!'
|
|
tar -tzf "$destino"/LibreOffice_"$vs"_Linux_"$plataforma2"_"$gestorPaquetes".tar.gz | cut -d '_' -f2 | uniq > /tmp/subversion
|
|
valorsubversion=$(</tmp/subversion)
|
|
rm subversion
|
|
|
|
if [ -e $APT_CMD ]; then
|
|
sudo -S apt install /tmp/LibreOffice_"$valorsubversion"_Linux_"$plataforma2"_"$gestorPaquetes"_helppack_"$idioma"/"$directorio"/*
|
|
else
|
|
sudo -S dnf install /tmp/LibreOffice_"$valorsubversion"_Linux_"$plataforma2"_"$gestorPaquetes"_helppack_"$idioma"/"$directorio"/*
|
|
fi
|
|
else
|
|
exit 1
|
|
fi
|
|
|
|
#15 # Tratando los archivos utilizados, de momento enviando a un subdirectorio de descargas
|
|
|
|
echo "100" ; sleep 1
|
|
echo "\e[1;32m\u2713\e[1;0m\e[1;32mInstalación finalizada\e[1;0m" ; sleep 1
|
|
|
|
if [ -n "$(ls -A /opt/libreoffic* )" ]
|
|
|
|
then
|
|
notify-send -i libreoffice -t 50000 'LibreOffice '$vs'' 'Instalación concluída'
|
|
else
|
|
notify-send -i libreoffice -t 50000 'LibreOffice '$vs'' 'No instalado'
|
|
fi
|
|
|
|
1 2>/dev/null && exit
|
|
|
|
) |
|
|
zenity --progress --width=250 --height=100 \
|
|
--title="Descarga del programa" \
|
|
--text="Iniciando..." \
|
|
--percentage=0
|
|
|
|
if [ "$?" = -1 ] ; then
|
|
zenity --error \
|
|
--text="Instalación cancelada."
|
|
fi
|
|
|
|
zenity --question --default-cancel --no-wrap --text 'LibreOffice ha sido instalado \nHaga clic en Aceptar para activar el monitor de atualización. \n O Salir si no quiere hacerlo' --ok-label="Aceptar" --cancel-label="Salir"
|
|
# Salir si se presionó cancelar.
|
|
(( $? == 1 || $? != 1 )) &&
|
|
|
|
|
|
#Opción desactivada debido a la implementación del actualizador automático en el núcleo de LO
|
|
# zenity --question --text="Instalar el Monitor de Actualización" --ok-label="Si" --cancel-label="No"
|
|
# if [ $? = 0 ] ; then
|
|
|
|
# if ! [ -e /usr/bin/monitor-libreoffice.sh ]; then
|
|
# sudo -S wget https://git.cuates.net/drodriguez/Instalacion-LibreOffice/raw/branch/main/monitor-libreoffice.sh -P /usr/bin/
|
|
|
|
# sudo -S chmod +x /usr/bin/monitor-libreoffice.sh
|
|
|
|
|
|
# crontab -l | grep -q 'bash /usr/bin/monitor-libreoffice.sh' && echo '0' > /tmp/CRON || echo '1' > /tmp/CRON
|
|
|
|
|
|
# if [[ $(cat /tmp/CRON) == "1" ]]; then
|
|
|
|
# (crontab -l ; echo "20 * * * * export DISPLAY=:0 && bash /usr/bin/monitor-libreoffice.sh") | crontab - ; exit 0
|
|
|
|
# else
|
|
# echo "Ya configurado" ; exit 0
|
|
|
|
# fi
|
|
|
|
# exit 0
|
|
|
|
# (( $? )) && exit
|
|
# else
|
|
# exit 0
|
|
# fi
|
|
|
|
# else
|
|
# exit 0
|
|
# fi
|
|
exit 0
|
|
done
|
|
exit 0
|
|
else
|
|
exit 0
|
|
fi
|
|
else
|
|
exit 0
|
|
fi
|
|
else
|
|
exit 0
|
|
fi
|
|
;;
|
|
1)
|
|
echo "\e[1;31m\u2717\e[1;0m\e[1;31mInstalación Cancelada\e[1;0m"
|
|
;;
|
|
-1)
|
|
echo "\e[1;32m\u2713\e[1;0m\e[1;32mAlgo inesperado ha ocurrido\e[1;0m"
|
|
;;
|
|
esac
|