Debian paketlerinin önceki sürümleri neden paket havuzlarında kayboluyor? (sürüm kontrollü sistem konfigürasyonu için son derece uygun)


37

Senaryo: Kukla, Aşçı vb. Temelli sürüm kontrollü sistem konfigürasyonunda, belirli bir sistem durumunun çoğaltılması gerekir. Bu, açıkça sistem paketi sürümlerini belirterek yapılır.

Son zamanlarda, Debian depolarında belirli paket sürümlerinin eksik olduğu bir sorunla karşılaştık. Bir örnek: 2.7.5-1 + deb9u1 sürümünde "yama" paketi gerekliydi, ancak yalnızca 2.7.5-1 + deb9u2 sürümü mevcuttu. Daha da şiddetli bir örnek daha: "linux-headers-4.9.0-9-common" gereklidir (ilişkili çekirdek yüklendiğinden dolayı) ve yalnızca "linux-headers-4.9.0-11-common" kullanılabilir.

Bu, belirli bir sistemin durumunu çoğaltmayı imkansız hale getirir.

Yukarıdaki paketler sadece örneklerdir (aslında karşılaştığım). Genel problemi anlamak ve çözmekle ilgileniyorum.

Bu güncellemelerin, 'kaybolan' paketlerin ve paket sürümlerinin arkasındaki fikir nedir?

Debian paketlerinin önceki sürümlerini (gerçekten eski sürümleri değil, birkaç hafta eski sürümlerini) nereden alabilirim? Kurulum işlemini genel olarak otomatikleştirmek mümkün olmalıdır.


1
Bir kısmı depoyu yapılandırmak için kullanılan yazılıma bağlı. Reprepro, iirc, her paketin sadece bir versiyonuna izin veriyor
muru

