J'ai récemment appris à quel point il est facile d'obtenir le code source de n'importe quel package donné en utilisant apt-get source
afin que je puisse obtenir le code source, apporter des modifications et installer ma propre version modifiée de n'importe quel package. C'est super !
Jusqu'à aujourd'hui, je supposais que chaque package aurait son propre code source et que différents packages auraient un code source différent.
Cependant, j'ai découvert que différents packages peuvent avoir un code source identique. Voici un exemple :
Les 4 packages suivants semblent avoir un code source identique :
gir1.2-mutter-4
libmutter-4-0
mutter
mutter-common
Les quatre sont installés sur mon ordinateur Ubuntu 19.04. En faisant apt-get source gir1.2-mutter-4
, on obtient exactement le même résultat que apt-get source libmutter-4-0
, ainsi que pour les packages mutter
et mutter-common
.
Voici comment j'ai vérifié :
mkdir a
cd a
apt-get source gir1.2-mutter-4
cd ..
mkdir b
cd b
apt-get source libmutter-4-0
cd ..
diff -r a b
La différence récursive sur la dernière ligne ci-dessus ne donne aucune sortie, montrant que les répertoires ont des contenus identiques.
Maintenant, ma question : Comment différents packages peuvent-ils avoir un code source identique ?
En supposant que c'est intentionnel et non pas une sorte d'erreur, quelle est la différence entre les packages et comment puis-je voir cette différence ?
Est-il possible que les packages diffèrent dans la manière dont le code source est configuré et compilé, par exemple, différentes parties du code sont incluses dans les différents packages ? Si c'est le cas, où puis-je trouver des informations sur la configuration de chaque package ?
Éditer : j'ai oublié d'ajouter que si vous voulez tester ceci, pour que apt-get source
fonctionne correctement, vous devrez peut-être d'abord l'activer en utilisant software-properties-gtk
comme décrit ici : https://askubuntu.com/a/857433/874649
Éditer 2 : merci pour les excellentes réponses ! J'ai également trouvé cela utile : https://askubuntu.com/a/246721/874649 -- à propos des commandes apt-get build-dep
et dpkg-buildpackage
qui sont très utiles. Après avoir modifié le code source d'un package source, dpkg-buildpackage -us -uc
peut être utilisé pour construire de nouveaux fichiers .deb qui peuvent être utilisés pour installer les programmes modifiés.