Aynı debian paketinin farklı versiyonlarını zorlamak


11

Yerel olarak yüklenmiş bir paket ile güncellenen paket arasında kaynak farkları almanın herhangi bir yolu var mı? Bu, hangi parçaların tam olarak sabitlendiğini, değiştirildiğini veya eklendiğini kontrol etmek için yararlı olacaktır.

Örneğin, sisteminizde linux-libc-dev paketinin yüklü olduğunu ve

sudo apt-get update && sudo apt-get upgrade

gösterileri

The following packages will be upgraded:
  linux-libc-dev 

ancak yükseltmeden önce, aynı paketin yerel sürümüyle karşılaştırıldığında yapılan tam değişiklikleri kontrol etmek istersiniz.

Nasıl yapabiliriz?

Yanıtlar:


5

İşte birlikte hacklediğim başka bir çözüm: ne değişti .

İlgilendiğiniz ikili paketin adını tek argüman olarak alır. Yeni bir SRU'yu örnek olarak kullanmak için:

./whatchanged python_papyon

Yaptığı bu:

  1. Güncelleme adayı olup olmadığını kontrol edin; eğer yoksa çık
  2. Bir aday varsa, geçici dizinler oluşturun ve hem kurulu sürüm hem de aday için kaynak paketleri getirin.
  3. debdiffİkisini ve çıktısını stdout ile karşılaştırın (muhtemelen daha kolay okumak için yönlendirmek isteyeceksiniz)
  4. Geçici dizinleri temizleyin.

Muhtemelen kaynak alımı sırasında yanlış olabilecek bazı şeyleri daha iyi ele alması gerekiyor, akış kontrolü muhtemelen biraz kapalı ve sürüm kontrolü için daha zarif yollar olmalı, ancak şu ana kadar sınırlı testlerimde iyi çalıştı. Şimdilik, işe yarayan hızlı bir saldırı olduğunu düşünün ve geliştirmeler en hoş geldiniz. Bir bzr deposuna göndereceğim ve / veya birkaç kişi için faydalıysa bir Launchpad projesi oluşturacağım.

Düzenleme : Yapıştırmak çürümesine izin vermek yerine, bunun için bir Launchpad projesi başlattım ; ile en son gövde revizyonunu alabilirsiniz bzr branch lp:whatchanged. Hataları bildirmekten , dallamaktan, Perl'de yeniden yazmaktan vb. Çekinmeyin .


Ne hoş! Cevaplar gibi araçlar geliştirme;) Sizin gibi kodlama tarzı, ama düzgün perl içinde kodlanmış olurdu ..
LassePoulsen

Teşekkürler; umarım bu işe yarar. Paketleme ve serbest bırakma tekniklerinin bazen açık kodu opak görünmesi, aklımda olan bir şeydir ve bunun üstesinden gelmek için basit bir araç bulamadım, bu yüzden aynı şeye ihtiyaç duyduğunu ifade eden biri sonunda iyi bir motivasyon oldu ilkel bir yapalım.
mgunes

7

Afaik bunu yapmanın tek yolu kaynağı almak ve farkınızı kendiniz yapmaktır. Paketleri derlemek için kullanılan asıl kaynağı apt-get ile alabilirsiniz. fx:

apt-get source gwibber=2.30.2-0ubuntu3 gwibber=2.30.0.1-0ubuntu1
diff -rupN gwibber-2.30.0.1/ gwibber-2.30.2/

Bu, tüm dosyalar arasındaki tüm farkları standart yama biçiminde yazdırır.


1
Bu oldukça iyi. Örnekte değiştireceğim tek şey ham farktan ziyade “debdiff gwibber_2.30.0.1-0ubuntu1.dsc gwibber_2.30.2-0ubuntu3.dsc” kullanmaktır.
RAOF

1
Aslında aynı şeyi yapar, ancak orada her pakette / tarballda diff kullanabilirsiniz. Belki birisi bir svn-trunk ve mevcut pkg arasındaki farkı görmek istiyor.
LassePoulsen

İkinci cevabım (değişmiş) aslında bunu otomatik hale getiriyor.
mgunes

2

İşte bunu yapmanın bir yolu (muhtemelen optimal değil) UDD :

Serbest bırakma dalınız için (Lucid varsayarak), en son SRU'yu içermesi gerektiği varsayımı:

bzr branch lp:ubuntu/lucid-updates/package_name

En son revizyonun getirdiği ve en son SRU'ya karşılık gelmesi gereken değişiklikleri alın:

bzr diff -c`bzr revno`

2
Hmm. İlginçtir ki, paket adlarının bzr kaynak ağacıyla eşleşmeyebileceği veya var olamayacağı anlamında muhtemelen Kaynak Laboratuarı'ndan daha az kapsamlıdır.
Gödel

Kaynak paket adını bildiğiniz sürece eşleşecektir. İkili paketin hangi kaynak paketle üretildiğini bulabilirsiniz apt-cache show package_name | grep Source:.
mgunes

@Murat Eh, <package_name>bu yüzden elde edilen bazı paketler üzerinde çalışmaz: bzr branch lp:ubuntu/lucid-updates/$(apt-cache show linux-libc-dev | grep -m 1 Source: | awk "{print \$2}")=> bzr: HATA: "Ulaştırma: sb: //bazaar.launchpad.net/+branch/ubuntu/lucid-updates/linux" : desteklenen düzen yok
Gödel

Çünkü çekirdek için hiç Ubuntu dalı yok, korkarım. Çekirdeğin git (kernel.ubuntu.com) içinde tutulması nedeniyle özel bir istisna olabilir, ancak şu anda bzr paket dallarının tam kapsamından emin değilim. # Ubuntu-devel'e sormak isteyebilirsiniz.
mgunes

@Mural biliyorum. Bu yüzden yöntem Kaynak Laboratuvarlarından daha az kapsamlı. Ama yine de, ilginç bir yaklaşım.
Gödel

0

Paket arşivlerindeki dosya farklılıklarını görmek istiyorsanız, md5sums dosyalarını ayıklayın, sıralayın ve farklılaştırın ve daha sonra önemli ölçüde karşılaştırmak için gerçek dosyaların listesini daraltabilirsiniz.


-1

"Tam" değişiklikler olmayabilir, ancak apt-listchangesyüklü sürümden bu yana yapılan değişikliklerin changelog girişlerini listeler.

Yeni paketleri indirmeyi bitirdikten sonra, ancak yükleme başlamadan önce, yükseltilmek üzere her paket için değişiklik günlüğü girişini gösteren bir adım ekleyerek çalışır. Daha sonra devam edebilir veya iptal edebilirsiniz. İle kurabilirsiniz

sudo apt-get install apt-listchanges

sonra ile kur

sudo dpkg-reconfigure apt-listchanges

Yine, soru ChangeLog değişikliklerini göstermekle ilgili değildir.
Gödel

D'oh, "kaynak farkları" dediğiniz ilk satırı kaçırdınız.
Ken Simon
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.