Comment comparer (et connaitre) les paquets debian installés sur 2 serveurs

Je me suis retrouvé dans la situation ou je voulais connaitre la liste des paquets installés sur une Debian 5.0 Lenny et comparer cette liste avec ce qui était sur un autre serveur.
Tout d'abord pour obtenir une liste exhaustive des paquets présent sur un serveur Debian j'utilise l'excellent dpkg.
dpkg -l
va donner une liste des paquets installés par ordre alphabétique avec version et description et status, qqch du style:
gocarto01:~# dpkg -l

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name Version Description
+++-=================================-=================================-==================================================================================
ii adduser 3.110 add and remove users and groups
ii apache2 2.2.9-10+lenny2 Apache HTTP Server metapackage
ii apache2-doc 2.2.9-10+lenny2 Apache HTTP Server documentation
ii apache2-mpm-prefork 2.2.9-10+lenny2 Apache HTTP Server - traditional non-threaded model
ii apache2-utils 2.2.9-10+lenny2 utility programs for webservers
ii apache2.2-common 2.2.9-10+lenny2 Apache HTTP Server common files
ii apt 0.7.20.2+lenny1 Advanced front-end for dpkg
ii apt-file 2.1.5 APT package searching utility -- command-line interface
ii apt-utils 0.7.20.2+lenny1 APT utility programs
ii base-files 5lenny2 Debian base system miscellaneous files
ii base-passwd 3.5.20 Debian base system master password and group files
ii bash 3.2-4 The GNU Bourne Again SHell
rc bind9 1:9.5.1.dfsg.P1-2 Internet Domain Name Server


avec cette belle liste que l'on sauve dans un fichier en faisant une simple redirection
dpkg -l >package-list_serveur1.txt
Ensuite sur l'autre serveur on procéde de même
dpkg -l >package-list-serveur2.txt
Et on recupére la liste précédente par exemple avec un scp (outils fourni avec ssh)
scp serveur1:package-list_serveur1.txt .
Et finalement un simple diff entre les 2 fichiers et on obtient la liste des paquets présents d'un côté ou de l'autre :
diff package-list-serveur2.txt package-list_serveur1.txt

> ii  php5-gd                         5.2.6.dfsg.1-1+lenny3    GD module for php5
264a270
> ii php5-sybase 5.2.6.dfsg.1-1+lenny3 Sybase / MS SQL Server module for php5


Ainsi dans cet exemple je peux constater qu'il me manque les paquets php5-gd et php5-sybase sur le serveur2 (car il ne sont présent que dans la liste générée sur le serveur1.
Bon courage si vous essayez de faire de même sous Microsoft...
Bien entendu rien ne vous empêche de filtrer cette liste avec un grep
Ainsi avec un :

gocarto01:~# dpkg -l |grep php
ii libapache2-mod-php5 5.2.6.dfsg.1-1+lenny3 server-side, HTML-embedded scripting languag
ii php-pear 5.2.6.dfsg.1-1+lenny3 PEAR - PHP Extension and Application Reposit
ii php5-cli 5.2.6.dfsg.1-1+lenny3 command-line interpreter for the php5 script
ii php5-common 5.2.6.dfsg.1-1+lenny3 Common files for packages built from the php
ii php5-gd 5.2.6.dfsg.1-1+lenny3 GD module for php5
ii php5-pgsql 5.2.6.dfsg.1-1+lenny3 PostgreSQL module for php5
ii php5-sybase 5.2.6.dfsg.1-1+lenny3 Sybase / MS SQL Server module for php5
ii php5-xsl 5.2.6.dfsg.1-1+lenny3 XSL module for php5


un man dpkg vous montrera plein d'autre possibilités de ce formidable outil. Ainsi si vous voulez connaitre la liste des fichiers installés par le paquetage postgresql-8.3-postgis il vous suffit de lancer un :
dpkg -L postgresql-8.3-postgis

gocarto01:~# dpkg -L postgresql-8.3-postgis
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/postgresql-8.3-postgis
/usr/share/doc/postgresql-8.3-postgis/changelog.gz
/usr/share/doc/postgresql-8.3-postgis/copyright
/usr/share/doc/postgresql-8.3-postgis/README.Debian.gz
/usr/share/doc/postgresql-8.3-postgis/changelog.Debian.gz
/usr/share/postgresql-8.3-postgis
/usr/share/postgresql-8.3-postgis/lwpostgis_upgrade.sql
/usr/share/postgresql-8.3-postgis/lwpostgis.sql
/usr/share/postgresql-8.3-postgis/spatial_ref_sys.sql
/usr/lib
/usr/lib/postgis
/usr/lib/postgis/1.3.3
/usr/lib/postgis/1.3.3/postgres
/usr/lib/postgis/1.3.3/postgres/8.3
/usr/lib/postgis/1.3.3/postgres/8.3/lib
/usr/lib/postgis/1.3.3/postgres/8.3/lib/liblwgeom.so.1.3
/usr/lib/postgresql
/usr/lib/postgresql/8.3
/usr/lib/postgresql/8.3/lib
/usr/lib/postgresql/8.3/lib/liblwgeom.so.1
/usr/lib/postgresql/8.3/lib/liblwgeom.so

Commentaires

Posts les plus consultés de ce blog

Comment extraire les fichiers disques en raw d'un backup proxmox vma

Find the lists of disks of your Proxmox VM stored in a ceph cluster

Comment copier une machine virtuelle kvm en raw sur un Volume Group LVM2 se trouvant sur un disque en DRBD