install-debian/post_install_sid.sh

791 lines
26 KiB
Bash
Executable File
Raw Permalink 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: post_install_sid.sh
##
## Version: 0.3.1
##
## Licence: WTFPL
##
################################################################################################
## 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: ains "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é
ains()
{
## 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
###########################################################
## Prerequisite
##### Installation
ains "Prerequisite" debconf-utils lsof
##### Post-configuration
preconfig locales
preconfig keyboard
###########################################################
###########################################################
#### Apt configuration
###########################################################
##### Pre-configuration
###### Load pre-seed to automatically restart services after an upgrade
preconfig restart_no_asking
###### apt.conf.d
cp -f ${script_path}/apt/apt.conf.d/* /etc/apt/apt.conf.d/
###### sources.list.d
### 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.d
### 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"
# Restore the standard output to be sur to be able to install the Debian Multimedia Keyring
restore_stdout
restore_stderr
##### Add
ains "Debian Multimedia Repository" deb-multimedia-keyring
# Restore the standard output to the default choosen level
def_debug ${mode_debug}
##### Post-Configuration
aptitude update
check_output "Update Debian repositories"
###### Set a variable to ensure to keep old config files when upgrading a package.
export UCF_FORCE_CONFFOLD=1
###### Force a full-upgrade of the system
aptitude -y full-upgrade
check_output "Force full-upgrade of the system"
###########################################################
#### X11 Server
##### Pre-configuration
preconfig x11-common
##### Installation
ains "X11 Server" mesa-utils xorg
###########################################################
###########################################################
#### Graphic Environment
##### Installation
ains "Graphic Environment" alsa-utils gtk2-engines-cleanice herbstluftwm i3lock lxappearance nitrogen redshift rofi roxterm scrot suckless-tools terminator wmctrl xautolock xbacklight xclip
##### Remove
arem "Purge: Graphic Environment" geoclue-2.0 modemmanager xscreensaver xscreensaver-data
##### Post-Configuration
# Ensure to have an xautolock launch at boot time
if [ ! "$(grep 'xautolock' /home/${new_username}/.xinitrc)" ]; then
cat << EOF >> "/home/${new_username}/.xinitrc"
xautolock -time 15 -locker 'i3lock --pointer win -d -e -t' &
EOF
fi
###########################################################
###########################################################
#### Gnome tools
##### Installation
ains "Gnome tools" evince etherape gedit gnome-calculator gparted nemo nemo-fileroller planner
##### Remove
arem "Purge: Gnome tools" eog
###########################################################
###########################################################
#### Dev tools
##### Installation
ains "Dev tools" build-essential binutils cpp debconf-utils gcc g++ make
###########################################################
###########################################################
#### Admin tools for cli
##### Pre-configuration
preconfig hddtemp
##### Installation
ains "Admin tools for cli" acpitool alien apticron apt-file apt-listbugs apt-rdepends apt-show-source apt-show-versions dctrl-tools debian-goodies dnsutils dstat ethtool git git-svn gpm hddtemp htop ifscheme iperf mlocate mercurial module-assistant ncdu netdiscover netselect-apt ngrep nmap ntp parted pastebinit perf-tools-unstable rsyslog strace sudo sysv-rc-conf tcpdump tree util-linux whois
##### 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
###### Fstrim: Ensure to enable TRIM if a SSD is available.
# If fstrim is not already enable
if [ ! "$(grep fstrim /etc/rc.local)" ]; then
# For all hdd
for path_drive in $(find /sys/block/ ! -name "dm-*" -type l);
do
IS_SSD=$(grep 0 ${path_drive}/queue/rotational)
if [ ${IS_SSD} ]; then
sed -i 's/\(^exit 0\)/# Run TRIM on every mountpath\nfstrim -a\n\n\1/' /etc/rc.local
fi
done
fi
###########################################################
#########################################################
#### UEFI tools
##### Installation
uefi_add_pkg_list="efibootmgr efivar"
# If grub-efi is available
if [ "$(dpkg -l grub-efi)" ]; then
ains "UEFI tools" efibootmgr efivar
fi
#########################################################
###########################################################
#### System tools for cli
##### Pre-configuration
##### Installation
ains "System tools for cli" bsdmainutils colordiff cpio genisoimage keychain knockd lzip moreutils multitail myrepos ntfs-3g openssh-client openvpn physlock screen tmux udisks2 unrar unzip urlview vim-nox vim-doc vim-scripts vlock wakeonlan zsh zip
##### Remove
arem "Purge: System tools for cli" bluetooth bluez network-manager 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
ains "Internet tools for cli" axel finch lynx mat 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
# Ensure Postfix only listen on localhost
if [ -f /etc/postfix/main.cf ] && [ !"$(grep 'inet_interfaces = localhost' /etc/postfix/main.cf)" ]; then
sed -i 's/\(inet_interfaces\).*/\1 = localhost/' /etc/postfix/main.cf
systemctl restart postfix
fi
###########################################################
###########################################################
#### Internet tools for X11
##### Installation
ains "Internet tools for X11" browser-plugin-freshplayer-pepperflash dwb filezilla icedove icedove-l10n-fr iceowl-extension firefox firefox-l10n-fr libjs-pdf luakit midori mumble 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
###########################################################
###########################################################
#### Nvidia driver
if [ "$(lspci | grep -i nvidia)" ]; then
##### Installation
ains "Nvidia driver" linux-headers-$(uname -r|sed 's,[^-]*-[^-]*-,,') nvidia-kernel-dkms nvidia-xconfig
##### Post-configuration
## Backup previous xorg.conf file if exists
if [ -f /etc/X11/xorg.conf ]; then
mv /etc/X11/xorg.conf{,.bkp}
fi
## Run the Nvidia configuration tool
nvidia-xconfig --no-logo
fi
###########################################################
###########################################################
#### Wireless driver for BCM43
## Support : carte wifi BCM43
## Liste: broadcom-sta-dkms
if [ "$(lspci | grep -i BCM43)" ]; then
##### Installation
ains "Wireless driver for BCM43 " linux-headers-$(uname -r|sed 's,[^-]*-[^-]*-,,') broadcom-sta-dkms
###### Post-configuration
# Unload useless modules
modprobe -r b44 b43 b43legacy ssb brcmsmac
# Load the 'wl' module
modprobe wl
# Vérification du bon fonctionnement avec:
#iwconfig
fi
###########################################################
###########################################################
#### Office tools for cli
##### Pre-configuration
# Load preseed file
preconfig cups
##### Installation
ains "Office tools for cli" cups devtodo ghostscript gocr graphviz imagemagick imagemagick-doc odt2txt pdftk poppler-utils taskwarrior texinfo texlive texlive-latex-extra units vim-latexsuite xpdf
##### Remove
arem "Purge: Office tools for cli" avahi-autopid avahi-daemon cups-browsed libdaemon0 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
ains "Outils bureautique graphique" freeplane gprename key-mon libreoffice libreoffice-l10n-fr libreoffice-help-fr libreoffice-pdfimport fonts-linuxlibertine ttf-ancient-fonts verbiste verbiste-gnome xournal
###########################################################
###########################################################
#### Multimedia tools for cli
##### Installation
ains "Multimedia tools for cli" avinfo eyed3 ffmpeg mediainfo mkvtoolnix moc w32codecs
###########################################################
###########################################################
#### Multimedia tools for X11
##### Installation
ains "Multimedia tools for X11" audacity easytag gimp gpicview inkscape mirage mkvtoolnix-gui smplayer rhythmbox vlc
###########################################################
###########################################################
#### Games
##### Installation
ains "Games" teeworlds teeworlds-server
###########################################################
###########################################################
#### Network share
##### Installation
ains "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
ains "Wireless tools for cli" ifscheme wireless-tools wpasupplicant
fi
###########################################################
###########################################################
#### Wireless tools for X11
if [ "$(lspci | grep -i wireless)" ]; then
##### Installation
ains "Wireless tools for X11" wpagui
fi
###########################################################
###########################################################
#### Miscellaneous useless packages
##### Installation
ains "Miscellaneous useless packages" asr-manpages cmatrix cmatrix-xfont cowsay cowsay-off fortunes fortunes-bofh-excuses fortunes-debian-hints fortunes-fr fortunes-off funny-manpages linuxlogo sl
###########################################################
###########################################################
#### Manpages / Documentation
##### Installation
ains "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
# -----------------------------------------------------------
# **********************************************************************************************