2
stableEn azından bir sonraki noktaya kadar tutarlı kalır. kararlı güncellemeler, testler ve dengesiz olanlar sadece herhangi bir paketin en son sürümünü içerir. Başka bir şey, sen bakmak gerekecek için archive.debian.org (veya snapshot.debian.org SK'nın cevapta belirtildiği gibi)
cas

5
Değiştirme politikasını ve pin sürümlerini kontrol edebileceğiniz kendi deponuzu çalıştırmamanızın bir nedeni var mı (gelecekteki otomatik yüklemeleri yerel hale getirme avantajına sahip olacak)?
Eric Towers

2
Yeni linuxpkg adı bir istisnadır: genel olarak, Debian stable'in paketleri aynı paket adına göre gider ve yalnızca sürüm numarasını değiştirir. linux-image-amd64asla isim değiştirmez ve daima en son zamana bağlıdır linux-image-4.9.0-*. Yeni linux-image-4.9.0-*pkg adı, bazı hata düzeltmelerini desteklemek için gereken uyumsuz çekirdek ABI değişikliklerini işaretler ve özel olarak oluşturulmuş modüllerin (dkms, vb.) Gerekli yeniden derlenmesiyle başa çıkabilmenizi sağlar. Benzer şekilde linux-headers-*.
ignis

1
Bu güncellemelerin arkasındaki fikir nedir apt-get changelog packagename
görmezden

Yanıtlar:


63

Kesin sürüme kadar belirli bir kurulumu tekrar oluşturabilmek Debian'ın değil sizin ihtiyacınızdır.

Debian herhangi bir sürümde sadece her bir ikili paketin tek bir versiyonunu destekler; Bunun karşılığı ise, herhangi bir sürümdeki paket güncellemelerinin gerileme getirmemesi ve bu tür bir dikkatin mümkün olmadığı durumlarda bu gerçeği belgelemesi için büyük özen gösterilmesidir. Belirli bir paketin birden fazla sürümünün tutulması yalnızca destek yükünü ve test gereksinimlerini artıracaktır: örneğin, paket bakımcıları güncellenmiş paketleri yalnızca şu anda desteklenen sürümlerin yerine kullandıkları tüm kitaplık sürümlerine karşı test etmek zorunda kalacak ... Paketler yalnızca gerçekten gerekli olduğunda kararlı bir sürümde güncellenir, örn.Ciddi bir hatayı düzeltmek için (güvenlik sorunları dahil). Çekirdek durumunda, bu bazen çekirdeğin ABI'sinin değiştiği ve paket adının bunun bir sonucu olduğu anlamına gelir (bağımlı paketlerin yeniden yapılandırılmasını zorlamak için); Eğer sabit kodlama ABI (yerine çekmek meta-paketler vardır linux-image-amd64, linux-headers-amd64vb.)

Bununla birlikte, durumunuz için bir geçici çözüm vardır: Yayınlanan her kaynak ve ikili paket, snapshot.debian.org sitesinde arşivlenir . Sürümlü bir kurulum oluşturduğunuzda, karşılık gelen anlık görüntüyü (örneğin, Eylül 2019 anlık görüntülerinden biri ) seçebilir ve bunu depo URL’niz olarak kullanabilirsiniz:

deb https://snapshot.debian.org/archive/debian/20190930T084755Z/ buster main

Buna güveniyorsanız, lütfen bir tür önbellek aynası kullanın, örneğin Apt-Cacher NG . Bu sadece anlık görüntü sunucusundaki yükü azaltmakla kalmayacak, ihtiyacınız olan tüm paketlerin yerel bir kopyasının olmasını da sağlayacaktır.

( Kaynak paketleri ile ilgili durum biraz daha karmaşıktır ve arşivler, belirli bir sürümde lisans bağımlılıkları nedeniyle bazı kaynak paketlerinin birden fazla sürümünü taşır. Ancak bu konu ile ilgili değildir. Kesinlikle, Debian bazılarının birden fazla sürümünü sağlar. Desteklenen sürümlerdeki ikili dosyalar: Geçerli depo sürümündeki güncel sürüm, güvenlik depolarındaki ve güncelleme havuzlarındaki güncellemeler ile birlikte, sonraki nokta sürümlerindeki katlanır, bu nedenle yeniden üretilebilir, sürüm kontrollü bir sistem yapılandırması gerçekleştirilemez bir nokta açıklaması yapıldığında her güncellendiğinde, anlık görüntülere başvurmak.)


Bazen bazı önceki sürümlerin mevcut olduğunu unutmayın; yapılandırılmış havuzlarda görülebilecek apt-cache madison packagenametüm sürümleri gösterir apt.
ivanivan

5
(Lütfen anlık görüntü / arşiv sunucularını yakındaki bir ayna yerine gereksiz yere kullanarak aşırı yüklemeyin. Bu nedenle, normal yansıtmanızı kaynaklarınızdaki listenizde anlık görüntüden daha yüksek önceliğe bırakın; .)
Peter Cordes

3
Sadece doğru anladığımı doğrulamak için: Uygulamada, paketleri kurarken belirttiğim sürümlerle ilgili değil (eski sürümler mevcut olmayabilir), ancak kullandığım paket deposunun durumu. Bu nedenle, eğer 'taze' bir Debian 9.8 istiyorsam, bu paket deposuna tam o anda (örneğin, kendimi yarattığım bir anlık görüntü veya veri havuzu) ihtiyacım var ve sonra, tabii ki, doğru linux-header- * paketi mevcut olmaya devam ediyor. . Debian 9.9'a geçmek istersem, paket deposunu ilişkili duruma alıp apt-get dist-upgrade komutunu çalıştırıyorum. Bu doğru mu?
Flo

2
Evet doğru.
Stephen Kitt

3
@ Not, bu nokta bültenleri (debian X.9 veya X.8 gibi) yalnızca indirilebilir isolar içindir, bu nedenle yeni kurulumlar tonlarca paket indirmez. Depolarda, herhangi bir nokta açıklaması arasında bir ayrım yoktur, her zaman en son paketi alırsınız.
Braiam

15

Belirli bir sistem durumunu yeniden oluşturmak için kontrolünüz altında olmayan sunuculara güvenmeyin. Debian sunucularının oldukça güvenilir olduğunu düşündüğümde, gelecekte neler olacağını asla bilemezsiniz. Bu, özellikle kullanabileceğiniz diğer depolarla ilgilidir.

Sistem durumlarını yeniden üretebilmek için kendi aynanızı korumalısınız. Bu şekilde normal sistemleriniz için bir üretim durumuna ve yeni yapılandırmalar için birkaç test durumuna bile sahip olabilirsiniz.

Havuz yönetimi aracı uygun bir şekilde havuz aynaları oluşturabilir. Yansıtmak için paketleri seçebilir, zaman içindeki belirli noktalarda depo içeriğinin anlık görüntülerini oluşturabilir ve birkaç aynayı veya anlık görüntüyü tek bir depoda birleştirebilirsiniz. Bu sayede, yetenekli sistem durumlarını tamamen yeniden üretebilirsiniz.


8

İken Stephen Kitt cevabı kesinlikle olası bir çözüm, ben size gerekli paketlerin kendi kopyalarını tutmak için daha güvenli olacağını düşünüyoruz.

Bir sistem kurulumunu kaydederken, .debdosyaların kopyalarını kaydettiğinizden emin olun /var/cache/apt/archives/. Ayrıca kullanabilirsiniz apt-get download.

Bir sistem kurulumunu geri yüklerken, aptpotansiyel olarak tehlikeli otomatik eylemleri tetiklememek için çok katı olmalısınız .

İstediğiniz dpkgtam olarak ne yüklemek için doğrudan kullanmak daha kolay olacaktır .


6
Daha iyi bir yaklaşım olan IMO, yerel bir APT önbelleği kullanmak olacaktır. Bu, üçüncü paragrafınızdaki sorunları önler ve ayrıca hasat yapmak zorunda kalmaz /var/cache/apt.
Stephen Kitt

3
Bunun iki çeşidi var - biri bütün bir repoyu klonlamak için apt-mirror gibi bir şey kullanmak, diğeri sadece belirli paketleri ve bağımlılıkları indirmek . Daha pkgs-20190501sonra dir. Derleme zamanında, represe url'yi (örn. http://debmirror/pkgs-20190501/...) Sources.list'e koyun , daha sonra apt-get update, apt-get install $ pkgs, vb. Çalıştırın
bain
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.