logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 16-09-2010 05:29:49

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010

Python : Obtenir la liste des paquets installés.

Ce script ne m'appartient pas et j'en remercie l'auteur pour sa libre diffusion.

Il permet d'enregistrer dans un fichier la liste des paquets installés.

Il est bon de savoir que dans certains cas, des paquets sont listés par dpkg et non apt, et inversement.

Ce script compare donc les 2 commandes précitées, et concatène le tout dans un fichier. L'intérêt est de pouvoir réutiliser le fichier de sortie pour une réinstallation future et rapide avec : 'apt-get install < apt-install-list.txt'

#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
#
# compare les listes de paquets obtenues avec :
#  $ dpkg --get-selections
# et
#  $ apt-show-versions -b

# importations
import commands, string, time

timestamp = time.strftime("%d%m%Y", time.localtime())
destination = "apt-install-list_%s.txt" %(timestamp)

# charger la liste selon dpkg
Dpkg = commands.getoutput('dpkg --get-selections').split('\n')
Dpkg = filter(lambda x: x[-8:]=='\tinstall', Dpkg)
Dpkg = [x.split('\t')[0] for x in Dpkg]
Dpkg.sort()

# charger la liste selon apt
Apt = commands.getoutput('apt-show-versions -b').split('\n')
Apt = [x.split('/')[0] for x in Apt]
Apt.sort()

# chercher les paquets dpkg absents de apt
DpkgNotInApt = []
for Name in Dpkg:
  if Name not in Apt:
    DpkgNotInApt.append(Name)

# chercher les paquets apt absents de dpkg
AptNotInDpkg = []
for Name in Apt:
  if Name not in Apt:
    AptNotInDpkg.append(Name)

# afficher les résultats
if len(DpkgNotInApt):
  print "> Paquets 'dpkg' non listés par 'apt' :\n\t%s" % string.join(DpkgNotInApt, '\n\t')
  print "  Ce sont des paquets installés manuellement ?\n"
else:
  print "> Tous les paquets 'dpkg' sont dans 'apt'\n"
if len(AptNotInDpkg):
  print "> Paquets 'apt' non listés par 'dpkg' :\n\t%s" % string.join(AptNotInDpkg, '\n\t')
else:
  print "> Tous les paquets 'apt' sont dans 'dpkg'"

# enregistrer les paquets à installer avec apt
f = open(destination, 'w')
f.writelines([x+'\n' for x in Apt])
f.close()
print "> Liste des paquets à installer avec 'apt' enregistrée dans 'apt-install-list.txt'"
print "  Commande : 'apt-get install < apt-install-list.txt'"


Par rapport au script originel, j'ai simplement rajouté la date dans le nom du fichier de sortie.

Dernière modification par zoroastre74 (16-09-2010 05:32:56)

Hors ligne

#2 18-10-2010 00:01:39

nofun
Membre
Lieu : Toulouse
Inscription : 21-04-2009

Re : Python : Obtenir la liste des paquets installés.

hello,

as-tu un exemple de « Paquets 'apt' non listés par 'dpkg' » ? Ou mieux: un moyen de produire un tel cas.

Je dois dire que je ne vois pas trop comment ceci est possible.

Merci.

Hors ligne

#3 18-10-2010 07:05:54

Thuban
aka prx
Distrib. : OpenBSD
Noyau : current
(G)UI : cwm
Inscription : 09-01-2009
Site Web

Re : Python : Obtenir la liste des paquets installés.

Tiens, étrange, j'utilisais toujours cette commande jusuqu'ici, et ça fonctionnait très bien :

dpkg --get-selections >> mes_paquets

Hors ligne

#4 18-10-2010 19:25:36

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010

Re : Python : Obtenir la liste des paquets installés.

Yep !

Effectivement, nofun, je ne m'étais jamais posé la question. Comme je l'ai signalé, ce script n'est pas de moi, et j'ai bêtement recopier la définition sans trop m'interroger...du coup, je vais être obligé de creuser la question... hmm

