install-debian/post_install_sid.sh

896 lines
30 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
################################################################################################
##
## Nom: new_post_install.sh
##
## Version: 0.3.0
##
## Licence: Creative Commons
##
## Comportement: Script de post-installation pour une distribution Debian GNU/Linux Sid
## Les variables en miniscules sont les variables issues de mon template de script shell
## Pour les variables spécifiques à un script, je les met en MAJUSCULES
##
##
################################################################################################
##
## Date de création: 15-02-2012
##
## Auteur: Gardouille
##
## Dépendances: Je me base sur un ensemble de fichiers seed situés dans un répertoires seed/ pour pré-configurer quelques logiciels:
## backuppc.seed
## cups.seed
## ddclient.seed
## hddtemp.seed
## keyboard.seed
## locales.seed
## rcs.seed
## restart_no_asking.seed
## samba.seed
## sun-java6-jre.seed
## x11-common.seed
##
## Dernière modifications:
## 2014-12-08 -
## - Ajout de mat
## 2012-09-06
## - Ajout du paquet dnsutils
## 2012-05-01 - 0.5.01
## - Remplacement de firmware-brcm80211 au profit de broadcom-sta-dkms
## 2012-04-23 - 0.4.23
## - Remplacement de comix par son fork mcomix (comix a été abandonné)
## 2012-04-11 - 0.4.11
## - Ajout du paquet mumble
## 2012-04-04 - 0.4.4:
## - Ajout du paquet alsa-utils
# **********************************************************************************************
## À Modifier:
## - Supprimer apt-listbugs (commenter /etc/apt/apt.conf.d/10apt-listbugs)?
## - Ajouter un warning si pas de dossier seed dans le répertoire d'install ?
################################################################################################
## Vérification que le script est bien lancé en root
if [ "${USER}" = "root" ]; then
echo "Lancement du script"
else
echo "/!\\ Le script nécessite d'être root /!\\"
exit 1
fi
# **********************************************************************************************
#
# Variables globales
#
# -----------------------------------------------------------
script_path=$(dirname $0)
## Choix du mode d'exécution du script: (cf fonction def_debug)
## Niveau 0
# Exécution automatique avec normalement aucune interaction avec l'utilisateur et peu de log
## Niveau 1 et 2
# Exécution automatique avec un peu plus d'information dans les logs
## Niveau 3
# Exécution manuelle avec tous les logs
## Niveau 4
# Reprise du niveau 3 sur la sortie standard
## Niveau 5
# Exécution automatique avecla sortie standard
## Niveau 6
# Mode debug
mode_debug=5
## Architecture de la distribution
ARCH=""
## Options d'aptitude en fonction du niveau de debug
OPTIONS=""
# Default grub timeout
grub_timeout='5'
# Default user informations
new_username=$(ls -1 /home | grep -v "lost+found" | tail -n 1)
new_user_mail="${new_username}"
# Strate 1 server from Paris Astronomical Observatory (obspm)
# http://syrte.obspm.fr/informatique/ntp_infos.php
ntp_server='ntp-p1.obspm.fr'
# Load personnal informations (new_username, new_user_mail, …) and override some variables
if [ -f ${script_path}/informations ]; then
. ${script_path}/informations
else
printf '%b' "You should define a ${script_path}/informations file\n"
printf '%b' "Or simply copy the template:\n"
printf '%b' "cp ${script_path}/informations.template ${script_path}/informations\n"
printf '%b' "Otherwise the script will use defaults values such as '${new_username}' as main user.\n"
time=10
printf '%b' "The script will continue in ${time} seconds "
while [ "${time}" -gt 0 ]; do
printf '%b' "."
time=$((time-1))
sleep 1
done
clear
fi
# Fin des variables globales
# -----------------------------------------------------------
# **********************************************************************************************
# **********************************************************************************************
#
# Fichiers globaux
#
# -----------------------------------------------------------
#
## Répertoire de log
log_dir="/home/${new_username}/log/`date +"%d"-"%m"-"%y"`"
# !! Pour utiliser un répertoire de log, décommenter la ligne suivante:
#mkdir -p $log_dir
if [ -d ${log_dir} ]; then
## Fichier de log placé dans le répertoire de log
fichier_log="${log_dir}/new_post_install.sh.log"
## Fichier de erreur placé dans le répertoire de log
fichier_erreur="${log_dir}/new_post_install.sh.err"
else
## Fichier de log "normal"
fichier_log="new_post_install.sh.log"
## Fichier de erreur "normal"
fichier_erreur="new_post_install.sh.err"
fi
## Fichier qui reprend toutes les informations pour l'utilisateur à la suite de l'installation.
INFORMATION="information.txt"
# Fin des fichiers globaux
# -----------------------------------------------------------
# **********************************************************************************************
# **********************************************************************************************
#
# Fonctions globales
#
# -----------------------------------------------------------
## Fonction d'affichage en fonction du mode debug choisi
echod() { [ "${mode_debug}" -ge 5 ] && echo "\n(DEBUG) $*" ; }
echok() { [ "${mode_debug}" -ge 3 ] && echo "(ok) $*" ; }
echoi() { [ "${mode_debug}" -ge 2 ] && echo "(ii) $*" ; }
echow() { [ "${mode_debug}" -ge 1 ] && echo "(!!) $*" ; }
echnk() { [ "${mode_debug}" -ge 0 ] && echo "(EE) $*" ; }
## Redirection de la sortie standard (stdout) vers le fichier de log
redirect_stdout()
{
# On test si le descripteur de fichier 6 existe déjà
if [ ! "$(lsof -a -p $$ -d6 | grep 6)" ]; then # Si stdout n'est pas déjà redirigé
# Sauvegarder la valeur de stdout dans le descripteur de fichier 6
exec 6>&1
# stdout remplacé par le fichier de log
exec > ${fichier_log}
echok "stdout redirigé"
else
echow "stdout déjà redirigé ..."
fi
}
## Restauration de stdout
restore_stdout()
{
# Test si le descripteur de fichier 6 existe
if [ "$(lsof -a -p $$ -d6 | grep 6)" ]; then
echok "Restauration de stdout et fermeture du descripteur de fichier 6"
# Restaurer stdout et fermer le descripteur de fichier #6
exec 1>&6 6>&-
else
echoi "Le descripteur de fichier 6 n'existe pas. stdout est normalement en place"
fi
}
## Redirection de la sortie d'erreur standard (stderr) vers le fichier d'erreur
redirect_stderr()
{
# On test si le descripteur de fichier 7 existe déjà
if [ ! "$(lsof -a -p $$ -d7 | grep 7)" ]; then
# Sauvegarder la valeur de stderr dans le descripteur de fichier 7
exec 7>&2
# stderr remplacé par le fichier d'erreur
exec 2> ${fichier_erreur}
echok "stderr redirigé"
else
echow "stderr déjà redirigé"
fi
}
## Restauration de stderr
restore_stderr()
{
# Test si le descripteur de fichier 7 existe
if [ "$(lsof -a -p $$ -d7 | grep 7)" ]; then
echok "Restauration de stderr et fermeture du descripteur de fichier 7"
# Restaurer stderr et fermer le descripteur de fichier #7
exec 2>&7 7>&-
else
echoi "Le descripteur de fichier 7 n'existe pas. stderr est normalement en place"
fi
}
## Fonction de vérification du code retour de la commande précédemment exécutée
# Affiche un message relatif au code retour, et peut sortir du script.
# - Prototype : check_output "MESSAGE_RELATIF_À_LA_COMMANDE"
check_output()
{
## Vérification du code retour de la dernière commande
case "${?}" in
0 ) ## Si 0, tout s'est bien passé
echok "${1}\n"
> "${fichier_erreur}" ## On vide le fichier d'erreur qui aurait pu récupérer des warnings ou autre
# Appel de la fonction d'attente (appui sur une touche)
attente
;; ## Pas d'erreur
* ) ## Si différent de 0
## On affiche le message relatif à l'erreur
echnk "Erreur lors de: -> ${1} <-"
echoi "Voir le fichier ${fichier_erreur} pour plus d'information."
## Et on arrête le script avec un code retour 1
echnk "/!\\ Arrêt du script /!\\ "
exit 1;
;;
esac
}
## Fonction qui crée les fichiers passés en paramètres
## Si les fichiers existent déjà, ils sont supprimés puis recrées
## Prototype: create_file $1 [$2 $3 ... $x]
## $1: nom du premier fichier à créer
create_file()
{
# Parcourir tous les arguments et les crée si nécessaire
for fichier in $*; do
if [ -f ${fichier} ]; then
rm -f ${fichier}
touch ${fichier}
check_output "Suppression puis création du fichier ${fichier}"
else
touch ${fichier}
check_output "Création du fichier ${fichier}"
fi
done
}
## Fonction qui permet de redéfinir les fichiers de log
# Prototype: change_log_file $1
# $1: nouveau nom du fichier de log
change_log_file()
{
# Restauration des sorties standard
restore_stdout
restore_stdin
# Redéfinition des fichiers de logs pour mieux correspondre à l'action en cours
if [ -d ${log_dir} ]; then
## Fichier de log placé dans le répertoire de log
fichier_log="${log_dir}/${1}.log"
## Fichier de erreur placé dans le répertoire de log
fichier_erreur="${log_dir}/${1}.err"
else
## Fichier de log "normal"
fichier_log="${1}.log"
## Fichier de erreur "normal"
fichier_erreur="${1}.err"
fi
# Création des fichiers de logs
create_file ${fichier_log} ${fichier_erreur}
# Rediriger les sorties standard
redirect_stdout
redirect_stderr
}
## Fonction d'attente
# Attend l'appui sur une touche si le mode debug le permet
# Prototype: attente
attente()
{
if [ "${mode_debug}" -ge 6 ]; then
echod "Appuyer sur la touche 'Entrée' pour continuer ..."
#read -s -n1 /dev/null 2> /dev/null
dd bs=1 count=1 > /dev/null 2>&1
# Le problème avec la commande `read` est que les différents shell (sh, bash, zsh, ...) en ont une implémentation
# différente. L'utilisation de `dd` est en revanche fonctionnelle partout.
fi
}
## Définition du niveau de debug
## Prototype: def_debug $1
## $1: valeur comprise entre 0 et 2 pour déterminer le niveau de debug
## Niveau 0
# Exécution automatique avec normalement aucune interaction avec l'utilisateur et peu de log
## Niveau 1 et 2
# Exécution automatique avec un peu plus d'information dans les logs
## Niveau 3
# Exécution automatique avec tous les logs
## Niveau 4
# Reprise du niveau 3 sur la sortie standard
## Niveau 5
# Mode debug
def_debug()
{
case "${1}" in
0) ## Niveau minimum avec le minimum de contenu dans les fichiers de logs
# La sortie standard sera redirigée dans un fichier de log
redirect_stdout
# La sortie d'erreur sera redirigée dans un fichier d'erreur
redirect_stderr
# Aptitude en tout automatique
OPTIONS="-y"
# Ne pas afficher les changements sur les paquets lors des mises à jour
sed -i 's/pager$/none/' /etc/apt/listchanges.conf
;;
1) ## Niveau bas avec seulement les erreurs et les warnings dans les logs
redirect_stdout
redirect_stderr
# Aptitude en tout automatique
OPTIONS="-y"
# Ne pas afficher les changements sur les paquets lors des mises à jour
sed -i 's/pager$/none/' /etc/apt/listchanges.conf
;;
2) ## Niveau intermédiaire avec les erreurs, les warnings et les informations
redirect_stdout
redirect_stderr
# Pas d'options pour aptitude
OPTIONS="-y"
# Ne pas afficher les changements sur les paquets lors des mises à jour
sed -i 's/pager$/none/' /etc/apt/listchanges.conf
;;
3) ## Niveau moyen avec presque tous les echos (sauf DEBUG)
redirect_stdout
redirect_stderr
# Pas d'options pour aptitude
OPTIONS=""
;;
4) ## Niveau élevé avec presque tous les echos (sauf DEBUG) sur la sortie standard
redirect_stderr
# Pas d'options pour aptitude
OPTIONS=""
;;
5)
OPTIONS="-y"
# Ne pas afficher les changements sur les paquets lors des mises à jour
sed -i 's/pager$/none/' /etc/apt/listchanges.conf
;;
6) ## Niveau debug avec tous les echos et les sorties non redirigées
# Pas d'options pour aptitude
OPTIONS=""
echo "Mode debug"
attente
;;
*) ## Niveau non pris en compte
echo "Erreur, le niveau choisi (${1}) n'est pas géré"
esac
}
## Fonction d'installation
# Récupère la liste des paquets à installer et le type de ces paquets.
# Prototype: aptins "DESCRIPTION_PAQUET" paquet1 paquet2 ... paquetX
# Les options sont définies en fonctions du niveau de debug
# Utilisation de la fonction check_output pour vérifier que tout s'est bien passé
aptins()
{
## On récupère la description
DESCR_PAQUET="${1}"
## Décale la liste des paramètres, $2 devient $1, ... Permet de supprimer la description des paquet.
shift
## Installation de la liste des paquets passées en paramètre
aptitude ${OPTIONS} install $*
## Vérification que tout s'est bien passé
check_output "${DESCR_PAQUET}"
## Nettoie les paquets téléchargés
aptitude clean
}
## Fonction de désinstallation
# Récupère la liste des paquets à désinstaller et le type de ces paquets.
# Prototype: arem "DESCRIPTION_PAQUET" paquet1 paquet2 ... paquetX
# Les options sont définies en fonctions du niveau de debug
# Utilisation de la fonction check_output pour vérifier que tout s'est bien passé
arem()
{
## On récupère la description
DESCR_PAQUET="${1}"
## Décale la liste des paramètres, $2 devient $1, ... Permet de supprimer la description des paquet.
shift
## Installation de la liste des paquets passées en paramètre
aptitude ${OPTIONS} remove $*
## Vérification que tout s'est bien passé
check_output "${DESCR_PAQUET}"
## Nettoie les fichiers de configuration des paquets
aptitude ${OPTIONS} purge '~c'
}
## Fonction qui récupère l'architecture de la distribution
architecture()
{
ARCHI=$(uname -r)
if [ `uname -r | grep amd64` ]; then
ARCH="64"
elif [ `uname -r | grep 86` ]; then
ARCH="86"
else
echow "architecture inconnue: ${ARCHI}"
fi
}
## Fonction qui vérifie la présence d'un fichier seed pour l'argument passé en paramètre.
# Si ce fichier existe, il sera donc appliqué.
# Prototype: preconfig "NOM_PAQUET"
preconfig()
{
if [ -f ${script_path}/seed/${1}.seed ]; then
debconf-set-selections ${script_path}/seed/${1}.seed
check_output "Préconfiguration de ${1}"
else
echow "Il n'existe aucun fichier seed pour ${1}."
fi
}
# Fin des fonctions globales
# -----------------------------------------------------------
# **********************************************************************************************
# **********************************************************************************************
#
# Programme principale
#
# -----------------------------------------------------------
# Création des fichiers de logs
create_file ${fichier_log} ${fichier_erreur} ${INFORMATION}
# Définition du niveau de debug
def_debug ${mode_debug}
# Définition de l'architecture
architecture
###########################################################
## Configuration de Aptitude
###########################################################
###### Pré-configuration
## Chargement de la configuration pour ne pas avoir de messages lorsqu'un service a besoin
## de redémarrer après une mise à jour
preconfig restart_no_asking
## apt.conf.d
cp -f ${script_path}/apt/apt.conf.d/* /etc/apt/apt.conf.d/
## Sources.list
### Backup initial
test -f /etc/apt/sources.list && mv /etc/apt/sources.list /etc/apt/sources.list.bkp
rm -f /etc/apt/sources.list\~
### Copy all local sources.list files
cp -f ${script_path}/apt/sources-list.d/* /etc/apt/sources.list.d/
## Preferences
### Backup initial
test -f /etc/apt/preferences && mv /etc/apt/preferences /etc/apt/preferences.bkp
### Copy all local preferences files
cp -f ${script_path}/apt/preferences.d/* /etc/apt/preferences.d/
aptitude update
check_output "Update Debian repositories"
## Installation de la clé pour le dépôt multimédia
# Restauration des sorties standard pour pouvoir confirmer l'installation de la clé
restore_stdout
restore_stderr
aptitude install deb-multimedia-keyring
# Restauration des sorties en fonction du niveau de debug choisi
def_debug ${mode_debug}
aptitude update
check_output "Mise à jour des dépôts"
restore_stdout
restore_stderr
# Variable pour forcer à garder les anciens fichiers de configuration si de nouveaux sont présent avec une maj
export UCF_FORCE_CONFFOLD=1
aptitude -y full-upgrade
check_output "Mise à jour du système"
def_debug ${mode_debug}
###########################################################
## Prérequis
## Liste: debconf-utils - lsof
###########################################################
###### Pré-configuration
preconfig locales
preconfig keyboard
###### Installation
aptins "Prérequis" debconf-utils lsof
# Pour la description de debconf-utils, voir la partie "Outils d'administration"
###########################################################
## X11 Server
###### Pre-configuration
preconfig x11-common
###### Installation
aptins "X11 Server" mesa-utils xorg
###########################################################
###########################################################
## Graphic Environment
###### Installation
aptins "Graphic Environment" alsa-utils gtk2-engines-cleanice herbstluftwm i3lock lxappearance nitrogen redshift rofi roxterm scrot suckless-tools terminator wmctrl xbacklight xclip
##### Remove
arem "Purge: Graphic Environment" xscreensaver xscreensaver-data
###########################################################
###########################################################
## Gnome tools
###### Installation
aptins "Gnome tools" evince etherape gedit gnome-calculator gparted nemo nemo-fileroller planner
##### Remove
arem "Purge: Gnome tools" eog
###########################################################
###########################################################
## Dev tools
###### Installation
aptins "Dev tools" build-essential binutils cpp debconf-utils gcc g++ make
###########################################################
###########################################################
#### Admin tools for cli
##### Pre-configuration
preconfig hddtemp
##### Installation
aptins "Admin tools for cli" acpitool alien apticron apt-file apt-listbugs apt-rdepends apt-show-source apt-show-versions dctrl-tools debian-goodies dnsutils ethtool git git-svn gpm hddtemp htop ifscheme iperf mlocate mercurial module-assistant ncdu netdiscover netselect-apt nmap ntp parted pastebinit rsyslog sudo sysv-rc-conf tcpdump tree
##### Post-configuration
###### apt-file: Synchronize the package contents from their sources.
apt-file update
###### Grub: Modify the default grub timeout
if [ ! "$(grep "GRUB_TIMEOUT=${grub_timeout}" /etc/default/grub)" ]; then
sed -i "s/^GRUB_TIMEOUT.*/GRUB_TIMEOUT=${grub_timeout}/" /etc/default/grub
update-grub
fi
###### Mlocate: Update the mlocate database
updatedb
###### Modprobe: Ensure to disable system beep/buzzer
cp ${script_path}/modprobe.d/blacklist-beep.conf /etc/modprobe.d/
# Ensure to blacklist dangerous modules (firewire, thunderbolt, …)
cp ${script_path}/modprobe.d/blacklist-dma.conf /etc/modprobe.d/
###### Ntp: Set a better NTP server.
if [ ! "$(grep "server ${ntp_server}" /etc/ntp.conf)" ]; then
sed -i "s/^server.*/server ${ntp_server}/g" /etc/ntp.conf
# Restart NTP service to apply the new server
systemctl restart ntp
fi
###### Rsyslog: Enable Rsyslog in tty9
sed -i '/#daemon,mail.\*;/{:label;/^$/q;s/^#//;n;s/^#//;t label;}' /etc/rsyslog.conf
sed -i 's/tty8/tty9/' /etc/rsyslog.conf
###### Sudo: Add default user to sudo group
if [ ! "$(grep "^sudo:x:27:.*${new_username}" /etc/group)" ]; then
adduser ${new_username} sudo
fi
###########################################################
###########################################################
## System tools for cli
##### Pre-configuration
# Chargement d'un fichier preseed
preconfig backuppc
##### Installation
aptins "System tools for cli" backuppc bsdmainutils colordiff cpio genisoimage keychain knockd lzip moreutils multitail myrepos ntfs-3g openssh-client openssh-server openvpn pmount screen tmux unrar unzip urlview vim-nox vim-doc vim-scripts vlock wakeonlan zsh zip
##### Remove
arem "Purge: System tools for cli" bluetooth bluez vim-tiny
##### Post-configuration
###### Vim: set vim-nox as default editor.
update-alternatives --set editor $(command -v vim.nox)
##### Openvpn: Disable to automatically start
systemctl disable openvpn.service
###### ZSH: set as default shell
## For root
chsh -s /bin/zsh
rm -f ~/.bash*
## For new_username
chsh -s /bin/zsh "${new_username}"
mkdir -p /home/"${new_username}"/.zsh
chown "${new_username}":"${new_username}" /home/"${new_username}"/.zsh
## For new users with adduser
sed -i "s;/bin/bash;/bin/zsh;" /etc/adduser.conf
###########################################################
###########################################################
#### Internet tools for cli
##### Installation
aptins "Internet tools for cli" axel finch postfix weechat-curses
##### Post-configuration
###### Postfix
# Ensure to forward root's mails to $new_user_mail
if [ ! "$(grep "root: .*${new_user_mail}" /etc/aliases)" ]; then
sed -i "s/^root: /root: ${new_user_mail} /" /etc/aliases
newaliases
fi
###########################################################
###########################################################
## Internet tools for X11
###### Installation
aptins "Internet tools for X11" browser-plugin-freshplayer-pepperflash dwb filezilla icedove icedove-l10n-fr iceowl-extension iceweasel iceweasel-l10n-fr luakit midori pepperflashplugin-nonfree pidgin pidgin-otr pidgin-microblog rdesktop transmission xvnc4viewer
###### Remove
arem "Purge: Internet tools for X11" flashplugin-nonfree flashplugin-nonfree-extrasound
###### Post-configuration
# Ensure to install last flash version
update-pepperflashplugin-nonfree --install
###########################################################
###########################################################
## Outils systèmes (graphique)
## Liste: gprename
###########################################################
###### Installation
aptins "Outils système (graphique)" gprename
###### Information pour l'utilisateur final
cat >> "${INFORMATION}" << EOF
======Outils systèmes (graphique)======
Voici la liste des paquets installés :
+gprename : permet de renommer des fichiers en masse à partir d'une interface graphique
EOF
###########################################################
## Carte graphiqua
## Suport: nvidia -
## Liste: nvidia-glx nvidia-kernel-dkms nvidia-settings nvidia-xconfig
###########################################################
###### Installation
if [ "$(lspci | grep -i nvidia)" ]; then
###### Pré-configuration
module-assistant prepare
module-assistant clean nvidia-kernel
module-assistant auto-install -i nvidia-kernel-source
###### Installation
aptins "Pilotes NVidia" nvidia-glx nvidia-kernel-dkms nvidia-settings nvidia-xconfig
## Post-configuration
nvidia-xconfig --no-logo
###### Information pour l'utilisateur final
cat >> "${INFORMATION}" << EOF
======Pilotes NVidia======
Voici la liste des paquets installés :
+nvidia-glx : Fournis le nvidia-kernel-295.33
+nvidia-kernel-dkms :Fournis les sources du module noyau nvidia DKMS
+nvidia-settings : Outils pour configurer le driver NVIDIA
+nvidia-xconfig : Outils de configuration de X pour NVIDIA
EOF
fi
###########################################################
## Carte réseau
## Support : carte wifi BCM43
## Liste: broadcom-sta-dkms
###########################################################
if [ "$(lspci | grep -i BCM43)" ]; then
###### Installation
aptins "Outils gestion wifi" linux-headers-$(uname -r|sed 's,[^-]*-[^-]*-,,') broadcom-sta-dkms
###### Post-configuration
# Décharger les modules qui peuvent créer des conflits
modprobe -r b44 b43 b43legacy ssb brcmsmac
# Charger le bon module
modprobe wl
# Vérification du bon fonctionnement avec:
#iwconfig
###### Information pour l'utilisateur final
cat >> "${INFORMATION}" << EOF
======Pilote wiki BCM43======
Voici la liste des paquets installés :
+broadcom-sta-dkms : Source DKMS pour les drivers wifi des cartes Broadcom.
-Plus d'informations:
-- http://wiki.debian.org/wl#Wheezy
EOF
fi
###########################################################
## Office tools for cli
## List: cups - devtodo - graphviz - imagemagick - imagemagick-doc - odt2txt - pdftk - texlive - texlive-latex-extra - vim-latexsuite
## Remove: avahi-autopid - avahi-daemon - cups-browsed - libnss-mdns
###########################################################
###### Pre-configuration
# Load preseed file
preconfig cups
###### Installation
aptins "Office tools for cli" cups devtodo graphviz imagemagick imagemagick-doc odt2txt pdftk texlive texlive-latex-extra vim-latexsuite
###### Remove
arem "Purge: Office tools for cli" avahi-autopid avahi-daemon cups-browsed libnss-mdns
###### Post-configuration
# Add the standard user to lpadmin group to be able to manage Cups administration via webgui.
adduser "${new_username}" lpadmin > /dev/null 2> "${fichier_erreur}"
# cups needs samba!
###########################################################
## Office tools for X11
###### Installation
aptins "Outils bureautique graphique" freeplane key-mon libreoffice libreoffice-l10n-fr libreoffice-help-fr libreoffice-pdfimport fonts-linuxlibertine ttf-ancient-fonts verbiste verbiste-gnome
###########################################################
###########################################################
## Outils multimédia (shell)
## Liste: avinfo - eyed3 - ffmpeg - lynx - mirage - moc - w32codecs
###########################################################
###### Installation
aptins "Outils multimédia (shell)" avinfo eyed3 ffmpeg lynx mirage moc w32codecs
###### Information pour l'utilisateur final
cat >> "${INFORMATION}" << EOF
======Outils multimédia (shell)======
Voici la liste des paquets installés :
+avinfo : Fournit des informations sur des fichiers vidéo au format AVI, OGG, OGM, MPEG, ou MKV.
+eyed3 : Fournit des informations/tags sur les fichiers mp3
+ffmpeg : Contient divers outils pour la manipulation de fichiers audio
+lynx : Navigateur web léger en mode texte
+mirage : Une visionneuse d'image légère en gtk+ pour remplacer eog
+moc : Pour Music On Console - Logiciel qui permet d'écouter de la musique à partir d'une console
+w32codecs : Contient certains codecs vidéo non natif par mplayer
EOF
###########################################################
## Outils multimédia (graphique)
## Liste: audacity - mcomix - easytag - gimp - inkscape - mkvtoolnix-gui - mumble - smplayer - rhythmbox - vlc
## Désactivé: mcomix
###########################################################
###### Installation
aptins "Outils multimédia (graphique)" audacity easytag gimp inkscape mkvtoolnix-gui mumble smplayer rhythmbox vlc
###### Information pour l'utilisateur final
cat >> "${INFORMATION}" << EOF
======Outils multimédia (graphique)======
Voici la liste des paquets installés :
+audacity : Logiciel d'édition audio. Utiliser avi2wav pour récupérer la piste audio d'une vidéo.
+mcomix : Lecteur de scan (comic, manga, ...)
+easytag : permet de modifier les tags des fichiers audio
+gimp : Éditeur d'image
+inkscape : Logiciel de dessin vectoriel
--Il est également possible de modifier un fichier .pdf
+mkvtoolnix-gui : permet d'éditer les fichiers mkv
+mumble : Client VoIP à faible latence
+smplayer : Lecteur vidéo
+rhythmbox : Lecteur de musique
+vlc : Lecteur vidéo
EOF
###########################################################
## Games
###### Installation
aptins "Games" teeworlds teeworlds-server
###########################################################
###########################################################
## Network share
###### Installation
aptins "Network share" nfs-common
###### Remove
arem "Purge: Network share" nfs-kernel-server samba
###### Post-configuration
#### If nfs-kernel-server and samba are need or vital for the system, disable them anyway
# Disable samba service if available by default
if [ $(command -v samba) ]; then
systemctl disable nmbd.service
systemctl disable smbd.service
systemctl disable samba.service
fi
# Disable nfs-kernel-server service if available by default
if [ $(command -v nfsdcltrack) ]; then
systemctl disable nfs-kernel-server.service
fi
###########################################################
###########################################################
#### Wireless tools for cli
if [ "$(lspci | grep -i wireless)" ]; then
##### Installation
aptins "Wireless tools for cli" ifscheme wireless-tools wpasupplicant
fi
###########################################################
###########################################################
#### Miscellaneous useless packages
##### Installation
aptins "Miscellaneous useless packages" asr-manpages cmatrix cowsay cowsay-off fortunes fortunes-bofh-excuses fortunes-debian-hints fortunes-fr fortunes-off funny-manpages linuxlogo sl
###########################################################
###########################################################
## Manpages / Documentation
###### Installation
aptins "Manpages" aptitude-doc-fr info manpages-fr manpages-fr-dev manpages-fr-extra
###########################################################
# Restauration des sorties standard
restore_stdout
restore_stderr
# Supprime le fichier d'erreur si il est vide
[ -s ${fichier_erreur} ] && echo "Fichier erreur non vide" || rm ${fichier_erreur}
# Supprime le fichier d'log si il est vide
[ -s ${fichier_log} ] && echo "Fichier log non vide" || rm ${fichier_log}
exit 0
# Fin de la boucle principale
# -----------------------------------------------------------
# **********************************************************************************************