getFirefox 4.6.0

This commit is contained in:
kyodev 2017-12-26 04:12:26 +01:00
parent c2a128591b
commit 5cc96fb935
2 changed files with 136 additions and 121 deletions

View File

@ -11,8 +11,8 @@
> le script peut désinstaller les canaux Firefox souhaités
* les installations/désinstallations doivent être faites avec les privilèges **root**
* les opérations sur l'utilisateur, ou sur la mise à jour du script, peuvent être faites en utilisateur.
* les installations/désinstallations/opérations système doivent être faites avec les privilèges **root**
* la mise à jour du script ou autres opérations légères peuvent être faites en utilisateur.
> le programme Tor Browser est dorénavant pris en charge par [getXfox](https://kyodev.frama.io/kyopages/scripts/getXfox/)
@ -33,9 +33,9 @@ chmod +x getFirefox && ./getFirefox
| (_| | __/ |_| _| | | | | __/ _| (_) > <
\__, |\___|\__|_| |_|_| \___|_| \___/_/\_\
|___/
version 4.0.0 - 22/12/2017
version 4.6.0 - 26/12/2017
getFirefox 4.0.0 installé dans le système.
getFirefox 4.6.0 installé dans le système.
maintenant, appel du script par: getFirefox (sans ./)
```
@ -61,21 +61,21 @@ getFirefox i-canal
| (_| | __/ |_| _| | | | | __/ _| (_) > <
\__, |\___|\__|_| |_|_| \___|_| \___/_/\_\
|___/
version 4.0.0 - 22/12/2017
version 4.6.0 - 26/12/2017
installation Firefox-latest
- téléchargement...
/tmp/getFirefox-install-23584/firefox-nig 100%[===============================>] 57,26M 5,09MB/s in 13s
/tmp/getFirefox-install_ffx/firefox-latest. 100%[=============================>] 53,75M 4,66MB/s in 12s
- décompression...
- installation...
Firefox latest est le canal par défaut du système
Firefox-nightly installé
profil Firefox latest configuré
Firefox latest est le défaut système
Firefox-latest installé
```
@ -119,7 +119,7 @@ getFirefox -h
| (_| | __/ |_| _| | | | | __/ _| (_) > <
\__, |\___|\__|_| |_|_| \___|_| \___/_/\_\
|___/
version 4.0.0 - 22/12/2017
version 4.6.0 - 26/12/2017
----------------------------------------------------------------------
canaux possibles: latest, beta, nightly, dev, esr
@ -127,19 +127,18 @@ getFirefox -h
exemple, installation version Release (latest): getFirefox i-latest
getFirefox i-canal : installation de Firefox <canal> (root)
getFirefox i-canal : installation de <canal> (root)
getFirefox d-canal : copier un profil .default existant sur <canal>
getFirefox m-canal : installation sur le <canal> d'une archive téléchargée manuellement (root)
getFirefox r-canal : désinstallation (remove) de Firefox <canal> (root)
getFirefox s-canal : canal comme défaut du système (update-alternatives & commande firefox) (root)
getFirefox u-canal : ajouter un profil pour l'utilisateur en cours
getFirefox r-canal : désinstallation (remove) du <canal> (root)
getFirefox u-canal : profil pour l'utilisateur en cours et comme défaut système (root)
getFirefox p-canal : personnalisation sur le <canal> de user.js & userChrome.css
getFirefox pr-canal : suppression des personnalisations (remove) sur le <canal>
getFirefox pu : mise à jour des personnalisations (update) installées
getFirefox version : versions installées et en ligne
getFirefox version : versions installées et en ligne
----------------------------------------------------------------------
./getFirefox (ou ./getFirefox -i) : installation du script dans le système (root)
@ -149,6 +148,7 @@ getFirefox -h
getFirefox -v, --version : versions du script
plus d'infos: https://kyodev.frama.io/kyopages/scripts/getFirefox/
Tor Browser, voir getXfox: https://kyodev.frama.io/kyopages/scripts/getXfox/
```
@ -159,24 +159,24 @@ getFirefox -h
getFirefox version
```
```text
_ _____ _ __
_ _____ _ __
__ _ ___| |_| ___(_)_ __ ___ / _| _____ __
/ _' |/ _ \ __| |_ | | '__/ _ \ |_ / _ \ \/ /
| (_| | __/ |_| _| | | | | __/ _| (_) > <
\__, |\___|\__|_| |_|_| \___|_| \___/_/\_\
|___/
version 4.0.0 - 22/12/2017
version 4.6.0 - 26/12/2017
script en place: 4.0.0
script en ligne: 3.16.0
script en place: 4.6.0
script en ligne: 4.6.0
.....++++
Firefox en place: esr : 52.5.2 latest : 56.0.2 beta : 56.0 nightly: 59.0a1
Firefox en ligne: esr : 52.5.2 latest : 57.0.2 beta : 58.0b12 nightly: 59.0a1
Firefox en place: latest: 56.0.2 nightly: 59.0a1
Firefox en ligne: esr: 52.5.2 latest: 57.0.2 beta: 58.0b12 nightly: 59.0a1
perso. Firefox en place : esr: 0.6 latest: 0.6 beta: 0.6 nightly: 0.6
perso. Firefox en ligne : 0.6
perso. Firefox en place: esr: 0.6 latest: 0.6 beta: 0.6 nightly: 0.6
perso. Firefox en ligne: 0.6
```
@ -209,11 +209,13 @@ getFirefox d-canal
getFirefox u-canal
```
* `getFirefox d-all` possible
* `getFirefox d-all` possible (plus haut canal comme défaut système)
* ajoute un profil pour un canal Firefox **installé**
* configure le canal comme navigateur par **défaut** (alternatives, commande firefox, profil Firefox)
* évite de télécharger inutilement une nouvelle fois pour un nouvel utilisateur:
* ajout à l'utilisateur en cours
* ajout pour un autre utilisateur, titi pas exemple: `USER_INSTALL=titi getFirefox u-beta`
* pour ajouter un autre utilisateur, titi par exemple: `USER_INSTALL=titi getFirefox u-beta`, ça devrait
marcher (pas testé)
## personnalisation (installation)
@ -270,8 +272,8 @@ getFirefox r-canal
* `getFirefox p-canal` possible
* le profil pour firefox **n'est pas supprimé**, il sera donc utilisable en cas de réinstallation
* si firefox-canal est ouvert, il sera fermé
* update-alternatives, si supportée, sera configurée sur le plus bas canal installé
* la commande en console `firefox` sera aussi configurée pour le plus bas canal installé
* le navigateur par **défaut** sera configuré sur le plus bas canal encore installé
## installation manuelle d'une archive

View File

@ -1,7 +1,7 @@
#!/bin/bash
version=4.5.0
date="25/12/2017"
version=4.6.0
date="26/12/2017"
projet="simpledeb"
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/"
script="getFirefox"
@ -72,16 +72,16 @@ f__error(){ # 18/12/2017
exit 1
}
# affichage des paramètres en bleu, si $1=raw pas de ligne vide à la fin, si $1=log alors uniquement $2 logué
f__info(){ # 18/12/2017
# affichage en bleu, si $1=raw pas de ligne vide à la fin, si $1=log alors uniquement $2 logué, combiné: $1="log:raw"
f__info(){ # 26/12/2017
local depart=1 i
[[ "$1" == "raw" || "$1" == "log" ]] && depart=2
[ "$1" == "log" ] && f__log "$(sed -E 's/\\t//;s/\\n// ' <<< $2 | xargs )"
[[ "$1" =~ "raw" || "$1" =~ "log" ]] && depart=2
[[ "$1" =~ "log" ]] && f__log "$(sed -E 's/\\t//;s/\\n// ' <<< $2 | xargs )"
for (( i=$depart ; i<=$# ; i++ )); do
echo -e " $BLUE${!i}$STD"
done
[ "$1" == raw ] || echo
[[ "$1" =~ raw ]] || echo
}
# log spécifique, fichier log limité à 10000 octets, $1 message à loguer
@ -268,7 +268,7 @@ EOF
}
# affichage help
f_help(){ # 25/12/2017
f_help(){ # 26/12/2017
local appli="Firefox" ih help=(
" ----------------------------------------------------------------------"
" canaux possibles:$GREEN latest, beta, nightly, dev, esr$STD"
@ -281,8 +281,7 @@ f_help(){ # 25/12/2017
" $BLUE$script d-$STD$GREEN""canal$STD : copier un profil $RED"".d$STD""efault existant sur <canal>"
" $BLUE$script m-$STD$GREEN""canal$STD : installation sur le <canal> d'une archive téléchargée $RED""m$STD""anuellement $RED(root)$STD"
" $BLUE$script r-$STD$GREEN""canal$STD : désinstallation ($RED""r$STD""emove) du <canal> $RED(root)$STD"
" $BLUE$script s-$STD$GREEN""canal$STD : canal comme défaut du $RED""s$STD""ystème (profil défaut, update-alternatives & commande$BLUE firefox$STD) $RED(root)$STD"
" $BLUE$script u-$STD$GREEN""canal$STD : ajouter un profil pour l'$RED""u$STD""tilisateur en cours"
" $BLUE$script u-$STD$GREEN""canal$STD : profil pour l'$RED""u$STD""tilisateur en cours et comme défaut système $RED(root)$STD"
" "
" $BLUE$script p-$STD$GREEN""canal$STD : $RED""p$STD""ersonnalisation sur le <canal> de user.js & userChrome.css"
" $BLUE$script pr-$STD$GREEN""canal$STD : suppression des $RED""p$STD""ersonnalisations ($RED""r$STD""emove) sur le <canal>"
@ -303,7 +302,92 @@ f_help(){ # 25/12/2017
echo -e "$ih"
done
IFS="$IFS_INI"
echo -e "\n$STD plus d'infos: $YELLOW$url_notice\n$STD"
echo -e "\n$STD plus d'infos: $YELLOW$url_notice$STD"
echo -e "$STD Tor Browser, voir getXfox:$YELLOW https://kyodev.frama.io/kyopages/scripts/getXfox/\n$STD"
}
# traitement utilisateur(profiles.ini), $1=canal
ffx_config_profil(){ # 26/12/2017
local nbProfiles canal="$1" appli="Firefox"
if [ ! -d "$dirInstallFfx$canal" ] && [ "$2" == "user" ]; then # pas de répertoire programme
f__info "$appli $canal n'est pas installé"
return 1
fi
if [ ! -d "$dirProfilFfx/$canal" ] ; then # pas de répertoire profil
mkdir -p "$dirProfilFfx/$canal" # répertoire du répertoire profil
chown -R "$fu_user:" "$dirProfilFfx/$canal/" # propriété du répertoire profil à l'user
chmod g-rx,o-rx "$dirProfilFfx/$canal/" # droits répertoire
fi
if [ ! -e "$dirProfilFfx/profiles.ini" ]; then # pas de profile.ini
echo -e "[General]\nStartWithLastProfile=1" > "$dirProfilFfx/profiles.ini"
chown "$fu_user:" "$dirProfilFfx/profiles.ini" # propriété du fichier profile.ini à l'user
chmod u+rw,go+r "$dirProfilFfx/profiles.ini" # permissions du fichier profile.ini à l'user
fi
# inscription canal dans profil.ini, à la fin, si inexistant
if ! grep -q "Name=$canal" "$dirProfilFfx/profiles.ini" ; then
# comptage profils existants
nbProfiles=$( grep -cEs '\[Profile[0-9]+\]' "$dirProfilFfx/profiles.ini" )
# création profil dans profile.ini
echo >> "$dirProfilFfx/profiles.ini"
echo "[Profile$nbProfiles]" >> "$dirProfilFfx/profiles.ini"
echo "Name=$canal" >> "$dirProfilFfx/profiles.ini"
echo "IsRelative=1" >> "$dirProfilFfx/profiles.ini"
echo "Path=$canal" >> "$dirProfilFfx/profiles.ini"
fi
f__info "log:raw" "profil $appli $canal configuré"
}
# traitement système: lien /usr/bin & alternatives, $1 canal
ffx_config_system(){ # 26/12/2017
local canal="$1" appli="Firefox" profileIni="$dirProfilFfx/profiles.ini"
local ligne numero marqueur stockage
if [ "$EUID" -ne 0 ]; then
f__info "vous devez être$RED ROOT$BLUE pour configurer $canal comme défaut dans le système"
f__sudo "exec $0 u-$canal"
return $?
fi
if [ ! -d "$dirInstallFfx$canal" ]; then
f__info "$appli $canal n'est pas installé"
return 1
fi
#lanceurs
ln -sf "/usr/bin/firefox-$canal" "/usr/bin/firefox" # lien "lanceur" sur lanceur réel
# update-alternatives
if type -p "update-alternatives" &>/dev/null ; then # update-alternatives existe?
update-alternatives --quiet --install $( type -p x-www-browser 2>/dev/null ) 'x-www-browser' "/usr/bin/firefox-$canal" 100 # nouvelle alternative
update-alternatives --quiet --install $( type -p gnome-www-browser 2>/dev/null ) 'gnome-www-browser' "/usr/bin/firefox-$canal" 100 # nouvelle alternative
update-alternatives --quiet --set 'x-www-browser' "/usr/bin/firefox-$canal" # si le priorité n'est pas suffisante
update-alternatives --quiet --set 'gnome-www-browser' "/usr/bin/firefox-$canal" # si le priorité n'est pas suffisante
fi
# set default=1 dans profiles.ini
while read ligne ; do
[[ ${ligne} =~ ^\[Profile.*\]$ ]] && numero=${ligne//[\[Profile\]]} # n° profil, peu utile
[[ $ligne == "Name=$canal" ]] && marqueur="ok" # détection canal recherché, marqueur actif
[[ $ligne == "Default=1" ]] && continue # si Default existant, on saute
if [ "$marqueur" == "ok" ]; then # marqueur actif
if [[ ${ligne} =~ ^# || -z "${ligne}" ]]; then # première ligne vide rencontrée
ligne+="Default=1"$'\n' # ajout du Default=1
unset marqueur # effaement marqueur
fi
fi
stockage+="$ligne"$'\n' # stockage des lignes
done < "$profileIni"
stockage=${stockage%[[:cntrl:]]} # suppression dernier saut de ligne superflu
if type -p uniq &>/dev/null ; then # si commande uniq dispo
uniq <<< "$stockage" > "$profileIni" # on élimine doublons adjacents (lignes vides éventuelles)
else
echo "$stockage" > "$profileIni"
fi
f__info "log:raw" "$appli $canal est le défaut système"
}
# copie du répertoire .default dans canal, $1=canal
@ -326,36 +410,6 @@ ffx_copie_default(){ # 22/12/2017
chmod g-rx,o-rx "$dirProfilFfx/$canal/" # droits répertoire
}
# lien /usr/bin & alternatives, $1 canal
ffx_defaut_system(){ # 23/12/2017
local canal="$1" appli="Firefox"
if [ "$EUID" -ne 0 ]; then
f__info "vous devez être$RED ROOT$BLUE pour configurer $canal comme défaut dans le système"
f__sudo "exec $0 s-$canal"
return $?
fi
if [ ! -d "$dirInstallFfx$canal" ]; then
f__info "$appli $canal n'est pas installé"
return 1
fi
if [ ! -d "$dirProfilFfx/$canal" ]; then # mise en place profil si inexistant, équivalent option u-
ffx_profil_user "$canal"
fi
unlink "/usr/bin/firefox" &>/dev/null # lien éventuel
ln -sf "/usr/bin/firefox-$canal" "/usr/bin/firefox"
# update-alternatives
if type -p "update-alternatives" &>/dev/null ; then # update-alternatives existe?
update-alternatives --quiet --install $( type -p x-www-browser 2>/dev/null ) 'x-www-browser' "/usr/bin/firefox-$canal" 100 # nouvelle alternative
update-alternatives --quiet --install $( type -p gnome-www-browser 2>/dev/null ) 'gnome-www-browser' "/usr/bin/firefox-$canal" 100 # nouvelle alternative
update-alternatives --quiet --set 'x-www-browser' "/usr/bin/firefox-$canal" # si le priorité n'est pas suffisante
update-alternatives --quiet --set 'gnome-www-browser' "/usr/bin/firefox-$canal" # si le priorité n'est pas suffisante
fi
f__info "$appli $canal est le canal par défaut du système"
}
# détermination canal bas installé, assigne $ffx_canal_bas
ffx_get_canalBas(){ # 18/12/2017
local ii
@ -448,7 +502,7 @@ EOF
}
# installation, $1 canal [$2='manuel', $3 archive]
ffx_install(){ # 25/12/2017
ffx_install(){ # 26/12/2017
local fileTemp canal="$1" verArchive dirTemp="/tmp/$script-install_ffx" appli="Firefox"
if [ "$EUID" -ne 0 ]; then
@ -500,13 +554,11 @@ ffx_install(){ # 25/12/2017
chmod -R g+wrs,a+r "$dirInstallFfx$canal/"
rm -rf "$dirTemp/"
# finalisation utilisateur
ffx_profil_user "$canal" # profiles.ini, répertoire profil , profil default
# traitement finaux système
ln -sf "$dirInstallFfx$canal/browser/chrome/icons/default/default48.png" "/usr/share/pixmaps/firefox-$canal.png"
ffx_lanceur_desktop "$canal"
# suppression liens lanceurs éventuels
unlink "/usr/bin/firefox-$canal" &>/dev/null # lien éventuel paquet debian
# suppression liens lanceurs éventuels
unlink "/usr/bin/firefox-$canal" &>/dev/null
unlink "/usr/bin/firefox" &>/dev/null
# lanceur dans /usr/bin
echo "#!/bin/sh" > "/usr/bin/firefox-$canal"
@ -514,8 +566,9 @@ ffx_install(){ # 25/12/2017
echo "echo \"\$@\" | grep -qE '\-P|\-\-ProfileManager' && exec $dirInstallFfx$canal/firefox -P || \\" >> "/usr/bin/firefox-$canal"
echo " exec $dirInstallFfx$canal/firefox -P $canal \"\$@\"" >> "/usr/bin/firefox-$canal"
chmod a+x "/usr/bin/firefox-$canal"
# lien /usr/bin & alternatives
ffx_defaut_system "$canal"
ffx_config_profil "$canal" # traitement de profile.ini
ffx_config_system "$canal" # lien /usr/bin, alternatives, default dans le profile
if [ "$2" == "manuel" ]; then
f__info "log" "archive $appli-$canal $verArchive installée"
@ -651,46 +704,8 @@ ffx_pers_upgrade(){ # 21/12/2017
fi
}
# traitement utilisateur, $1=canal, [$2='user' si appel indépendant pour reconfiguration]
ffx_profil_user(){ # 25/12/2017
local nbProfiles canal="$1" appli="Firefox"
if [ ! -d "$dirInstallFfx$canal" ] && [ "$2" == "user" ]; then
f__info "$appli $canal n'est pas installé"
return 1
fi
if [ ! -d "$dirProfilFfx/$canal" ] ; then # création répertoire cible si inexistant
mkdir -p "$dirProfilFfx/$canal" # répertoire du répertoire profil
chown -R "$fu_user:" "$dirProfilFfx/$canal/" # propriété du répertoire profil à l'user
chmod g-rx,o-rx "$dirProfilFfx/$canal/" # droits répertoire
fi
if [ ! -e "$dirProfilFfx/profiles.ini" ]; then # si profile.ini inexistant, on crée profile.ini avec entête minimum
echo -e "[General]\nStartWithLastProfile=1" > "$dirProfilFfx/profiles.ini"
chown "$fu_user:" "$dirProfilFfx/profiles.ini" # propriété du fichier profile.ini à l'user
chmod u+rw,go+r "$dirProfilFfx/profiles.ini" # permissions du fichier profile.ini à l'user
fi
# inscription dans profil.ini, si ProfilX inexistant dans profiles.ini
if ! grep -q "Name=$canal" "$dirProfilFfx/profiles.ini" ; then
# comptage profils existants
nbProfiles=$( grep -cEs '\[Profile[0-9]+\]' "$dirProfilFfx/profiles.ini" )
# création profil dans profile.ini
echo >> "$dirProfilFfx/profiles.ini"
echo "[Profile$nbProfiles]" >> "$dirProfilFfx/profiles.ini"
echo "Name=$canal" >> "$dirProfilFfx/profiles.ini"
echo "IsRelative=1" >> "$dirProfilFfx/profiles.ini"
echo "Path=$canal" >> "$dirProfilFfx/profiles.ini"
fi
# Default=1 au dernier installé, si besoin autre utiliser u-
sed -i '/Default=1/d' "$dirProfilFfx/profiles.ini" # effacement éventuel Default=existant
echo "Default=1" >> "$dirProfilFfx/profiles.ini" # réinscription
echo "$( uniq $dirProfilFfx/profiles.ini )" > "$dirProfilFfx/profiles.ini" # suppression lignes vides en double
[ "$2" == "user" ] && f__info "log" "profil $appli $canal configuré pour $fu_user"
}
# désinstallation, $1=canal
ffx_remove(){ # 25/12/2017
ffx_remove(){ # 26/12/2017
local canal="$1" fileDesktop="/usr/share/applications/firefox-$1.desktop" appli="Firefox"
if [ "$EUID" -ne 0 ]; then
@ -711,11 +726,12 @@ ffx_remove(){ # 25/12/2017
rm -f "/usr/bin/firefox-$canal"
# suppression des liens
unlink "/usr/share/pixmaps/firefox-$canal.png" &>/dev/null
unlink "/usr/bin/firefox" &>/dev/null
#finalisation system
update-alternatives --quiet --remove 'x-www-browser' /usr/bin/firefox-$canal &>/dev/null
update-alternatives --quiet --remove 'gnome-www-browser' /usr/bin/firefox-$canal &>/dev/null
ffx_get_canalBas && ffx_defaut_system "$ffx_canal_bas" # nouveau canal par défaut
# canal bas comme nouveau défaut
ffx_get_canalBas && ffx_config_system "$ffx_canal_bas"
f__info "log" "$appli-$canal désinstallé, mais le profil est toujours en place" \
" le supprimer manuellement si nécessaire, avec un autre caanl, pour cela:" \
@ -1006,15 +1022,12 @@ for j in $options; do
ffx_remove "$k"
done
exit ;;
s-latest | s-esr | s-dev | s-beta | s-nightly )
produit=${j#*-}
ffx_defaut_system "$produit" # défaut système
exit ;;
u-latest | u-esr | u-dev | u-beta | u-nightly | -all )
produit=${j#*-}
[ "$produit" == "all" ] && produit="$produit_all"
for k in $produit; do
ffx_profil_user "$k" "user" # configurer un canal pour user en cours
ffx_config_profil "$k" # configurer un canal pour user en cours
ffx_config_system "$k" # défaut système
done
exit ;;