De toute manière, apt utilise dpkg pour installer les paquets et les dépendances. L'inverse me semble impossible...dpkg travaille avec les .deb, apt avec le nom du paquet. OK.

Yes, Thuban,

dpkg --get-selections


fonctionne tres bien, c'est d'ailleurs la commande utilisée dans ce script.

La seule chose que l'on puisse conclure à ce jour, c'est que python est trop CÖÖL. smile

@++

Hors ligne

#5 19-10-2010 06:47:43

Thuban
aka prx
Distrib. : OpenBSD
Noyau : current
(G)UI : cwm
Inscription : 09-01-2009
Site Web

Re : Python : Obtenir la liste des paquets installés.

Je ne m'y connais pas assez en programmation pour avoir une opinion correcte sur ce sujet, mais j'ai beaucoup entendu de la part d'apprentis programmeus (ça sera leur boulot, pas comme moi qui bricole juste en amateur), que python c'était vraiment le bazar, brouillon, pas propre, que ça fait un peu tout mais pas forcément bien.
Bref, je n'ai pas appris le python (d'ailleur, faudrait pour aider beaucoup de projet, car ils ne sont pas en C++ ou rarement), mais qu'en pensez vous?

Hors ligne

#6 19-10-2010 11:44:03

NuDub
Membre
Lieu : OISE
Distrib. : Debian Testing
Noyau : 3.16 amd64
(G)UI : LXDE-GNOME-KDE
Inscription : 31-05-2009

Re : Python : Obtenir la liste des paquets installés.

Je suis également un amateur en programmation (C++), mais sinon si il y a des projet en C ou C++ je pense.

Après chaque langage à ses avantages et inconvénients, je connais un peu Python, du moins, j'ai commencé à lire des tutos, et je trouve pas se langage fouillons. D'ailleurs j'ai aussi lu cette remarque par rapport à Java, comme quoi.

Je pense que c'est aussi une histoire d'habitude, il y en a qui jure que par Java, d'autre le C ou le C++.

D'ailleurs Python est bien pour commencer la prog, bien que, pour ma part, j'ai commencé par le C puis le C++.

J'ai une préférence pour le C++, mais je reconnais que Python me semble bien pratique, car c'est un langage interprété donc on peut se permette de juste faire des petits scripts.

A la différence d'un langage compilé ou on fait un exécutable et juste pour 2 commandes c'est pas très utile.

D'ailleurs avec Python on peut se permette se genre de petit script, car faire ça en C ou C++ sa fait un peu artillerie lourde pour chasser des mouches, mais avec Python on peut aussi faire de l'OO et donc des programmes plus conséquent.

Voilà sans être un grand utilisateur j'aime bien ce langage, d'ailleurs quand je pourrais je m'y plongerais plus, car sa peut servir aussi sur Mac.

Dernière modification par NuDub (19-10-2010 11:48:05)


VM Debian Testing sur Win7

Hors ligne

#7 25-10-2010 02:17:20

Asmodée
Membre
Lieu : /dev/null
Distrib. : Squeeze
Inscription : 16-05-2010

Re : Python : Obtenir la liste des paquets installés.

Thuban a écrit :

python c'était vraiment le bazar, brouillon, pas propre, que ça fait un peu tout mais pas forcément bien.


J'aimerais savoir de quoi ils parlent... L'opinion peut se défendre, mais elle me semble pas très juste :
-"bazar, brouillon, pas propre" : je trouve ça bizarre parlant d'un langage qui défini ses blocs par indentation par exemple... Il me semble que le code en devient, au contraire, moins brouillon et plus propre du fait des contraintes de "présentation" qui sont censées donner de bonnes habitudes aux programmeurs pour garder le code lisible.
Je ne vois pas ce qui expliquerait que le C++ (seul autre langage que j'ai pratiqué à part python) ou java (on peut pas dire que j'ai pratiqué, j'ai plutôt décrypté ce que d'autres ont fait) est plus "propre" que python...

