Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

#301 Le 14/05/2013, à 10:08

fnux

Re : Nettoyage dans les noyaux (kernel)

Salut Hoper,

Hoper a écrit :

Merci pour le temps que tu y a passé smile

Il n'y a pas de quoi.

D'une part, cela m'a fait plaisir de le faire ne serait-ce que pour mon propre usage, et d'autre part cela ne m'a pas pris beaucoup de temps.

Et en plus, ça m'a même appris pas mal de choses pour mon propre script.

Donc un merci réciproque.

Hoper a écrit :

Une version bilingue (qui choisirai la langue en fonction des variables d’environnement) serait évidement le top du top. En attendant je récupérer cette version la et la proposer en parallèle de la vf. Il est bien possible que cette version devienne celle de référence, l'anglais est beaucoup moins prise de tête à maintenir que le français (accents, fautes etc)... big_smile

Faire une version multi-lingues n'est pas compliqué à faire si tu me dis comment récupérer la langue (ça me servira aussi pour mon propre script). wink

D'autre part, cela mérite aussi de revoir un petit peu l'ordonnancement des messages d'une part pour ne pas en oublier, et d'autre part pour rendre soit la maintenance, soit l'ajout d'une ou de plusieurs langues facile à faire.

Autre petit "glich" de ton script : je crois avoir vu vite fait que le "deb" affiche un petit message de warning avec Ubuntu 12.10 et ultérieure lors de son install, mais je dois revérifier. Mais ne t'inquiète pas trop car le "deb" s'installe quand même.

Bon, je regarde un peu plus tard comment te proposer une version multi-lingue (d'ici ce soir ou demain).

A+

PS: Au fait, j'ai supprimé le lien que tu donnais "# thx http://v0n.posterous.com/bash-gerer-les-options-longues-avec-ou-sans-a" car il ne fonctionne plus. Et il faudrait aussi que tu ajoutes ton mail (et/ou ton site web) ainsi éventuellement qu'une licence. Perso j'utilise celle de CC.

Dernière modification par fnux (Le 14/05/2013, à 10:16)


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately
FWPBLA - The French West Palm Beach Linux Association.

Hors ligne

#302 Le 14/05/2013, à 12:30

Hoper

Re : Nettoyage dans les noyaux (kernel)

Pour connaitre la langue de l'utilisateur (à vérifier, et il doit y avoir plus simple) mais je partirai sur un truc de ce genre :

env | grep LANGU | cut -d'=' -f2

Pour mon site web, c'est dans ma signature smile
Plus précisément, la page dédiée à kclean est ici :
http://hoper.dnsalias.net/tdc/index.php?pages/kclean

Quand à la licence, je ne m'y suis jamais intéressé, mais c'est en gros comme tout le reste : Les gens font ce qu'ils veulent avec ! Ce qui permet de vite distinguer les gens "normaux" à tendance sympa (qui prennent la peine d'indiquer d'ou vient le boulot d'origine) de tous les autres wink


Mes tutos et coups de gueule :
http://hoper.dnsalias.net/tdc/

Hors ligne

#303 Le 14/05/2013, à 14:27

cep

Re : Nettoyage dans les noyaux (kernel)

Hoper a écrit :

Pour connaitre la langue de l'utilisateur (à vérifier, et il doit y avoir plus simple) mais je partirai sur un truc de ce genre :

env | grep LANGU | cut -d'=' -f2

echo $LANG

:~$ echo $LANG
fr_FR.UTF-8

Hors ligne

#304 Le 14/05/2013, à 20:27

fnux

Re : Nettoyage dans les noyaux (kernel)

Salut cep,

cep a écrit :

echo $LANG

:~$ echo $LANG
fr_FR.UTF-8

Merci de l'info.

Ce qui m'intéresserait surtout, ce serait d'avoir quelque chose comme ça :

LANGUAGE=sed bla bla bla de $LANG

pour n'obtenir que les deux premiers caractères et dans le cas de ton exemple, seulement le premier "fr".

exemple : 

:~$ LANGUAGE= sed bla bla bla de $LANG
:~$echo $LANGUAGE
fr

Hé woui, je ne suis pas encore un bon en sed ! roll


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately
FWPBLA - The French West Palm Beach Linux Association.

Hors ligne

#305 Le 14/05/2013, à 20:36

fnux

Re : Nettoyage dans les noyaux (kernel)

Re salut Hoper,

Hoper a écrit :

Pour connaitre la langue de l'utilisateur (à vérifier, et il doit y avoir plus simple) mais je partirai sur un truc de ce genre :

env | grep LANGU | cut -d'=' -f2

A priori, la variable $LANG indiquée ci-dessus par cep (en passant, merci à lui) répond au problème.

Hoper a écrit :

Pour mon site web, c'est dans ma signature smile
Plus précisément, la page dédiée à kclean est ici :
http://hoper.dnsalias.net/tdc/index.php?pages/kclean

J'ai regardé très rapidement ton site web (qui est superbe) mais (j'ai toujours un mais) il est tout en Français (ce qui en soit n'est pas un reproche, bien sur).

Cependant, pour ton script, si celui-ci est utilisé à l'international (comme il le devrait naturellement), mettre seulement ton site pour te joindre n'est pas l'idéal.

Aussi, je pense qu'il faut surement indiquer ton mail (STP passe le moi par e-mail si tu le veux bien à : fnux.fl @ gmail.com).

Hoper a écrit :

Quand à la licence, je ne m'y suis jamais intéressé, mais c'est en gros comme tout le reste : Les gens font ce qu'ils veulent avec ! Ce qui permet de vite distinguer les gens "normaux" à tendance sympa (qui prennent la peine d'indiquer d'ou vient le boulot d'origine) de tous les autres wink

