J'utilise grep pour rechercher une ligne dans un fichier trié de 14000
lignes.
Je suppose que la recherche se fait ligne par ligne dans le fichier et
cela me semble un peu bourrin quand la recherche s'effectue plusieurs
centaines de fois.
Existe-t-il un remplaçant pour grep qui effectue une recherche plus
rapide genre recherche par dichotomie ?
Je souhaite utiliser cela dans un script shell.
D'avance merci
Jean-Pierre
--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Si j'ai bien compris, tu utilises apt-proxy pour faire un mirroir de sarge.
Oui, apt-proxy est seulement un proxy "intelligent". Il ne va chercher sur Internet que les paquets qu'on lui demande et pour savoir si le paquet qu'il a dans son cache est la dernière version, il consulte le fichier Packages Apt-proxy 1.3 est lancé par xinetd donc pas de serveur supplémentaire
Non. Si c'est pour mirrorer l'équivalent des 14 CDs de la Sarge, c'est non merci. En plus, il est inconnu sur http://www.debian.org/distrib/packages et la dernière mise à jour date de juillet 2003 (Mainteneur ?)
Bye Jean-Pierre
-- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Le 15/11/04 à 10:39, Sébastien GALLET écrivait:
Si j'ai bien compris, tu utilises apt-proxy pour faire un mirroir de sarge.
Oui, apt-proxy est seulement un proxy "intelligent".
Il ne va chercher sur Internet que les paquets qu'on lui demande et pour
savoir si le paquet qu'il a dans son cache est la dernière version, il
consulte le fichier Packages
Apt-proxy 1.3 est lancé par xinetd donc pas de serveur supplémentaire
Non.
Si c'est pour mirrorer l'équivalent des 14 CDs de la Sarge, c'est non
merci.
En plus, il est inconnu sur http://www.debian.org/distrib/packages
et la dernière mise à jour date de juillet 2003 (Mainteneur ?)
Bye
Jean-Pierre
--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Si j'ai bien compris, tu utilises apt-proxy pour faire un mirroir de sarge.
Oui, apt-proxy est seulement un proxy "intelligent". Il ne va chercher sur Internet que les paquets qu'on lui demande et pour savoir si le paquet qu'il a dans son cache est la dernière version, il consulte le fichier Packages Apt-proxy 1.3 est lancé par xinetd donc pas de serveur supplémentaire
Non. Si c'est pour mirrorer l'équivalent des 14 CDs de la Sarge, c'est non merci. En plus, il est inconnu sur http://www.debian.org/distrib/packages et la dernière mise à jour date de juillet 2003 (Mainteneur ?)
Bye Jean-Pierre
-- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Sébastien GALLET
J.Pierre Pourrez a écrit :
Le 15/11/04 à 10:39, Sébastien GALLET écrivait:
Si j'ai bien compris, tu utilises apt-proxy pour faire un mirroir de sarge.
Oui, apt-proxy est seulement un proxy "intelligent". Il ne va chercher sur Internet que les paquets qu'on lui demande et pour savoir si le paquet qu'il a dans son cache est la dernière version, il consulte le fichier Packages Apt-proxy 1.3 est lancé par xinetd donc pas de serveur supplémentaire
apt-mirror est lancé par mon ami cron pendant que je dors ...
Non. Si c'est pour mirrorer l'équivalent des 14 CDs de la Sarge, c'est non merci.
c'est pire que ça ;) du -h /mirror/debian : 29G
En plus, il est inconnu sur http://www.debian.org/distrib/packages
Normal, ce n'est pas un paquet "officiel"
et la dernière mise à jour date de juillet 2003 (Mainteneur ?)
au moins il est plus récent que grep ;) : 2002-03-26
Bye Jean-Pierre
Seb
-- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
J.Pierre Pourrez a écrit :
Le 15/11/04 à 10:39, Sébastien GALLET écrivait:
Si j'ai bien compris, tu utilises apt-proxy pour faire un mirroir de sarge.
Oui, apt-proxy est seulement un proxy "intelligent".
Il ne va chercher sur Internet que les paquets qu'on lui demande et pour
savoir si le paquet qu'il a dans son cache est la dernière version, il
consulte le fichier Packages
Apt-proxy 1.3 est lancé par xinetd donc pas de serveur supplémentaire
apt-mirror est lancé par mon ami cron pendant que je dors ...
Si j'ai bien compris, tu utilises apt-proxy pour faire un mirroir de sarge.
Oui, apt-proxy est seulement un proxy "intelligent". Il ne va chercher sur Internet que les paquets qu'on lui demande et pour savoir si le paquet qu'il a dans son cache est la dernière version, il consulte le fichier Packages Apt-proxy 1.3 est lancé par xinetd donc pas de serveur supplémentaire
apt-mirror est lancé par mon ami cron pendant que je dors ...
Non. Si c'est pour mirrorer l'équivalent des 14 CDs de la Sarge, c'est non merci.
c'est pire que ça ;) du -h /mirror/debian : 29G
En plus, il est inconnu sur http://www.debian.org/distrib/packages
Normal, ce n'est pas un paquet "officiel"
et la dernière mise à jour date de juillet 2003 (Mainteneur ?)
au moins il est plus récent que grep ;) : 2002-03-26
Bye Jean-Pierre
Seb
-- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Pierre Meurisse
> >Si c'est pour mirrorer l'équivalent des 14 CDs de la Sarge, c'est non >merci. c'est pire que ça ;) du -h /mirror/debian : 29G >En plus, il est inconnu sur http://www.debian.org/distrib/packages Normal, ce n'est pas un paquet "officiel" >et la dernière mise à jour date de juillet 2003 (Mainteneur ?) au moins il est plus récent que grep ;) : 2002-03-26 >
il y a aussi apt-move, qui forme une arborescence debian à partir des fichiers trouvés dans /var/cache/apt/archives, et qui permet aussi de synchroniser avec les paquets installés.
L'ennui, c'est qu'il y a un bug de gawk qui l'empêche de fonctionner en ce moment. J'attends avec impatience qu'il soit corrigé.
#264786: broken gawk hangs apt-move
A propos, mon répertoire /var/cache/apt/archives enfle de façon dramatique. Si quelqu'un connait une façon de contourner ...
A+
-- Pierre Meurisse Utilisateur Linux n° 160794
-- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
> >Si c'est pour mirrorer l'équivalent des 14 CDs de la Sarge, c'est non
>merci.
c'est pire que ça ;)
du -h /mirror/debian : 29G
>En plus, il est inconnu sur http://www.debian.org/distrib/packages
Normal, ce n'est pas un paquet "officiel"
>et la dernière mise à jour date de juillet 2003 (Mainteneur ?)
au moins il est plus récent que grep ;) : 2002-03-26
>
il y a aussi apt-move, qui forme une arborescence debian à partir des
fichiers trouvés dans /var/cache/apt/archives, et qui permet aussi de
synchroniser avec les paquets installés.
L'ennui, c'est qu'il y a un bug de gawk qui l'empêche de fonctionner en
ce moment. J'attends avec impatience qu'il soit corrigé.
#264786: broken gawk hangs apt-move
A propos, mon répertoire /var/cache/apt/archives enfle de façon
dramatique. Si quelqu'un connait une façon de contourner ...
A+
--
Pierre Meurisse
Utilisateur Linux n° 160794
--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
> >Si c'est pour mirrorer l'équivalent des 14 CDs de la Sarge, c'est non >merci. c'est pire que ça ;) du -h /mirror/debian : 29G >En plus, il est inconnu sur http://www.debian.org/distrib/packages Normal, ce n'est pas un paquet "officiel" >et la dernière mise à jour date de juillet 2003 (Mainteneur ?) au moins il est plus récent que grep ;) : 2002-03-26 >
il y a aussi apt-move, qui forme une arborescence debian à partir des fichiers trouvés dans /var/cache/apt/archives, et qui permet aussi de synchroniser avec les paquets installés.
L'ennui, c'est qu'il y a un bug de gawk qui l'empêche de fonctionner en ce moment. J'attends avec impatience qu'il soit corrigé.
#264786: broken gawk hangs apt-move
A propos, mon répertoire /var/cache/apt/archives enfle de façon dramatique. Si quelqu'un connait une façon de contourner ...
A+
-- Pierre Meurisse Utilisateur Linux n° 160794
-- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Sebastien Mathy
Le Lundi 15 Novembre 2004 18:03, Pierre Meurisse a écrit :
A propos, mon répertoire /var/cache/apt/archives enfle de façon dramatique. Si quelqu'un connait une façon de contourner ...
apt-get clean ?
-- Sebastien Mathy
Le Lundi 15 Novembre 2004 18:03, Pierre Meurisse a écrit :
A propos, mon répertoire /var/cache/apt/archives enfle de façon
dramatique. Si quelqu'un connait une façon de contourner ...
Le Lundi 15 Novembre 2004 18:03, Pierre Meurisse a écrit :
A propos, mon répertoire /var/cache/apt/archives enfle de façon dramatique. Si quelqu'un connait une façon de contourner ...
apt-get clean ?
-- Sebastien Mathy
Pierre Meurisse
On Mon, Nov 15, 2004 at 06:27:08PM +0100, Sebastien Mathy wrote:
Le Lundi 15 Novembre 2004 18:03, Pierre Meurisse a écrit : > A propos, mon répertoire /var/cache/apt/archives enfle de façon > dramatique. Si quelqu'un connait une façon de contourner ...
apt-get clean ?
je connais, mais il y avait avant :
il y a aussi apt-move, qui forme une arborescence debian à partir des fichiers trouvés dans /var/cache/apt/archives, ...
Je garde donc mes paquets en réserve en espérant que le bug va bientôt être corrigé.
A+
-- Pierre Meurisse Utilisateur Linux n° 160794
-- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
On Mon, Nov 15, 2004 at 06:27:08PM +0100, Sebastien Mathy wrote:
Le Lundi 15 Novembre 2004 18:03, Pierre Meurisse a écrit :
> A propos, mon répertoire /var/cache/apt/archives enfle de façon
> dramatique. Si quelqu'un connait une façon de contourner ...
apt-get clean ?
je connais, mais il y avait avant :
il y a aussi apt-move, qui forme une arborescence debian à partir des
fichiers trouvés dans /var/cache/apt/archives, ...
Je garde donc mes paquets en réserve en espérant que le bug va bientôt
être corrigé.
A+
--
Pierre Meurisse
Utilisateur Linux n° 160794
--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
On Mon, Nov 15, 2004 at 06:27:08PM +0100, Sebastien Mathy wrote:
Le Lundi 15 Novembre 2004 18:03, Pierre Meurisse a écrit : > A propos, mon répertoire /var/cache/apt/archives enfle de façon > dramatique. Si quelqu'un connait une façon de contourner ...
apt-get clean ?
je connais, mais il y avait avant :
il y a aussi apt-move, qui forme une arborescence debian à partir des fichiers trouvés dans /var/cache/apt/archives, ...
Je garde donc mes paquets en réserve en espérant que le bug va bientôt être corrigé.
A+
-- Pierre Meurisse Utilisateur Linux n° 160794
-- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Yves Rutschle
On Sun, Nov 14, 2004 at 07:42:38PM +0100, J.Pierre Pourrez wrote:
Le script est executé une fois par semaine, le fichier de 14000 lignes est créé à chaque fois et correspond aux 14000 paquets de la Sarge.
Optimiser un script qui prend 5 minutes à s'executer toutes les semaines n'est pas une bonne utilisation de son temps :)
Je vois au moins un changement à faire:
# recenser tous les noms de fichiers des paquets dans Packages for PACKAGE in `find $DISTS_DIR -name Packages`; do grep $MOTIF $PACKAGE | sed "s!$MOTIF!$HOST/!" >> $TMPFILE done # on trie tous les noms de fichiers récupérés mv $TMPFILE $TMPFILE.orig cat $TMPFILE.orig | sort > $TMPFILE rm $TMPFILE.orig
(Ça marche les points d'exclamation? Mon shell n'a pas l'air content avec ça...)
# on supprime les paquets non recensés # éventuellement utiliser l'option -m de grep pour arrêter # la recherche à la première occurence for FICHIER in `find $HOST -name "*.deb"`; do if [ `grep -c $FICHIER $TMPFILE` = "0" ]; then echo "Remove $FICHIER" rm -f $FICHIER COUNT=$(($COUNT+1)) fi done
Ok, c'est donc la partie dont tu parlais à l'origine. Je n'ai pas d'idée évidente; une solution serait de construire un script sed qui efface les lignes contenues dans $TMPFILE, et l'appliquer à la sortie du find, donc qqch du genre:
sed -e "s///\//g" -e "s!(.*)!/1/d!" $TMPFILE > $TMPFILE2
(pour se retrouver dans $TMPFILE2 avec des lignes du genre: //var/lib/apt-proxy/blahblah.deb/d //var/lib/apt-proxy/foobar.deb/d ...
Puis: find $HOST -name "*.deb" | sed -f $TMPFILE2
(on peut alors retirer le `sort` de l'expression du haut, il ne sert plus).
Selon l'implémentation de sed (et si sed arrive à gérer 14000 lignes de script...), ça peut être ou ne pas être plus rapide que ta solution.
Y.
-- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
On Sun, Nov 14, 2004 at 07:42:38PM +0100, J.Pierre Pourrez wrote:
Le script est executé une fois par semaine, le fichier de 14000 lignes
est créé à chaque fois et correspond aux 14000 paquets de la Sarge.
Optimiser un script qui prend 5 minutes à s'executer toutes
les semaines n'est pas une bonne utilisation de son temps :)
Je vois au moins un changement à faire:
# recenser tous les noms de fichiers des paquets dans Packages
for PACKAGE in `find $DISTS_DIR -name Packages`; do
grep $MOTIF $PACKAGE | sed "s!$MOTIF!$HOST/!" >> $TMPFILE
done
# on trie tous les noms de fichiers récupérés
mv $TMPFILE $TMPFILE.orig
cat $TMPFILE.orig | sort > $TMPFILE
rm $TMPFILE.orig
(Ça marche les points d'exclamation? Mon shell n'a pas l'air
content avec ça...)
# on supprime les paquets non recensés
# éventuellement utiliser l'option -m de grep pour arrêter
# la recherche à la première occurence
for FICHIER in `find $HOST -name "*.deb"`; do
if [ `grep -c $FICHIER $TMPFILE` = "0" ]; then
echo "Remove $FICHIER"
rm -f $FICHIER
COUNT=$(($COUNT+1))
fi
done
Ok, c'est donc la partie dont tu parlais à l'origine. Je
n'ai pas d'idée évidente; une solution serait de construire
un script sed qui efface les lignes contenues dans $TMPFILE,
et l'appliquer à la sortie du find, donc qqch du genre:
sed -e "s///\\//g" -e "s!(.*)!/1/d!" $TMPFILE > $TMPFILE2
(pour se retrouver dans $TMPFILE2 avec des lignes du genre:
//var/lib/apt-proxy/blahblah.deb/d
//var/lib/apt-proxy/foobar.deb/d
...
Puis:
find $HOST -name "*.deb" | sed -f $TMPFILE2
(on peut alors retirer le `sort` de l'expression du haut, il
ne sert plus).
Selon l'implémentation de sed (et si sed arrive à gérer
14000 lignes de script...), ça peut être ou ne pas être
plus rapide que ta solution.
Y.
--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
On Sun, Nov 14, 2004 at 07:42:38PM +0100, J.Pierre Pourrez wrote:
Le script est executé une fois par semaine, le fichier de 14000 lignes est créé à chaque fois et correspond aux 14000 paquets de la Sarge.
Optimiser un script qui prend 5 minutes à s'executer toutes les semaines n'est pas une bonne utilisation de son temps :)
Je vois au moins un changement à faire:
# recenser tous les noms de fichiers des paquets dans Packages for PACKAGE in `find $DISTS_DIR -name Packages`; do grep $MOTIF $PACKAGE | sed "s!$MOTIF!$HOST/!" >> $TMPFILE done # on trie tous les noms de fichiers récupérés mv $TMPFILE $TMPFILE.orig cat $TMPFILE.orig | sort > $TMPFILE rm $TMPFILE.orig
(Ça marche les points d'exclamation? Mon shell n'a pas l'air content avec ça...)
# on supprime les paquets non recensés # éventuellement utiliser l'option -m de grep pour arrêter # la recherche à la première occurence for FICHIER in `find $HOST -name "*.deb"`; do if [ `grep -c $FICHIER $TMPFILE` = "0" ]; then echo "Remove $FICHIER" rm -f $FICHIER COUNT=$(($COUNT+1)) fi done
Ok, c'est donc la partie dont tu parlais à l'origine. Je n'ai pas d'idée évidente; une solution serait de construire un script sed qui efface les lignes contenues dans $TMPFILE, et l'appliquer à la sortie du find, donc qqch du genre:
sed -e "s///\//g" -e "s!(.*)!/1/d!" $TMPFILE > $TMPFILE2
(pour se retrouver dans $TMPFILE2 avec des lignes du genre: //var/lib/apt-proxy/blahblah.deb/d //var/lib/apt-proxy/foobar.deb/d ...
Puis: find $HOST -name "*.deb" | sed -f $TMPFILE2
(on peut alors retirer le `sort` de l'expression du haut, il ne sert plus).
Selon l'implémentation de sed (et si sed arrive à gérer 14000 lignes de script...), ça peut être ou ne pas être plus rapide que ta solution.
Y.
-- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Thomas Labourdette
Le lundi 15 Novembre 2004 09:06, J.Pierre Pourrez a écrit :
Le 14/11/04 à 23:26, Yves Rutschle écrivait:
> N'est pas ce à quoi sert la variable CLEANUP_DAYS dans > /etc/apt-proxy/apt-proxy.conf?
Pas vraiment Pour supprimer un paquet, il faut télécharger une nouvelle version du paquet, et que le paquet soit plus vieux que CLEANUP_DAYS jours.
C'est pour ça qu'il y a CLEAN_SWEEP. Tout paquet non accédé depuis le nombre de jours définis par CLEAN_SWEEP est supprimé.
@+ -- Jean BALLE (signature aléatoire) Dictionnaire Français-Japonais Prendre une photo : Yakapabougé
-- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Le lundi 15 Novembre 2004 09:06, J.Pierre Pourrez a écrit :
Le 14/11/04 à 23:26, Yves Rutschle écrivait:
> N'est pas ce à quoi sert la variable CLEANUP_DAYS dans
> /etc/apt-proxy/apt-proxy.conf?
Pas vraiment
Pour supprimer un paquet, il faut télécharger une nouvelle version du
paquet, et que le paquet soit plus vieux que CLEANUP_DAYS jours.
C'est pour ça qu'il y a CLEAN_SWEEP. Tout paquet non accédé depuis le nombre
de jours définis par CLEAN_SWEEP est supprimé.
@+
--
Jean BALLE (signature aléatoire)
Dictionnaire Français-Japonais
Prendre une photo : Yakapabougé
--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org