Listing des paquets

Bonjour :smiley:

J’ai remarqué qu’il était impossible de savoir dans quel CD de Debian se trouvait un paquet.
J’ai donc développé un petit programme en C permettant à partir d’un CD de Debian, de lister les paquets qu’il contient.

Je pense qu’il serait interessant de rajouter au site cette fonctionnalité, qu’en pensez-vous ?

Il me reste juste à télécharger les CD pour faire ce listing, et les ajouter dans un base de données, pour les inclure dans une page web.

Si tu veux mais en principe, une fois fait l’install, les CDs, on s’en tamponne. :wink:

C’est possible !
Ici : atterer.net/jigdo/jigdo-search.php?list

Mais c’est vrai que c’est difficile à trouver (faut voir la fac de la partie CD s du site), et c’est un peu le bordel pour s’y retrouver.

Par contre je suis pas d’accord avec Ricardo : c’est vraiment pratique de s’avoir le contenu, par ex. une fois l’installation de faite je n’avais pas internet à cause de mon modem Sagem, et je devais installer pas mal de paquets pour finalement installer le bon pilote, donc il vaut mieux savoir quels CDs télécharger et graver plutôt que de faire des allez retour avec un PC qui a le net et celui qui ne l’a pas.

hello,

Prenons par exemple MySQL vous allez trouver dans le répertoire /cdrom/dists/slink/main/binary-i386 de chaque CD un fichier “Packages” qui contient la liste des paquets de ce répertoire. Il suffit donc de le copier sur le disque dur dans un répertoire vide par exemple /var/paquet sous un nom bien explicite comme par exemple cd_deb_2.1_I si c’est le premier CD et ainsi de suite pour les autres CD
Ensuite il petit grep et zou … c’est fini

/usr/bin/search_pk