Ca, c'est pas bien mon ami.

Utiliser une licence très simple comme celle de "CC-By-Sa" ne te protège de rien du tout, mais a au moins le mérite de dire clairement que tu aimerais bien que ton boulot soit reconnu.

Surtout que d'après ce que j'ai lu du début de ce thread jusqu'à maintenant, tu y es depuis le 6 août 2008 (soit bientôt 5 ans que tu as lancé ce projet, ce qui démontre ta persévérance). Bravo.

Pour ma part, je crois que ça a le mérite d'être mentionné et si tu ne le fais pas, je le ferai pour toi car le mérite te revient.

Maintenant, bien sur que les malotrus s'en foutent, mais on ne refera pas le monde aujourd'hui ! tongue

Bon, je ne veux pas t'obliger, mais pense y quand même.

C'est dans l'intérêt de la diffusion de ton script.

A part ça, j'ai terminé la mise en fonction de l'affichage des messages (en en corrigeant certains au passage). wink

Je pense donc pouvoir te proposer une première version multi-lingue (pour l'instant Anglais - Français) à tester d'ici la fin de la semaine car je dois maintenant comprendre tout le cheminement de ton script pour remodeler ton code via des fonctions afin de pouvoir afficher les messages aux bons endroits (ce qui n'est pas tout à fait le cas pour moi à ce moment précis avec mon premier proto).

Il sera ensuite (après correction) très facile d'y ajouter d'autre langues.

Voici donc très grossièrement une idée de ce pourrait être l'architecture de ce proto :

#!/bin/bash
#
# functions
#
function clean_exit() {
  rm -f /tmp/clean_kernel.tmp
  exit $1
}

function do_simulate() {
...
}

function do_gui() {
...
}

function do_terminal () {
...
}

function make_list() {
...
}

function ask_keep_current() {
...
}

function check_next () {
...
}

function check_previous() {
...
}

function check_current() {
...
}

function set_variables() {
...
}

function set_language() {
...
}

function check_zenity() {
...
}

function check_options() {
...
}

function check_interface() {
...
]

function check_root() {
...
}
#
# run script
#
check_root
check_interface
check_options
check_zenity
check_language
set_variables
check_current
check_previous
check_next
make_list
ask_keep_current
do_terminal
do_gui
do_simulate
clean_exit
#
# End of script
#

Si ça te convient, je vais bosser sur cette idée pour te proposer quelque chose qui soit très facile à maintenir et surtout à faire évoluer tout en conservant la plus grande majorité de ton code qui est excellent (c'est sans te blesser aucunement juste peut-être un tout petit peu "spaghetti" pour moi).

A ce propos, sais tu s'il existe un moyen d'exécuter un script en "pas à pas" pour voir là où il passe ?

Un debugger serait carrément génial mais je ne sais pas si ça existe.

Je te demandrai aussi certainement pas mal de petites précisions car je débute en bash depuis seulement 3 ou 4 semaines et je n'ai jamais utilisé zenity.

Si tu veux te rendre compte de ce que j'ai déjà fait, STP jette un petit coup d'oeil sur mon premier script (de 1220 lignes) que tu peux avoir ici : http://www.as2.com/linux/tools/G-WAN_fu … 1d.tar.bz2 et que tu dois décompresser avec la commande : tar -xjz. G-WAN_full-install-v1d.tar.bz2

Ce script est directement executable dans ton /home (où ailleurs) en entrant : "./G-WAN_full-install-v1d.sh"

Au fait, moi aussi je recherche des testeurs et surtout des critiques ! big_smile

J'ai encore beaucoup de choses à faire pour faire évoluer mon script comme par exemple le rendre plus interactif pour le choix de ses options (langages de programmation multiples à proposer et non pas à imposer), ajouter un mode graphique et aussi surtout l'adapter à d'autres distributions majeures comme ArchLinux, CentOS ou Fedora mais aussi aux "variantes" d'Ubuntu qui n'installent pas les mêmes paquets de base, et ton code m'a donné de bonnes inspirations pour y parvenir.

Donc c'est vraiment avec plaisir que je te propose de participer à ton projet.

En attendant, voici déjà les fonctions pour les messages :

function set_fr_messages() {
  DIALOG00=""
  DIALOG01="Syntaxe : $0 [options]"
  DIALOG02="Options disponibles : "
  DIALOG03=" -t	--term      Lance le script en mode console (mode par defaut)"
  DIALOG04=" -g	--gui       Lance le script en mode graphique"
  DIALOG05=" -k	--keep-prev	Conserve automatiquement le noyau precedent"
  DIALOG06=" -s	--simulate	Aucune suppression reelle, simple simulation"
  DIALOG07=" -h	--help      Affichage de la syntaxe"
  DIALOG08=" -f	--force-yes	Suppression sans aucune demande de confirmation !"
  DIALOG09=" -v	--version   Informations sur les versions"
  DIALOG10="Exemple d'utilisation en ligne de commande : sudo kclean -k "
  DIALOG11="Suppression en cours..."
  DIALOG12="Suppression du paquet $i (simple simulation...)"
  DIALOG13=" -------------- Suppression effectuee ---------------"
  DIALOG14="Version de kclean : $CURRENT_VER"
  DIALOG15="Erreur : Vous devez avoir les droits de root pour supprimer des noyaux"
  DIALOG16="Avez-vous oublie de saisir 'sudo' devant le nom du script ?"
  DIALOG17="Le noyau actuellement en cours d'utilisation est le : $KERNEL"
  DIALOG18="Par defaut, seul ce noyau est conserve."
  DIALOG19="ATTENTION : Presence de noyau(x) plus recent(s) sur votre systeme."
  DIALOG20="Ce script va cependant se poursuivre (utilisation de l'option -f)!"
  DIALOG21="ATTENTION : Il y a au moins un noyau plus recent : ( $LAST_KERNEL ) !"
  DIALOG22="Il peut y avoir plusieurs causes mais par securite le script va s'arreter."
  DIALOG23="Si vous savez ce que vous faite et si vous voulez supprimer tous les noyaux"
  DIALOG24="y compris les plus recents, utilisez l'option -f seule."
  DIALOG25="Ce script va chercher une version precedente du noyau pour la conserver."
  DIALOG26="Verifiez les informations fournies avant de valider la supression."
  DIALOG27="Aucune version precedente trouvee, il n'y a donc rien a supprimer."
  DIALOG28="Au revoir." # utlisé plusieurs fois
  DIALOG29="La version installee precedente (a conserver) est la version : $PREVIOUS_V"
  DIALOG30="Aucun noyau a supprimer."
  DIALOG31="Le(s) noyau(x) suivant(s) va (vont) etre supprimes :"
  DIALOG32="Voulez-vous entrer manuellement des noyaux à garder [O/N] (retour vide = Non) ? : "
  DIALOG33="Indiquez la liste des noyaux a conserver en les separant par un espace : "
  DIALOG34="Voici la liste des noyaux qui seront donc supprimes :"
  DIALOG35="Voulez-vous supprimer les paquets indiques ci-dessus [O/N] (retour vide = Non) ? : "
  DIALOG36="Abandon de la suppression..."
  DIALOG37="Le mode graphique necessite zenity pour fonctionner."
  DIALOG38="Merci d'installez zenity ou d'utilisez uniquement le mode texte."
  DIALOG39="Aucun serveur graphique disponible (variable DISPLAY vide)"
  DIALOG40="Si vous utilisez un serveur en mode texte uniquement, vous pouvez"
  DIALOG41="utiliser ce script en mode console en entrant:"
  DIALOG42="Ce script necessite les droits root pour fonctioner.\nRelancez le en entrant : sudo $0"
  DIALOG43="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'arreter.\n\nSi vous souhaitez réelement supprimer ce (ou ces) noyaux,\nlancez kclean en ligne de commande."
  DIALOG44="Voulez-vous conservez le noyau précédent ?"
  DIALOG45="Le noyau actuellement utilisé a pour version : <b>$KERNEL</b>.\n"
  DIALOG46="Le noyau précédent a pour version : $PREVIOUS_V.\n"
  DIALOG47="Aucun noyau plus ancien que celui en cours n'a été trouvé sur le système...\n\nAppuyez sur OK pour quitter le script."
  DIALOG48="Nettoyage dans les noyaux..."
  DIALOG49="ATTENTION : L'option -f (force-yes) n'est pas prise en compte en mode graphique."
  DIALOG50="Vous utilisez actuellement le noyau de Linux version <b>$KERNEL</b>.\n"
  DIALOG51="Le noyau précédent a pour version : $PREVIOUS_V et il sera conservé.\n"
  DIALOG52="Cliquez sur <b>Valider</b> pour supprimer le(s) noyau(x) suivant(s) :"
  DIALOG53="# Suppression de $i"
  DIALOG54="Suppression des paquets selectionés..."
  DIALOG55="Les paquets séléctionés ont bien étés supprimés."
  DIALOG56="Mode simulation terminé, aucun paquet supprimé."
  DIALOG57="Nettoyage dans les noyaux..."
}

function set_us_messages() {
	DIALOG00=""
	DIALOG01="Syntax : $0 [options]"
	DIALOG02="Available options: "
	DIALOG03=" -t	--term      Start the script in terminal mode (default)"
	DIALOG04=" -g	--gui       Start the script in graphical mode"
	DIALOG05=" -k	--keep-prev Automaticaly keep the previous kernel"
	DIALOG06=" -s	--simulate  No deletion, only a simple simulation"
	DIALOG07=" -h	--help      Display the help for the syntax"
	DIALOG08=" -f	--force-yes	Deletions are done whithout any confirmation!"
	DIALOG09=" -v	--version   Version information"
	DIALOG10="Command line sample: sudo kclean -ks"
  DIALOG11="Deletion in progress..."
  DIALOG12="Deletion of kernel $i (simple simulation...)"
  DIALOG13="-------------- Deletion done ---------------"
  DIALOG14="kclean version: $CURRENT_VER"
  DIALOG15="WARNING: You must have root privileges to delete kernels!"
  DIALOG16="Did you forget to use 'sudo' before the script name?"
  DIALOG17="The current kernel version in use is: $KERNEL"
  DIALOG18="By default, only this kernel is kept."
  DIALOG19="WARNING: There is (are) more recent kernel(s) on your system!"
  DIALOG20="However, the script will continue (you're using the option -f)"
  DIALOG21="WARNING: At least, one more recent kernel ( $LAST_KERNEL ) was detected!"
  DIALOG22="This may be for multiple causes but for security the script will end."
  DIALOG23="If you know excatly what you're doing and if you really want to delete"
  DIALOG24="all the kernels including the most recent, please use the -f option alone."
  DIALOG25="The script will look for a previous kernel version to keep it."
  DIALOG26="Please verify the given information prior to validate the deletion."
  DIALOG27="No previous kernel version found. So there is nothing to delete."
  DIALOG28="Good bye." # Used several times.
  DIALOG29="The previous installed kernel version to keep is: $PREVIOUS_V"
  DIALOG30="No kernel to delete!"
  DIALOG31="The following kernel(s) will be deleted:"
  DIALOG32="Do you wish to manualy select the kernel(s) to keep [Y/N] (empty return = No) ? : "
  DIALOG33="Please enter the list of kernel(s) to keep separated by a space: "
  DIALOG34="So, this is the list of the kernel(s) to delete:"
  DIALOG35="Do you wish to delete the selected kernel(s) above? [Y/N] (empty return = No) ? : "
  DIALOG36="Abort the deletion..."
  DIALOG37="The graphical mode needs zenity to work."
  DIALOG38="Please install zenity or use a terminal console."
  DIALOG39="No graphical server available (variable DISPLAY empty)"
  DIALOG40="If you're using a text mode server, you can use the script within a"
  DIALOG41="terminal console by entering:"
  DIALOG42="This script needs the root provileges to run.\nPlease restart the script with: sudo $0"
  DIALOG43="You currently use the kernel version $KERNEL\nbut at least one more recent kernel ( $LAST_KERNEL ) was detected.\nThis may be for multiple causes, but for security\nthe script will end.\n\nIf you really wish to deleted any more recent kernel,\nplease use kclean in a terminal console."
  DIALOG44="Do you wish to keep the previous kernel version?"
  DIALOG45="The currently used kernel version is: <b>$KERNEL</b>.\n"
  DIALOG46="The previous kernel version is: $PREVIOUS_V.\n"
  DIALOG47="No older kernel than the one in use was found on your system...\n\nPlease press OK to quit the script."
  DIALOG48="Cleaning the kernel(s)..."
  DIALOG49="WARNNG: The -f (force-yes) option isn't available in graphical mode."
  DIALOG50="You currently use the Linux kernel version <b>$KERNEL</b>\n"
  DIALOG51="The previous kernel has the version: $PREVIOUS_V and will be kept.\n"
  DIALOG52="Click <b>Ok</b> to delete the following kernel(s):"
  DIALOG53="# Deleting $i"
  DIALOG54="Deleting the selected kernel(s)..."
  DIALOG55="The selected kernel(s) was (were) deleted."
  DIALOG56="Simulation done and no kernel(s) was (were) deleted!"
  DIALOG57="Cleaning the selected kernel(s)..."
}

# check the language to be dispayed and set it
function check_language() {
  case $LANG in
    "fr_FR.UTF-8")
      set_fr_messages;;
    *)
      set_us_messages;;
esac
}

que l'on pourrait utiliser par exemple de la manière suivante :

function display_syntax() {
  echo $DIALOG00 # ""
  echo $DIALOG01 # "Syntax : $0 [options]"
  echo $DIALOG02 # "Available options: "
  echo $DIALOG03 # " -t	--term      Start the script in terminal mode (default)"
  echo $DIALOG04 # " -g	--gui       Start the script in graphical mode"
  echo $DIALOG05 # " -k	--keep-prev Automaticaly keep the previous kernel"
  echo $DIALOG06 # " -s	--simulate  No deletion, only a simple simulation"
  echo $DIALOG07 # " -h	--help      Display the help for the syntax"
  echo $DIALOG08 # " -f	--force-yes	Deletions are done whithout any confirmation!"
  echo $DIALOG09 # " -v	--version   Version information"
  echo $DIALOG00 # ""
  echo $DIALOG10 # "Command line sample: sudo kclean -ks"
  echo $DIALOG00 # ""
}

function remove_kernel() {
  echo $DIALOG00 # ""
  echo $DIALOG11 # "Deletion in progress..."
  echo $DIALOG00 # ""
  for i in `grep -v "$KERNEL" /tmp/clean_kernel.tmp`
    do
      if [ "$SIMULATE" = "TRUE" ]
        then
          echo $DIALOG12 # "Deletion of kernel $i (simple simulation...)"
      else
        apt-get remove --yes --purge $i
      fi
    done
  echo $DIALOG00 # ""
  echo $DIALOG13 # "-------------- Deletion done ---------------"
  echo $DIALOG00 # ""
clean_exit 0
}

Dans l'exemple ci-dessus, j'ai volontairement gardé les messages d'origines après les # pour ne pas être perdu ! wink

Surtout, dis-moi si une telle démarche t'intéresse (car cela représente quand même pas mal de boulot à faire pour être vraiment "nickel") et parce que je peux peut-être aussi dégotter assez facilement dans un premier temps des traductions des messages en Espagnol, Italien, Allemand et Néerlandais.

Je crois que ça donnerai alors une belle visibilité méritée à ton script kclean qui le mérite.

Qu'en penses-tu ?

A+

PS : Message édité pour corriger mes propres fautes d'orthographe ! tongue

Mais, ne t'inquiètes pas car ma grand-mère me disait aussi que "l'orthogrphe est la science des ânes !". Donc j'en suis un ! lol

Dernière modification par fnux (Le 15/05/2013, à 06:01)


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately
FWPBLA - The French West Palm Beach Linux Association.

Hors ligne

#306 Le 15/05/2013, à 07:49

cep

Re : Nettoyage dans les noyaux (kernel)

Pour $LANG plusieurs solutions, par exemple :
:~$ echo $LANG | cut -c1,2,3
fr_

Hors ligne

#307 Le 15/05/2013, à 11:35

Hoper

Re : Nettoyage dans les noyaux (kernel)

@Cep : Je savais bien qu'il y avait plus simple smile

Surtout, dis-moi si une telle démarche t'intéresse (car cela représente quand même pas mal de boulot à faire pour être vraiment "nickel")

Whaou... Ce que j'en pense... En fait, je pense que tu as raison sur au moins un point, ça représente quand même pas mal de travail smile
Ensuite, cela simmplifie certe l'ajout du support de nouvelles langue, mais cela compléxifie (très légerement) le debugging. Oui, quand tu à un comportement anormal, un message d'erreur etc à un moment donné, tu peux te fier à l'affichage et te dire, c'est après qu'il m'affiche "travail en cours" par exemple que ça coince. Avec des variables partout, c'est plus compliqué.

Surtout, je pense que cela aurait été une bonne idée il y a deux ou trois ans. Maintenant, sincèrement, je doute. Ce script, qui certes été utile beaucoup plus longtemps que prévu, perdra forcément de son utilisé à l'avenir (les versions récentes d'ubuntu le rende apparemment obsolète).

