Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#651 Le 21/01/2016, à 15:59

jplemoine

Re : Nettoyage dans les noyaux (kernel)

ok. Merci. Je fais ça dans la soirée : je n'ai pas accès aux micros avant.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#652 Le 21/01/2016, à 19:05

jplemoine

Re : Nettoyage dans les noyaux (kernel)

Bon, j'ai fais la simulation : il y a 72 paquets qui "viennent" avec gksu
Les NOUVEAUX paquets suivants seront installés :

  acl at-spi2-core colord dbus-x11 dconf-gsettings-backend dconf-service
  gconf-service gconf-service-backend gconf2 gconf2-common gcr gksu
  gnome-keyring hicolor-icon-theme libatk-bridge2.0-0 libatk1.0-0
  libatk1.0-data libatspi2.0-0 libcairo-gobject2 libcolord1 libcolorhug1
  libdconf1 libexif12 libgconf-2-4 libgcr-ui-3-1 libgdk-pixbuf2.0-0
  libgdk-pixbuf2.0-common libgksu2-0 libgnome-keyring-common libgnome-keyring0
  libgphoto2-6 libgphoto2-l10n libgphoto2-port10 libgtk-3-0 libgtk-3-bin
  libgtk-3-common libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libgtop2-7
  libgtop2-common libgudev-1.0-0 libgusb2 libieee1284-3 libjasper1 liblcms2-2
  libp11-kit-gnome-keyring libpam-gnome-keyring libpolkit-agent-1-0
  libpolkit-backend-1-0 libsane libsane-common libstartup-notification0
  libv4l-0 libv4lconvert0 libwayland-client0 libwayland-cursor0 libx11-xcb1
  libxcb-util0 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxi6
  libxinerama1 libxkbcommon0 libxrandr2 libxtst6 p11-kit p11-kit-modules
  policykit-1 x11-common

- Je confirme que la version d'avant est installée sans problème
- Je suis incapable de savoir si on peut ou pas installer ces paquets (si ça tient ou pas beaucoup de place).

Mais je suis incapable


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#653 Le 21/01/2016, à 19:08

f.x0

Re : Nettoyage dans les noyaux (kernel)

Et que donne

sudo apt-get install --no-install-recommends -s gksu

SOPI

Hors ligne

#654 Le 21/01/2016, à 19:19

jplemoine

Re : Nettoyage dans les noyaux (kernel)

Pour info : en version 3.6, il n'y avait pas de problème : ça s'installait tel quel.
@f.x0 : je tente et je te dis ce qu'il en est.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#655 Le 21/01/2016, à 19:25

jplemoine

Re : Nettoyage dans les noyaux (kernel)

ça donne :

user@machine:~# sudo apt-get install --no-install-recommends -s gksu
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Vous pouvez lancer « apt-get -f install » pour corriger ces problèmes :
Les paquets suivants contiennent des dépendances non satisfaites :
 gksu : Dépend: libgksu2-0 (>= 2.0.8) mais ne sera pas installé
        Dépend: libgtk2.0-0 (>= 2.8.0) mais ne sera pas installé
E: Dépendances non satisfaites. Essayez « apt-get -f install » sans paquet
(ou indiquez une solution).
user@machine:~# 

Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#656 Le 24/01/2016, à 16:23

Hoper

Re : Nettoyage dans les noyaux (kernel)

Fais ce qu'il te demande depuis le début smile
sudo apt-get install -f

La version 3.6 est vielle ! Tu avais 4 versions de retard tongue


Mes tutos et coups de gueule :
http://hoper.dnsalias.net/atdc/
Mastodon: @hoper@framapiaf.org

Hors ligne

#657 Le 25/01/2016, à 10:29

nany

Re : Nettoyage dans les noyaux (kernel)

Oui, il ne me semble pas que le .deb soit responsable de tous ces paquets graphiques qui cherchent à s’installer.

