Une grande partie de mon travail quotidien développe des logiciels pour une utilisation sur des machines avec différentes versions du même logiciel, comme bash
, find
et grep
. Lorsque vous rencontrez une fonctionnalité qui serait utile par exemple pour simplifier le code, il est important de savoir si cette fonctionnalité est disponible dans les outils installés les plus anciens. Pour les éléments critiques, il serait également utile de savoir si cette fonctionnalité est nouvelle ou existe depuis des années dans les plus anciens outils installés.
Quels sont les moyens rapides de répondre avec autorité aux outils Linux, en particulier les GNU Core Utils? Quelques possibilités par ordre de précision décroissante:
- La recherche binaire binaire (sic) en exécutant les différentes versions est bien sûr la réponse ultime, mais elle est de loin la plus longue. Les installations plus anciennes ne sont souvent pas disponibles pour des raisons de sécurité.
- La lecture du code est presque aussi bonne, mais elle peut prendre beaucoup de temps si la fonctionnalité est vaguement nommée, le nom ne correspond pas directement aux noms de variable / fonction / objet, ou il a été implémenté avant d'être activé.
- Les journaux des modifications , lorsqu'ils sont disponibles, connectent généralement les modifications des fonctionnalités aux versions logicielles.
- Les journaux de validation peuvent fournir des conseils, mais ne savent pas dans quelle version ils seront inclus.
- les pages de manuel mentionnent rarement les dates.
- La même chose s'applique à Google , et vous auriez également du mal à exclure toutes les sources sans autorité.
Réponses:
Généralement, il existe un journal des modifications. En fait, cela (ou d'autres "avis importants" de changements) est requis par la GPL! (Du moins, effectivement pour tout ce qui a plusieurs contributeurs - voir la section 2a de la GPLv2.)
Pour le paquet GNU coreutils - et pour à peu près tout le reste directement du projet GNU - ce fichier est certainement le premier endroit à consulter, et devrait répondre à votre question dans 95% des cas.
la source
ChangeLog.bz2
dans/usr/share/doc/coreutils-8.10
mon système Fedora, et l'entrée principale vient de2011-02-04
. Il est également possible qu'il s'agisse d'une fourche droite - je vérifierai cela plus tard dans la journée.Pourquoi ne pas utiliser le contrôle de source afférent à X pour rechercher la fonctionnalité Y? Le dépôt source est le meilleur moyen d'identifier quand une fonctionnalité particulière a été introduite.
Pour coreutils, vous pouvez vous rendre sur http://git.savannah.gnu.org/cgit/coreutils.git et rechercher des mots clés liés à Y dans les messages de journal ou des lignes de code particulières que vous avez identifiées comme appartenant à Y. Vous pouvez le faire sur l'interface Web directement, ou mieux encore, clonez le référentiel source sur votre station et effectuez une recherche à l'aide de git-bisect , git-blame et git-log --grep .
Utilisez ensuite git-describe pour découvrir que la balise est la plus proche d'un commmit spécifique. Les balises sont principalement utilisées pour les numéros de version, donc cela vous donnera la version qui a introduit le commit.
Vous pouvez adapter la méthode ci-dessus, en fonction de X et de son contrôle de source.
la source
Sur les plateformes Debian et dérivées de Debian telles que Ubuntu :
fournit le journal des modifications de GNU Core Utilities jusqu'à la version
4.5.1-1
.Je ne sais pas s'il existe des solutions similaires sur d'autres plateformes.
la source
Vérifiez le fichier coreutils NEWS depuis son dépôt git .
la source