Donc est il vraiment nécéssaire de le ré-écrire entièrement aujourd'hui ? Je ne le pense pas. La version anglaise, oui, elle peut être encore nécéssaire et tu as déjà fait le travail. (Un travail que je voulais faire depuis longtemps mais j'ai toujours eu la flemme). Mais pour le reste...

Concernant mon mail, tu as, toujours sur mon site, un bouton "contact" en haut à gauche tongue

Accessoirement, je te fais remarquer que mon mail est déjà disponible. Pas directement dans le mail, mais au moins dans la description du paquet :

hoper@gemeaux:~/Downloads$ apt-cache show kclean
Package: kclean
Status: install ok installed
Priority: optional
Installed-Size: 10
Maintainer: hoper chez free  ## (j'ai remplacé pour limiter le spam hein)
Architecture: all
Version: 3.3
Description: shell script for removing useless kernel from disk
  homepage : http://hoper.dnsalias.net/tdc/index.php?pages/kclean
  Sorry for non french speaker, all dialog in this script are
  french only. I may translate it... one day...

Pour ton script, je vais jeter un oeil smile


Mes tutos et coups de gueule :
http://hoper.dnsalias.net/tdc/

Hors ligne

#308 Le 22/05/2013, à 09:19

Hoper

Re : Nettoyage dans les noyaux (kernel)