Ceci dit, afin d’éviter d’ajouter gksu (qui, de surcroît, est déprécié, mais plus simple à mettre en place que pkexec) sur un serveur, j’aurais tendance à procéder à l’installation comme ceci :

sudo wget -c -O /usr/bin/kclean http://hoper.dnsalias.net/tdc/public/kclean

(commande que l’on peut réitérer autant de fois que nécessaire si on a une connexion en carton, grâce à l’option -c), puis,

sudo chmod +x /usr/bin/kclean

Et le tour est joué : kclean est utilisable en console, le cas est même prévu si par mégarde on utilise l’option -g ou --gui.
wink

Hors ligne

#658 Le 25/01/2016, à 11:32

jplemoine

Re : Nettoyage dans les noyaux (kernel)

@Hoper : ok, je teste ASAP
@nany : ce n'est pas le .deb de manière directe. Le .deb demande gksu (qui, évidement, n'est pas installé dans le cadre d'un serveur) et c'est gksu qui demande des dépendances graphiques (et évidement ne sont pas installées)
Mon problème est que je ne veux pas surcharger le serveur mais que je suis incapable de savoir si les dépendances prennent beaucoup de place ou pas...
Au vu de vos réponses, je fais faire le install -f ...
nany : ta première commande permet d'installer le script "à la main" sans passer par le .deb ?


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#659 Le 25/01/2016, à 12:48

Hoper

Re : Nettoyage dans les noyaux (kernel)

jplemoine : Oui, tu peux aussi télécharger directement le script, le mettre ou tu veux et l'utiliser tel quel. Il te manquera simplement l'icone etc, mais comme tu n'a pas d'interface graphique, ce n'est pas un soucis. Donc effectivement, c'est aussi une solution. Cela dit, si tu as déjà fait le "-f", tu as du constater qu'il ne t'a pas installé cinquante mille trucs en plus...

