Bonjour,
J'utilise apt-mirror pour me confectionner un mirroir local d'une Ubuntu.
Le problème est qu'un fichier "clean.sh" est censé être livré avec le
package, mais ne l'est pas.
Le mirroir accumule ainsi les packages, sans purger les plus vieux et je
me retrouve avec un disque plein, parceque j'ai pris le depot depuis sa
création (ou presque, depot Ubuntu Intrepid).
Je voudrais virer les vieux packages, mais en prenant garde de bien
savoir comparer les version avec leur numerotation.
Des fois, des packages Debian ont une numérotation assez "complexe".
Existe-t-il une bibliothèque Perl ou un bout de script shell qui
comparerait les filenames de deux packages Debian du même nom (mais
différentes version)? Comme ça je pourrait efffacer sereinement le plus
vieux...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
dominix
Rakotomandimby (R12y) Mihamina a écrit :
Bonjour, J'utilise apt-mirror pour me confectionner un mirroir local d'une Ubuntu.
Le problème est qu'un fichier "clean.sh" est censé être livré avec le package, mais ne l'est pas. Le mirroir accumule ainsi les packages, sans purger les plus vieux et je me retrouve avec un disque plein, parceque j'ai pris le depot depuis sa création (ou presque, depot Ubuntu Intrepid). Je voudrais virer les vieux packages, mais en prenant garde de bien savoir comparer les version avec leur numerotation. Des fois, des packages Debian ont une numérotation assez "complexe".
Existe-t-il une bibliothèque Perl ou un bout de script shell qui comparerait les filenames de deux packages Debian du même nom (mais différentes version)? Comme ça je pourrait efffacer sereinement le plus vieux...
Merci.
ca ne serait pas plus facile avec un rsync ?
-- dominix
Rakotomandimby (R12y) Mihamina a écrit :
Bonjour,
J'utilise apt-mirror pour me confectionner un mirroir local d'une Ubuntu.
Le problème est qu'un fichier "clean.sh" est censé être livré avec le
package, mais ne l'est pas.
Le mirroir accumule ainsi les packages, sans purger les plus vieux et je
me retrouve avec un disque plein, parceque j'ai pris le depot depuis sa
création (ou presque, depot Ubuntu Intrepid).
Je voudrais virer les vieux packages, mais en prenant garde de bien
savoir comparer les version avec leur numerotation.
Des fois, des packages Debian ont une numérotation assez "complexe".
Existe-t-il une bibliothèque Perl ou un bout de script shell qui
comparerait les filenames de deux packages Debian du même nom (mais
différentes version)? Comme ça je pourrait efffacer sereinement le plus
vieux...
Bonjour, J'utilise apt-mirror pour me confectionner un mirroir local d'une Ubuntu.
Le problème est qu'un fichier "clean.sh" est censé être livré avec le package, mais ne l'est pas. Le mirroir accumule ainsi les packages, sans purger les plus vieux et je me retrouve avec un disque plein, parceque j'ai pris le depot depuis sa création (ou presque, depot Ubuntu Intrepid). Je voudrais virer les vieux packages, mais en prenant garde de bien savoir comparer les version avec leur numerotation. Des fois, des packages Debian ont une numérotation assez "complexe".
Existe-t-il une bibliothèque Perl ou un bout de script shell qui comparerait les filenames de deux packages Debian du même nom (mais différentes version)? Comme ça je pourrait efffacer sereinement le plus vieux...
Merci.
ca ne serait pas plus facile avec un rsync ?
-- dominix
Arnaud Giersch
Jeudi 11 septembre 2008, vers 21:08:41 (+0200), Rakotomandimby (R12y) Mihamina a écrit:
Existe-t-il une bibliothèque Perl ou un bout de script shell qui comparerait les filenames de deux packages Debian du même nom (mais différentes version)?
Éventuellement, tu peux utiliser
dpkg-deb --field <fichier_deb> Version
pour récupérer les numéros de version, puis
dpkg --compare-versions <a> <rel> <b>
pour les comparer.
Arnaud
Jeudi 11 septembre 2008, vers 21:08:41 (+0200), Rakotomandimby (R12y)
Mihamina a écrit:
Existe-t-il une bibliothèque Perl ou un bout de script shell qui
comparerait les filenames de deux packages Debian du même nom (mais
différentes version)?
Jeudi 11 septembre 2008, vers 21:08:41 (+0200), Rakotomandimby (R12y) Mihamina a écrit:
Existe-t-il une bibliothèque Perl ou un bout de script shell qui comparerait les filenames de deux packages Debian du même nom (mais différentes version)?
Éventuellement, tu peux utiliser
dpkg-deb --field <fichier_deb> Version
pour récupérer les numéros de version, puis
dpkg --compare-versions <a> <rel> <b>
pour les comparer.
Arnaud
Rakotomandimby (R12y) Mihamina
Arnaud Giersch wrote:
Existe-t-il une bibliothèque Perl ou un bout de script shell qui comparerait les filenames de deux packages Debian du même nom (mais différentes version)?
Éventuellement, tu peux utiliser dpkg-deb --field <fichier_deb> Version pour récupérer les numéros de version, puis dpkg --compare-versions <a> <rel> <b> pour les comparer.
Effectivement, ce sont deux outils qui me servent à extraire exactelet les information dont j'ai besoin.
Maintenant, je dois: - faire une liste (sans doublon) des packages existants - chercher la version la plus récente de chaque packages - garder les .deb les plus recents de chaque packages en supprimant les autres
Sans utiliser un tableau, ça me semble quasiment injouable, puisqu'il y a l'action d'éradication des doublons que je ne voit pas implémentée sans tableau. Il y a bien des tableaux en BASH, mais.... beurk?
Au point ou j'en suis, il y a bien 4 ou 5 version de chaque package. Il s'agit donc de chercher la plus grande version parmi ces 4 ou 5 valeurs et faire éliminer les plus vieilles (les .deb associés, en fait).
Ca me semble un peu lourd à faire par un script BASH et à ce jour je n'ai pas avancé parcequ'en manque d'inspiration. Cependant, le défi m'interesse. Auriez vous des pistes pour me faire avancer?
Existe-t-il une bibliothèque Perl ou un bout de script shell qui
comparerait les filenames de deux packages Debian du même nom (mais
différentes version)?
Éventuellement, tu peux utiliser
dpkg-deb --field <fichier_deb> Version
pour récupérer les numéros de version, puis
dpkg --compare-versions <a> <rel> <b>
pour les comparer.
Effectivement, ce sont deux outils qui me servent à extraire exactelet
les information dont j'ai besoin.
Maintenant, je dois:
- faire une liste (sans doublon) des packages existants
- chercher la version la plus récente de chaque packages
- garder les .deb les plus recents de chaque packages en supprimant les
autres
Sans utiliser un tableau, ça me semble quasiment injouable, puisqu'il y
a l'action d'éradication des doublons que je ne voit pas implémentée
sans tableau.
Il y a bien des tableaux en BASH, mais.... beurk?
Au point ou j'en suis, il y a bien 4 ou 5 version de chaque package. Il
s'agit donc de chercher la plus grande version parmi ces 4 ou 5 valeurs
et faire éliminer les plus vieilles (les .deb associés, en fait).
Ca me semble un peu lourd à faire par un script BASH et à ce jour je
n'ai pas avancé parcequ'en manque d'inspiration. Cependant, le défi
m'interesse. Auriez vous des pistes pour me faire avancer?
Existe-t-il une bibliothèque Perl ou un bout de script shell qui comparerait les filenames de deux packages Debian du même nom (mais différentes version)?
Éventuellement, tu peux utiliser dpkg-deb --field <fichier_deb> Version pour récupérer les numéros de version, puis dpkg --compare-versions <a> <rel> <b> pour les comparer.
Effectivement, ce sont deux outils qui me servent à extraire exactelet les information dont j'ai besoin.
Maintenant, je dois: - faire une liste (sans doublon) des packages existants - chercher la version la plus récente de chaque packages - garder les .deb les plus recents de chaque packages en supprimant les autres
Sans utiliser un tableau, ça me semble quasiment injouable, puisqu'il y a l'action d'éradication des doublons que je ne voit pas implémentée sans tableau. Il y a bien des tableaux en BASH, mais.... beurk?
Au point ou j'en suis, il y a bien 4 ou 5 version de chaque package. Il s'agit donc de chercher la plus grande version parmi ces 4 ou 5 valeurs et faire éliminer les plus vieilles (les .deb associés, en fait).
Ca me semble un peu lourd à faire par un script BASH et à ce jour je n'ai pas avancé parcequ'en manque d'inspiration. Cependant, le défi m'interesse. Auriez vous des pistes pour me faire avancer?
Mardi 16 septembre 2008, vers 22:47:45 (+0200), Rakotomandimby (R12y) Mihamina a écrit:
Maintenant, je dois: - faire une liste (sans doublon) des packages existants - chercher la version la plus récente de chaque packages - garder les .deb les plus recents de chaque packages en supprimant les autres
Je ne comprends pas vraiment ton problème : d'après sa description, apt-mirror serait capable de faire du ménage tout seul comme un grand...
En faisant l'hypothèse que les noms de paquets ne contiennent pas d'espaces et autres caractères bizarres, quelques chose comme ça ?
for p in $(ls | sed -n '/.deb$/{s/_.*//;p;}' | uniq -d); do b="" for a in ${p}_*.deb; do if [ -z "$b" ]; then b=$a vb=$(dpkg-deb --field $b Version) else va=$(dpkg-deb --field $a Version) if dpkg --compare-versions "$va" lt "$vb"; then r=$a else r=$b b=$a vb=$va fi echo "rm $r" ### <--- corriger cette ligne ### fi done done
Pour chacun des paquets existant en plusieurs exemplaires, en prendre deux (a et b), supprimer le plus ancien (r), puis recommencer avec celui qu'on a gardé (b) et le suivant (a).
Arnaud
Mardi 16 septembre 2008, vers 22:47:45 (+0200), Rakotomandimby (R12y)
Mihamina a écrit:
Maintenant, je dois:
- faire une liste (sans doublon) des packages existants
- chercher la version la plus récente de chaque packages
- garder les .deb les plus recents de chaque packages en supprimant
les autres
Je ne comprends pas vraiment ton problème : d'après sa description,
apt-mirror serait capable de faire du ménage tout seul comme un
grand...
En faisant l'hypothèse que les noms de paquets ne contiennent pas
d'espaces et autres caractères bizarres, quelques chose comme ça ?
for p in $(ls | sed -n '/.deb$/{s/_.*//;p;}' | uniq -d); do
b=""
for a in ${p}_*.deb; do
if [ -z "$b" ]; then
b=$a
vb=$(dpkg-deb --field $b Version)
else
va=$(dpkg-deb --field $a Version)
if dpkg --compare-versions "$va" lt "$vb"; then
r=$a
else
r=$b
b=$a
vb=$va
fi
echo "rm $r" ### <--- corriger cette ligne ###
fi
done
done
Pour chacun des paquets existant en plusieurs exemplaires, en prendre
deux (a et b), supprimer le plus ancien (r), puis recommencer avec
celui qu'on a gardé (b) et le suivant (a).
Mardi 16 septembre 2008, vers 22:47:45 (+0200), Rakotomandimby (R12y) Mihamina a écrit:
Maintenant, je dois: - faire une liste (sans doublon) des packages existants - chercher la version la plus récente de chaque packages - garder les .deb les plus recents de chaque packages en supprimant les autres
Je ne comprends pas vraiment ton problème : d'après sa description, apt-mirror serait capable de faire du ménage tout seul comme un grand...
En faisant l'hypothèse que les noms de paquets ne contiennent pas d'espaces et autres caractères bizarres, quelques chose comme ça ?
for p in $(ls | sed -n '/.deb$/{s/_.*//;p;}' | uniq -d); do b="" for a in ${p}_*.deb; do if [ -z "$b" ]; then b=$a vb=$(dpkg-deb --field $b Version) else va=$(dpkg-deb --field $a Version) if dpkg --compare-versions "$va" lt "$vb"; then r=$a else r=$b b=$a vb=$va fi echo "rm $r" ### <--- corriger cette ligne ### fi done done
Pour chacun des paquets existant en plusieurs exemplaires, en prendre deux (a et b), supprimer le plus ancien (r), puis recommencer avec celui qu'on a gardé (b) et le suivant (a).
Arnaud
Arnaud Giersch
Vendredi 19 septembre 2008, vers 06:31:39 (+0200), Rakotomandimby (R12y) Mihamina a écrit:
En gros, il a meme deja prevu l'appel au script de nettoyage, mais ledit script n'est pas encore existant.
Le script clean.sh est généré par apt-mirror (par défaut sur Debian dans /var/spool/apt-mirror/var/). À toi de l'exécuter ensuite pour effacer les fichiers.
La variable non documentée _autoclean a l'air de rendre l'effacement automatique lorsqu'elle est mise à 1 dans le fichier de configuration. À utiliser avec précaution AMHA.
Arnaud
Vendredi 19 septembre 2008, vers 06:31:39 (+0200), Rakotomandimby
(R12y) Mihamina a écrit:
En gros, il a meme deja prevu l'appel au script de nettoyage, mais
ledit script n'est pas encore existant.
Le script clean.sh est généré par apt-mirror (par défaut sur Debian
dans /var/spool/apt-mirror/var/). À toi de l'exécuter ensuite pour
effacer les fichiers.
La variable non documentée _autoclean a l'air de rendre l'effacement
automatique lorsqu'elle est mise à 1 dans le fichier de configuration.
À utiliser avec précaution AMHA.
Vendredi 19 septembre 2008, vers 06:31:39 (+0200), Rakotomandimby (R12y) Mihamina a écrit:
En gros, il a meme deja prevu l'appel au script de nettoyage, mais ledit script n'est pas encore existant.
Le script clean.sh est généré par apt-mirror (par défaut sur Debian dans /var/spool/apt-mirror/var/). À toi de l'exécuter ensuite pour effacer les fichiers.
La variable non documentée _autoclean a l'air de rendre l'effacement automatique lorsqu'elle est mise à 1 dans le fichier de configuration. À utiliser avec précaution AMHA.