Aggiornare LibreOffice su Fedora
Piccolo script scritto di fretta per avere sotto mano la versione fresh di Libreoffice su Fedora invece che quella pacchettizzata. Un giorno ci ritornerò come ho fatto con “Gestione TOTP in bash“
#!/bin/bash
#download.documentfoundation.org
usage() {
cat<<EOF
Usa come: ./libreoffice-update.sh [options]
dove:
[options]
-u verifica l esistenza di una nuova versione
-i <numero_version> installa la nuova versione di libreoffice
-h stampa questa pagina di help
ESEMPI:
VERIFICA CHE UN AGGIORNAMENTO SIA DISPONIBILE
libreoffice-update -u
INSTALLA L ULTIMA VERSIONE DI LIBREOFFICE
libreoffice-update -i
VISUALIZZA l HELP
libreoffice-update -h
EOF
}
download_lo_suite() {
echo -n "Inizio download LibreOffice $VERSION... "
[[ $(aria2c https://download.documentfoundation.org/libreoffice/stable/"$VERSION"/rpm/x86_64/LibreOffice_"$VERSION"_Linux_x86-64_rpm.tar.gz | grep ERROR) ]] \
&& { echo "*** Impossibile scaricare LibreOffice $VERSION ***"; ERROR_CODE=64; return ${ERROR_CODE}; } \
|| echo "Fatto."
echo -n "Inizio download LibreOfficeLangack $VERSION... "
[[ $(aria2c https://download.documentfoundation.org/libreoffice/stable/"$VERSION"/rpm/x86_64/LibreOffice_"$VERSION"_Linux_x86-64_rpm_langpack_it.tar.gz | grep ERROR) ]] \
&& { echo "*** Impossibile scaricare LibreOfficelangPack $VERSION ***"; ERROR_CODE=65; return ${ERROR_CODE}; } \
|| echo "Fatto."
echo -n "Inizio download LibreOfficeHelppack $VERSION... "
[[ $(aria2c https://download.documentfoundation.org/libreoffice/stable/"$VERSION"/rpm/x86_64/LibreOffice_"$VERSION"_Linux_x86-64_rpm_helppack_it.tar.gz | grep ERROR) ]] \
&& { echo "*** Impossibile scaricare LibreOfficeHelppack $VERSION ***"; ERROR_CODE=66; return ${ERROR_CODE}; } \
|| echo -e "Fatto.\n"
}
decomprimi_lo_suite() {
echo -n "Decompressione tar LibreOffice $VERSION in corso... "
[[ $(tar -xzf LibreOffice_"$VERSION"_Linux_x86-64_rpm.tar.gz 2>/dev/null) ]] \
&& { echo "*** Impossibile decomprimere il tar di LibreOffice $VERSION ***"; ERROR_CODE=67; return ${ERROR_CODE}; } \
|| echo "Fatto."
echo -n "Decompressione tar LibreOfficeLangpack $VERSION in corso... "
[[ $(tar -xzf LibreOffice_"$VERSION"_Linux_x86-64_rpm_langpack_it.tar.gz 2>/dev/null) ]] \
&& { echo "*** Impossibile decomprimere il tar di LibreOfficeLangpack $VERSION ***"; ERROR_CODE=68; return ${ERROR_CODE}; } \
|| echo "Fatto."
echo -n "Decompressione tar LibreOfficeHelppack $VERSION in corso... "
[[ $(tar -xzf LibreOffice_"$VERSION"_Linux_x86-64_rpm_helppack_it.tar.gz 2>/dev/null) ]] \
&& { echo "*** Impossibile decomprimere il tar di LibreOfficeHelppack $VERSION ***"; ERROR_CODE=69; return ${ERROR_CODE}; } \
|| echo -e "Fatto.\n"
[[ $? -gt 0 ]] && return $?
}
install_lo_suite() {
cd $(tar -tf LibreOffice_"$VERSION"_Linux_x86-64_rpm.tar.gz|head -1) && sudo dnf -y localinstall RPMS/* && cd ..
cd $(tar -tf LibreOffice_"$VERSION"_Linux_x86-64_rpm_langpack_it.tar.gz|head -1) && sudo dnf -y localinstall RPMS/* && cd ..
cd $(tar -tf LibreOffice_"$VERSION"_Linux_x86-64_rpm_helppack_it.tar.gz|head -1) && sudo dnf -y localinstall RPMS/* && cd $HOME
}
is_lo_upgradeable() {
VERSIONE_INSTALLATA=$(dnf info installed|grep -A 2 libreoffice|grep Version|head -n 1|cut -d ":" -f 2|cut -c 2-7)
VERSIONE_ONLINE=$(curl https://it.libreoffice.org/download/download/ 2>/dev/null|grep "version="|head -n 1|cut -d "&" -f 2|cut -d "=" -f 2)
echo "VERSIONE INSTALLATA: $VERSIONE_INSTALLATA"
echo "VERSIONE ONLINE: $VERSIONE_ONLINE"
[[ ${VERSIONE_INSTALLATA} == ${VERSIONE_ONLINE} ]] \
&& echo -e "Nessun aggiornamento disponibile." \
|| echo -e "Una nuova versione è disponibile.\n"
}
cleanup() {
rm -r /tmp/tmp.*
}
remove_old_lo_suite() {
sudo dnf -y remove libreoffice*
}
install() {
VERSION=$1
cd $(mktemp -d)
! download_lo_suite && { cleanup; exit ${ERROR_CODE}; }
! decomprimi_lo_suite && { cleanup; exit ${ERROR_CODE}; }
! remove_old_lo_suite && { cleanup; exit ${ERROR_CODE}; }
install_lo_suite && cleanup || exit ${ERROR_CODE}?
}
noparam() {
clear;
usage
exit 0
}
main() {
while getopts "ui:h" opt; do
case $opt in
u ) is_lo_upgradeable ;;
i ) install $OPTARG ;;
h ) clear;usage; exit;;
* ) clear;echo -e "[ERRORE] Opzione non valida.";usage; exit 1;;
esac
done
shift $(($OPTIND - 1))
}
[[ $# -eq 0 ]] && noparam || main $*