Le script est toujours téléchargeable depuis la page officiel de kclean, ici :
https://hoper.dnsalias.net/tdc/index.php?pages/kclean
(si il te pose des questions vis à vis du certificat, tu répond oui wink
Je compte régler ce problème bientot...


Mes tutos et coups de gueule :
http://hoper.dnsalias.net/atdc/
Mastodon: @hoper@framapiaf.org

Hors ligne

#660 Le 25/01/2016, à 13:12

jplemoine

Re : Nettoyage dans les noyaux (kernel)

Finalement, je vais voir si la commande de nany qui dépose le script au bon endroit n'est pas la méthode la plus efficace :
ça m'évitera d'installer des dépendances graphiques.
@Hoper : je n'ai pas fait le -f : je n'étais pas là ce week-end et je n'avais pas ton go (ou de quelqu'un d'autre) : je ne sais pas si les paquets étaient gros ou pas.
J'avais pas précisé que le "serveur" en question est en fait un "vieux" PC (2003 de mémoire) que j'utilise avec une version d'Ubuntu serveur : j'essaie donc de ne pas prendre trop de disque.
Il me sert de :
- serveur DHCP
- serveur DNS
- sauvegarde de mon "home"
- dépôt local


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#661 Le 25/01/2016, à 13:23

nany

Re : Nettoyage dans les noyaux (kernel)

jplemoine a écrit :

nany : ta première commande permet d'installer le script "à la main" sans passer par le .deb ?

Voui. big_smile
wget va chercher le script à l’adresse hoper.dnsalias.net/tdc/public/kclean et le place directement dans /usr/bin (option -O), d’où l’importance de l’exécuter en sudo.
Après, comme l’a dit Hoper, on peut le récupérer en https mais, comme il s’agit d’un certificat autosigné, wget va se mettre à gueuler à moins de lui ajouter l’option --no-check-certificate.
Ce qui donne pour le lien https :

sudo wget -c --no-check-certificate -O /usr/bin/kclean https://hoper.dnsalias.net/tdc/public/kclean

Hors ligne

#662 Le 25/01/2016, à 13:29

nany

Re : Nettoyage dans les noyaux (kernel)

jplemoine a écrit :

- dépôt local

C’est bien ce qui me semblait que c’était toi qui avais une connexion plutôt faiblarde et que tu as mis un dépôt local pour palier à cet inconvénient. D’où mon ajout de l’option -c pour wget qui permet de reprendre le téléchargement où il en était (au lieu de recommencer le téléchargement complet) en cas de pépin.

Hors ligne

#663 Le 25/01/2016, à 14:05

Hoper

Re : Nettoyage dans les noyaux (kernel)

C’est bien ce qui me semblait que c’était toi qui avais une connexion plutôt faiblarde et que tu as mis un dépôt local pour palier à cet inconvénient

Pour un script de quelques octets... Mais j'aime ce soucis du détail smile


Mes tutos et coups de gueule :
http://hoper.dnsalias.net/atdc/
Mastodon: @hoper@framapiaf.org

Hors ligne

#664 Le 25/01/2016, à 14:19

nany

Re : Nettoyage dans les noyaux (kernel)

Hoper a écrit :

Pour un script de quelques octets...

Oui, l’opion -c est laaaargement superflue pour ce petit script, même pour jplemoine je pense. Ceci dit, j’ai depuis longtemps pris l’habitude de la mettre quasi-sytématiquement, au cas où. De toute façon, ça ne mange pas de pain.

Mais j'aime ce soucis du détail smile

big_smile

Hors ligne

#665 Le 25/01/2016, à 16:39

jplemoine

Re : Nettoyage dans les noyaux (kernel)

nany a écrit :
jplemoine a écrit :

- dépôt local

C’est bien ce qui me semblait que c’était toi qui avais une connexion plutôt faiblarde et que tu as mis un dépôt local pour palier à cet inconvénient.

Le dépot local, c'est "juste" pour utiliser la connexion la nuit (vers 2h du mat) pour télécharger les mises à jour et utiliser ma connexion pour moi dans la journée.
En ce qui concerne ma connexion faiblarde, j'ai y remédier : Adieu l'ADSL et bonjour la fibre (débit mesuré : 80Mb/s en descendant et 5 mb/s en montant : c'est donné pour 100 mb/s mais de mémoire, j'ai jamais réussi à dépasser les 80).


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#666 Le 25/01/2016, à 16:48

nany

Re : Nettoyage dans les noyaux (kernel)

Ah ben j’ai l’air de quoi avec mon option -c, alors ? lol

Con, tout simplement. big_smile

Hors ligne

#667 Le 25/01/2016, à 21:09

jplemoine

Re : Nettoyage dans les noyaux (kernel)

Non. je prends la commande, l'option -c et tout, et tout....
C'est pas parce que à ma maison, j'ai une connexion que ça sera toujours le cas.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#668 Le 25/01/2016, à 21:34

nany

Re : Nettoyage dans les noyaux (kernel)

T’as raison, en ce moment c’est les soldes. Je fais -70% sur le package complet.

N’oublie pas de m’envoyer ton numéro de carte bancaire (sans oublier les trois chiffres derrière) avec ton code secret. tongue

Hors ligne

#669 Le 25/01/2016, à 23:44

jplemoine

Re : Nettoyage dans les noyaux (kernel)

nany a écrit :

avec ton code secret.

Si j e t'envoie le code, il ne sera plus secret... smile !!!
Si j'attends encore, il y aura peut-être un seconde démarque... (même à 70%, c'est trop cher)  : à -110%, je prends !!!


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#670 Le 03/02/2016, à 09:11

nany

Re : Nettoyage dans les noyaux (kernel)