Juste un petit message pour dire que j'ai pas oublié, mais que j'ai pas encore trouvé le temps... Bientôt smile


Mes tutos et coups de gueule :
http://hoper.dnsalias.net/tdc/

Hors ligne

#309 Le 22/05/2013, à 15:25

Hoper

Re : Nettoyage dans les noyaux (kernel)

Voila...

J'ai ajouté la version anglaise, disponible en téléchargement ici.
J'en ai profité pour effectuer quelques modifications mineures. Par exemple, remplacer "delete" par "remove" que je trouve plus approprié.
J'ai aussi modifié :

"Stop the script if a kernel version is found to be posterior to the current, add 4.X" par
"Stop the script if a kernel newer than the current is found, add support for 4.X kernels"

"Did you forget tu use"
par : "Did you forget to use"

Et d'autres petites choses à droite à gauche ("Press ok to quit the script" par "press ok to quit" etc)

A tester mais il devrait fonctionner tout aussi bien que la vf (je n'ai rien constaté de bizarre en tout cas smile


Mes tutos et coups de gueule :
http://hoper.dnsalias.net/tdc/

Hors ligne

#310 Le 23/05/2013, à 01:57

fnux

Re : Nettoyage dans les noyaux (kernel)

Salut Hoper,

Hoper a écrit :

Voila...

J'ai ajouté la version anglaise, disponible en téléchargement ici.
J'en ai profité pour effectuer quelques modifications mineures. Par exemple, remplacer "delete" par "remove" que je trouve plus approprié.
J'ai aussi modifié :

"Stop the script if a kernel version is found to be posterior to the current, add 4.X" par
"Stop the script if a kernel newer than the current is found, add support for 4.X kernels"

"Did you forget tu use"
par : "Did you forget to use"

Et d'autres petites choses à droite à gauche ("Press ok to quit the script" par "press ok to quit" etc)

A tester mais il devrait fonctionner tout aussi bien que la vf (je n'ai rien constaté de bizarre en tout cas smile

Tu as bien fait de corriger les différentes fautes de frappe ou d'inattention car tu sais bien que l'on se relit toujours très mal soi-même.

Idem pour les mots ou tournures de phrases qui ne te semblaient pas "appropriés".

Bon, à partir de ça je pense pouvoir faire assez facilement une version bilingue (Français - Anglais) qui sélectionne automatiquement la langue à utiliser, mais de là à en faire une vraie version multi-lingue, il me faudra encore apprendre certaines choses sur BASH et/ou SH.

Par contre, je pense bien que ton script va rester d'actualité pendant encore pas mal de temps car s'il est vrai que les dernières versions d'Ubuntu proposent de supprimer certains anciens noyaux (apt-get autoclean et apt-get autoremove -- purge), tu n'as pas le choix de ce que tu veux supprimer, ce qui est un "must" de ton script.

Bon, tu me diras aussi que c'est possible avec synaptic, mais là c'est plutôt galère galère .

Donc, dès que j'ai un peu de temps, je te propose d'abord une version bilingue (toujours sympa pour les francophones et les non mangeurs de grenouilles) et seulement une seule version à maintenir, puis seulement après j'essayerai à temps perdu de faire une version multi-lingue (avec en plus l'Allemand, l'Italien, l'Espagnol et le Néerlandais) mais ce n'est pas pour tout de suite car j'ai déjà pas mal de boulot avec mon propre script que j'essaye d'adapter à Arch et Fedora.

Donc, A+.


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately
FWPBLA - The French West Palm Beach Linux Association.

Hors ligne

#311 Le 23/05/2013, à 07:31

cep

Re : Nettoyage dans les noyaux (kernel)

@fnux : « car s'il est vrai que les dernières versions d'Ubuntu proposent de supprimer certains anciens noyaux (apt-get autoclean et apt-get autoremove -- purge), tu n'as pas le choix de ce que tu veux supprimer »

Attention ce n'est pas le fonctionnement de apt-get autoclean et autoremove. L'un vide le cache et l'autre gère les dépendances inutiles. Voir le man reproduit ci-dessous

autoclean
           Tout comme clean, autoclean nettoie le référentiel local des paquets récupérés. La différence est qu'il
           supprime uniquement les paquets qui ne peuvent plus être téléchargés et qui sont inutiles. On peut ainsi
           contrôler la taille de ce cache sur une longue période. Tant qu'elle n'est pas activée, l'option de
           configuration APT::Clean-Installed empêche la suppression de paquets installés.

       autoremove
           Avec la commande autoremove, apt-get supprime les paquets installés dans le but de satisfaire les dépendances
           d'autres paquets et qui ne sont plus nécessaires.

Hors ligne

#312 Le 24/05/2013, à 12:52

alchimyste06

Re : Nettoyage dans les noyaux (kernel)

Avec les infos trouvées ici et ailleurs, j'ai fait un petit script pour automatiser les mises à jour, en utilisant Kclean :

sudo apt-get update
sudo aptitude dist-upgrade
sudo kclean -k

Toutes suggestions pour le perfectionner sera la bienvenue !!!!

Hors ligne

#313 Le 24/05/2013, à 15:43

Hoper

Re : Nettoyage dans les noyaux (kernel)

Mauvaise idée ça... plein de mauvaises idées meme.

D’abord mélanger apt-get et aptitude. C'est l'un ou l'autre, pas les deux.
Je te conseil donc plutot de t'en tenir au bon vieux :
sudo apt-get update && sudo apt-get upgrade

Ensuite, ça ne fonctionnera tout simplement pas (enfin plus depuis la dernière version de kclean). Car télécharger et installer un noyau plus récent ne suffit pas pour qu'il devienne actif, il faut aussi rebooter la machine.

Donc si la mise à jour intègre un nouveau noyau, la commande à lancer ensuite ce n'est pas kclean, mais reboot...

Dernière modification par Hoper (Le 24/05/2013, à 15:44)


Mes tutos et coups de gueule :
http://hoper.dnsalias.net/tdc/

Hors ligne

#314 Le 24/05/2013, à 22:33

xavier4811

Re : Nettoyage dans les noyaux (kernel)

B'soir,

Pourquoi vouloir réinventer la roue (ou la traduction)?

GNU gettext

Hors ligne

#315 Le 25/05/2013, à 03:21

fnux

Re : Nettoyage dans les noyaux (kernel)

Salut xavier4811,

xavier4811 a écrit :

B'soir,

Pourquoi vouloir réinventer la roue (ou la traduction)?

GNU gettext

Sans vouloir te décevoir, voici les raisons qui m'ont poussées à faire cette trad (peut-être très mauvaises d'ailleurs).

