mirror of https://framagit.org/kyodev/kyopages.git
getXfox 4.14.0
This commit is contained in:
parent
e2bb6b4a34
commit
ff993b3800
116
scripts/getXfox
116
scripts/getXfox
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
version=4.12.0
|
version=4.14.0
|
||||||
date="24/01/2018"
|
date="26/01/2018"
|
||||||
projet="simpledeb"
|
projet="simpledeb"
|
||||||
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/"
|
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/"
|
||||||
script="getXfox"
|
script="getXfox"
|
||||||
|
@ -97,50 +97,58 @@ f__log(){ # 4/12/2017
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# test dépendances/paquets, $1 liste commande[>paquet] (ex: killall>psmisc)
|
# recherche commandes/paquets, $1 liste: cmd1|cmd2[>paquet] (séparées par espaces) ex: "gawk|mawk>gawk wget"
|
||||||
# si manque, return 1 & info commandes manquantes, si debian proposition paquet à installer
|
# si manque, return 1 & affiche commandes manquantes (si debian, ajout proposition paquet à installer)
|
||||||
# si $2=debOnly et si paquets manquants: return 1 et $debOnlyAbsent ( $1=liste paquets )
|
f__requis(){ # 26/01/2018
|
||||||
# si $2=debOnly et si paquets présent: return 0 et $debOnlyPresent ( $1=liste paquets )
|
local ENV_DEBIAN ireq table package commands command commandsMissing packagesMissing
|
||||||
# attention priorité $debOnlyAbsent sur $debOnlyPresent
|
|
||||||
f__requis(){ # 4/12/2017
|
|
||||||
local dependsMissing packagesMissing command package ireq compteur pluriel
|
|
||||||
|
|
||||||
unset debOnlyAbsent debOnlyPresent
|
type -p "dpkg" &>/dev/null && ENV_DEBIAN="oui" # debian
|
||||||
for ireq in $1; do
|
type -t f__info &>/dev/null && c_echo="f__info" || c_echo="echo -e" # f__info existe? sinon echo
|
||||||
command="$(cut -d '>' -f 1 <<< $ireq)"
|
|
||||||
package="$(cut -d '>' -f 2 <<< $ireq)"
|
for ireq in $1; do # pour tous les composants de la liste $1
|
||||||
if [ "$2" == "debOnly" ]; then
|
table=( ${ireq//>/ } ) # séparation sur >, split avec double bashisme, mais évite manip $IFS
|
||||||
if type -p "dpkg" &>/dev/null ; then # package only et debian
|
|
||||||
LC_ALL=C dpkg --get-selections | grep -qE "^$package[[:space:]]+install" \
|
commands=( ${table[0]//|/ } ) # séparation sur |
|
||||||
&& debOnlyPresent+="$package " || debOnlyAbsent+="$package "
|
if [ ${table[1]} ]; then
|
||||||
fi
|
package=${table[1]}
|
||||||
elif ! type -p "$command" &>/dev/null ; then
|
|
||||||
dependsMissing+="$command "
|
|
||||||
packagesMissing+="$package "
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
[ "$debOnlyAbsent" ] && debOnlyAbsent="$(xargs <<< $debOnlyAbsent)" # trim début & fin
|
|
||||||
[ "$debOnlyPresent" ] && debOnlyPresent="$(xargs <<< $debOnlyPresent)" # trim début & fin
|
|
||||||
[ "$debOnlyAbsent" ] && return 1
|
|
||||||
[ "$debOnlyPresent" ] && return 0
|
|
||||||
if [ "$dependsMissing" ]; then
|
|
||||||
compteur="$(wc -w <<< $dependsMissing)"
|
|
||||||
[ "$compteur" -gt "1" ] && pluriel="s" || unset pluriel
|
|
||||||
if [ -e /etc/debian_version ]; then
|
|
||||||
f__info "$RED""erreur critique: $compteur paquet"$pluriel" manquant"$pluriel": $STD$BOLD$dependsMissing" \
|
|
||||||
"\n vous devriez exécuter:$GREEN apt install $packagesMissing"
|
|
||||||
else
|
else
|
||||||
f__info "$RED""erreur critique: $compteur commande"$pluriel" manquante"$pluriel": $STD$BOLD$dependsMissing"
|
package="$commands" # pas de oackages dans les options, donc idem commands[0]
|
||||||
fi
|
fi
|
||||||
return 1
|
|
||||||
|
for command in ${commands[@]}; do # pour toutes les commandes
|
||||||
|
if type -p "$command" &>/dev/null ; then
|
||||||
|
unset commandsMissing packagesMissing
|
||||||
|
break
|
||||||
|
else # inexistant
|
||||||
|
commandsMissing+="$command "
|
||||||
|
packagesMissing+="$package "
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
# dédoublonnage & triage
|
||||||
|
commandsMissing=$( echo $commandsMissing | tr ' ' '\n' | sort --unique | tr '\n' ' ' )
|
||||||
|
packagesMissing=$( echo $packagesMissing | tr ' ' '\n' | sort --unique | tr '\n' ' ' )
|
||||||
|
# suppression éventuel espace final
|
||||||
|
commandsMissing=${commandsMissing% }
|
||||||
|
packagesMissing=${packagesMissing% }
|
||||||
|
# affichage final
|
||||||
|
if [ "$commandsMissing" ] && [ "$ENV_DEBIAN" ]; then
|
||||||
|
$c_echo "$RED""erreur critique, manquant: $STD$BOLD$commandsMissing" \
|
||||||
|
"vous devriez exécuter:$GREEN apt install $packagesMissing"
|
||||||
|
elif [ "$commandsMissing" ]; then
|
||||||
|
$c_echo "$RED""erreur critique, manquant: $STD$BOLD$commandsMissing"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
[ "$commandsMissing" ] && return 1 || return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
# $@=cmd à lancer en root avec su ou sudo. si $@ contient :x: x=nombre de tentatives, sinon 2 tentatives par défaut
|
# $@=cmd à lancer en root avec su ou sudo. si $@ contient :x: x=nombre de tentatives, sinon 2 tentatives par défaut
|
||||||
# si bash inexistant, return 2
|
# si bash inexistant, return 2
|
||||||
f__sudo(){ # 14/01/2018
|
f__sudo(){ # 26/01/2018
|
||||||
local nb sudo isudo toBash options
|
local nb sudo isudo toBash options nbDefault=2
|
||||||
|
|
||||||
|
# détermination sudo possible
|
||||||
type -p bash &>/dev/null && toBash=$( type -p bash ) || return 2
|
type -p bash &>/dev/null && toBash=$( type -p bash ) || return 2
|
||||||
# sudo --shell bash équivalent su ?
|
# sudo --shell bash équivalent su ?
|
||||||
if sudo -v &>/dev/null && [ $EUID -ne 0 ] ; then
|
if sudo -v &>/dev/null && [ $EUID -ne 0 ] ; then
|
||||||
|
@ -148,14 +156,18 @@ f__sudo(){ # 14/01/2018
|
||||||
else
|
else
|
||||||
sudo="su --shell $toBash --preserve-environment -c "
|
sudo="su --shell $toBash --preserve-environment -c "
|
||||||
fi
|
fi
|
||||||
if [[ "$@" =~ :??: ]]; then
|
# extraction nb de tentatives éventuel
|
||||||
|
if [[ "$@" =~ :.{1,2}: ]]; then
|
||||||
nb="$@"
|
nb="$@"
|
||||||
nb=${nb#*:}
|
nb=${nb#*:}
|
||||||
nb=${nb%:*}
|
nb=${nb%:*}
|
||||||
|
options=${@//:$nb:/ }
|
||||||
|
(( ${nb}+1 )) 2>/dev/null || nb="$nbDefault" # test si numérique, sinon,
|
||||||
else
|
else
|
||||||
nb=2
|
nb="$nbDefault"
|
||||||
|
options="$@"
|
||||||
fi
|
fi
|
||||||
options=${@//:$nb:/ }
|
# lancement cmds
|
||||||
for (( isudo=1 ; isudo<="$nb" ; isudo++ )); do
|
for (( isudo=1 ; isudo<="$nb" ; isudo++ )); do
|
||||||
$sudo " $options"
|
$sudo " $options"
|
||||||
[ "$?" == 0 ] && break
|
[ "$?" == 0 ] && break
|
||||||
|
@ -334,7 +346,7 @@ f_tor_get_version(){ # 24/01/2018
|
||||||
}
|
}
|
||||||
|
|
||||||
# installation, [$1='manuel', $2 archive]
|
# installation, [$1='manuel', $2 archive]
|
||||||
f_tor_install(){ # 24/01/2018
|
f_tor_install(){ # 25/01/2018
|
||||||
local fileDesktop="/usr/share/applications/tor-browser.desktop" appli="Tor Browser"
|
local fileDesktop="/usr/share/applications/tor-browser.desktop" appli="Tor Browser"
|
||||||
local verArchive fileTemp archi recup_urlTor dirTemp="/tmp/$script-install_tor"
|
local verArchive fileTemp archi recup_urlTor dirTemp="/tmp/$script-install_tor"
|
||||||
|
|
||||||
|
@ -367,6 +379,7 @@ f_tor_install(){ # 24/01/2018
|
||||||
mv -f "$dirTemp/tor-browser_fr/"* "$dirInstallTor/"
|
mv -f "$dirTemp/tor-browser_fr/"* "$dirInstallTor/"
|
||||||
chown -R "$fu_user:" "$dirInstallTor/"
|
chown -R "$fu_user:" "$dirInstallTor/"
|
||||||
chmod -R g+wrs,a+r "$dirInstallTor/"
|
chmod -R g+wrs,a+r "$dirInstallTor/"
|
||||||
|
# svg éventuelle archive, effacement répertoire temporaire
|
||||||
if [ "$dl_to_svg" == "ok" ]; then
|
if [ "$dl_to_svg" == "ok" ]; then
|
||||||
chown "$fu_user:" "$fileTemp"
|
chown "$fu_user:" "$fileTemp"
|
||||||
mv "$fileTemp" ./
|
mv "$fileTemp" ./
|
||||||
|
@ -620,7 +633,7 @@ f_wfx_get_version(){ # 24/01/2018
|
||||||
}
|
}
|
||||||
|
|
||||||
# installation, [$1='manuel', $2 archive]
|
# installation, [$1='manuel', $2 archive]
|
||||||
f_wfx_install(){ # 24/01/2018
|
f_wfx_install(){ # 25/01/2018
|
||||||
local fileDesktop="/usr/share/applications/waterfox.desktop" verArchive dirTemp fileTemp
|
local fileDesktop="/usr/share/applications/waterfox.desktop" verArchive dirTemp fileTemp
|
||||||
local dirTemp="/tmp/$script-install_wfx" appli="Waterfox"
|
local dirTemp="/tmp/$script-install_wfx" appli="Waterfox"
|
||||||
|
|
||||||
|
@ -657,6 +670,7 @@ f_wfx_install(){ # 24/01/2018
|
||||||
mv -f "$dirTemp/waterfox/"* "$dirInstallWfx/"
|
mv -f "$dirTemp/waterfox/"* "$dirInstallWfx/"
|
||||||
chown -R "$fu_user:" "$dirInstallWfx/"
|
chown -R "$fu_user:" "$dirInstallWfx/"
|
||||||
chmod -R g+wrs,a+r "$dirInstallWfx/"
|
chmod -R g+wrs,a+r "$dirInstallWfx/"
|
||||||
|
# svg éventuelle archive, effacement répertoire temporaire
|
||||||
if [ "$dl_to_svg" == "ok" ]; then
|
if [ "$dl_to_svg" == "ok" ]; then
|
||||||
chown "$fu_user:" "$fileTemp"
|
chown "$fu_user:" "$fileTemp"
|
||||||
mv "$fileTemp" ./
|
mv "$fileTemp" ./
|
||||||
|
@ -838,10 +852,10 @@ f_wfx_remove(){ # 14/01/2018
|
||||||
}
|
}
|
||||||
|
|
||||||
# tache upgrade dans anacron hebdomadaire, via cron horaire, $1=upgrade|install|remove
|
# tache upgrade dans anacron hebdomadaire, via cron horaire, $1=upgrade|install|remove
|
||||||
fscript_cronAnacron(){ # 29/12/2017
|
fscript_cronAnacron(){ # 26/01/2018
|
||||||
local dirAnacron dirSpool fileAnacron
|
local dirAnacron dirSpool fileAnacron
|
||||||
|
|
||||||
[ "$( type -t fscript_cronAnacron_special )" ] && fscript_cronAnacron_special # test, si fonction spécifique, appel
|
type -t fscript_cronAnacron_special &>/dev/null && fscript_cronAnacron_special # test, si fonction spécifique, appel
|
||||||
dirAnacron="/home/$fu_user/.config/anacron"
|
dirAnacron="/home/$fu_user/.config/anacron"
|
||||||
dirSpool="$dirAnacron/spool"
|
dirSpool="$dirAnacron/spool"
|
||||||
fileAnacron="$dirAnacron/$script.anacrontab"
|
fileAnacron="$dirAnacron/$script.anacrontab"
|
||||||
|
@ -896,14 +910,14 @@ fscript_get_version(){ # 24/01/2018
|
||||||
}
|
}
|
||||||
|
|
||||||
# installation du script dans le système
|
# installation du script dans le système
|
||||||
fscript_install(){ # 15/01/2018
|
fscript_install(){ # 26/01/2018
|
||||||
|
|
||||||
if grep -q 'bin' <<< "$( dirname $0 )" ; then
|
if grep -q 'bin' <<< "$( dirname $0 )" ; then
|
||||||
f__info "$RED""l'installation dans le système doit se faire depuis un script local $GREEN(./$script -i )"
|
f__info "$RED""l'installation dans le système doit se faire depuis un script local $GREEN(./$script -i )"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ "$( type -t fscript_install_special )" ] && fscript_install_special # test, si fonction spécifique, appel
|
type -t fscript_install_special &>/dev/null && fscript_install_special # test, si fonction spécifique, appel
|
||||||
f__requis "wget anacron cron" || exit 1
|
f__requis "wget anacron cron" || exit 1
|
||||||
# install /opt
|
# install /opt
|
||||||
mkdir -p /opt/bin/
|
mkdir -p /opt/bin/
|
||||||
|
@ -922,7 +936,7 @@ fscript_install(){ # 15/01/2018
|
||||||
}
|
}
|
||||||
|
|
||||||
# suppression du script dans le système
|
# suppression du script dans le système
|
||||||
fscript_remove(){ # 15/01/2018
|
fscript_remove(){ # 26/01/2018
|
||||||
|
|
||||||
if ! grep -q 'bin' <<< "$( dirname $0 )" ; then
|
if ! grep -q 'bin' <<< "$( dirname $0 )" ; then
|
||||||
f__info "$RED""cette fonction doit être appelée depuis le script installé dans le système $GREEN($script -r)"
|
f__info "$RED""cette fonction doit être appelée depuis le script installé dans le système $GREEN($script -r)"
|
||||||
|
@ -933,7 +947,7 @@ fscript_remove(){ # 15/01/2018
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ "$( type -t fscript_remove_special )" ] && fscript_remove_special # test, si fonction spécifique, appel
|
type -t fscript_remove_special &>/dev/null && fscript_remove_special # test, si fonction spécifique, appel
|
||||||
# suppression de /opt lien /usr/bin
|
# suppression de /opt lien /usr/bin
|
||||||
rm -f "$script_install"
|
rm -f "$script_install"
|
||||||
unlink "/usr/bin/$script" &>/dev/null
|
unlink "/usr/bin/$script" &>/dev/null
|
||||||
|
@ -944,10 +958,10 @@ fscript_remove(){ # 15/01/2018
|
||||||
}
|
}
|
||||||
|
|
||||||
# mise à jour script, [$1 != "" si upgrade en place, $1 dans message info]
|
# mise à jour script, [$1 != "" si upgrade en place, $1 dans message info]
|
||||||
fscript_update(){ # 24/01/2018
|
fscript_update(){ # 26/01/2018
|
||||||
local dirTemp="/tmp/$script-maj" upgradeEnPlace="$1"
|
local dirTemp="/tmp/$script-maj" upgradeEnPlace="$1"
|
||||||
|
|
||||||
[ "$(type -t fscript_update_special)" ] && fscript_update_special # test, si fonction spécifique, appel
|
type -t fscript_update_special &>/dev/null && fscript_update_special # test, si fonction spécifique, appel
|
||||||
if [ -z "$upgradeEnPlace" ] && ! grep -q 'bin' <<< "$( dirname $0 )" ; then
|
if [ -z "$upgradeEnPlace" ] && ! grep -q 'bin' <<< "$( dirname $0 )" ; then
|
||||||
f__info "$RED""cette fonction doit être appelée depuis le script installé dans le système $GREEN($script -u)"
|
f__info "$RED""cette fonction doit être appelée depuis le script installé dans le système $GREEN($script -u)"
|
||||||
return 1
|
return 1
|
||||||
|
@ -977,7 +991,7 @@ fscript_update(){ # 24/01/2018
|
||||||
rm -rf "$dirTemp/"
|
rm -rf "$dirTemp/"
|
||||||
}
|
}
|
||||||
|
|
||||||
prg_init(){ # 22/12/2017
|
prg_init(){ # 24/01/2018
|
||||||
|
|
||||||
PATH='/usr/sbin:/usr/bin:/sbin:/bin'
|
PATH='/usr/sbin:/usr/bin:/sbin:/bin'
|
||||||
TERM=xterm
|
TERM=xterm
|
||||||
|
|
|
@ -3,13 +3,19 @@
|
||||||
*todo
|
*todo
|
||||||
* Default dans profiles.ini à implanter pour le futur?
|
* Default dans profiles.ini à implanter pour le futur?
|
||||||
|
|
||||||
## getXfox 4.12.0 - 24/01/2018
|
## getXfox 4.14.0 26/01/2018
|
||||||
|
|
||||||
|
* révision: mineur, fscript_cronAnacron fscript_install fscript_remove fscript_update
|
||||||
|
* révision: f__requis
|
||||||
|
* fix: f__sudo, extraction nb tentatives
|
||||||
|
|
||||||
|
## getXfox 4.12.0 24/01/2018
|
||||||
|
|
||||||
* révision: f_help, f_affichage
|
* révision: f_help, f_affichage
|
||||||
* révision: f_tor_install, f_wfx_install
|
* révision: f_tor_install, f_wfx_install
|
||||||
* révision: général wget_log: fscript_get_version, fscript_update
|
* révision: général wget_log: fscript_get_version, fscript_update
|
||||||
|
|
||||||
## getXfox 4.11.0 - 16/01/2018
|
## getXfox 4.11.0 16/01/2018
|
||||||
|
|
||||||
* nouveau: cumul options (opérations) possibles (sauf opés scripts)
|
* nouveau: cumul options (opérations) possibles (sauf opés scripts)
|
||||||
* nouveau: option --sauve pour conserver le téléchargement à l'installation
|
* nouveau: option --sauve pour conserver le téléchargement à l'installation
|
||||||
|
@ -22,19 +28,19 @@
|
||||||
* révision: auto-installation, potentiel bug selon conditions appel
|
* révision: auto-installation, potentiel bug selon conditions appel
|
||||||
* fix: test gnome-www-browser avant installation (erreur kde)
|
* fix: test gnome-www-browser avant installation (erreur kde)
|
||||||
|
|
||||||
## getXfox 4.10.0 - 12/01/2018
|
## getXfox 4.10.0 12/01/2018
|
||||||
|
|
||||||
* fix: correction commentaire fscript_get_version
|
* fix: correction commentaire fscript_get_version
|
||||||
|
|
||||||
## getXfox 4.9.0 - 29/12/2017
|
## getXfox 4.9.0 29/12/2017
|
||||||
|
|
||||||
* syncro composants
|
* syncro composants
|
||||||
|
|
||||||
## getXfox 4.8.0 - 27/12/2017
|
## getXfox 4.8.0 27/12/2017
|
||||||
|
|
||||||
* suivi getFirefox
|
* suivi getFirefox
|
||||||
|
|
||||||
## getXfox 4.7.0 - 26/12/2017
|
## getXfox 4.7.0 26/12/2017
|
||||||
|
|
||||||
révision: f__info, option combinée raw:log
|
révision: f__info, option combinée raw:log
|
||||||
révision: f_help
|
révision: f_help
|
||||||
|
@ -43,20 +49,20 @@ révision: f_wfx_install, lanceur /usr/bin
|
||||||
révision; f_wfx_lanceur_desktop, chemins icone alternatifs
|
révision; f_wfx_lanceur_desktop, chemins icone alternatifs
|
||||||
fix: f_wfx_remove, oubli suppression lien dans /usr/bin
|
fix: f_wfx_remove, oubli suppression lien dans /usr/bin
|
||||||
|
|
||||||
## getXfox 4.5.0 - 25/12/2017
|
## getXfox 4.5.0 25/12/2017
|
||||||
|
|
||||||
* cosmétique
|
* cosmétique
|
||||||
* révision: tor_install, wfx_install, wfx_profil_user
|
* révision: tor_install, wfx_install, wfx_profil_user
|
||||||
* révision: général, plus de variables composées avec variable dans local
|
* révision: général, plus de variables composées avec variable dans local
|
||||||
|
|
||||||
|
|
||||||
## getXfox 4.3.0 - 24/12/2017
|
## getXfox 4.3.0 24/12/2017
|
||||||
|
|
||||||
* cosmétique
|
* cosmétique
|
||||||
* fix: f__wget_test, incompatible avec redirection logs
|
* fix: f__wget_test, incompatible avec redirection logs
|
||||||
* fix: typo fscript_update
|
* fix: typo fscript_update
|
||||||
|
|
||||||
## getXfox 4.1.0 - 23/12/2017
|
## getXfox 4.1.0 23/12/2017
|
||||||
|
|
||||||
* base getFirefox v4.1.0
|
* base getFirefox v4.1.0
|
||||||
* prise en charge waterfox et tor browser
|
* prise en charge waterfox et tor browser
|
||||||
|
|
Loading…
Reference in New Issue