jplemoine, dans un autre topic (/viewtopic.php?pid=21450583#p21450583), a écrit :

[HS] les lignes de commandes que tu m'as données l'autre fois pour installation dans une version serveur fonctionne à la condition sine qua non de supprimer l'ancienne version[/HS]

Ah ?
Je ne maîtrise pas suffisamment wget mais il est possible en effet qu’il détecte la présence du fichier et crée une copie plutôt que d’écraser celui-ci. Dans ce cas, peut-être que ça marcherait mieux sous cette forme :

sudo bash -c 'wget -c -O - http://hoper.dnsalias.net/tdc/public/kclean > /usr/bin/kclean'

ou, pour la version https :

sudo bash -c 'wget -c --no-check-certificate -O - https://hoper.dnsalias.net/tdc/public/kclean > /usr/bin/kclean'


EDIT : après une courte vérification, il m’apparaît que ce serait plutôt l’option -c de wget qui détecte la présence du fichier et qui fait que wget décide alors de ne pas procéder au téléchargement. Du coup, je me demande si cette option est vraiment utile dans le petit correctif que je viens de proposer.

Dernière modification par nany (Le 03/02/2016, à 09:17)

Hors ligne

#671 Le 03/02/2016, à 09:41

moko138

Re : Nettoyage dans les noyaux (kernel)

-c est très utile pour reprendre le téléchargement interrompu d'un fichier long à télécharger.
Si le fichier téléchargé est complet, wget s'arrête.

Donc il est clair qu'il n'est pas conçu pour ce qui est évoqué ici. Ou alors il faut télécharger dans répertoire-temporaire puis déplacer dans répertoire-final.


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#672 Le 20/03/2016, à 18:18

KHAMSA

Re : Nettoyage dans les noyaux (kernel)

Bonjour à tous,


@Hoper #626:"Il(kclean) fait un seul truc simple, mais sans prise de tête pour l'utilisateur.


toute une philosophie,je l'ai enfin découvert hier... grand merci pour ce tuto.

Jacques.

Hors ligne

#673 Le 24/03/2016, à 09:15

Hoper

Re : Nettoyage dans les noyaux (kernel)

toute une philosophie

Ca s'appelle KISS:
https://fr.wikipedia.org/wiki/Principe_KISS
Et c'est utilisé depuis la nuit des temps sous unix.
En résumé, une commande égale une fonction.
Chaque programme ne fait donc qu'une seule chose, mais il essaye de la faire bien. C'est pour cela que tu trouvera des milliers de commandes sous linux, plutôt que de gros "programmes usines à gaz" qui essayent de savoir tout faire.

Toute la puissance ensuite vient de la possibilité de combiner les commandes grace au shell smile


Mes tutos et coups de gueule :
http://hoper.dnsalias.net/atdc/
Mastodon: @hoper@framapiaf.org

Hors ligne

#674 Le 24/03/2016, à 13:00

JLK

Re : Nettoyage dans les noyaux (kernel)

Hoper a écrit :

toute une philosophie

Ca s'appelle KISS:
https://fr.wikipedia.org/wiki/Principe_KISS
Et c'est utilisé depuis la nuit des temps sous unix.
En résumé, une commande égale une fonction.
Chaque programme ne fait donc qu'une seule chose, mais il essaye de la faire bien. C'est pour cela que tu trouvera des milliers de commandes sous linux, plutôt que de gros "programmes usines à gaz" qui essayent de savoir tout faire.

Toute la puissance ensuite vient de la possibilité de combiner les commandes grace au shell smile

Tout à fait, et c'est mieux ainsi.

Hors ligne

#675 Le 01/04/2016, à 09:22

lynn

Re : Nettoyage dans les noyaux (kernel)

Bonjour Hoper,

Merci pour ton script dont je me sers régulièrement. Je me suis permise d'y apporter quelques petites corrections orthographiques pour mon utilisation personnelle. smile

#!/bin/bash

# Historique :
# 1.0 : Mode texte uniquement
# 2.0 : Ajout du mode graphique
# 2.1 : Légères modifications cosmétiques
# 2.2 : Support des kernel 3.X, ajout de --keep-prev
# 3.0 : Utilisation de getopts, refonte du mode terminal, ajout d'un lanceur
# 3.1 : Gestion des nouvelles options en mode graphique, mode term par défaut
# 3.2 : Prise en compte des paquets linux-image-extra* et ajout de --version
# 3.3 : Arrêt du script si un noyau > au courant est trouvé, ajout des 4.X
# 3.4 : Correction de : if [ "FORCE_YES" = "VRAI" ] (Ne provoquait qu'un bug d'affichage)
# 3.5 : Calcul de l'espace disque théoriquement libéré
# 3.6 : Correctifs (suppression non fonctionelle en mode graphique)
# 3.7 : Ajout d'un icône et de la dépendance à gnome-sudo
# 3.8 : dpkg -p devient dpkg -s
# 3.9 : Prise en compte des noyaux "signed" et "lowlatency"
# 4.0 : Voir: https://forum.ubuntu-fr.org/viewtopic.php?id=242358&p=26

CURRENT_VER=4.0

## Bugs connus
# Une fois les suppressions lancées en mode graphique,
# il n'est pas possible de les interompre 
# L'option force-yes ne fonctionne qu'en mode texte

###################
# Fonctions
###################

function clean_exit
{
    rm -f /tmp/clean_kernel.tmp
    exit $1
}

function display_syntaxe 
{
echo " "
echo " Syntaxe : $0 [options]"
echo " Options disponibles : "
echo "	-t	--term		Lance le script en mode console (mode par défaut)"
echo "	-g	--gui		Lance le script en mode graphique"
echo "	-k	--keep-prev	Conserve automatiquement le noyau précédent" 
echo "	-s	--simulate	Aucune suppression reelle, simple simulation"
echo "	-h	--help		Affichage de la syntaxe"
echo "	-f	--force-yes	Suppression sans aucune demande de confirmation !"
echo "	-v	--version	Informations sur les versions"
echo " "
echo " Exemple d'utilisation en ligne de commande : sudo kclean -k "
echo " "
}

function remove_kernel
{
echo " "
echo " Suppression en cours :"
echo " "
for i in `grep -v "$KERNEL" /tmp/clean_kernel.tmp`
do
    if [ "$SIMULATE" = "VRAI" ]
    then
        echo "Suppression du paquet $i (simple simulation...)  "
    else
        apt-get remove --yes --purge $i
    fi
done
echo " "
echo " -------------- Suppression effectuée ---------------"
echo " "
clean_exit 0
}

# interpretation des parametres

TERMINAL="VRAI"
KEEP_PREV="FAUX"
SIMULATE="FAUX"
HELP="FAUX"
FORCE_YES="FAUX"
VERSION="FAUX"

while getopts ":tgksvf-:" OPT 
do
    # gestion des options longues avec ou sans argument
    [ $OPT = "-" ] && case "${OPTARG%%=*}" in
        term) OPT="t" ;;
        gui) OPT="g" ;;
        keep-prev) OPT="k" ;;
        simulate) OPT="s" ;;
        help) OPT="h" ;;
        force-yes) OPT="f" ;;
        version) OPT="v" ;;
        *) display_syntaxe ; clean_exit 1 ;;
    esac
    # puis gestion des options courtes
    case $OPT in
        t) ;;
        g) TERMINAL="FAUX"  ;;
        k) KEEP_PREV="VRAI" ;;
        s) SIMULATE="VRAI" ;;
        h) HELP="VRAI" ;;
        f) FORCE_YES="VRAI" ;;
        v) VERSION="VRAI" ;;
        *) display_syntaxe ; clean_exit 1 ;;
    esac
