Dlaczego są dwa pakiety zapewniające różne polecenia o tej samej nazwie (jeśli nie przez przypadek)?
To nie jest niezwykłe. Autorzy zazwyczaj wybierają najprostszą nazwę polecenia, o której myślą, więc jeśli dwie osoby napiszą polecenie zmiany nazwy plików, prawdopodobnie obie go nadadzą rename. To jeden z powodów, dla których powstał system Debian Alternatives - pozwala on na współistnienie pakietów udostępniających polecenia o podobnej nazwie, a także na zastępowanie jednego pakietu innym. Na przykład, istnieje wiele implementacji awk - mawk, original-awk, gawk(choć wszystkie one odnoszą się do siebie jak awk). Dzięki systemowi alternatyw możesz zainstalować je wszystkie jednocześnie i wygodnie przełączać się między nimi jako domyślnymi awk.
W tym konkretnym przypadku prenamepochodzi z kodu źródłowego Perla. Opiekunowie pakietów Debiana pierwotnie byli renamePerlami, a następnie przełączyli się na system alternatyw, aby pomieścić renameod util-linux. Potem ktoś napisał ulepszoną wersję Perla renamew module Perl File-Rename , który został następnie dodany jako kolejna alternatywa. Ale to nawet nie jedyny moduł Perla do zmiany nazw plików.
Czy nie byłoby raczej łatwe, aby perlpakiet zawierał polecenie „pełne” renamelub nie zawierał żadnego renamepolecenia? Dlaczego ten pozornie niepełny podział utrzymuje się przynajmniej do wersji Ubuntu 17.04?
Zobacz błąd Debiana # 735134, aby dowiedzieć się, jak ta sytuacja ewoluowała. Opiekunowie Debiana zazwyczaj wolą przejść przynajmniej jedną wersję, gdy robią coś drastycznego, na przykład zastępując działające polecenie innym. prenamebył trzymany w pobliżu dla jessie, a teraz został usunięty dla buster. Ponadto wygląda na to, że renamenie będzie już objęty systemem alternatyw, ponieważ rename.uljest zbyt niezgodny. renamebędzie sprawiedliwy file-rename.
Ponieważ Ubuntu zazwyczaj pobiera zmiany w pakiecie z Debiana, to, co dzieje się renamew Debianie, zostanie wcześniej lub później przez Ubuntu, prawdopodobnie w 18.04. Wydaje się, że jest już za późno na 17.10.
Jakie dokładnie są różnice między tymi poleceniami?
Zasadniczo oba prenamei file-renameuruchomić Perl wyrażeń do plików przemianowania. file-renamejest po prostu aktywnie utrzymywany i obsługuje więcej opcji. renamez util-linuxdziała zupełnie inaczej, ma swoje własne zasady dotyczące wzorów.
man prename17.10 wygląda na to, że 17.10 faktycznie podniósłfile-renamezamiastprename. To samo dla 18.04 .