Hızlı paketler paylaşılan bağımlılıkları nasıl işler?


30

Snap ambalaj formatı sonunda her paketin kendi bağımlılık kopyasına sahip olmasını sağlayarak bizi bağımlılık cehenneminden kurtarır. Bunun nasıl yapıldığına ilişkin teknik detaylarla ilgileniyorum. Nasıl işliyor:

  • Geçerli sürüm için deb paketleri aracılığıyla önceden kurulmuş bir kütüphanenin sürümüne bağlı olarak uyar Kurulu kütüphaneyi yok sayar mı?
  • aynı kütüphanenin aynı sürümünü belirten farklı anlık görüntüler? Bir şekilde tekilleştirme yapıyor mu?
  • çok sayıda enstantane tarafından kullanılması muhtemel olan çekirdek kütüphanelerindeki güncellemeler? OpenSSL akla büyük bir acı noktası olarak geliyor.

xdg-app "çalışma zamanı" adı verilen bir şeye sahiptir :

Xdg-app içindeki temel kavram, çalışma zamanı / uygulama bölmesidir. Her uygulama, uygulamanın dayandığı temel kitaplıkları sağlayan bir çalışma zamanına bağlıdır. Çalışma zamanları genellikle birçok uygulama tarafından paylaşılır, ancak bir kullanıcının aynı anda birden fazla çalışma zamanına sahip olabilir.

OpenSSL durumunda, xdg-apps içindeki çalışma zamanının bir parçası olacağı anlaşılıyor, bu yüzden OpenSSL'e yapılan bir güncelleme aynı çalışma zamanını kullanan tüm xdg uygulamalarını şeffaf bir şekilde etkilemeli.

Yanıtlar:


9

İlk iki durum akıllıca ele alınır.

Konuşulan ilginç özelliklerden biri Snap paketlerindeki içerik için veri tekilleştirme desteği. Snaps, dosya karmalarına bağlı olarak snaps arasında paylaşılan ortak dosyaların otomatik olarak tekilleştirilmesini sağlar. Dosya sistemi katmanında çoğaltma, ek indirmelerde çoğaltma (sunucu desteğiyle) ve eşlenmiş kitaplıkların bağlayıcıdan çoğaltılması olabilir. Tekilleştirme, büyük bir iş öğesidir ve tam olarak uygulanması biraz zaman alabilir, ancak yine de ilginç bir amaçtır.

Kaynak: http://www.phoronix.com/scan.php?page=news_item&px=Ubuntu-Snappy-Deduplication

Üçüncü duruma gelince, bahsettiğiniz çalışma sürelerine benzer bir şeyleri var:

Hızlı bir makine oluşturan üç katman vardır: Canonical tarafından sağlanan sistem katmanı, Canonical ile işbirliği içinde satıcılar tarafından üretilen temel sistemi genişleten bir çerçeve katmanı ve doğrudan satıcılar tarafından sağlanan bir dizi ek uygulama. Herhangi bir parçayı güncellemek, salt okunur bir görüntünün yeni sürümünü kullanmak anlamına gelir. Önceki bir sürüme dönmek de aynı derecede kolaydır.

Kaynak: http://www.ubuntu.com/cloud/snappy

Çerçeveleri tanımlayan iyi bir dokümantasyon henüz yoktur, çünkü öncelikle bir çerçevenin ne olduğunu hala çözüyor gibi görünüyorlar. İşte size bir şeyler açıklığa kavuşturmaya yardımcı olabilecek posta listesinden bir alıntı.

Temel olarak Snappy temel sistemini, çok sayıda enstantane gerektiren ancak güncelleme sorunları ve boyutlarından dolayı her eke dahil edilmemesi gereken yazılımlar ve servisler yoluyla genişletmek için denemeler yapıyorum. Bunun için en iyi örnek, openssl ikili dosyası. Birçok anlık anahtar, anahtarları ve sertifikaları oluşturmak ve doğrulamak için buna ihtiyaç duyar.

