#!/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 ## 2013-06-28 - 0.03.29 ## - ajout des paquets: libreoffice-pdfimport fonts-linuxlibertine ## 2012-09-06 ## - Ajout du paquet dnsutils ## 2012-06-29 - 0.6.29 ## - Ajout du paquet wpasupplicant qui avait été oublié ... ## 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 ## 2012-04-03 - 0.4.1: ## - Ajout du paquet mirage (visionneuse image) ## 2012-03-23 - 0.3.1: ## - Ajout des parties: serveur graphique, openbox, outils bureautique (graphique+shell) # ********************************************************************************************** ## À 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 shell ##### Pre-configuration # Chargement d'un fichier preseed preconfig backuppc ##### Installation aptins "System tools for shell" 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 shell" 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 - ifscheme - wireless-tools ## Suppression de firmware-brcm80211 le temps de vérifier si il est nécessaire avec une nouvelle installation ########################################################### if [ "$(lspci | grep -i BCM43)" ]; then ###### Installation #aptins "Outils gestion wifi" firmware-brcm80211 ifscheme wireless-tools wpasupplicant aptins "Outils gestion wifi" linux-headers-$(uname -r|sed 's,[^-]*-[^-]*-,,') broadcom-sta-dkms ifscheme wireless-tools wpasupplicant ###### 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 +ifscheme : permet de définir différentes configuration réseau (ethernet ou wlan) parmis lesquelles il sera possible de switcher, facilitant ainsi le changement de réseau sans-fil sans gui. --Avec le bon fichier de configuration (gestion de plusieurs profils sur wlan0), pour se connecter au réseau wifi_de_toto, il faudra par exemple faire: $ ifdown wlan0 $ ifscheme toto $ ifup wlan0 -Plus d'infos: -- http://b.twidi.com/index.php/2006/03/27/55-un-portable-plusieurs-reseaux-sous-linux-debian-ubuntu -- http://www.alwayssunny.com/blog/?p=30 +wireless-tools : contient des outils pour agir sur les interfaces sans fil +wpasupplicant : gestion des clients wpa et wpa2 EOF fi ########################################################### ## 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 ########################################################### ########################################################### ## Office tools for shell ## 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 shell" cups devtodo graphviz imagemagick imagemagick-doc odt2txt pdftk texlive texlive-latex-extra vim-latexsuite ###### Remove arem "Purge: Office tools for shell" 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! ########################################################### ## Outils bureautique (graphique) ## Liste : freeplane - key-mon - libreoffice - libreoffice-l10n-fr - libreoffice-help-fr - libreoffice-pdfimport - fonts-linuxlibertine - ttf-ancient-fonts - verbiste - verbiste-gnome ########################################################### ###### 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 ###### Information pour l'utilisateur final cat >> "${INFORMATION}" << EOF ======Instructions Outils bureautique (graphique)====== Voici la liste des paquets installés : +freeplane : Programme Java pour créer/éditer des mind maps (carte heuristique) +key-mon : Petit outils graphique qui affiche dans une fenêtre les touches tapées --Très pratique pour la réalisation de tuto vidéo +libreoffice : La très classique et complète suite bureautique -libreoffice-l10n-fr : pack français -libreoffice-help-fr : aide francaise -libreoffice-pdfimport : import de pdf (très très réussi) -fonts-linuxlibertine : ajoute la police libertine +ttf-ancient-fonts: Ajoute la police qui permet d'avoir pas mal d'emoji. -See: https://en.wikipedia.org/wiki/Emoji#Blocks +verbiste : Programme qui permet de configurer les verbes (français et italien) -verbiste-gnome : Interface graphique pour gnome EOF ########################################################### ## 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 ########################################################### ## Jeux ## Liste: teeworlds - teeworlds-server ########################################################### ###### Installation aptins "Jeux =)" teeworlds teeworlds-server ###### Information pour l'utilisateur final cat >> "${INFORMATION}" << EOF ======Instructions Jeux====== Voici la liste des paquets installés : +teeworlds : Petit jeu libre de fps ressemblant à worms. +teeworlds-server : Serveur de jeu pour teeworlds EOF ########################################################### ## Inutiles donc nécessaires ## Liste: asr-manpages - cmatrix - cowsay - fortunes - funny-manpages - linuxlogo - sl ########################################################### ###### Installation aptins "Paquets inutiles" asr-manpages cmatrix cowsay fortunes funny-manpages linuxlogo sl ###### Information pour l'utilisateur final cat >> "${INFORMATION}" << EOF ======Instructions Paquets inutiles====== Voici la liste des paquets installés : +asr-manpages : Pages de manuel de alt.sysadmin.recovery. -- Liste des man disponibles: # dpkg -L asr-manpages +cmatrix: affiche la matrice dans un terminal +cowsay : Fait parler différents personnages en ligne de commande --Essayer la commande : # bonjour --chez moi, bonjour est un alias vers : 'echo Bonjour $USER, nous sommes le `date +"%A %e %B %Y"`, et il est : `date +"%H"` h `date +"%M"` | cowsay -f $(/bin/ls /usr/share/cowsay/cows -1 | head -n $(expr $$$(date +%s) % $(ls /usr/share/cowsay/cows | wc -w) + 1) | tail -n 1)' +fortunes : Collection de phrases françaises +funny-manpages : Un ensemble de pages de manuel humoristiques, exemple: rtfm, baby, celibacy, party, condom, flame, ... +linuxlogo : Permet d'afficher un logo avec quelques informations sur le système. Exemple: $ linux_logo -f -d +sl : affiche une animation si on tape sl à la place de ls EOF ########################################################### ## 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 # ----------------------------------------------------------- # **********************************************************************************************