Script "deinstall" :
#!/bin/bash
###########################################################################
# #
# Script de recherche des paquets d'applications personnelles installées #
# pour désinstallation éventuelle ou réinstallation après réinstallation #
# ou installation d'une nouvelle version du système #
# v0.1 #
# par erresse d'après nesthib #
# #
###########################################################################
#######################
#######################
# ce script permet de générer la liste des paquets d'applications personnelles dans un fichier texte et propose
# de les désinstaller éventuellement, à la demande.
#
# il crée un fichier dans lequel sont listés les noms des paquets à installer ou désinstaller. Il accepte un argument
# optionnel précisant le chemin absolu du fichier à créer.
# si aucun argument n'est donné, le fichier "proglist" contenu dans le même dossier que le script sera utilisé.
#######################
#######################
### ATTENTION *** ATTENTION *** ATTENTION *** ATTENTION *** ATTENTION #####
# #
# Note: ce script est prévu pour "Ubuntu-Mate Focal". Il doit être #
# adapté pour pouvoir gérer une autre version de la distribution. #
# La liste originale est modifiée pour supprimer le suffixe ":amd64"#
# qui est ajouté automatiquement à certains noms de paquets. #
###########################################################################
if [ ${UID} -ne 0 ]
then
echo "vous devez être root pour lancer le script"
exit 1
fi
{
#Variables
SCRIPT_PATH="${0%/*}"
PROGLIST_FILE="${SCRIPT_PATH}/proglist"
distribution="ubuntu-mate"
nom_version="focal"
version="20.04.1"
if [ $# -gt 0 ] ; then PROGLIST_FILE="$1" ; fi
# Télécharger la liste originale des paquets de la distribution
wget -qO- http://cdimage.ubuntu.com/"${distribution}"/releases/"${nom_version}"/release/"${distribution}-${version}-desktop-amd64.manifest"|awk '{ print $1 }'|sed -e 's/:amd64//g'|sort -u > "${SCRIPT_PATH}/orig.txt"
# Générer la liste actuelle des paquets installés manuellement
apt-mark showmanual|sort -u > "${SCRIPT_PATH}/actual.txt"
# Création du fichier liste des dépôts et paquets personnels
echo "##REP" > "${PROGLIST_FILE}"
# Lister les dépôts supplémentaires à ajouter dans sources.list.d
sed -n '/deb .*ppa.launchpad.net/ s@.*ppa.launchpad.net/\(.*\)/ubuntu.*@\1@p' /etc/apt/sources.list.d/*.list > "${SCRIPT_PATH}/temp.txt"
sed 's/^/ppa:/g' "${SCRIPT_PATH}/temp.txt" >> "${PROGLIST_FILE}"
echo "##ENDREP" >> "${PROGLIST_FILE}"
echo "##PAQ" >> "${PROGLIST_FILE}"
# Comparer et lister les différences (mes paquets personnels)
comm -2 -3 "${SCRIPT_PATH}/actual.txt" "${SCRIPT_PATH}/orig.txt" >> "${PROGLIST_FILE}"
echo "##ENDPAQ" >> "${PROGLIST_FILE}"
#suppression des fichiers temporaires
rm "${SCRIPT_PATH}/actual.txt"
rm "${SCRIPT_PATH}/orig.txt"
rm "${SCRIPT_PATH}/temp.txt"
# Pour désinstaller les paquets personnels, faire ces commandes
echo -n "Voulez-vous désinstaller les paquets personnels (o/n) ? "
read reponse
if [[ "${reponse}" == [oOyY] ]]
then
for PAQUET in $(awk '/^##PAQ/{ f=1; next };/^##ENDPAQ/ { f=0 };{ if (f) print; }' "${PROGLIST_FILE}")
do
apt-mark auto "${PAQUET}"
done
# Commande de suppression automatique
apt autoremove --purge
fi
} 2>"${SCRIPT_PATH}/deinstall.error.log" #log d'erreur
exit 0
Ce script fait la liste de logiciels que tu as installé par comparaison entre la liste officielle de la distribution et la liste actuelle des paquets installés sur ton système. À l'issue de la sélection, tu peux choisir de désinstaller les paquets sélectionnés si tu le veux.
Le script est paramétré pour la distribution "Ubuntu-Mate" et la version "Focal" (ce que j'ai chez moi). Il faut donc que tu édites le fichier pour l'adapter à ta propre distribution et version, avant de l'exécuter.
Script "reinstall" :
#!/bin/bash
###########################################################################
# #
# Script de réinstallation des programmes après réinstallation du système #
# v0.2 #
# par nesthib #
# #
###########################################################################
#######################
#######################
# ce script permet l'installation de multiples paquets dont la liste est contenue dans un fichier texte
# l'installabilité des paquets est vérifiée au préalable
#
# il suffit de créer un fichier dans lequel sont listés les noms des paquets à installer et d'indiquer le chemin du fichier
# si aucun argument n'est donné le fichier proglist (s'il existe) contenu dans le même dossier que le script est utilisé
#
# À la fin de l'exécution un "log" est créé indiquant quels paquets ne sont pas dans les dépots,
# lesquels étaient déjà installés et ceux qui ont été installés
#######################
#######################
if [ ${UID} -ne 0 ]
then
echo "vous devez être root pour lancer le script"
exit 1
fi
{
#Variables
SCRIPT_PATH="${0%/*}"
PROGLIST_FILE="${SCRIPT_PATH}/proglist"
if [ $# -gt 0 ] ; then PROGLIST_FILE="$1" ; fi
if [ ! -f "${PROGLIST_FILE}" ] ; then echo "lecture de \"${PROGLIST_FILE}\" impossible" ; exit 1 ; fi
echo "lecture de \"${PROGLIST_FILE}\""
#version actuelle du systeme
VERSION=$(lsb_release -c | cut -c 11-)
install_ok=0
# rajout d'autres dépôts (et clés d'authentifications) dans sources.list.d s'ils sont absents
for DEPOT in $(awk '/^##REP/ { f=1; next };/^##ENDREP/ { f=0 };{ if (f) print; }' "${PROGLIST_FILE}")
do
if [ ${install_ok} -eq 0 ]
then
install_ok=1
echo -n "Il y a des dépôts supplémentaires. Faut-il les installer (o/n) ? "
read reponse
if [[ "${reponse}" == [oOyY] ]]
then
continue
else
echo "L'installation des dépôts supplémentaires est abandonnée"
break
fi
fi
add-apt-repository -y "${DEPOT}"
done
#############################################################################
#Rechargement de la liste des dépôts et des paquets
apt update
#tri des paquets selon les états "non installable", "installé", "non installé"
#création des fichiers temporaires recevant les noms des paquets triés
>"${SCRIPT_PATH}/noninstallable"
>"${SCRIPT_PATH}/noninstalle"
>"${SCRIPT_PATH}/installe"
liste=""
install_ok=0
for PAQUET in $(awk '/^##PAQ/{ f=1; next };/^##ENDPAQ/ { f=0 };{ if (f) print; }' "${PROGLIST_FILE}")
do
if apt-cache pkgnames | grep -x -q "${PAQUET}" #test de l'existence du paquet dans les dépots
then
# test de l'état non installé du paquet
if apt-cache policy "${PAQUET}" | grep Installé | grep -q aucun
then
echo "${PAQUET} non installé"
echo "${PAQUET}" >>"${SCRIPT_PATH}/noninstalle"
liste="${liste} ${PAQUET}" #liste des noms de paquets installables
install_ok=1
else
echo "${PAQUET} installé"
echo "${PAQUET}" >>"${SCRIPT_PATH}/installe"
fi
else
echo "${PAQUET} non installable"
echo "${PAQUET}" >>"${SCRIPT_PATH}/noninstallable"
fi
done
#############################################################################
#Installation des paquets installables non installés
if [ $install_ok -eq 1 ]
then
echo -n "Voulez-vous installer les paquets sélectionnés (o/n) ? "
read reponse
if [[ "${reponse}" == [oOyY] ]]
then
apt install "${liste}"
else
echo "L'installation des paquets sélectionnés est abandonnée"
fi
fi
#création du log d'installation
echo "Paquets installés :" >"${SCRIPT_PATH}/log"
cat "${SCRIPT_PATH}/noninstalle" >>"${SCRIPT_PATH}/log"
echo "" >>"${SCRIPT_PATH}/log"
echo "Paquets déjà installés :" >>"${SCRIPT_PATH}/log"
cat "${SCRIPT_PATH}/installe" >>"${SCRIPT_PATH}/log"
echo "" >>"${SCRIPT_PATH}/log"
echo "Paquets absents des dépots :" >>"${SCRIPT_PATH}/log"
cat "${SCRIPT_PATH}/noninstallable" >>"${SCRIPT_PATH}/log"
#suppression des fichiers temporaires
rm "${SCRIPT_PATH}/noninstallable"
rm "${SCRIPT_PATH}/noninstalle"
rm "${SCRIPT_PATH}/installe"
} 2>"${SCRIPT_PATH}/reinstall.error.log" #log d'erreur
exit 0
Ce script réinstalle en masse les paquets d'après la liste figurant dans le fichier guide. Il opère des vérifications sur la possibilité d'effectuer les installations et liste le résultat de ce qui a pu être installé ou pas dans un fichier de log.
Il n'y a pas à modifier ce script, il est valable pour la réinstallation sur toute distribution / version.
Ces deux scripts doivent être exécutés dans un terminal, en mode super-utilisateur, pour pouvoir procéder aux opérations de maintenance du système.
Prendre toutes les précautions utiles pour s'assurer de l'exécution correcte de tout outil permettant de modifier le système :
- Dans un premier temps, produire la liste des logiciels SANS LES SUPPRIMER afin de pouvoir vérifier cette liste avant toute modification.
- Lors de la réinstallation des logiciels dans une version différente du système, il est possible que certains ne puissent être réinstallés, c'est normal car d'une version à l'autre, des applications disparaissent des dépôts et d'autres viennent les remplacer. Il faut effectuer des vérifications pour contrôler ce qui a été réinstallé et ce qui n'a pas pu l'être.
Bonne continuation avec ces outils qui simplifient quand même bien la tâche...
😃