Có an toàn để đổi tên tệp .deb được đặt tên theo tiêu chuẩn không?


13

Cấu trúc thành lập của .debtên tập tin là package_version_architecture.deb.
Theo đoạn này :

Một số gói không tuân theo cấu trúc tên package_version_architecture.deb. Các gói được đổi tên theo tên dpkg sẽ theo cấu trúc này. Nói chung, điều này sẽ không ảnh hưởng đến cách các gói được cài đặt bởi dselect / dpkg, nhưng các công cụ cài đặt khác có thể phụ thuộc vào cấu trúc đặt tên này.

Câu hỏi:

Tuy nhiên, có bất kỳ tình huống thực tế khi đổi tên .debtập tin gói không được khuyến khích? Đây có phải là một cách thông thường để cung cấp .debtên tệp tùy chỉnh cho phần mềm của tôi không?

Thí dụ:

  • My Program for Linux v1.0.0 (Pro).deb - cách đặt tên tùy chỉnh
  • my-program_1.0.0-1_amd64.deb - cách đặt tên chính thức

Ghi chú:

Tôi không có kế hoạch tạo repo, tôi chỉ lưu trữ .debgói phần mềm của tôi trên trang web của tôi để tải xuống trực tiếp.


8
Xin vui lòng, vì tình yêu của tất cả mọi thứ, thánh không sử dụng dấu cách hoặc dấu ngoặc trong tên tệp của bạn. Họ làm cho nó đau đớn khi xử lý chúng từ dòng lệnh và là một nguồn tiềm năng của lỗi trong xử lý tệp.
Austin Hemmelgarn

Câu trả lời:


26

Trong những năm qua, tôi đã tích lũy được một số lượng lớn các .debgói có tên không chuẩn và tôi không nhớ đã gặp phải bất kỳ vấn đề nào. Các gói nổi tiếng của hoàng tử với các tên không chuẩn mà mọi người có thể bắt gặp ngày nay bao gồm google-chrome-stable_current_amd64.debsteam.deb. (Trong cả hai trường hợp, tên không có phiên bản cố định đảm bảo rằng URL ổn định có thể được sử dụng để tải xuống và tên ổn định cho hướng dẫn cài đặt.)

Tuy nhiên tôi không nhớ là chạy ngang qua bất kỳ chỗ nào có tên trong đó; điều đó cũng không gây ra sự cố với các công cụ, nhưng nó có thể gây nhầm lẫn cho người dùng của bạn (vì họ sẽ cần trích dẫn tên tệp hoặc thoát khỏi khoảng trắng nếu họ đang sử dụng các công cụ dựa trên vỏ).

Một điểm khác cần lưu ý là việc sử dụng tên không chuẩn không giống với tên gói của bạn (như được lưu trong controltệp) cũng có thể gây nhầm lẫn, ví dụ như khi cố gắng xóa gói (vì tên gói sẽ không được giống như tên được sử dụng để cài đặt nó).

Do kết quả của tất cả những điều này, nếu bạn không muốn gắn với tên chính tắc, tôi sẽ đề xuất một cái gì đó như my-program.debhoặc my-program_amd64.deb(tùy thuộc vào việc bạn có muốn hỗ trợ nhiều kiến ​​trúc không). Bạn cũng có thể tạo một liên kết tượng trưng cho tên tệp được phiên bản nếu bạn muốn cho phép các phiên bản cũ hơn được tải xuống.


"Một URL ổn định có thể được sử dụng để tải xuống" - Tôi sẽ ngạc nhiên nếu Google và Valve chưa bao giờ nghe về chuyển hướng.
OrangeDog

@OrangeDog cũng vậy I. Việc tải xuống cố định (không có chuyển hướng) vẫn giúp mọi thứ đơn giản hơn (vì khi chuyển hướng, tên tệp cuối cùng được sử dụng trên đĩa thay đổi tùy thuộc vào công cụ được sử dụng để tải xuống không may).
Stephen Kitt

10

Tên tệp được chuẩn hóa chủ yếu vì lợi ích của phần mềm bảo trì lưu trữ và bộ đệm cục bộ.

Vào thời xưa, trước khi m68kkiến trúc được thêm vào Debian, tên tệp được sử dụng " gói _ phiên bản .deb", không có vấn đề gì. Tên kiến ​​trúc đã được thêm vào tên tệp khi phần mềm lưu trữ cần để lưu trữ i386m68kcác gói của cùng một gói và phiên bản trong cùng một thư mục. Vì danh sách gói luôn chứa cả tên tệp dài và 8.3 , có thể được thực hiện mà không phá vỡ ứng dụng khách.

Dpkg thường không quan tâm đến tên tập tin của các gói. Trong quá trình cài đặt chạy, APT tạo một thư mục chứa tất cả các tệp gói cho lần chạy cài đặt này và mỗi tệp sẽ có số trong lần chạy hiện tại được đặt trước tên tệp (nghĩa là nếu bạn cài đặt gói foophiên bản 1 và barphiên bản gói 2, footùy thuộc vào , apt sẽ vượt qua 0-bar_2_all.deb1-foo_1_amd64.debđến dpkg).

APT thường cho rằng tên là duy nhất cho mục đích lưu trữ. Nếu bạn sử dụng lại tên, người dùng đã có tệp này trong bộ nhớ cache của họ sẽ cố gắng tiếp tục tải xuống nếu tệp mới lớn hơn, sẽ khiến họ có một tệp không hợp lệ sau đó bị loại bỏ vì nó không kiểm tra tổng kiểm tra. Tuy nhiên, lỗi này được hiển thị cho người dùng và họ phải khởi động lại quá trình cài đặt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.