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 prename
pochodzi z kodu źródłowego Perla. Opiekunowie pakietów Debiana pierwotnie byli rename
Perlami, a następnie przełączyli się na system alternatyw, aby pomieścić rename
od util-linux
. Potem ktoś napisał ulepszoną wersję Perla rename
w 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 perl
pakiet zawierał polecenie „pełne” rename
lub nie zawierał żadnego rename
polecenia? 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. prename
był trzymany w pobliżu dla jessie, a teraz został usunięty dla buster. Ponadto wygląda na to, że rename
nie będzie już objęty systemem alternatyw, ponieważ rename.ul
jest zbyt niezgodny. rename
będzie sprawiedliwy file-rename
.
Ponieważ Ubuntu zazwyczaj pobiera zmiany w pakiecie z Debiana, to, co dzieje się rename
w 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 prename
i file-rename
uruchomić Perl wyrażeń do plików przemianowania. file-rename
jest po prostu aktywnie utrzymywany i obsługuje więcej opcji. rename
z util-linux
działa zupełnie inaczej, ma swoje własne zasady dotyczące wzorów.
man prename
17.10 wygląda na to, że 17.10 faktycznie podniósłfile-rename
zamiastprename
. To samo dla 18.04 .