done 

## Aide

if [ "$HELP" = "VRAI" ]
then
    display_syntaxe
    clean_exit 0
fi

## Version

if [ "$VERSION" = "VRAI" ]
then
    echo " "
    echo "kclean version $CURRENT_VER"
    head -19 $0 | grep -v bash
    clean_exit 0
fi


## Le script a t-il bien ete lance en tant que root ?

if [ "$USER" != "root" -a "$SIMULATE" = "FAUX" ]
then
    echo " "
    echo " Erreur : Vous devez avoir les droits de root pour supprimer des paquets"
    echo " Avez-vous oublié sudo devant le nom du script ?"
    echo " "
    clean_exit 2
fi

## Traitements communs

KERNEL=`uname -r | cut -d '-' -f 1,2`
dpkg -l | grep linux | grep ubuntu | grep ii | awk '{print $2}' | grep -E '2\.6|3\.|4\.' >/tmp/clean_kernel.tmp
dpkg -l | grep linux | grep restricted | grep ii | awk '{print $2}' | grep -E '2\.6|3\.|4\.' >>/tmp/clean_kernel.tmp
dpkg -l | grep linux | grep image| grep ii | awk '{print $2}' | grep -E '2\.6|3\.|4\.' >>/tmp/clean_kernel.tmp
dpkg -l | grep linux | grep headers | grep ii | awk '{print $2}' | grep -E '2\.6|3\.|4\.' >>/tmp/clean_kernel.tmp
dpkg -l | grep linux | grep tools | grep ii | awk '{print $2}' | grep -E '2\.6|3\.|4\.' >>/tmp/clean_kernel.tmp

