Qu'est-ce qui se passe avec tous les renommages: prename, rename, file-rename?

24

Sur mon système Debian (enfin, mon système LMDE, mais assez proche), j'ai au moins 3 renameprogrammes différents :

  • /usr/local/bin/rename: Ceci est un script Perl, écrit par Tom Christiansen. Curieusement, je n'arrive pas à trouver quel paquet l'a installé:

    $ dpkg -S /usr/local/bin/rename 
    dpkg-query: no path found matching pattern /usr/local/bin/rename
    
  • /usr/bin/prename: un autre script perl, écrit par Robin Barker, celui-ci fait partie du perlpackage:

    $ dpkg -S /usr/bin/prename
    perl: /usr/bin/prename
    
  • /usr/bin/file-rename: encore un autre script Perl, aucune information claire sur la paternité mais à la fois un Larry (vraisemblablement Wall) et un Robin (vraisemblablement Barker) sont mentionnés. Celui-ci est installé par le renamepackage et est également lié à /usr/bin/rename:

    $ dpkg -S /usr/bin/file-rename
    rename: /usr/bin/file-rename
    

J'ai aussi rename.ulde util-linuxmais ignorons celui-ci pour l'instant. Quelle est la différence entre ces 3 scripts Perl? Ils semblent tous avoir la même page de manuel man rename, man file-renameet man prenametous me donnent la même page.

Je pourrais parcourir les scripts eux-mêmes et essayer de comprendre les différences, mais ce n'est pas anodin et j'espère que quelqu'un saura quelles fonctionnalités chacun a que les autres n'ont pas. Points bonus pour expliquer pourquoi le monde Debian a besoin de trois scripts de renommage Perl distincts.

terdon
la source
C'est pire que ça! RHEL expédie un binaire complètement différent dans le cadre de son util-linux-ngpackage. % file = rename / usr / bin / rename: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), ...
thrig
@thrig J'ai converti votre réponse en commentaire car elle ne répondait pas réellement à la question (quelle est la différence entre ces scripts et pourquoi y a-t-il autant de versions de perl). Vous parlez renamede util-linuxce qui est rename.ulsur Debian et renamesur les systèmes RedHat. Je le mentionne dans l'avant-dernier paragraphe de ma question.
terdon
qu'est-ce que cela vous update-alternatives --display renamemontre? Vous vous demandez si cela fait partie d'une alternative post-installée.
Jeff Schaller
@JeffSchaller non, il vient de Unicode :: Tussle . Son auteur (tchrist) est actif sur SE et il me l'a expliqué dans le chat.
terdon
4
Connexes . Pour mémoire, le script renommer avec mon nom que vous mentionnez prend en charge certaines options utiles comme la réécriture de cibles de liens symboliques au lieu des chemins d'accès proprement dits, la lecture de la liste des noms de fichiers à partir des canaux et les noms de chemin à terminaison nulle dans cette liste - plus le " normal » -vet les -ioptions. C'est un vieux, vieux, vieux script sans documentation appropriée en dehors de son message d'utilisation, mais c'est un cheval de bataille standard pour les réécritures de nom de fichier en masse . C'est l'un des deux ou trois scripts que je veux toujours avec moi, peu importe où je vais.
tchrist

Réponses:

16

Je ne sais pas si cela devrait être un commentaire, mais ce n'est qu'une réponse partielle -

http://lists.alioth.debian.org/pipermail/perl-maintainers/2014-F February/004113.html

a ce qui semble être les graines du gâchis. Plus précisément:

Donc, pour résumer: pendant de nombreuses années, le paquetage perl a fourni / usr / bin / rename, un utilitaire stanalone implémenté en perl. Le problème est que nous ne voulons plus fournir l'utilitaire depuis le paquet perl car il a été ajouté localement dans debian / et n'est pas maintenu. Une version maintenue est disponible dans un package séparé, libfile-rename-perl.

Ce qui libfile-rename-perlprécède est maintenant remplacé par rename:

$ apt-cache show rename | head
Package: rename
Version: 0.20-3
Installed-Size: 69
Maintainer: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org>
Architecture: all
Replaces: libfile-rename-perl
Provides: libfile-rename-perl
Depends: perl
Conflicts: libfile-rename-perl
Description-en: Perl extension for renaming multiple files

Donc, Perl a le sien renamequi n'est pas maintenu par Debian et fournit /usr/bin/prename. Les développeurs Debian maintiennent un renamepaquet (apparemment anciennement connu sous le nom de libfile-rename-perl) qui est le paquet qui fournit /usr/bin/rename: un lien symbolique vers /etc/alternatives/renamelequel est lui-même un lien symbolique vers le /usr/bin/file-renamescript.

Le script de Tom Christiansen est fourni avec le Unicode::Tusslemodule de Perl . Vous l'avez probablement installé et c'est ce qui est fourni /usr/local/bin/rename.

Jeff Schaller
la source