Après, si c'est le typage dynamique et les choses du genre qui leur font dire ça, c'est que ces personnes n'ont pas le recule nécessaire pour dire ce qui va entrer dans une fonction ou ce qu'elle retournera... On peut se poser moins de questions en python... Tout ça, pour moi, c'est de la flexibilité, pas le bazar. Et si un développeur n'a pas la rigueur nécessaire pour bien coder, alors oui, il faut tendre vers des langages plus stricts : en plus d'être souvent plus rapides, les langages plus stricts obligent les développeurs à prendre la temps de savoir ce qu'ils font.

Mais au final, tout dépend de ce que tu veux... Si c'est pour faire du traitement de données, automatiser, faire un lecteur de webradio en quelques minutes/heures au lieu de quelques jours, c'est python qu'il faut. Si c'est pour faire du traitement intensif ou développer des applications dans lequels la vitesse et/ou la taille de l'exécutable sont primordiales, alors, oui, il faut s'axer sur autre chose.

Bref, tout ça pour dire (n'hésite pas à me dire si je me trompe), que je ne vois pas en quoi python peut être plus bordélique que d'autres langages, sauf à être un développeur peu soigneux qui attend les erreurs de compilation pour se rendre compte qu'il passait un string à une fonction qui ne prend que des floats.

-"pas forcément bien" : là, faudrait vraiment me préciser...


Bien sûr, c'est biaisé: je suis un sale connard de prosélytiste qui veut vendre son langage de programmation favori. Et je vais en rajouter: mes amis et mon frère qui sont en école/fac d'info s'accordent tous pour dire qu'une fois qu'on a goûté à python et la pléthore de bibliothèques qui vont avec, on se demande pourquoi aller se faire chier avec le C++ ou même le Java (je ne parle pas de tout le temps utiliser python, mais pour la majorité des projets, c'est suffisant).

Mais je pense vraiment qu'il vaut le coup.


Bref, je n'ai pas appris le python (d'ailleur, faudrait pour aider beaucoup de projet, car ils ne sont pas en C++ ou rarement), mais qu'en pensez vous?


Je trouve que python est un excellent langage pour les scientifiques. La profusion de bibliothèques simplifient la vie, et avec un peu d'entraînement, tu sauras très vite faire des scripts impeccables.

Pour un physicien-chimiste, c'est un vrai plus. Au niveau du boulot en tant que tel, mais aussi au niveau de l'intérêt suscité chez l'éventuel employeur : les bibliothèques dispo n'ont (presque) rien à envier aux toolbox de Matlab et python permet bien plus !


Pour en finir avec python, il existe quelques extensions remarquables pour accélérer un peu le tout, dont Cython, dispo dans les dépôts bien sûr, permettant de développer très rapidement des modules en C pour python avec un langage proche de python. Je m'étais bien mis au C++ car j'avais besoin d'accélérer certains de mes programmes... J'ai abandonné en découvrant Cython smile

Dernière modification par Asmodée (25-10-2010 02:21:29)

Hors ligne

#8 25-10-2010 02:34:37

Asmodée
Membre
Lieu : /dev/null
Distrib. : Squeeze
Inscription : 16-05-2010

Re : Python : Obtenir la liste des paquets installés.

Bon, après la naissance de ce troll glorieux (puisse-t-il crever bien vite), on en revient à nos moutons...

Le script ne fait que comparer le résultat de "dpkg --get-selections" et celui de "apt-show-versions -b"

La principale différence, c'est que l'un va donner la liste de tous les paquets installés et l'autre va donner la liste de tous les paquets pouvant être mis à jour. Donc niveau information au final, ce n'est pas des plus utile : au moins synaptic et aptitude ont déjà un filtre pour les paquets obsolètes...

Hors ligne

#9 25-10-2010 02:37:14

Asmodée
Membre
Lieu : /dev/null
Distrib. : Squeeze
Inscription : 16-05-2010

Re : Python : Obtenir la liste des paquets installés.

zoroastre74 a écrit :

La seule chose que l'on puisse conclure à ce jour, c'est que python est trop CÖÖL. smile