Donc pourquoi la traduction ?

1) tout d'abord parce que je pense qu'une seule version anglaise est préférable à une version "froggy" pour la diffusion de ce script vraiment génial qui mérite vraiment d'être reconnu et promu (mais l'un n'empêche pas l'autre -> ou les autres).

2) ensuite parce que même à mon âge je suis un "débutant" et que je ne connais pas "encore" gettext (ça, avec un peu de temps et de l'aide ça peut se corriger).

3) enfin parce qu'il me semble (d'après le peu que j'ai lu rapidement sur gettext) que cela implique non seulement que gettext soit installé sur la machine qui va exécuter le script (ce qui n'est pas un standard de fait sur toutes les distributions) et implique non seulement une modification du script relativement en profondeur, et demande aussi l'ajout de fichiers complémentaires externes (les fichiers "langues").

Bon, dans le cas de kclean, cela ne poserait à priori pas de problème particulier (si on sait se servir de gettext et si on modifie le script en conséquence) puisque hoper crée un .deb qui peut alors parfaitement contenir les fichiers complémentaires.

D'ailleurs, j'ai aussi une suggestion à faire en cas de nouvelles évolutions : pourquoi ne pas aussi ajouter une jolie petite icône et une entrée dans un menu (j'ai vu dans d'autres scripts que ça semblait assez trivial à faire).

En tout cas, il me semble qu'il me reste à me pencher très sérieusement sur gettext, même si pour mon propre script j'ai maintenant enfin totalement intégré le multilingue directement dedans, ce qui n'est vraiment pas un problème.

PS : A ce propos, moi aussi je cherche des testeurs et des conseils (pour Ubuntu et ses variantes Kubuntu, Lubuntu, Xubuntu toutes versions confondues depuis la 10.04 LTS jusqu'à la dernière 13.04, mais aussi pour Debian Squeeze et Wheezy, ArchLinux, LinuxMint, Fedora, RedHat et CentOS). Merci de me contacter par mail si il y a des volontaires.

Dernière modification par fnux (Le 25/05/2013, à 03:42)


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately
FWPBLA - The French West Palm Beach Linux Association.

Hors ligne

#316 Le 25/05/2013, à 03:32

fnux

Re : Nettoyage dans les noyaux (kernel)

Salut Hoper et alchimiste06.

Hoper a écrit :

Mauvaise idée ça... plein de mauvaises idées meme.

D’abord mélanger apt-get et aptitude. C'est l'un ou l'autre, pas les deux.
Je te conseil donc plutot de t'en tenir au bon vieux :
sudo apt-get update && sudo apt-get upgrade

Ensuite, ça ne fonctionnera tout simplement pas (enfin plus depuis la dernière version de kclean). Car télécharger et installer un noyau plus récent ne suffit pas pour qu'il devienne actif, il faut aussi rebooter la machine.

Donc si la mise à jour intègre un nouveau noyau, la commande à lancer ensuite ce n'est pas kclean, mais reboot...

@ Hoper : +1 - Je ne peux pas dire mieux.

@ alchimiste06 : Cependant, si tu veux modifier le script pour qu'il mette à jour tes paquets (et éventuellement aussi installe en passant un nouveau noyau -> ce que tu ne peux pas savoir d'avance), tu peux le faire en ajoutant un dialogue qui demande si l'on veut faire cette mise à jour, et si oui, si un nouveau noyau est installé (il faudra d'ailleurs aussi le détecter), alors proposer (et même pourquoi pas forcer) un reboot.

Ce n'est qu'à ce prix là que ta nouvelle version du script pourra fonctionner sans créer de gros problèmes qui pourraient aller jusqu'à l'impossibilité de rebooter ton système.

Un petit conseil d'ami : si tu veux jouer à ça, utilise donc une VM. C'est très pratique pour ce genre de test. Perso j'utilise VMware dont, au passage, le Player (Linux et Windows) est gratuit.

Dernière modification par fnux (Le 25/05/2013, à 03:40)


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately
FWPBLA - The French West Palm Beach Linux Association.

Hors ligne

#317 Le 13/07/2013, à 19:45

PPdM

Re : Nettoyage dans les noyaux (kernel)

Salut, je viens de tester sur une Voyager 13.04, c'est nickel
Merci Beaucoup pour ton travail.
Par contre je n'ai pas de lanceur créé dans les menus, mais la console suffit, si tu fait une version graphique cela serait parfais pour les débutants


Linux n'est pas plus compliqué, il est différent.
GNU/Linux à Marseille Découvrir Marseille Ma librairie indépendante
Si vous pensez que le sujet du fil vous concerne, ne vous incrustez pas, postez une demande en donnant le lien de VOTRE fil

En ligne

#318 Le 14/07/2013, à 00:41

Babdu89

Re : Nettoyage dans les noyaux (kernel)

Bonsoir.

Je n'ai pas de Voyageur 13.04 installé, mais;

Dans Xubuntu 13.04 . Kclean installé ,outre l'utilisation en terminal. 
Dans ;Menu des Applications ; Gestionnaire de paramètres ; Système . l'icône pour lancer  Kclean y est. Et çà lance Kclean en version graphique.

1373754744.png

1373754770.png

1373754794.png

Super non?? .  wink 

Bon ,je ne sais pas si dans Voyager çà marchera comme çà, mais dans Xubuntu 13.04 c'est bon.

Encore Bravo et Merci Hoper .

Je l'ai installé sur toutes les OS de mes hdd.

@+.    Babdu89 .:)


J'ai découvert Ubuntu avec la 07.10.... Et alors?!...  Depuis je regarde de temps en temps si Windows marche toujours....

Hors ligne

#319 Le 14/07/2013, à 00:58

PPdM

Re : Nettoyage dans les noyaux (kernel)

Merci je ne cherchais pas au bon endroit


Linux n'est pas plus compliqué, il est différent.
GNU/Linux à Marseille Découvrir Marseille Ma librairie indépendante
Si vous pensez que le sujet du fil vous concerne, ne vous incrustez pas, postez une demande en donnant le lien de VOTRE fil

En ligne

#320 Le 14/07/2013, à 03:17

nesthib

Re : Nettoyage dans les noyaux (kernel)

Je n'avais jamais mis le nez dans ce script (je trouve aussi simple d'utiliser la puissance du shell pour faire le nettoyage).
Voici quelques commentaires après lecture du code, je pense que beaucoup de choses pourraient être simplifiées (et de la redondance éliminée) :

  • Détermination des noyaux installés :
    Le code lance 4 fois la commande dpkg -l, avec de nombreux pipe/grep/awk imbriqués alors qu'il me paraît faisable de tout faire en une simple commande :

    dpkg -l | awk '/ii  linux-(headers|image|image-extra)-[234]\./{print $2}'

    (la commande est un exemple, à adapter avec les noms correspondants à ubuntu/restricted/…)

  • Comme tu as à utiliser la sortie de « dpkg -l » plusieurs fois, tu peux la mettre en cache dans une variable :

    DPKGL=$(dpkg -l)
    awk '/ii  linux-(headers|image|image-extra)-[234]\./{print $2}' <<<$DPKGL
  • Idem pour la liste des noyaux que tu réutilises de nombreuses fois :

    KERNELS=$(awk '/ii  linux-image-[234]\./{print $2}' <<<$DPKGL)

    Encore mieux, tu peux stocker cette liste sous forme de tableau :

    KERNELS=($(awk '/ii  linux-image-[234]\./{print $2}' <<<$DPKGL))
  • solution plus courte pour le nombre de noyaux :

    NB_KERNEL=$(awk '/ii  linux-image-[234]\./{nb++} END{print nb}' <<<$DPKGL)

    à vérifier mais je pense aussi qu'elle est plus correcte, en effet chez moi avec ta version sont comptés à la fois les linux-image-x.xx et les linux-image-extra-x.xx (or je pense que tu ne veux compter qu'une fois chaque numéro de version).

    Et si tu as sauvé la liste sous forme de tableau (cf. ci-dessus) tu peux directement utiliser la taille du tableau pour avoir le nombre de noyaux :

    echo ${#KERNELS[@]}

    Avoir le dernier noyau :

    echo ${KERNELS[-1]}

    Ou encore l'avant dernier noyau :

    echo ${KERNELS[-2]}

    Toujours plus loin, tu peux en profiter pour créer une liste des noyaux à supprimer :

    KERNELS_TO_REMOVE=(${KERNELS[@]:0:${#KERNELS[@]}-2})

    (tous les noyaux sauf les deux plus récents)

    Ensuite il devient ultra simple de faire une boucle sur ces valeurs :

    for paquet in ${KERNELS_TO_REMOVE[@]}
    do
        echo on supprime "${paquet}"
    done

    ou même :

    apt-get remove ${KERNELS_TO_REMOVE[@]}
  • test de root
    il est toujours préférable de tester l'identité root en se basant sur l'UID plutôt que le nom du compte (dans certains cas le compte root ne s'appelle pas root, l'UID root est toujours 0).

    [ $UID -ne 0 ]

    quitte à tester l'identité root, il est possible de relancer automagiquement le script avec les bon droits en cas d'oubli :

    if [ $UID -ne 0 -a "$SIMULATE" = "FAUX" ]
    then
        sudo $0 "$@"
        exit 0
    fi
  • petites remarques en vrac
    à titre personnel je préfère la syntaxe « $(…) » que « `…` » (moins ambigu).
    utilisation inutile de cat → « cat /tmp/clean_kernel.tmp |wc -l », un simple « wc -l /tmp/clean_kernel.tmp » suffit.
    Et, peut être le point le plus important, tu n'as pas besoin d'utiliser de fichier temporaire pour stocker tes informations. Tu peux tout mettre dans des tableaux/variables.

J'espère que ces quelques conseils pourront t'être utiles smile


NB. Pour ceux qui veulent un script minimaliste, voici une manière de garder uniquement les 2 derniers noyaux (supprime les paquets linux-image et linux-headers ; les paquets -extra et -generic sont automatiquement supprimés en tant que dépendances) :

#!/bin/bash
KEEP=2
KERNELS=($(dpkg -l | awk '/ii  linux-image-[0-9]\./{print gensub("-generic","",1,$2)}'))
KERNELS_TO_REMOVE=(${KERNELS[@]:0:${#KERNELS[@]}-$KEEP})
sudo apt-get remove ${KERNELS_TO_REMOVE[@]} ${KERNELS_TO_REMOVE[@]/image/headers}

wink


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#321 Le 14/07/2013, à 08:53

PPdM

Re : Nettoyage dans les noyaux (kernel)

@Nesthib, comme je suis une quiche en code, ton script minimaliste tu le lance comment, directement dans un terminal ?
Désolé si ma question est idiote !:(


Linux n'est pas plus compliqué, il est différent.
GNU/Linux à Marseille Découvrir Marseille Ma librairie indépendante
Si vous pensez que le sujet du fil vous concerne, ne vous incrustez pas, postez une demande en donnant le lien de VOTRE fil

En ligne

#322 Le 14/07/2013, à 09:20

Babdu89

Re : Nettoyage dans les noyaux (kernel)

Bonjour.
Une deuxième quiche en code et en ligne de commandes répond.
@ Nesthib.

Je vais tester le script que tu proposes de la manière suivante.

Dans un OS. Ouvrir Nautilus en root (graphique).

gksudo nautilus

Naviguer jusque dans mon dossier personnel.
Créer un fichier texte . Le nommer ; Nesthib-clean-kernel.sh   , par exemple
Donner les permissions en lecture écriture en temps que propriétaire du fichier, et rendre le fichier exécutable.
Y copier coller le texte du script donné ci-dessus. Enregistrer.
Lancer le script avec la commande suivante.

sudo bash Nestib-clean-kernel.sh

Laisser le nettoyage se faire .

Faire une maj de Grub ;

sudo update-grub

Et rebooter sur l'OS de test pour voir le résultat.

Est-ce que j'ai tout bon?.  wink

@+.    Babdu89  .  smile


J'ai découvert Ubuntu avec la 07.10.... Et alors?!...  Depuis je regarde de temps en temps si Windows marche toujours....

Hors ligne

#323 Le 14/07/2013, à 09:31

PPdM

Re : Nettoyage dans les noyaux (kernel)

Merci, je vais tester plus tard !


Linux n'est pas plus compliqué, il est différent.
GNU/Linux à Marseille Découvrir Marseille Ma librairie indépendante
Si vous pensez que le sujet du fil vous concerne, ne vous incrustez pas, postez une demande en donnant le lien de VOTRE fil

En ligne

#324 Le 14/07/2013, à 10:06

yamo

Re : Nettoyage dans les noyaux (kernel)

Salut,

Babdu89 a écrit :

Bonjour.
Une deuxième quiche en code et en ligne de commandes répond.
@ Nesthib.

Je vais tester le script que tu proposes de la manière suivante.

Dans un OS. Ouvrir Nautilus en root (graphique).

gksudo nautilus

C'est tout a fait déconseillé comme manipulation.

Une fois qu'on a enregistré monscript.sh quelque part dans son répertoire personnel, si on veut le rendre éxécutable, il suffit de faire :

find ~ -name "monscript.sh" -exec chmod +x {} \; 

On peut faire un chmod plus fin mais ça suffit pour le rendre exécutable.

Le plus sûr c'est de faire un simple find et de lancer le chmod à la main :

find ~ -name "monscript.sh" 
cd ~/lereperertoireouestmonscript
chmod +x ./monscript.sh
sudo ./monscript.sh
 

Stéphane
--
Debian 7.0 XFCE 4.8   - #ubuntu sur freenode

sudo / matrix

Hors ligne

#325 Le 14/07/2013, à 10:09

PPdM

Re : Nettoyage dans les noyaux (kernel)

J'utilise souvent gksudo pour se genre de manip sans souci particulier, car vu ma dyslexie j'en ai ras la casquette de taper plusieurs fois le ligne pour défaut de syntaxe ! sad


Linux n'est pas plus compliqué, il est différent.
GNU/Linux à Marseille Découvrir Marseille Ma librairie indépendante
Si vous pensez que le sujet du fil vous concerne, ne vous incrustez pas, postez une demande en donnant le lien de VOTRE fil

En ligne

Haut de page ↑