Daha yeni paketler istemek tüm işletim sistemlerinde sık karşılaşılan bir sorundur. Debian'ın serbest bırakma döngüsünün son yıllarda ortalaması 2 yıldır, bu nedenle bu döngünün sonuna doğru, belki de daha acil bir konudur. Bunu hafifletmenin bir yolu, bir sonraki sürüm neredeyse kararlı olduğunda, kararlı salım döngüsünün sonuna doğru teste geçmektir. Daha genel olarak test ve / veya dengesizlik konusunda kararlılıktan söz edip etmediği sorusu net değildir. Ne olursa olsun, en son sürüme sahip olmak kararsız çalışsa bile bir sorun olabilir, çünkü en son sürüm henüz paketlenmemiş olabilir. Debian geliştiricileri / paketleyicileri gönüllüdür, bu nedenle paketin bozulmasıyla sıkılabilir veya başka şeylerle meşgul olabilirler.
Basitlik ve somutluk için, planın bir paketi istikrarlı olarak tersine çevirmek olduğunu varsayıyorum, ancak daha genel olarak geçerlidir. Yani, kararlı bir şekilde mevcut olmayan daha yeni bir yazılım sürümünü yaklaşık bir sırayla istiyorum.
Paketi Debian Backports'ta arayın . Bazen amaçlarınızı tatmin edecek kadar yeni bir paket bulabilirsiniz. Bununla birlikte, genellikle bu paketlerin kararsız veya deneysel veya yukarı akıştaki sürümle karşılaştırıldığında modası geçmiş olmasıdır.
Paketi doğrudan test, kararsız veya deneysel olarak yüklemeye çalışın. Stabil, yüklemeye çalıştığınız sürümden çok farklı değilse, bu işe yarayabilir. Sistem temel paketleri daha yeni sürümden yüklemeye veya yükseltmeye çalışırsa bu yaklaşımın kötü olduğunu anlayacaksınız. Dengesizden yüklemeye çalıştığınızı varsayalım, o zaman
apt-get install packagename/unstable
denemek için ilk şey. Kararlı apt sürümleri ile, bu kararsız gelen diğer paketler gerektirdiğinden, genellikle başarısız olur ve bu büyültme sadece packagename
kararsız olarak kurulabilmesi için yeterince yüksek tercihini arttırır. Bunun ne anlama geldiğini anlamıyorsanız, gidin ve okuyun man
apt_preferences
. Temel paketleri yükseltmeye çalışmadığından emin olarak kararsızlardan bağımlılıklar eklemeye devam edin. Örneğin, libc6 veya X veya KDE veya Gnome'u yükseltmeye çalışırsa hemen iptal edin. Genellikle aynı kaynak paketinden diğer paketleri yükseltmeye çalışırsa, genellikle birbirine sıkıca bağlı olduğundan sorun olmaz. İkili paketin hangi kaynak pakete bağlı olduğunu görmek için şunu yapın:
apt-cache showsrc packagename
Birçok şey GNU C kütüphanesine (libc6) bağlı olduğu için bu eskiden bir problemdi. Daha yakın zamanlarda, API stabil hale gelmiş gibi görünüyor, bu yüzden şimdi yükseltmek zorunda kalmamaktan kurtulmak daha mümkün. Bir paket kararlı çalışma zamanı bağımlılıklarını karşılıyorsa, ancak yine de düzgün çalışmıyorsa, bir hata dosyası oluşturun. Paketleyici bunun bir hata olmadığını söylüyorsa yanlıştır. :-)
Paketi denemeden, dengesiz veya deneysel olarak kendinize destekleyin.
Yukarıda belirtildiği gibi, backports bir seçenektir, ancak genellikle bu paketler, dengesiz veya deneysel veya yukarı akıştaki versiyona kıyasla güncel değildir.
Bu genellikle özyinelemeli bağımlılık oluşturma döngüsü türü bir şey gerektirebilir. Öncelikle derleme bağımlılıklarını
apt-get build-dep packagename
Bağımlılıklardan biri yeterince yakın olmadığından bu başarısız olursa, önce bu bağımlılığı desteklemeniz gerekir. Bu kontrol dışı olabilir. Genellikle 2'den fazla özyineleme seviyesi ile uğraşmak zorunda kalırsam vazgeçerim. Bununla birlikte, gerçek bağımlılıkların belirtilen şekilde sıkı olması gerekmediğini unutmayın. eski bir sürüm işe yarayabilir. Paketleyici genellikle bir derleme (veya aslında çalışma zamanı) bağımlılığının en eski sürümünü bulmaya çalışmaz.
Karşılık gelen yukarı akıştaki paketlerin kullanılabilirliğini kontrol edin. İdeal olarak bunlar dağıtım sürümünüzle eşleşir, ancak gerekirse bunları yeniden oluşturabilirsiniz.
Yazılımın sürümü için test / kararsız / deneysel olan en yeni paketlerden daha yeni paketler oluşturun. Bu nispeten zor olabilir, ancak yine de bazen şaşırtıcı bir şekilde yapılabilir. Unutulmaması gereken ilk şey, zaten Debian'da bulunan bir paketin daha yeni bir sürümünü paketlemeye çalışıyorsanız, zaten büyük bir avantajla başlıyorsunuz, yani çalışmak için mevcut ambalajınız var. Sadece yap
apt-get source packagename
ve apt-get
paketin yaşadığı debian alt dizini de dahil olmak üzere ilgili kaynak paketi indirecektir. Ayrıca, bu günlerde, bu ambalajın genellikle bazı kontrol havuzunda (git Debian ile popüler gibi görünüyor) ve kararlı apt'in (şu anda 0.8.10.3 ) yaşadığını unutmayın
apt-get source
. Buna bakmalısınız, çünkü paketleyicilerin ambalajın herhangi bir piyasaya sürülenden daha yeni sürümleri olabilir. Örneğin.
$ apt-get source mercurial
Reading package lists... Done
Building dependency tree
Reading state information... Done
NOTICE: 'mercurial' packaging is maintained in the 'Svn' version control system at:
svn://svn.debian.org/python-apps/packages/mercurial/trunk
Alternatif olarak,
apt-cache showsrc mercurial | grep Vcs
havuzu listelemek için.
Paket güncelliğini yitirmişse,
pakette değişiklikler yapmanız , uygulanan yamaları yenilemeniz gerekebilir, ancak yine de genellikle iyi bir başlangıç
noktasıdır. Debian
, dpkg-kaynak 3.0 (yorgan) biçimine göre yorgan üzerinde paket yönetimini standartlaştırma sürecinde gibi görünüyor , bu nedenle yama yenilemeye yardımcı oluyor.
Ben backported nasıl gerçek hayattan örnek ile bitireceğim Debian paketini ait
PGF . Pgf'nin son paketlenmiş versiyonu 2008'de 2.00 idi ve o zamandan beri 2.10 piyasaya sürüldü. Tartışmaya bakınız PGF (2.10) en yeni kararlı sürümüne Lütfen güncelleme bir yama ile, ve benim takip hata, PGF: 2.0 Debian paketleme karşı yamalar . Anlaşıldığı üzere, pgf'nin Debian ambalajı çok basitti ve çalışmasını sağlamak için 2.10 ambalajındaki bir satırı değiştirmek zorunda kaldım. Ben de tüm lintian şikayetlerini quelling sona erdi
, ama bu kesinlikle isteğe bağlı oldu.