¿Qué pasa con todos los cambios de nombre: prename, rename, file-rename?

24

En mi sistema Debian (bueno, mi sistema LMDE, pero lo suficientemente cerca), tengo al menos 3 renameprogramas diferentes :

  • /usr/local/bin/rename: Este es un guión de Perl, escrito por Tom Christiansen. Curiosamente, parece que no puedo encontrar qué paquete lo instaló:

    $ dpkg -S /usr/local/bin/rename 
    dpkg-query: no path found matching pattern /usr/local/bin/rename
    
  • /usr/bin/prename: otro script perl, escrito por Robin Barker, este es parte del perlpaquete:

    $ dpkg -S /usr/bin/prename
    perl: /usr/bin/prename
    
  • /usr/bin/file-rename: otro script de Perl, no hay información clara sobre la autoría, pero se mencionan tanto a Larry (presumiblemente Wall) como a Robin (presumiblemente Barker). Este es instalado por el renamepaquete y también está vinculado a /usr/bin/rename:

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

También tengo rename.ulde util-linuxpero ignoremos ese por ahora. ¿Cuál es la diferencia entre estos 3 scripts de Perl? Todos parecen tener la misma página de manual man rename, man file-renamey man prenametodos me dan la misma página.

Podría revisar las secuencias de comandos e intentar comprender las diferencias, pero eso no es trivial y espero que alguien sepa qué características tiene cada una que las demás no. Puntos de bonificación por explicar por qué el mundo de Debian necesita tres scripts de cambio de nombre de Perl separados.

terdon
fuente
¡Es peor que eso! RHEL envía un binario completamente diferente como parte de su util-linux-ngpaquete. % file = rename / usr / bin / rename: ELF 64-bit LSB ejecutable, x86-64, version 1 (SYSV), ...
thrig
@thrig Convertí tu respuesta a un comentario ya que en realidad no estaba respondiendo la pregunta (¿cuál es la diferencia entre estos scripts y por qué hay tantas versiones de Perl?) Estás hablando de la renamede util-linuxque es rename.ulen Debian y renameen los sistemas RedHat. Lo menciono en el penúltimo párrafo de mi pregunta.
terdon
¿Qué te update-alternatives --display renamemuestra? Me pregunto si es parte de una alternativa posterior a la instalación.
Jeff Schaller
@JeffSchaller no, proviene de Unicode :: Tussle . Su autor (tchrist) está activo en SE y me lo explicó en el chat.
terdon
44
Relacionados . Para el registro, la secuencia de comandos de cambio de nombre con mi nombre que menciona admite algunas opciones útiles para mí, como reescribir los destinos de enlaces simbólicos en lugar de los nombres de ruta en sí, leer la lista de nombres de archivo de las tuberías y los nombres de ruta con terminación nula en esa lista, más el " normal " -vy -iopciones. Es un script antiguo, antiguo y antiguo sin la documentación adecuada fuera de su mensaje de uso, pero es un caballo de batalla estándar para las reescrituras de nombres de archivo en masa . Es uno de quizás dos o tres guiones que siempre quiero conmigo sin importar a dónde vaya.
tchrist

Respuestas:

16

No estoy seguro de si esto debería ser un comentario, pero es solo una respuesta parcial:

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

tiene lo que parecen ser las semillas del desorden. Específicamente:

Para resumir: durante muchos años, el paquete perl ha proporcionado / usr / bin / rename, una utilidad independiente implementada en perl. El problema es que ya no queremos proporcionar la utilidad del paquete perl porque se ha agregado localmente dentro de debian / y no se mantiene. Una versión mantenida está disponible como un paquete separado, libfile-rename-perl.

Lo libfile-rename-perlmencionado anteriormente ahora se reemplaza por 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

Entonces, Perl tiene el suyo propio renameque Debian no mantiene y proporciona /usr/bin/prename. Los desarrolladores de Debian mantienen un renamepaquete (aparentemente anteriormente conocido como libfile-rename-perl) que es el paquete que proporciona /usr/bin/rename: un enlace simbólico para el /etc/alternatives/renamecual es un enlace simbólico al /usr/bin/file-renamescript.

El guión de Tom Christiansen se incluye con el Unicode::Tusslemódulo de Perl . Probablemente lo haya instalado y eso es lo que proporcionó /usr/local/bin/rename.

Jeff Schaller
fuente