Co się dzieje z tymi wszystkimi nazwami: prename, rename, file-rename?

24

W moim systemie Debian (cóż, moim systemie LMDE, ale wystarczająco blisko) mam co najmniej 3 różne renameprogramy:

  • /usr/local/bin/rename: To jest skrypt Perla, napisany przez Toma Christiansena. Co dziwne, nie mogę znaleźć, który pakiet to zainstalował:

    $ dpkg -S /usr/local/bin/rename 
    dpkg-query: no path found matching pattern /usr/local/bin/rename
  • /usr/bin/prename: inny skrypt perla, napisany przez Robina Barkera, ten jest częścią perlpakietu:

    $ dpkg -S /usr/bin/prename
    perl: /usr/bin/prename
  • /usr/bin/file-rename: jeszcze inny skrypt Perla, brak wyraźnych informacji o autorstwie, ale wspomniano zarówno Larry'ego (prawdopodobnie Wall), jak i Robina (prawdopodobnie Barkera). Ten jest instalowany przez renamepakiet i jest również dowiązany symbolicznie do /usr/bin/rename:

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

Mam też rename.ulod util-linuxMiejmy jednak ignorować faktu, że jeden na teraz. Jaka jest różnica między tymi 3 skryptami Perla? Wszystkie one wydają się mieć tę samą stronę man, man rename, man file-renamei man prenamewszystko mi dać tę samą stronę.

Mógłbym przejść przez same skrypty i spróbować zrozumieć różnice, ale to nie jest trywialne i mam nadzieję, że ktoś będzie wiedział, jakie cechy mają każdy, czego inni nie. Punkty bonusowe za wyjaśnienie, dlaczego świat Debiana potrzebuje trzech osobnych skryptów zmieniających nazwy Perla.

terdon
źródło
Gorzej niż to! RHEL dostarcza zupełnie inny plik binarny jako część util-linux-ngpakietu. % file = zmień nazwę / usr / bin / rename: ELF 64-bitowy plik wykonywalny LSB, x86-64, wersja 1 (SYSV), ...
thrig
@thrig Przekształciłem twoją odpowiedź w komentarz, ponieważ tak naprawdę nie odpowiadał na pytanie (jaka jest różnica między tymi skryptami i dlaczego jest tak wiele wersji Perla). Mówisz o tym, renameskąd util-linuxpochodzi system rename.ulDebian i renameRedHat. Wspominam o tym w przedostatnim akapicie mojego pytania.
terdon
co ci update-alternatives --display renamepokazuje Zastanawiasz się, czy jest to część poinstalacyjnej alternatywy.
Jeff Schaller
@JeffSchaller nie, pochodzi z Unicode :: Tussle . Jego autor (tchrist) jest aktywny na SE i wyjaśnił mi to na czacie.
terdon
4
Związane . Dla przypomnienia, skrypt zmiany nazwy z moim imieniem, o którym wspomniałeś, obsługuje kilka użytecznych dla mnie opcji, takich jak przepisywanie celów dowiązań symbolicznych zamiast prawidłowych nazw ścieżek, odczytywanie listy nazw plików z potoków i nazw ścieżek zakończonych znakiem null na tej liście - plus „ normalne ” -vi -iopcje. Jest to stary, stary, stary skrypt bez odpowiedniej dokumentacji poza komunikatem o użyciu, ale jest to standardowy koń roboczy do masowego przepisywania nazw plików. To jeden z dwóch lub trzech skryptów, które zawsze chcę ze sobą, bez względu na to, dokąd pójdę.
tchrist

Odpowiedzi:

16

Nie jestem pewien, czy powinien to być komentarz, ale to tylko częściowa odpowiedź -

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

ma coś, co wydaje się być ziarnem bałaganu. Konkretnie:

Podsumowując: od wielu lat pakiet perlowy dostarcza / usr / bin / rename, samodzielne narzędzie zaimplementowane w perlu. Problem polega na tym, że nie chcemy już dostarczać narzędzia z pakietu perla, ponieważ zostało ono dodane lokalnie w debian / i nie jest utrzymywane. Utrzymywana wersja jest dostępna jako osobny pakiet, libfile-rename-perl.

libfile-rename-perlWspomniano powyżej jest teraz zastąpiony przez 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

Zatem Perl ma swój własny, renamektóry nie jest obsługiwany przez Debiana i zapewnia /usr/bin/prename. Deweloperzy Debiana utrzymują renamepakiet (najwyraźniej wcześniej znany jako libfile-rename-perl), który jest pakietem, który zapewnia /usr/bin/rename: dowiązanie symboliczne, do /etc/alternatives/renamektórego sam jest dowiązaniem symbolicznym do /usr/bin/file-renameskryptu.

Skrypt Toma Christiansena jest dołączony do Unicode::Tusslemodułu Perla . Prawdopodobnie go zainstalowałeś i właśnie to /usr/local/bin/rename.

Jeff Schaller
źródło