web-dev-qa-db-fra.com

Différentes versions du même paquet Debian

Existe-t-il un moyen d'obtenir des différences de source entre un package installé localement et son package mis à jour? Cela sera utile pour vérifier exactement quelles pièces ont été corrigées, modifiées ou ajoutées.

Par exemple, supposons que le package linux-libc-dev soit installé sur votre système et

Sudo apt-get update && Sudo apt-get upgrade

spectacles

The following packages will be upgraded:
  linux-libc-dev 

mais vous souhaitez vérifier, avant de le mettre à niveau, les modifications exactes qui ont été apportées par rapport à votre version locale du même package.

Comment pouvons-nous le faire?

10
Gödel

Voici une autre solution que j'ai piratée ensemble: whatchanged .

Il prend le nom du package binaire qui vous intéresse comme seul argument. Pour utiliser une SRU récente comme exemple:

./whatchanged python_papyon

C'est ce que ça fait:

  1. Vérifiez s'il y a un candidat de mise à jour; sortir s'il n'y en a pas
  2. Si un candidat existe, créez des répertoires temporaires et récupérez-y les packages source pour la version installée et le candidat
  3. Comparez les deux avec debdiff et sortez vers stdout (vous voudrez probablement rediriger pour une lecture plus facile)
  4. Nettoyez les répertoires temporaires.

Il doit probablement mieux gérer certaines choses qui peuvent mal se passer lors de la récupération de la source, le contrôle de flux est probablement un peu désactivé et il doit y avoir des moyens plus élégants pour la vérification de la version, mais cela a bien fonctionné jusqu'à présent dans mes tests limités. Pour l'instant, considérez-le comme un hack rapide qui fonctionne et les améliorations sont les bienvenues. Je vais le pousser vers un dépôt bzr et/ou créer un projet Launchpad s'il est utile à quelques personnes.

Edit : Plutôt que de le laisser pourrir sur Pastebin, j'ai commencé n projet Launchpad pour cela; vous pouvez obtenir la dernière révision du tronc avec bzr branch lp:whatchanged. N'hésitez pas à signaler les bugs, à les ramifier, à les réécrire en Perl, etc.

5
mgunes

Afaik la seule façon de le faire est d'obtenir la source et de faire soi-même la différence. Vous pouvez obtenir la source réelle utilisée pour compiler les packages avec apt-get. fx:

apt-get source gwibber=2.30.2-0ubuntu3 gwibber=2.30.0.1-0ubuntu1
diff -rupN gwibber-2.30.0.1/ gwibber-2.30.2/

Cela imprimera toutes les différences entre tous les fichiers dans un format de correctif standard.

7
LassePoulsen

En voici une (probablement pas optimale) UDD façon de le faire:

Pull -updates branche pour votre version (en supposant Lucid) qui (supposition ci-dessous) doit contenir la dernière SRU:

bzr branch lp:ubuntu/lucid-updates/package_name

Obtenez les modifications introduites par la dernière révision, qui (hypothèse ci-dessous) devrait correspondre à la dernière SRU:

bzr diff -c`bzr revno`
2
mgunes

Si vous souhaitez voir les différences de fichiers dans les archives du package, extrayez leurs fichiers md5sums, triez et différez-les, puis vous pouvez restreindre la liste des fichiers réels à comparer de manière spectaculaire.

0
Phil Miller