#On supprime immediatement de la liste le noyau courant :
sed -i -e /$KERNEL/D /tmp/clean_kernel.tmp

#On cherche le noyau precedent
NB_KERNEL=`dpkg -l | grep linux | grep image | grep ^ii | egrep -v "extra|signed|lowlatency" | awk '{print $2}' | grep -E '2\.6|3\.|4\.' | wc -l`
if [ $NB_KERNEL -eq 1 ]
then
    PREVIOUS_V=""
else
    PREVIOUS_V=`dpkg -l | grep linux | grep image | grep ^ii | egrep -v "extra|signed|lowlatency" | awk '{print $2}' | grep -E '2\.6|3\.|4\.' | sort -V | tail -2 | head -1 | cut -d '-' -f3,4`
fi

# On cherche le noyau le plus recent pour le comparer au noyau courant
LAST_KERNEL=`dpkg -l | grep linux | grep image | grep ^ii | egrep -v "extra|signed|lowlatency" | awk '{print $2}' | grep -E '2\.6|3\.|4\.' | sort -V | tail -1 | cut -d '-' -f 3,4`

########  Mode texte ############

if [ "$TERMINAL" = "VRAI" ]
then
    echo " "
    echo "Noyau actuellement en cours d'utilisation : $KERNEL"
    echo "Par défaut, seul ce noyau est conservé."
    echo " "

    if [ "$LAST_KERNEL" != "$KERNEL" ]
    then
    if [ "$FORCE_YES" = "VRAI" ]
        then 
        echo "ATTENTION : Présence de noyau(x) plus récent(s) sur le système."
        echo "Ce script va néanmoins poursuivre (utilisation du -f)"
        else
            echo "ATTENTION : Au moins un noyau plus récent ( $LAST_KERNEL ) a été détecté."
            echo "Ce phénomène peut avoir plusieurs causes mais, par securité,"
            echo "ce script va s'arrêter."
            echo " "
            echo "Si vous comprenez exactement ce qui se passe,"
            echo "et si vous souhaitez reelement supprimer tous les noyaux"
            echo "y compris les plus récents, utilisez l'option -f seule."
            clean_exit 4
        fi
    fi

    if [ "$KEEP_PREV" = "VRAI" ]
    then
        echo "Ce script va tenter de trouver la version précédente du noyau pour la conserver."
        if [ "$FORCE_YES" = "FAUX" ]
        then
            echo "Verifiez les informations fournies avant de valider la suppression."
        fi
        echo " "
        if [ -z "$PREVIOUS_V" ]
        then
            echo "Aucune version précédente trouvée, il n'y a donc rien à supprimer."
            echo "Abandon."
            echo " "
            clean_exit 0
        fi
        echo "La version précédemment installée (à conserver) est la version : $PREVIOUS_V"
        sed -i -e /$PREVIOUS_V/D /tmp/clean_kernel.tmp
    fi
 
    if [ `cat /tmp/clean_kernel.tmp |wc -l` -eq 0 ]
    then
        echo "Aucun noyau à supprimer."
        echo "Abandon."
        echo " "
        clean_exit 0
    fi

    #Calcul de l'espace libere
    ESPACEKB=0
    for i in `grep -v "$KERNEL" /tmp/clean_kernel.tmp`
    do
        ESPACEKB=$(($ESPACEKB+`dpkg -s $i | grep Installed-Size | awk '{print $2}'`))
    done
    ESPACEMB=$(($ESPACEKB / 1024))

    echo "Les paquets suivants vont être supprimés :"
    echo " "
    cat /tmp/clean_kernel.tmp | sed -e "s@^@    @g"
    echo " "
    echo "Cela devrait libérer environ $ESPACEMB MiB d'espace disque"
    echo " "
    
    ## Mode non interactif

    if [ "$FORCE_YES" = "VRAI" ]
    then 
        remove_kernel
    fi

    ## Mode interactif

    echo -n " Voulez-vous indiquer manuellement des paquets à conserver ? [o/N] :"
    read REP
    if [ "$REP" = "o" -o "$REP" = "O" ]
    then
        echo " Indiquez la liste des paquets à conserver en les séparant par un espace : "
        read REP
        for i in `echo "$REP"`
        do
            sed -i -e /$i/D /tmp/clean_kernel.tmp
        done
        echo " "
        echo " Voila la liste des paquets qui seront donc supprimés :"
        echo " "
        grep -v "$KERNEL" /tmp/clean_kernel.tmp | sed -e "s@^@    @g"
        echo " "
    fi
    echo -n " Voulez-vous supprimer l'ensemble des paquets indiqués ? [o/N] :"
    read REP
    if [ "$REP" = "o" -o "$REP" = "O" ]
    then
        remove_kernel
    else
        echo " "
        echo " Abandon de l'opération..."
        echo " "
        clean_exit 0
    fi
