Dependency hell là gì?

Noun Programming
JAR hell classpath hell

Hiểu thuật ngữ dependency trước khi xem thuật ngữ này. Dependency hell là một thuật ngữ thông tục để chỉ sự thất vọng của một số người dùng phần mềm đã cài đặt các gói phần mềm (software package) có sự phụ thuộc vào các phiên bản (version) cụ thể của các gói phần mềm khác. Kết quả phổ biến của dependency hell bao gồm phần mềm hoạt động bất thường, lỗi, thông báo lỗi khi cố gắng chạy hoặc cài đặt phần mềm hoặc phần mềm ngừng hoạt động

Nguyên nhân của dependency hell rất đa dạng, nhưng nó thường xảy ra vì một trong bốn lý do:

  • Các chương trình xung đột yêu cầu các phiên bản phần mềm hoặc thư viện khác nhau để hoạt động. Ứng dụng X yêu cầu phần mềm Z phiên bản 2.0 để hoạt động, trong khi ứng dụng Y yêu cầu phần mềm Z phiên bản 2.5 để hoạt động và không thể cài đặt cả hai phiên bản Z cùng một lúc.
  • Các yêu cầu của phần mềm tạo ra các phụ thuộc vòng tròn. Ứng dụng Y phiên bản 3.1 yêu cầu phần mềm EE. Phần mềm EE yêu cầu ứng dụng W để hoạt động. Ứng dụng W yêu cầu phần mềm HH. Và ứng dụng HH yêu cầu phần mềm Y phiên bản 2.6.
  • Phần mềm chính tạo ra một chuỗi các phụ thuộc, trong đó phần mềm dựa vào ứng dụng A, nhưng A dựa vào ứng dụng B để hoạt động và B cần ứng dụng C để hoạt động bình thường.
  • Phần mềm chính phụ thuộc vào vô số thư viện phần mềm lớn, khiến quá trình tải xuống kéo dài và làm giảm tính di động (portability) của phần mềm. Ngay cả khi một ứng dụng chỉ yêu cầu một phần nhỏ của thư viện lớn, thì toàn bộ thư viện phải được tải xuống.
Learning English Everyday