Câu trả lời:
Đây không phải là một dpkg
vấn đề cụ thể (như tiêu đề chỉnh sửa của tôi được đề xuất). Thay vào đó, đây là điều mà mọi người quản lý gói (mà tôi biết) làm; và vì lý do tốt. Mặc dù, tôi hiểu tại sao nó có thể gây nhầm lẫn.
Trình quản lý gói dựa trên cơ sở dữ liệu để theo dõi thông tin cho các gói đã cài đặt. Nếu nhiều người dùng cố gắng ghi vào cơ sở dữ liệu cùng một lúc, nó có khả năng bị hỏng dữ liệu cao (điều này thực sự sẽ làm hỏng hệ thống).
Do đó, nhiều người quản lý gói (tất cả?) Dựa vào một tệp khóa để báo hiệu rằng cơ sở dữ liệu đang được ghi vào, vì vậy một khách hàng khác không được phép làm như vậy.
Lưu ý rằng người quản lý gói thông minh có thể xác định khi nào yêu cầu chỉ đọc và có thể không cần khóa cơ sở dữ liệu. Kết quả là; có thể một số hành động có thể được chạy đồng thời trong khi những hành động khác sẽ không xảy ra.
Các tập tin khóa được sử dụng để ngăn chặn thực hiện song song của nhiều trường hợp.
Tại sao điều này quan trọng đối với một người quản lý gói?
Trình quản lý gói - từ chế độ xem cấp cao - là chương trình áp dụng các thay đổi phức tạp cho đĩa cứng.
Những thay đổi không thể được thực hiện trong một bước (Nhật nguyên tử), vì vậy có nhiều bước; nhiều bước phụ thuộc vào kết quả của các bước trước đó.
Vì vậy, trình quản lý gói cần phân tích đĩa cứng trước khi thực hiện từng bước hoặc chỉ cần phân tích một lần và theo dõi các thay đổi mà chính nó áp dụng. Tùy chọn đầu tiên là cực kỳ chậm. Thứ hai yêu cầu không có trường hợp khác thực hiện thay đổi.
Có nhiều vấn đề khác có thể xuất hiện.
Không thể thực hiện một trình quản lý gói có thể hoạt động song song, nhưng nó quá phức tạp để có giá trị . Như trong, bạn không thể tưởng tượng được phức tạp như thế nào. Có thật không.
dkpg
(và rpm
hầu hết các trình quản lý gói truyền thống khác) hoạt động bằng cách cài đặt các gói vào không gian toàn cầu, điều đó có nghĩa là các gói có thể xung đột với nhau (ví dụ A
và B
không thể được cài đặt cùng một lúc, vì cả hai đều cài đặt /usr/lib/libfoo.so
). Người quản lý gói phải phát hiện các xung đột đó và từ chối các yêu cầu cài đặt đó để giữ cho hệ thống luôn ở trạng thái nhất quán. Có nhiều phiên bản của trình quản lý gói chạy cùng một lúc sẽ rất phức tạp và dễ bị lỗi.
Các trình quản lý gói không xung đột (ví dụ http://0install.net ) có thể và cho phép nhiều gói được cài đặt song song và không cần các tệp khóa ( A/libfoo.so
và B/libfoo.so
sẽ đi trong các thư mục khác nhau).
1 Song song cả về ý nghĩa hiện diện và khả dụng trên hệ thống cùng một lúc và theo nghĩa được tải xuống và thêm vào hệ thống đồng thời.