Nettoyer un répertoire plein de .deb ?

View: New views
5 Messages — Rating Filter:   Alert me  

Nettoyer un répertoire plein de .deb ?

by Eric Seigne :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Bonjour,
es-ce qu'il existe une commande rapide et efficace pour faire le ménage
dans un dossier plein de paquets .deb pour ne garder que ceux dont les
numéros de versions sont les plus récents ?

Par exemple j'ai

package_1.2.0-0_i386.deb
package_1.2.0-1_i386.deb
package_1.3.1-0_i386.deb
package_1.3.4-6_i386.deb
package_1.3.4-7_i386.deb

et je ne veux garder que le dernier ... y a ça, sans se lancer dans des
outils de gestion de dépots ?

Merci d'avance,
Éric

--
        -- ABULEDU A 10 ANS ... www.abuledu.org --

Éric Seigne - Directeur                    | eric.seigne@...
RyXéo SARL                                 | http://www.ryxeo.com
21 avenue M. et E. Dulout                  | tel +33 6 987 444 01
33600 Pessac - FRANCE                      | fax +33 9 56 606 607



--
To UNSUBSCRIBE, email to debian-devel-french-REQUEST@...
with a subject of "unsubscribe". Trouble? Contact listmaster@...


Re: Nettoyer un répertoire plein de .deb ?

by Cyril Brulebois-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Éric Seigne <eric.seigne@...> (03/08/2009):
> package_1.2.0-0_i386.deb
> package_1.2.0-1_i386.deb
> package_1.3.1-0_i386.deb
> package_1.3.4-6_i386.deb
> package_1.3.4-7_i386.deb
>
> et je ne veux garder que le dernier ... y a ça, sans se lancer dans des  
> outils de gestion de dépots ?

Shell ? for awk/sed dpkg ?

Mraw,
KiBi.


signature.asc (204 bytes) Download Attachment

Re: Nettoyer un répertoire plein de .deb ?

by Pierre Habouzit-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Mon, Aug 03, 2009 at 04:02:43PM +0200, Éric Seigne wrote:

> Bonjour,
> es-ce qu'il existe une commande rapide et efficace pour faire le
> ménage dans un dossier plein de paquets .deb pour ne garder que ceux
> dont les numéros de versions sont les plus récents ?
>
> Par exemple j'ai
>
> package_1.2.0-0_i386.deb
> package_1.2.0-1_i386.deb
> package_1.3.1-0_i386.deb
> package_1.3.4-6_i386.deb
> package_1.3.4-7_i386.deb
>
> et je ne veux garder que le dernier ... y a ça, sans se lancer dans
> des outils de gestion de dépots ?
>
> Merci d'avance,
> Éric
#!/bin/sh

dry_run=

doit() {
    $dry_run "$@"
}

while test $# != 0; do
    case "$1" in
        -n) dry_run=echo ;;
        --) shift; break; ;;
        *)  break ;;
    esac
    shift
done

if test $# != 1; then
    echo "usage: foo.sh <directory>" 2>&1
    exit 1
fi

cd "$1"

for p in $(ls *.deb|sed -e 's/_.*//'|sort -u); do
    keep=
    for v in $(ls "${p}_"*".deb" | sed -e 's/^[^_]*_\([^_]*\)_[^_]*\.deb$/\1/'); do
        if test -z "$keep"; then
            keep=$v
        elif dpkg --compare-versions "$keep" gt "$v"; then
            doit rm -f "${p}_${v}_*.deb"
        else
            doit rm -f "${p}_${keep}_*.deb"
            keep=$v
        fi
    done
done

--
Intersec <http://www.intersec.com>
Pierre Habouzit <pierre.habouzit@...>
Tél : +33 (0)1 5570 3346
Mob : +33 (0)6 1636 8131
Fax : +33 (0)1 5570 3332
37 Rue Pierre Lhomme
92400 Courbevoie


signature.asc (204 bytes) Download Attachment

Re: Nettoyer un répertoire plein de .deb ?

by Pierre Habouzit-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Mon, Aug 03, 2009 at 09:56:00PM +0200, Pierre Habouzit wrote:

> On Mon, Aug 03, 2009 at 04:02:43PM +0200, Éric Seigne wrote:
> > Bonjour,
> > es-ce qu'il existe une commande rapide et efficace pour faire le
> > ménage dans un dossier plein de paquets .deb pour ne garder que ceux
> > dont les numéros de versions sont les plus récents ?
> >
> > Par exemple j'ai
> >
> > package_1.2.0-0_i386.deb
> > package_1.2.0-1_i386.deb
> > package_1.3.1-0_i386.deb
> > package_1.3.4-6_i386.deb
> > package_1.3.4-7_i386.deb
> >
> > et je ne veux garder que le dernier ... y a ça, sans se lancer dans
> > des outils de gestion de dépots ?
> >
> > Merci d'avance,
> > Éric
Sauf que ça ne marche pas... parce que je pars du principe que le
file-name contient l'époch ce qui est généralement faux...

Le fix suivant devrait corriger ça:
 
 #!/bin/sh
 
 dry_run=
 
 doit() {
     $dry_run "$@"
 }
 
 while test $# != 0; do
     case "$1" in
         -n) dry_run=echo ;;
         --) shift; break; ;;
         *)  break ;;
     esac
     shift
 done
 
 if test $# != 1; then
     echo "usage: foo.sh <directory>" 2>&1
     exit 1
 fi
 
 cd "$1"
 
 for p in $(ls *.deb|sed -e 's/_.*//'|sort -u); do
     keep=
+    keep_v=
     for v in $(ls "${p}_"*".deb" | sed -e 's/^[^_]*_\([^_]*\)_[^_]*\.deb$/\1/'); do
+        ver=$(dpkg --info binutils-dev_2.19.51.20090704-1_amd64.deb|sed -ne '/Version: /{s/ *Version: *//p;q}')
         if test -z "$keep"; then
             keep=$v
+            keep_v=$ver
-        elif dpkg --compare-versions "$keep" gt "$v"; then
+        elif dpkg --compare-versions "$keep_v" gt "$ver"; then
             doit rm -f "${p}_${v}_*.deb"
         else
             doit rm -f "${p}_${keep}_*.deb"
             keep=$v
+            keep_v=$ver
         fi
     done
 done


Et sinon la bonne manière est d'utiliser dpkg --info et de prendre le
Package: et Version:, de trier pour chaque Package: unique par ordre de
Version: selon dpkg --compare-versions, et de ne conserver que le
dernier de chaque. Je pense que dpkg --compare-versions est accessible
depuis perl-apt (si ça existe) et je suis sur que c'est accessible
depuis python-apt pour l'utiliser dans apt-listchanges. Mais j'ai la
flemme d'écrire le script en question.


--
Intersec <http://www.intersec.com>
Pierre Habouzit <pierre.habouzit@...>
Tél : +33 (0)1 5570 3346
Mob : +33 (0)6 1636 8131
Fax : +33 (0)1 5570 3332
37 Rue Pierre Lhomme
92400 Courbevoie


signature.asc (204 bytes) Download Attachment

Re: Nettoyer un répertoire plein de .deb ?

by Mohammed Adnène Trojette-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Mon, Aug 03, 2009, Éric Seigne wrote:
> et je ne veux garder que le dernier ... y a ça, sans se lancer dans des  
> outils de gestion de dépots ?

vidir

--
Mohammed Adnène Trojette


--
To UNSUBSCRIBE, email to debian-devel-french-REQUEST@...
with a subject of "unsubscribe". Trouble? Contact listmaster@...