grep Pack /pack/* |grep $1

Résultats d’un ‘search_pk mysql’

/pack/cd_deb_2.1_II:Package: mysql-base
/pack/cd_deb_2.1_II:Package: mysql-dev
/pack/cd_deb_2.1_II:Package: mysql-doc
/pack/cd_deb_2.1_II:Package: php3-cgi-mysql
/pack/cd_deb_2.1_II:Package: php3-mysql
/pack/cd_deb_2.1_II:Package: python-mysql
/pack/cd_deb_2.1_II:Package: www-mysql
/pack/nonfree:Package: mysql-manual
/pack/nonfree:Package: mysql-server

Je sais donc exactement le nom des paquets à installer par ex “mysql-server” et que celui-ci se trouve dans le CD “non-free”

Notes importantes:
Cette méthode est très utile avec apt-get !! car il suffit de mettre le bon CD dans le lecteur de le monter et bien configurer /etc/apt/sources.list.
De plus les noms de paquet sont toujours en minuscules
Cette méthode est utile quand on connait le ~ nom du truc à installer . sinon c’est dselect !!

Source : linux-france.org/article/ltt/ltt10/

bonjour,
à propos de lister des paquets, j’ai fait un petit script qui pourrait servir à ceux qui viennent d’avoir un gros souci de dépendances, étant en sarge, et ayant tenté l’installation de paquet sid ou etch à l’arrache …

J’ai pas poussé plus loin, et je peux pas plus le tester vu que chez moi, il ne marche pas 8) mdr, et oui … je ne m’explique pas pourquoi aucun paquet sarge n’est installable chez moi (dixit apt-get via mon script … mais il se peut qu’il marche normalement chez d’autre …), si quelques uns veulent bien le tester :unamused:

NB:
1/ Vous le mettez n’importe où en le nommant comme vous voulez
2/ Vous passez en root
3/ chmod root ou user +x pour le rendre exécutable (ça va mieux en le disant)
3bis/ Si vous avez configuré sudo pour que votre user non root puisse utiliser dpkg et apt-get, vous éditez le script placez sudo devant toutes les invocations des-dits programmes.
4/ Vous le lancez sans craintes, ( ./verslàoùilest/lenomduscript.sh) l’instruction fatale est dotée de l’option -s (pour simulation : apt-get -s install …)
5/ Ben aprés on vois si ya des succés ou pas, et si ça casse pas tout, avant de rééditer le script pour enlever l’option -s …

voilà :

[code]#!/bin/bash
rech=“sarge”
rech1=“stable”
vide=" "
declare -i nbrech=0
declare -i total=0
prim_pkg=""

setterm -cursor off

/tmp/rapportpkgs
/tmp/traitepkgs

echo “Recherche des paquets non $rech **************”
dpkg -l | grep ‘ii’ >> /tmp/rapportpkgs
while read line; do
nom=$(echo “$line” | awk ‘{print $2}’)
if [ “$prim_pkg” != “” ] && [ “$prim_pkg” == “$nom” ]; then
echo
echo “erreur, relancez le script svp”
exit
fi
[ “$prim_pkg” == “” ] && prim_pkg="$nom"

version=$(echo “$line” | awk ‘{print $3}’)
contexte="$(apt-cache policy $nom | tr -d ‘’ |
grep -B1 $rech | awk ‘{print $1}’)"
contexte="$(echo $contexte | sed s/\n//g | awk ‘{print $1}’)"
if [ “$contexte” == “” ]; then
contexte="$(apt-cache policy $nom | tr -d '
’ |
grep -B1 $rech1 | awk ‘{print $1}’)"
contexte="$(echo $contexte | sed s/\n//g | awk ‘{print $1}’)"
fi
if [ “$contexte” != “$version” ]; then
echo -ne “\rListing en cours: $vide”
echo -ne “\rListing en cours: $nom”
echo “$nom” >> /tmp/traitepkgs
nbrech+=1
fi
total+=1
done < /tmp/rapportpkgs
echo
setterm -cursor on
echo "
nombre total de paquets : $total
nombre de paquets correspondants : $nbrech"
if [ $(cat /tmp/traitepkgs | wc -l) -ge 1 ]; then
echo -n "Pour ramener ces paquets vers sarge, saisissez ‘downgrade’ puis entrez: "
read reponse
if [ “$reponse” == “downgrade” ]; then
while read pkg; do
echo -ne "\rinstallation de $pkg/$rech: "
apt-get -s install -t “$rech” “$pkg/$rech” 2> /dev/null 1> /dev/null
[ $? -ne 0 ] && echo “echec …” || echo “succès …”
done < /tmp/traitepkgs
else
echo “annulation …”
echo “la liste des paquets est disponible dans /tmp/traitepkgs”
fi
fi

[/code]

pourquoi pas :
vide=""
 :question:
[code]echo "
nombre total de paquets : $total
nombre de paquets correspondants : $nbrech" [/code]
Le fait qu'
echo
ne soit pas sur le m^ ligne que la commande n'a pas d'importance ?

pourquoi pas :
vide=""
:question:

echo " nombre total de paquets : $total nombre de paquets correspondants : $nbrech"
Le fait qu’
echo
ne soit pas sur le m^ ligne que la commande n’a pas d’importance ?

bonjour ricardo,
1/ un paquets de 10 caractères de longueur s’écrivant aprés un paquet qui en compte 25, ça va pas faire joli, ça va se chevauffer, exemple :
pkg1:abcdefghijkl
pkg2: mnopqrst
écriture du premier paquet :
Listing des paquets : abcdefghijkl
écriture du second (mais ça se passe sur la même ligne, ya pas de \n) :
Listing des paquets : mnopqrstijkl
Je m’en sers pour remettre la ligne à préfixe + nombre suffisant de blanc.

2/ je pense qu’on peut le remonter en effet, c’est affaire de visuel, je l’ai peut-être laissé comme ça par inadvertance, à la base ça devait être puur forcer un retour à la ligne (\n) aprés la succession de echo -ne '\r …" peut être …