O que há com todas as renomeações: prename, rename, file-rename?

24

No meu sistema Debian (bem, no meu sistema LMDE, mas perto o suficiente), eu tenho pelo menos 3 renameprogramas diferentes :

  • /usr/local/bin/rename: Este é um script Perl, escrito por Tom Christiansen. Curiosamente, não consigo encontrar qual pacote o instalou:

    $ dpkg -S /usr/local/bin/rename 
    dpkg-query: no path found matching pattern /usr/local/bin/rename
  • /usr/bin/prename: outro script perl, escrito por Robin Barker, este faz parte do perlpacote:

    $ dpkg -S /usr/bin/prename
    perl: /usr/bin/prename
  • /usr/bin/file-rename: ainda outro script Perl, nenhuma informação clara de autoria, mas são mencionados um Larry (presumivelmente Wall) e um Robin (presumivelmente Barker). Este é instalado pelo renamepacote e também possui um link simbólico para /usr/bin/rename:

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

Eu também tenho rename.ulde util-linuxmas vamos ignorar que um para agora. Qual é a diferença entre esses 3 scripts Perl? Todos eles parecem ter a mesma página homem man rename, man file-renamee man prenametodos me dão a mesma página.

Eu poderia passar pelos próprios scripts e tentar entender as diferenças, mas isso não é trivial e espero que alguém saiba quais recursos cada um possui e os outros não. Pontos de bônus por explicar por que o mundo Debian precisa de três scripts de renomeação de Perl separados.

terdon
fonte
É pior que isso! O RHEL envia um binário completamente diferente como parte de seu util-linux-ngpacote. % file = rename / usr / bin / rename: executável LSB de ELF de 64 bits, x86-64, versão 1 (SYSV), ...
thrig
@thrig Eu converti sua resposta em um comentário, uma vez que não estava realmente respondendo à pergunta (qual é a diferença entre esses scripts e por que existem tantas versões perl)? Você está falando sobre a renamepartir de util-linuxque é rename.ulno Debian e renameem sistemas RedHat. Menciono isso no penúltimo parágrafo da minha pergunta.
terdon
o que update-alternatives --display renamemostra para você? Pensando se faz parte de uma alternativa pós-instalada.
Jeff Schaller
@JeffSchaller não, é proveniente de Unicode :: Tussle . O autor (tchrist) está ativo no SE e ele me explicou no chat.
terdon
4
Relacionado . Para o registro, o script de renomeação com o meu nome mencionado oferece suporte a algumas opções úteis, como reescrever destinos de links simbólicos em vez de nomes de caminho propriamente ditos, ler a lista de nomes de arquivos de pipes e nomes de caminhos terminados em nulo nessa lista - além dos " normal ” -ve -iopções. É um script antigo, antigo e antigo, sem a documentação adequada fora da mensagem de uso, mas é um cavalo de batalha padrão para reescritas em massa de nomes de arquivos. É um dos dois ou três roteiros que eu sempre quero comigo, não importa para onde eu vá.
tchrist 12/09/2015

Respostas:

16

Não tenho certeza se isso deve ser um comentário, mas é apenas uma resposta parcial -

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

tem o que parece ser a semente da bagunça. Especificamente:

Para resumir: por muitos anos o pacote perl forneceu / usr / bin / rename, um utilitário stanalone implementado no perl. O problema é que não queremos mais fornecer o utilitário a partir do pacote perl, porque ele foi adicionado localmente no debian / e não está sendo mantido. Uma versão mantida está disponível como um pacote separado, libfile-rename-perl.

O libfile-rename-perlmencionado acima agora é substituído 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

Portanto, o Perl tem o seu próprio renameque não é mantido pelo Debian e fornece /usr/bin/prename. Os desenvolvedores Debian mantêm um renamepacote (aparentemente conhecido anteriormente como libfile-rename-perl) que é o pacote que fornece /usr/bin/rename: um link simbólico para/etc/alternatives/rename qual ele próprio é um link simbólico para o /usr/bin/file-renamescript.

O script de Tom Christiansen é fornecido com o Unicode::Tusslemódulo de Perl . Você provavelmente o instalou e foi isso que forneceu /usr/local/bin/rename.

Jeff Schaller
fonte