mirror of https://framagit.org/kyodev/kyopages.git
2.0.6
This commit is contained in:
parent
7e769247a3
commit
651c081b62
|
@ -8,6 +8,7 @@ script="getFirefox"
|
|||
urlScript="https://framagit.org/kyodev/kyopages/raw/master/scripts/getFirefox"
|
||||
urlNotice="https://kyodev.frama.io/kyopages/scripts/getFirefox/"
|
||||
user_agent="Mozilla/5.0 Firefox"
|
||||
lognameDev="kyodev"
|
||||
|
||||
##### license LPRAB/WTFPL
|
||||
# auteur: simpledeb
|
||||
|
@ -90,7 +91,7 @@ f__log(){ # v08/2017
|
|||
}
|
||||
|
||||
# test dépendances/paquets, $1 liste commande[>paquet] (ex: killall>psmisc)
|
||||
# si manque, info commandes manquantes, si debian, proposition paquet à installer et SORTIE
|
||||
# si manque, SORTIE & info commandes manquantes, si debian, SORTIE & proposition paquet à installer
|
||||
# si $2=debOnly et si paquets manquants: return 1 et $debOnlyPackages ( $1=liste paquets )
|
||||
# si $2=debOnly et si paquets présent: return 0 et $debOnlyPresents ( $1=liste paquets )
|
||||
# attention priorité $debOnlyPackages sur $debOnlyPresents
|
||||
|
@ -155,19 +156,20 @@ f__wget_test(){ # v07/2017
|
|||
}
|
||||
|
||||
# inscription dans tache upgrade en anacron hebdomadaire, via cron horaire
|
||||
fscript_cronAnacron(){ # v17/08/2017
|
||||
fscript_cronAnacron(){ # v18/08/2017-2
|
||||
rm "/home/$user_/.mozilla/$script.anacrontab" &>/dev/null # ancienne localisation éventuelle, spécifique getFirefox
|
||||
rm "/home/$user_/.config/anacron/spool/getFF"* &>/dev/null # ancien job, spécifique getFirefox
|
||||
local dirAnacron="/home/$user_/.config/anacron"
|
||||
local dirSpool="$dirAnacron/spool"
|
||||
local fileAnacron="$dirAnacron/$script.anacrontab"
|
||||
sed -i "/$script.anacrontab/d" /etc/crontab
|
||||
[ $EUID -eq 0 ] && sed -i "/$script.anacrontab/d" /etc/crontab
|
||||
case "$1" in
|
||||
install | upgrade )
|
||||
mkdir -p "$dirAnacron"
|
||||
# table anacron
|
||||
echo "7 01 $script nice /opt/bin/$script --upgrade" > "$fileAnacron"
|
||||
## test: anacron journalier: echo "1 01 $script test nice /opt/bin/$script --upgrade" >> "$fileAnacron"
|
||||
## dev: anacron journalier:
|
||||
[ "$user_" == "$lognameDev" ] && echo "1 01 $script""Dev nice /opt/bin/$script --upgrade 1>/dev/null" >> "$fileAnacron"
|
||||
# création spool anacron utilisateur
|
||||
mkdir -p "$dirSpool"
|
||||
chown -R "$user_": "$dirAnacron" "$dirSpool"
|
||||
|
@ -189,11 +191,11 @@ fscript_cronAnacron(){ # v17/08/2017
|
|||
}
|
||||
|
||||
# mise à jour script si dispo
|
||||
fscript_dl(){ # v17/08/2017
|
||||
fscript_dl(){ # v18/08/2017
|
||||
f__requis "wget"
|
||||
if [ "$script_aJour" == "ok" ]; then return 0; fi
|
||||
local dirTemp="/tmp/$script-$RANDOM/"
|
||||
mkdir -p "$dirTemp"
|
||||
opType="upgrade"
|
||||
wget -q --show-progress --tries=2 --timeout=15 -O "$dirTemp$script" "$urlScript"
|
||||
if [ "$?" != "0" ]; then f__wget_test "$urlScript"; fi
|
||||
chmod 755 "$dirTemp$script"
|
||||
|
@ -207,7 +209,8 @@ fscript_dl(){ # v17/08/2017
|
|||
}
|
||||
|
||||
# version script en ligne, assigne $versionScript, $script_aJour=ok|ko
|
||||
fscript_get_version(){ # v08/2017
|
||||
fscript_get_version(){ # v18/08/2017
|
||||
f__requis "wget"
|
||||
versionScript="$(wget -q --tries=2 --timeout=15 -O - "$urlScript" | grep '^version=' | cut -d '=' -f 2)"
|
||||
if [ "$versionScript" ]; then
|
||||
if [ "$version" != "$versionScript" ]; then
|
||||
|
@ -221,14 +224,13 @@ fscript_get_version(){ # v08/2017
|
|||
}
|
||||
|
||||
# installation du script dans le système
|
||||
fscript_install(){ # v08/2017
|
||||
[ -e "/var/log/sdeb_getFF.log" ] && mv "/var/log/sdeb_getFF.log" "$fileLogs" # changement ancien logs
|
||||
if f__requis "firefox-esr firefox" "debOnly" && [ "$debOnlyPresents" ]; then
|
||||
f__info "paquet(s) installé(s) $debOnlyPresents" \
|
||||
"\n à moins d'être certain, vous devriez peut-être le désinstaller:$RED apt remove firefox* $COLOR" \
|
||||
"\n Sur Gnome, attention, consulter:$GREEN https://kyodev.frama.io/kyopages/scripts/getFirefox/#gnome $COLOR"
|
||||
fscript_install(){ # v18/08/2017
|
||||
if dirname "$0" | grep -q 'bin' ; then
|
||||
f__info "$script $version est déjà installé"
|
||||
return 1
|
||||
fi
|
||||
[ $EUID -eq 0 ] || f__error "vous devez être ROOT pour installer ce script dans le système"
|
||||
f__requis "wget anacron cron"
|
||||
# install /opt
|
||||
mkdir -p /opt/bin/
|
||||
cp -d "$(basename $0)" "/opt/bin/$script"
|
||||
|
@ -259,6 +261,43 @@ fscript_remove(){ # v08/2017
|
|||
f__log "$script $version supprimé du système"
|
||||
}
|
||||
|
||||
# détermination canal bas Firefox installé, assigne $firefoxCanalBas
|
||||
ffx_get_canalBas(){
|
||||
for ii in nightly dev beta esr latest; do
|
||||
if [ -d "$dirInstall$ii/" ]; then firefoxCanalBas="$ii"; fi
|
||||
done
|
||||
[ "$firefoxCanalBas" ] || return 1
|
||||
}
|
||||
|
||||
# version Firefox en ligne
|
||||
ffx_get_versionsFF(){
|
||||
printf "."
|
||||
local fileTmp="/tmp/getFirefox-wgetVer-$RANDOM"
|
||||
local recup_url="https://www.mozilla.org/en-US/firefox/notes/"
|
||||
wget -q --tries=2 --timeout=15 --user-agent=$user_agent -O - "$recup_url" &>"$fileTmp"
|
||||
local verLatest="$(grep -Eo 'data-latest-firefox="[0-9\.]+"' $fileTmp | grep -Eo '[0-9\.]+')"
|
||||
local verEsr="$(grep -Eo 'data-esr-versions="[0-9\.]+"' $fileTmp | grep -Eo '[0-9\.]+')"
|
||||
printf "."
|
||||
local recup_url="https://download.mozilla.org/?product=firefox-beta-latest&os=linux64&lang=fr"
|
||||
wget -Sq --tries=1 --timeout=10 --user-agent="$user_agent" --spider --save-headers "$recup_url" &>"$fileTmp"
|
||||
local verBeta="$(grep -i 'location' $fileTmp | sed -E 's/.*firefox-(.*)\.tar.bz2/\1/')"
|
||||
printf "."
|
||||
local recup_url="https://download.mozilla.org/?product=firefox-nightly-latest-l10n-ssl&os=linux64&lang=fr"
|
||||
wget -Sq --tries=1 --timeout=10 --user-agent="$user_agent" --spider --save-headers "$recup_url" &>"$fileTmp"
|
||||
local verNightly="$(grep -i 'location' $fileTmp | sed -E 's/.*firefox-(.*)\.fr.linux.*/\1/')"
|
||||
printf "."
|
||||
rm "$fileTmp"
|
||||
for prod in latest esr beta dev nightly; do
|
||||
if [ -x "$dirInstall$prod/firefox" ]; then
|
||||
printf "."
|
||||
versionInstall+="\n $prod: $($dirInstall$prod/firefox -v | grep -Eo '[0-9].*')"
|
||||
fi
|
||||
done
|
||||
printf ".\n"
|
||||
f__info "Firefox installé(s): $versionInstall"
|
||||
f__info "version Firefox en ligne:\n Release : $verLatest\n Beta/dev: $verBeta\n Nightly : $verNightly\n ESR : $verEsr"
|
||||
}
|
||||
|
||||
# ascii art godzilla; ligne vide finale
|
||||
ffx_godzilla(){
|
||||
printf "$RED"
|
||||
|
@ -309,33 +348,45 @@ EOF
|
|||
echo -e " plus d'infos:$GREEN https://framagit.org/kyodev/kyopages/raw/master/scripts/getFirefox$COLOR\n"
|
||||
}
|
||||
|
||||
# version Firefox en ligne
|
||||
ffx_get_versionsFF(){
|
||||
printf "."
|
||||
local fileTmp="/tmp/getFirefox-wgetVer-$RANDOM"
|
||||
local recup_url="https://www.mozilla.org/en-US/firefox/notes/"
|
||||
wget -q --tries=2 --timeout=15 --user-agent=$user_agent -O - "$recup_url" &>"$fileTmp"
|
||||
local verLatest="$(grep -Eo 'data-latest-firefox="[0-9\.]+"' $fileTmp | grep -Eo '[0-9\.]+')"
|
||||
local verEsr="$(grep -Eo 'data-esr-versions="[0-9\.]+"' $fileTmp | grep -Eo '[0-9\.]+')"
|
||||
printf "."
|
||||
local recup_url="https://download.mozilla.org/?product=firefox-beta-latest&os=linux64&lang=fr"
|
||||
wget -Sq --tries=1 --timeout=10 --user-agent="$user_agent" --spider --save-headers "$recup_url" &>"$fileTmp"
|
||||
local verBeta="$(grep -i 'location' $fileTmp | sed -E 's/.*firefox-(.*)\.tar.bz2/\1/')"
|
||||
printf "."
|
||||
local recup_url="https://download.mozilla.org/?product=firefox-nightly-latest-l10n-ssl&os=linux64&lang=fr"
|
||||
wget -Sq --tries=1 --timeout=10 --user-agent="$user_agent" --spider --save-headers "$recup_url" &>"$fileTmp"
|
||||
local verNightly="$(grep -i 'location' $fileTmp | sed -E 's/.*firefox-(.*)\.fr.linux.*/\1/')"
|
||||
printf "."
|
||||
rm "$fileTmp"
|
||||
for prod in latest esr beta dev nightly; do
|
||||
if [ -x "$dirInstall$prod/firefox" ]; then
|
||||
printf "."
|
||||
versionInstall+="\n $prod: $($dirInstall$prod/firefox -v | grep -Eo '[0-9].*')"
|
||||
fi
|
||||
done
|
||||
printf ".\n"
|
||||
f__info "Firefox installé(s): $versionInstall"
|
||||
f__info "version Firefox en ligne:\n Release : $verLatest\n Beta/dev: $verBeta\n Nightly : $verNightly\n ESR : $verEsr"
|
||||
# installation Firefox
|
||||
ffx_install(){
|
||||
[ $EUID -eq 0 ] || f__error "vous devez être ROOT pour installer Firefox"
|
||||
f__info " - installation Firefox-$produit"
|
||||
local dirTemp="/tmp/$script-$RANDOM/"
|
||||
local file="firefox-$produit.$architecture.tar.bz2"
|
||||
mkdir -p "$dirTemp" # dossier temporaire de travail
|
||||
# téléchargement & test archive
|
||||
f__info " - téléchargement..."
|
||||
ffx_recup_url
|
||||
wget -q -c --show-progress --tries=2 --timeout=15 --user-agent="$user_agent" -O "$dirTemp$file" "$recup_url"
|
||||
if [ "$?" != "0" ]; then f__wget_test "$recup_url"; fi
|
||||
f__archive_test "$dirTemp$file" || f__error "Le fichier $dirTemp$file n'est pas une archive tar.gz valide"
|
||||
# décompression
|
||||
f__info "\n - décompression..."
|
||||
tar -xaf "$dirTemp$file" -C "$dirTemp"
|
||||
# mise en place finale
|
||||
f__info " - installation..."
|
||||
rm -rf "/opt/firefox-$produit/" # effacement ancien répertoire éventuel
|
||||
rm -rf "$dirInstall$produit"/ # effacement éventuel répertoire existant: "vraie" install
|
||||
mkdir -p "$dirInstall$produit"/
|
||||
mv -f "$dirTemp"firefox/* "$dirInstall$produit"/
|
||||
chown -R "$user_": "$dirInstall$produit"/
|
||||
chmod -R g+wrs,a+r "$dirInstall$produit"/
|
||||
rm -rf "$dirTemp"
|
||||
# lien icône Firefox
|
||||
ln -sf "$dirInstall$produit/browser/chrome/icons/default/default48.png" "/usr/share/pixmaps/firefox-$produit.png"
|
||||
# lanceur dans /usr/bin
|
||||
echo '#!/bin/sh' > "/usr/bin/firefox-$produit"
|
||||
echo >> "/usr/bin/firefox-$produit"
|
||||
echo 'echo "$@"'" | grep -qE '\-P|\-\-ProfileManager' && exec $dirInstall$produit/firefox -P || \\" >> "/usr/bin/firefox-$produit"
|
||||
echo " exec $dirInstall$produit/firefox -P $produit "'$@' >> "/usr/bin/firefox-$produit"
|
||||
chmod a+x "/usr/bin/firefox-$produit"
|
||||
ffx_usr_bin
|
||||
# traitement user
|
||||
ffx_profil_user
|
||||
f__info "$GREEN""Firefox-$produit installé."
|
||||
f__log "Firefox-$produit installé"
|
||||
ffx_godzilla
|
||||
}
|
||||
|
||||
# création lanceur.desktop
|
||||
|
@ -381,35 +432,6 @@ ffx_profilIni_inscription(){
|
|||
else echo "" >> "$fileProfileIni"; fi
|
||||
}
|
||||
|
||||
# détermination canal bas Firefox installé, assigne $firefoxCanalBas
|
||||
ffx_get_canalBas(){
|
||||
for ii in nightly dev beta esr latest; do
|
||||
if [ -d "$dirInstall$ii/" ]; then firefoxCanalBas="$ii"; fi
|
||||
done
|
||||
[ "$firefoxCanalBas" ] || return 1
|
||||
}
|
||||
|
||||
# traitement update-alternatives
|
||||
ffx_update_alternatives(){
|
||||
[ "$(which update-alternatives)" ] || return 0 # update-alternatives n'est pas sur cette distrib
|
||||
if ffx_get_canalBas ; then
|
||||
update-alternatives --quiet --install /usr/bin/firefox x-www-browser "/usr/bin/firefox-$firefoxCanalBas" 100
|
||||
f__info " - alternatives installées pour <$firefoxCanalBas>"
|
||||
else # plus aucun canal installé, on efface
|
||||
if update-alternatives --get-selections | grep firefox | grep -q x-www-browser; then
|
||||
update-alternatives --quiet --remove-all x-www-browser
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# lien /usr/bin/firefox pour le plus bas canal Firefox installé, utile si update-alternatives pas fonctionnel
|
||||
ffx_usr_bin(){
|
||||
if ffx_get_canalBas ; then
|
||||
ln -sf "/usr/bin/firefox-$firefoxCanalBas" "/usr/bin/firefox"
|
||||
f__info " - firefox lié à firefox-$firefoxCanalBas"
|
||||
fi
|
||||
}
|
||||
|
||||
# traitement utilisateur, $1 user si appel indépendant pour reconfiguration
|
||||
ffx_profil_user(){
|
||||
if [ "$1" == "user" ] && [ ! -x "/usr/bin/firefox-$produit" ]; then
|
||||
|
@ -457,47 +479,6 @@ ffx_recup_url(){
|
|||
recup_url="https://download.mozilla.org/?product=firefox-$produit-latest-l10n-ssl&os=$architecture&lang=fr" ;fi
|
||||
}
|
||||
|
||||
# installation Firefox
|
||||
ffx_install(){
|
||||
[ $EUID -eq 0 ] || f__error "vous devez être ROOT pour installer Firefox"
|
||||
f__info " - installation Firefox-$produit"
|
||||
local dirTemp="/tmp/$script-$RANDOM/"
|
||||
local file="firefox-$produit.$architecture.tar.bz2"
|
||||
mkdir -p "$dirTemp" # dossier temporaire de travail
|
||||
# téléchargement & test archive
|
||||
f__info " - téléchargement..."
|
||||
ffx_recup_url
|
||||
wget -q -c --show-progress --tries=2 --timeout=15 --user-agent="$user_agent" -O "$dirTemp$file" "$recup_url"
|
||||
if [ "$?" != "0" ]; then f__wget_test "$recup_url"; fi
|
||||
f__archive_test "$dirTemp$file" || f__error "Le fichier $dirTemp$file n'est pas une archive tar.gz valide"
|
||||
# décompression
|
||||
f__info "\n - décompression..."
|
||||
tar -xaf "$dirTemp$file" -C "$dirTemp"
|
||||
# mise en place finale
|
||||
f__info " - installation..."
|
||||
rm -rf "/opt/firefox-$produit/" # effacement ancien répertoire éventuel
|
||||
rm -rf "$dirInstall$produit"/ # effacement éventuel répertoire existant: "vraie" install
|
||||
mkdir -p "$dirInstall$produit"/
|
||||
mv -f "$dirTemp"firefox/* "$dirInstall$produit"/
|
||||
chown -R "$user_": "$dirInstall$produit"/
|
||||
chmod -R g+wrs,a+r "$dirInstall$produit"/
|
||||
rm -rf "$dirTemp"
|
||||
# lien icône Firefox
|
||||
ln -sf "$dirInstall$produit/browser/chrome/icons/default/default48.png" "/usr/share/pixmaps/firefox-$produit.png"
|
||||
# lanceur dans /usr/bin
|
||||
echo '#!/bin/sh' > "/usr/bin/firefox-$produit"
|
||||
echo >> "/usr/bin/firefox-$produit"
|
||||
echo 'echo "$@"'" | grep -qE '\-P|\-\-ProfileManager' && exec $dirInstall$produit/firefox -P || \\" >> "/usr/bin/firefox-$produit"
|
||||
echo " exec $dirInstall$produit/firefox -P $produit "'$@' >> "/usr/bin/firefox-$produit"
|
||||
chmod a+x "/usr/bin/firefox-$produit"
|
||||
ffx_usr_bin
|
||||
# traitement user
|
||||
ffx_profil_user
|
||||
f__info "$GREEN""Firefox-$produit installé."
|
||||
f__log "Firefox-$produit installé"
|
||||
ffx_godzilla
|
||||
}
|
||||
|
||||
# désinstallation de Firefox, on laisse le profil user
|
||||
ffx_remove(){
|
||||
[ $EUID -eq 0 ] || f__error "vous devez être ROOT pour désinstaller firefox"
|
||||
|
@ -525,12 +506,33 @@ ffx_remove(){
|
|||
ffx_godzilla
|
||||
}
|
||||
|
||||
# traitement update-alternatives
|
||||
ffx_update_alternatives(){
|
||||
[ "$(which update-alternatives)" ] || return 0 # update-alternatives n'est pas sur cette distrib
|
||||
if ffx_get_canalBas ; then
|
||||
update-alternatives --quiet --install /usr/bin/firefox x-www-browser "/usr/bin/firefox-$firefoxCanalBas" 100
|
||||
f__info " - alternatives installées pour <$firefoxCanalBas>"
|
||||
else # plus aucun canal installé, on efface
|
||||
if update-alternatives --get-selections | grep firefox | grep -q x-www-browser; then
|
||||
update-alternatives --quiet --remove-all x-www-browser
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# lien /usr/bin/firefox pour le plus bas canal Firefox installé, utile si update-alternatives pas fonctionnel
|
||||
ffx_usr_bin(){
|
||||
if ffx_get_canalBas ; then
|
||||
ln -sf "/usr/bin/firefox-$firefoxCanalBas" "/usr/bin/firefox"
|
||||
f__info " - firefox lié à firefox-$firefoxCanalBas"
|
||||
fi
|
||||
}
|
||||
|
||||
# initialisation
|
||||
PATH='/usr/sbin:/usr/bin:/sbin:/bin' ; IFS=' '
|
||||
f__affichage
|
||||
f__architecture || f__error "Seules les architecture 32 et 64 bits sont supportée (i686 & amd64) par Firefox"
|
||||
f__user || f__error "échec détection user"
|
||||
f__requis "wget file tar killall>psmisc anacron cron" #syntaxe command>package, /!\ sortie sur erreur
|
||||
f__requis "file tar killall>psmisc" # pour fonctionnement programme
|
||||
|
||||
fileLogs="/var/log/sdeb_$script.log"
|
||||
dirInstall="/opt/usr/share/firefox-"
|
||||
|
@ -582,6 +584,7 @@ for i in "$options"; do
|
|||
fscript_remove
|
||||
;;
|
||||
-u | --upgrade | upgrade ) # upgrade script
|
||||
opType="upgrade"
|
||||
fscript_get_version
|
||||
fscript_dl
|
||||
;;
|
||||
|
|
|
@ -8,6 +8,12 @@
|
|||
* user.pref (autoplay, ...)
|
||||
* peaufiner contexte upgrade lors cron (affichage, requis, user)
|
||||
|
||||
## 2.0.6 18/08/2017
|
||||
|
||||
* maj fscript_cronAnacron lors upgrade et spécial pour dev
|
||||
* maj fscript_get_version, fscript_dl, fscript_install
|
||||
* vérification requis pour fonctionnement script
|
||||
|
||||
## 2.0.5 17/08/2017
|
||||
|
||||
* test inscription crontab pour recherche bug siduction
|
||||
|
|
Loading…
Reference in New Issue