Bir çerçeve ile çözmek için bağladığım diğer konu, özellikle limanlara bağlı sistem geniş kaynaklarına erişimdir. Örneğin, bir web sunucusu çerçevesi, diğer snapps'ların web hizmetlerini api ve uç noktalarına ters proxy yoluyla web sunucusunu çalıştıran çerçeveye enjekte etme yolları sağlayacaktır.

IRC'ye çerçeve kavramını kötüye kullandığıma söylenmişti, ancak yine de bu iki konu masamda sık sık ortaya çıkıyor.

Kaynak: https://lists.ubuntu.com/archives/snappy-app-devel/2015-November/000442.html


1
Açıklığa kavuşturmak için, bunların hiçbiri şimdi yok, değil mi? Bunlar planlar ve muhtemelen ilk satırda "işlenecekler" yerine "ele alınacak" mı demek istediniz?
muru

Teknik olarak, ikisi de var. Zaten en az bir docker çerçevesi olduğunu ve yüklü uygulamaların yararlandığı ubuntu-core ile birlikte gelen bazı kütüphanelerin bağlantılarının olduğunu biliyorum. Ne kadarıyla olsa da hiçbir fikrim yok; Ben sadece çözümlerin teknik detaylarını açıklıyorum.
alaycı

1
Bunlar akıllıca ele alınan yollar değil, sadece iddia edilen akıllıca fikirler. Örneğin, ilk uygulamanın gerçekte nasıl uygulandığına dair resmi bir dokümantasyon yok, sadece bir konuşmaya işaret eden bir Phoronix makalesi, ki bu btw ölü bir bağlantı.
bviktor

3

Anlık görüntülerin hangi bağımlılıkların yüklü olduğunu kontrol ettiğini sanmıyorum. Sadece tüm bağımlılıklarını ve çalışma zamanlarını içerir (kısmen LibreOffice snap'un 287 MB ve flatpak'ın yaklaşık 200 MB olması).

Snaps, yazılımın çalışması için gereken hemen hemen her şeyi içerir. Enstantane arasında hiçbir şeyin paylaşılacağını sanmıyorum.

Bununla birlikte, bir çentik güncellediğinde, tüm çentiği değil yalnızca yeni olan bağımlılıkları indirir.


2

Yapışan paketlemenin paylaşılan bağımlılıkları ele alma şekli hakkında ek açıklama getirilmiştir.

Snaps, yazılımın çalışması için gereken hemen hemen her şeyi içerir. Enstantane arasında hiçbir şeyin paylaşılacağını sanmıyorum.

Yanıtlardan birindeki bu ifade kısmen doğrudur, ancak çekirdek ek dışında tüm yüklü ek paketler, biri temel ek olan iki pakete bağlıdır.

  1. snapd - varsayılan olarak 16.04'te ve sonrasında yüklenir ve 14.04'te de yüklenebilir.

  2. çekirdek    - (ilk ek paket yüklendiğinde) otomatik olarak indirilen ve yüklenen çekirdek çekirdek

Çekirdek kendisi dışındaki tüm çırpıda paketleri çekirdek çıtçıtına bağlıdır. Çekirdek çıtçıtında yanlış bir şey varsa, diğer çıtçıtların bazıları veya tümü çalışmaz. Çekirdek çıtçıtındaki bir problem aşağıdaki iki şekilde düzeltilebilir.

  1. Çekirdek ek parçasını güncelleyin. Bu işe yaramasa bile, aşağıdaki komutu çalıştırmanın sonuçları, sorunu çözmenize yardımcı olacak ek bilgiler sağlayacaktır.

    sudo snap refresh core  
    
  2. Çekirdek ek parçasını ve tüm ek paketlerini kaldırın ve sonra yeniden takın.

    sudo snap remove core snap-package1 snap-package2  
    sudo snap install core snap-package1 snap-package2
    
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.