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, prename
xuất phát từ mã nguồn Perl. Các bộ duy trì gói Debian ban đầu rename
là Perl, sau đó chuyển sang hệ thống thay thế, để chứa rename
từ util-linux
. Sau đó, ai đó đã viết một phiên bản cải tiến của Perl rename
trong 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 perl
gói đó bao gồm rename
lệnh đầy đủ trên toàn bộ hay không bao gồm bất kỳ rename
lệ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ư rename
sẽ không còn thuộc hệ thống thay thế, vì rename.ul
quá không tương thích. rename
sẽ chỉ file-rename
.
Do Ubuntu thường chọn các thay đổi đóng gói từ Debian, những gì xảy ra rename
trong 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 prename
và file-rename
chạy các biểu thức Perl để đổi tên các tệp. file-rename
chỉ được tích cực duy trì và hỗ trợ nhiều lựa chọn hơn. rename
từ util-linux
cá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 prename
17.10 , có vẻ như 17.10 thực tế đã nhậnfile-rename
thay vìprename
. Tương tự cho 18.04 .