Je pense que c'est raisonnable comme affirmation en effet.

xD

Hors ligne

#10 25-10-2010 05:44:22

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : Python : Obtenir la liste des paquets installés.

Intéressant ce débat sur python, merci à vous de l'avoir soulevé.

Amitié, Joel

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#11 05-11-2010 22:13:01

Pierre
Membre
Distrib. : LENNY
(G)UI : Gnome
Inscription : 19-06-2010

Re : Python : Obtenir la liste des paquets installés.

En tout cas pour un néophyte la documentation sur Python me paraît abondante, et il est très facile même pour "un bricoleur du dimanche" de s'informer sur ce language. Et effectivement les bibliothèques, pour ce que j'en ai lu ouvrent pas mal de perspective, sans compter l'aspect multiplateforme tant du laguage... que des bibliothèques.

Bien à vous, Pierre

PS : Joël, promis juré, dès que j'ai 5 minutes je me présente, mais là je pouvais pas laisser passer.... wink

Hors ligne

#12 06-11-2010 00:48:04

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010

Re : Python : Obtenir la liste des paquets installés.

Yep!

Je suis agréablement surpris de cet engouement pour python. C'est un langage qui convient parfaitement pour l'administration d'un os comme linux, aussi bien pour de petites applications que des plus importantes. Il est effectivement appréhendable par le plus grand monde, sa structure, ses bibliothèques nombreuses et ouvertes, sa convivialité et l'effervescence qu'il connait depuis quelques années sont sa force.
D'ailleurs, d'un certain point de vue, il peut être comparé à linux dans son évolution...libre et vertueux.

Par contre, et peut être que cela devrait faire sujet d'un débat et/ou sondage, mais je trouverai agréable que la section programmation puisse se décliner vers d'autres sous-sections, telles que php, python, c, java, perl, shell, etc...

Il me semble qu'une section programmation demande une hierarchisation développée tant elle peut regroupée de sujets et compétences différentes. Cela peut également favoriser les contributeurs à s'exprimer dans une section qui leur parle...

@+

Hors ligne

#13 06-11-2010 02:25:47

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : Python : Obtenir la liste des paquets installés.

je trouverai agréable que la section programmation puisse se décliner vers d'autres sous-sections,


Oui, reste que le fait d'établir une telle déclinaison au niveau du forum le rendrait vite un peu "gros" pour tout le monde en page d'accueil.

Par contre, une telle déclinaison me paraît appropriée au wiki, surtout avec le report habituel dans la section du DebianDocs(wiki) pour chaque nouvelle contribution.
Ainsi, nous aurions d'un côté un minimum d'informations, de l'autre un débat d'utilisation en complément pour chaque langage.
Est-ce réalisable ?
C'est kiki kommence ? smile

Amitié, Joel


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#14 06-11-2010 13:45:38

Pierre
Membre
Distrib. : LENNY
(G)UI : Gnome
Inscription : 19-06-2010

Re : Python : Obtenir la liste des paquets installés.

"C'est un langage qui convient parfaitement pour l'administration d'un os comme linux, aussi bien pour de petites applications que des plus importantes"
En tout cas c'est en découvrant Linux que j'ai découvert Python. Jusque là, pour moi c'était un langage de scripts. De plus, j'ai eu la surprise de découvrir que beaucoup de programmes qui tournent sur Linux peuvent être "customizés" via Python.
"Par contre, une telle déclinaison me paraît appropriée au wiki"
En tout cas c'est raccord avec la philosophie du wiki de D.F. il me semble.
Si je peux me permettre, il serait peut-être aussi judicieux de parler des bases de données, Mysql est certainement très puissante, gratuite, multiplateforme etc... mais il existe aussi d'autres bases de données Open Sources et tout le monde n'a pas forcément besoin d'une "usine à gaz" avec serveur de gestion de base de données, client etc... pour gérer sa petite bibliothéque perso.

Bien à vous,

Pierre

Hors ligne

Pied de page des forums