Yanıtlar:
Bu bir ... Değil dpkg
sorun (düzenlememin başlığı önerildiği gibi). Aksine, bu her paket yöneticisinin (farkında olduğum) yaptığı bir şeydir; ve iyi bir nedenle. Yine de, neden kafa karıştırıcı olabileceğini anlıyorum.
Paket yöneticileri kurulu paketlerin bilgilerini izlemek için veritabanlarına güvenir. Birden çok kullanıcı aynı anda bir veritabanına yazmaya çalışırsa, verileri bozma şansı yüksektir (bu da sisteme gerçekten zarar verir).
Sonuç olarak, birçok (tümü?) Paket yöneticisi veritabanının yazıldığını bildirmek için bir kilit dosyasına güvenir , bu nedenle başka bir istemcinin bunu yapmasına izin verilmemelidir.
Akıllı paket yöneticilerinin, bir isteğin ne zaman salt okunur olduğunu belirleyebileceğini ve veritabanını kilitlemesinin gerekmeyebileceğini unutmayın. Sonuç olarak; bazı eylemlerin diğerlerinin olmayacağı yerlerde eşzamanlı olarak yürütülebilmesi mümkündür.
Kilit dosyası, birden çok örneğin paralel yürütülmesini önlemek için kullanılır .
Bu bir paket yöneticileri için neden önemlidir?
Paket yöneticisi - üst düzey görünümden - sabit diske karmaşık değişiklikler uygulayan bir programdır .
Değişiklikler bir adımda (“atomik”) yapılamaz , bu nedenle birden fazla adım vardır; adımların çoğu önceki adımların sonucuna bağlıdır.
Bu nedenle, paket yöneticisinin her adımı yürütmeden önce sabit diski analiz etmesi veya bir kez analiz etmesi ve uyguladığı değişiklikleri takip etmesi gerekir. İlk seçenek son derece yavaştır. İkincisi, başka hiçbir örneğin değişiklik yapmamasını gerektirir.
Ortaya çıkabilecek başka birçok sorun var.
Öyle imkansız değil paralel olarak çalışabilir bir paket yöneticisini uygulamak, ancak oluyor değer çok olsun karmaşık . Olduğu gibi, ne kadar karmaşık olduğunu hayal bile edemezsiniz. Gerçekten mi.
dkpg
(ve rpm
global alanda, paketler birbiri ile çakışabilir (örneğin demekse içine paketleri yükleyerek ve diğer birçok geleneksel paket yöneticiler) çalışma A
ve B
her ikisi de yüklemek, çünkü aynı anda yüklenemez /usr/lib/libfoo.so
). Paket yöneticileri, sistemi tutarlı bir durumda tutmak için bu tür çakışmaları tespit etmeli ve bu tür kurulum taleplerini reddetmelidir. Paket yöneticisinin aynı anda çalışan birden çok örneğinin olması çok karmaşık ve hataya açık olacaktır.
Çakışmasız paket yöneticileri (örn. Http://0install.net ) birden fazla paketin paralel olarak kurulmasına izin verebilir ve bunu yapabilir ve kilit dosyalarına ihtiyaç duymaz ( A/libfoo.so
ve B/libfoo.so
farklı dizinlere gider).
1 Aynı anda hem mevcut hem de sistemde mevcut olma anlamında ve aynı anda indirilip sisteme eklenmesi anlamında paraleldir.