else
	
    ############### Mode graphique ##################

    ## On verifie que zenity est installé
    which zenity > /dev/null
    if [ $? -ne 0 ]
    then
        echo " "
        echo " le mode graphique nécessite zenity pour fonctionner."
        echo " Installez zenity ou utilisez uniquement le mode texte."
        echo " "
        clean_exit 3
    fi

    ## On verifie qu'un display graphique est disponible
    if [ -z "$DISPLAY" ]
    then
        echo " "
        echo " Aucun serveur graphique disponible (variable DISPLAY vide)"
        echo " Si vous utilisez un serveur en mode texte uniquement,"
        echo " vous pouvez utiliser ce logiciel en mode console en tapant:"
        echo " "
        echo " $0 --term"
        echo " "
        clean_exit 3
    fi

    ## As t-on bien les droits admin ?
    if [ $USER != "root" ]
    then
        zenity --error --text="Ce programme nécessite les droits root pour fonctioner.\nRelancer-le en tapant : gksudo $0"
        clean_exit 2
    fi

    if [ "$LAST_KERNEL" != "$KERNEL" ]
    then
        zenity --error --text="Vous utilisez actuellement le noyau $KERNEL\nOr, au moins un noyau plus récent ( $LAST_KERNEL ) a été détecté.\nCe phénomène peut avoir plusieurs causes mais,\npar securité, ce script va s'arrêter.\n\nSi vous souhaitez réelement supprimer ce (ou ces) noyau(x),\nlancez kclean en ligne de commande."
        clean_exit 4
    fi
    
    ## Faut il conserver le noyau precedent ?
    if [ "$KEEP_PREV" = "FAUX" ]
    then
        zenity --question --text "Voulez-vous conservez le noyau précédent ?"
        if [ $? -eq 0 ]
        then
            KEEP_PREV="VRAI"
        fi
    fi
    
    ## Y a t-il vraiment des paquets à supprimer ?
    ## Si il faut conserver le noyau precedent, on le supprime de a liste

    if [ "$KEEP_PREV" = "VRAI" -a ! -z "$PREVIOUS_V" ]
    then
        sed -i -e /$PREVIOUS_V/D /tmp/clean_kernel.tmp
    fi

    TEXT="Le noyau actuellement utilisé a pour version : <b>$KERNEL</b>.\n"
    if [ "$KEEP_PREV" = "VRAI" -a ! -z "$PREVIOUS_V" ]
    then
        TEXT="$TEXT Le noyau précédent a pour version : $PREVIOUS_V.\n"
    fi
    TEXT="$TEXT Aucun paquet faisant référence à un noyau plus ancien n'a été trouvé sur le système...\n\nAppuyez sur VALIDER pour quitter le programme."

    if [ -z "`grep -v "$KERNEL" /tmp/clean_kernel.tmp`" ]
    then
        zenity --info --title "Nettoyage dans les noyaux..." \
        --text="$TEXT"
        clean_exit 0
    fi

    ## Oui, il y a des paquets à supprimer...

    if [ "$FORCE_YES" = "VRAI" ]
    then
        TEXT="ATTENTION : L'option -f (force-yes) n'est pas prise en compte en mode graphique."
        zenity --warning --width=500 --height=200 --title "Nettoyage dans les noyaux..." --text="$TEXT"
    fi

    LISTE_PAQUET=""
    ## Construction de la liste des paquets a supprimer pour zenity
    ESPACE_TOTAL=0
    for i in `grep -v "$KERNEL" /tmp/clean_kernel.tmp` 
    do
	ESPACEKB=`dpkg -s $i | grep Installed-Size | awk '{print $2}'`
        ESPACE_TOTAL=$(($ESPACE_TOTAL+$ESPACEKB))
        ESPACEMB=$(($ESPACEKB / 1024))
        LISTE_PAQUET="$LISTE_PAQUET TRUE $i $ESPACEMB"
    done
    ESPACE_TOTAL=$(($ESPACE_TOTAL / 1024))
    TEXT="Vous utilisez actuellement la version <b>$KERNEL</b> de Linux.\n"
    if [ "$KEEP_PREV" = "VRAI" ]
    then
        TEXT="$TEXT Le noyau précédent a pour version : $PREVIOUS_V, il sera conservé.\n"
    fi
    TEXT="$TENT En cliquant sur <b>Valider</b> les paquets suivants seront supprimés:"

    CHOIX=$(zenity \
    --title "Nettoyage dans les noyaux" \
    --text="$TEXT" \
    --width=500 --height=400 \
    --list --print-column="3" --checklist --separator=' ' \
    --column="Supprimer" \
    --column="Nom des paquets" \
    --column="MiB" \
    --print-column=2 \
    $LISTE_PAQUET )

    ## Si on clic sur Annuler...
    if [ $? -ne 0 ]
    then
        clean_exit 2
    fi
    ## Sinon
    
    NBSUP=`echo $CHOIX | wc -w`
    PROGRES=0
    INCREMENT=`expr 100 / $NBSUP`
    (
    for i in `echo $CHOIX`
    do
        if [ "$SIMULATE" = "FAUX" ]
        then
            apt-get remove --purge --yes "$i" >/dev/null 2>&1
        fi
        PROGRES=$(($PROGRES+$INCREMENT))
        echo "$PROGRES"
        echo "# Suppression de $i"
    done
    ) | 
    zenity --progress --width=420 --auto-close --percentage=0 \
    --text="Suppression des paquets sélectionnés..."

    if [ "$SIMULATE" = "FAUX" ]
    then
        TEXTE_FINAL="Les paquets sélectionnés ont bien été supprimés.\nSi tout était coché, vous avez libéré $ESPACE_TOTAL MiB sur le disque."
    else
        TEXTE_FINAL="Mode simulation terminé, aucun paquet supprimé."
    fi
    
    zenity --info --title "Nettoyage dans les noyaux..." \
    --text="$TEXTE_FINAL"
    clean_exit 0
fi

«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne