meta données pour cette page
  •  

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
schplurtziel:menageatator [2017/02/18 07:38]
ztrulphcs
schplurtziel:menageatator [2020/12/28 08:09] (Version actuelle)
ztrulphcs [Utilisation / Usage] présentation
Ligne 1: Ligne 1:
 ====== Menageatator ====== ====== Menageatator ======
  
-2017-02-17+2017-10-26
  
 <WRAP column 45%> <WRAP column 45%>
Ligne 15: Ligne 15:
  
 <WRAP column 45%> <WRAP column 45%>
-On pourrait croire que le problème est réglé depuis longtemps, mais, de temps en temps pour des raisons bizarres, je tombe toujours sur des ordinaeurs dont les noyaux ne sont jamais désinstallés par apt ou //unattended-upgrades//.+On pourrait croire que le problème est réglé depuis longtemps, mais, de temps en temps pour des raisons bizarres, je tombe toujours sur des ordinateurs dont les noyaux ne sont jamais désinstallés par apt ou //unattended-upgrades//.
  
 Le script ci dessous est très simple, mais aussi très efficace. il considère que tous les noyaux installés sont effaçables sauf : Le script ci dessous est très simple, mais aussi très efficace. il considère que tous les noyaux installés sont effaçables sauf :
Ligne 47: Ligne 47:
  
 <code bash menageatator> <code bash menageatator>
-#! /bin/sh+#! /bin/bash
 # encoding: utf-8 # encoding: utf-8
 # vim: se ts=2 sw=2 et: # vim: se ts=2 sw=2 et:
  
 # menageatator: Remove unneeded linux kernel from debuntu systems # menageatator: Remove unneeded linux kernel from debuntu systems
 +# http://schplurtz.free.fr/wiki/schplurtziel/menageatator
 #   #  
-                     Copyright Schplurtz Le Déboulonné, 2016+              Copyright Schplurtz Le Déboulonné, 2016, 2017, 2019
 #   #  
 #                  Schplurtz le Déboulonné <Schplurtz@laposte.net> #                  Schplurtz le Déboulonné <Schplurtz@laposte.net>
Ligne 117: Ligne 118:
 #  les termes.                         | #  les termes.                         |
  
-# Yeah I know. Could use ruby/perl/ocam/lua/go/python and less pipes. +# Yeah I know. Could use ruby/perl/ocam/lua/python/whatever and less pipes. 
-# Could use array, associative arrays etc... Just prefering simplicity+# Could use array, associative arrays etc... Just prefering simplicity,
 # clarity and possibility to run with dumb^Wsimple shells.  # clarity and possibility to run with dumb^Wsimple shells. 
  
Ligne 133: Ligne 134:
 IFS="$(printf ' \t') IFS="$(printf ' \t')
 " "
 +# /sbin and /usr/sbin are usually not in cron PATH. add them
 +# if they're not present as dpkg will need commands there.
 +case "$PATH" in
 +(*:/usr/sbin|/usr/sbin:*|*:/usr/sbin:*) : ;;
 +(*) PATH="${PATH}:/usr/sbin" ;;
 +esac
 +case "$PATH" in
 +(*:/sbin|/sbin:*|*:/sbin:*) : ;;
 +(*) PATH="${PATH}:/sbin" ;;
 +esac
 +
 set -e # Stop on any error. set -e # Stop on any error.
  
Ligne 140: Ligne 152:
 no_suffix() { no_suffix() {
   sed -e 's/-[a-zA-Z_]*$//'    # remove suffix. (-generic, -lowlatency etc...)   sed -e 's/-[a-zA-Z_]*$//'    # remove suffix. (-generic, -lowlatency etc...)
 +}
 +
 +reject() {
 +  grep -v "$@"
 } }
  
Ligne 168: Ligne 184:
 # out the kernels that dpkg has never touched : /^un / # out the kernels that dpkg has never touched : /^un /
      
-  dpkg-query -W -f '${Status} ${package}\n' "$@" |+  dpkg-query -W -f '${Status} ${package}\n' "$@" 2>/dev/null |
     sed -e 's/^deinstall/removed/     sed -e 's/^deinstall/removed/
             s/^\(.\)[^ ]* *\(.\)[^ ]* *\(.\)[^ ]* */\1\3\2 /             s/^\(.\)[^ ]* *\(.\)[^ ]* *\(.\)[^ ]* */\1\3\2 /
-            s/\(..\)o/\1 /+            s/^\(..\)o/\1 /
            ' |            ' |
-    grep -v '^un ' |+    reject '^un ' |
     sort -k 2,2V # always return list sorted by version number     sort -k 2,2V # always return list sorted by version number
-} 
- 
-reject() { 
-  grep -v "$@" 
 } }
  
Ligne 185: Ligne 197:
   apt-get "$@"   apt-get "$@"
 } }
 +ARGV=( "$@" ) # keep command line args for final apt-get command...
  
         linux_vers_tpl='[0-9]*.[0-9]*.[0-9]*-[0-9]*'         linux_vers_tpl='[0-9]*.[0-9]*.[0-9]*-[0-9]*'
Ligne 190: Ligne 203:
 linux_images_extra_tpl="linux-image-extra-${linux_vers_tpl}" linux_images_extra_tpl="linux-image-extra-${linux_vers_tpl}"
      linux_headers_tpl="linux-headers-${linux_vers_tpl}"      linux_headers_tpl="linux-headers-${linux_vers_tpl}"
 +     linux_modules_tpl="linux-modules-${linux_vers_tpl}"
  
 # list of all linux-image packages dpkg is aware of # list of all linux-image packages dpkg is aware of
Ligne 263: Ligne 277:
     "$linux_images_tpl" \     "$linux_images_tpl" \
     "$linux_images_extra_tpl" \     "$linux_images_extra_tpl" \
-    "$linux_headers_tpl" |        # list linux images, images-extra, headers +    "$linux_headers_tpl" \ 
-  grep -v '^h'                 # filter out packages on hold+    "$linux_modules_tpl" |        # list linux images, images-extra, headers, modules 
 +  reject '^h'                  # filter out packages on hold
   reject "$@" |                   # filter out those we keep   reject "$@" |                   # filter out those we keep
   awk '{ print $2 }'              # just keep name   awk '{ print $2 }'              # just keep name
Ligne 270: Ligne 285:
  
 # If there are kernels to remove, remove them # If there are kernels to remove, remove them
-{ test $# -gt 0 && _apt_get purge "$@" ; } || :+{ test $# -gt 0 && _apt_get "${ARGV[@]}" purge "$@" ; } || :
  
 # Given this list of kernel, # Given this list of kernel,
Ligne 284: Ligne 299:
 # performs these removal : # performs these removal :
 # apt-get purge linux-image-3.13.0-93-generic linux-image-3.13.0-96-generic linux-image-3.13.0-98-generic linux-image-3.13.0-100-generic linux-image-3.13.0-101-generic # apt-get purge linux-image-3.13.0-93-generic linux-image-3.13.0-96-generic linux-image-3.13.0-98-generic linux-image-3.13.0-100-generic linux-image-3.13.0-101-generic
 +</code>
 +
 +===== Utilisation / Usage =====
 +
 +<code>
 +sudo menageatator
 +</code>
 +<WRAP clear></WRAP>
 +
 +----- 
 +
 +<WRAP column 45%>
 +Si vous êtes brave et ne voulez pas confirmer les choix de menageatator
 +</WRAP>
 +<WRAP column 45%>
 +If you are brave and don't want to confirm menageatator choices
 +</WRAP>
 +
 +<WRAP clear/>
 +<code>
 +sudo menageatator -y
 </code> </code>