Tại sao có hai gói cung cấp các lệnh khác nhau sử dụng cùng một tên (nếu không phải là ngẫu nhiên)?
Điều đó không có gì bất thường. Các tác giả thường chọn tên lệnh đơn giản nhất mà họ nghĩ ra, vì vậy nếu hai người viết một lệnh để đổi tên các tệp, có khả năng cả hai sẽ đặt tên cho nó rename. Đó là một trong những lý do đằng sau hệ thống Thay thế Debian - nó cho phép các gói cung cấp các lệnh có tên tương tự cùng tồn tại và cho một gói thay thế một gói khác. Ví dụ, có nhiều triển khai AWK - mawk, original-awk, gawk(mặc dù tất cả họ đều đề cập đến bản thân như awk). Với hệ thống thay thế, bạn có thể cài đặt tất cả chúng cùng một lúc và thuận tiện chuyển đổi giữa bất kỳ trong số chúng làm mặc định awk.
Trong trường hợp cụ thể này, prenamexuất phát từ mã nguồn Perl. Các bộ duy trì gói Debian ban đầu renamelà Perl, sau đó chuyển sang hệ thống thay thế, để chứa renametừ util-linux. Sau đó, ai đó đã viết một phiên bản cải tiến của Perl renametrong mô-đun Perl đổi tên tệp , sau đó được thêm vào như là một thay thế khác. Nhưng đó thậm chí không phải là mô-đun Perl duy nhất để đổi tên tệp.
Sẽ không đơn giản hơn nếu perlgói đó bao gồm renamelệnh đầy đủ trên toàn bộ hay không bao gồm bất kỳ renamelệnh nào? Tại sao sự phân chia dường như chưa hoàn thành này được duy trì cho đến khi ít nhất là Ubuntu 17.04?
Xem lỗi Debian # 735134 để biết tình huống này đã phát triển như thế nào. Các nhà bảo trì Debian thường thích thực hiện ít nhất một bản phát hành khi thực hiện một cách quyết liệt, như thay thế một lệnh làm việc bằng một lệnh khác. prenameđã được giữ xung quanh cho jessie, và bây giờ đã được gỡ bỏ cho buster. Ngoài ra, có vẻ như renamesẽ không còn thuộc hệ thống thay thế, vì rename.ulquá không tương thích. renamesẽ chỉ file-rename.
Do Ubuntu thường chọn các thay đổi đóng gói từ Debian, những gì xảy ra renametrong Debian sẽ được Ubuntu chọn sớm hay muộn, có thể là vào ngày 18.04. Có vẻ như đã quá muộn cho 17.10.
Chính xác thì sự khác biệt giữa các lệnh đó là gì?
Về cơ bản, cả hai prenamevà file-renamechạy các biểu thức Perl để đổi tên các tệp. file-renamechỉ được tích cực duy trì và hỗ trợ nhiều lựa chọn hơn. renametừ util-linuxcác công trình hoàn toàn khác nhau, có các quy tắc riêng cho các mẫu.
man prename17.10 , có vẻ như 17.10 thực tế đã nhậnfile-renamethay vìprename. Tương tự cho 18.04 .