2012-11-16 24 views
5

iki ikili (yani, iki yürütülebilir) arasındaki farkları hesaplamak için herhangi bir yol yoktur Linux iki ikili (yani, iki yürütülebilir) arasındaki farkları hesaplamak için? nasıl Linux

bana daha spesifik olalım: Linux konusunda yürütülebilir veya uygulama veya yazılım iki sürümü arasındaki delta (delta fark) hesaplamak için nasıl bilmek istiyorum. Örneğin, mevcut bir uygulamanın veya ikili uygulamanın yalnızca güncellenmiş kısmı (en son sürüm ve eski sürüm arasındaki delta farkı) indirip yüklemem gerekirse, bunu Linux'ta nasıl yaparım.

+0

basit yolu sizin için kullanılabilir olup olmadığını, kaynak kodunu karşılaştırmak olabilir. –

+0

Merhaba Basile, kaynak kodu karşılaştırmak için bir yol yok, sadece mevcut şeyler bir ikili, bir son sürümü ve diğeri eski sürümü iki versiyonu. – indranil

+0

Ancak ikili çalıştırılabilir karşılaştırmanın sonucuyla ne yapabilirsiniz? Peki neden gerçekten soruyorsun ?? –

cevap

2

diff ikili dosyalar farklı ise söyleyecektir:

cmp -l bin1 bin2 
    25 20 320 
    26 4 3 
    41 270 160 
209 4 264 
210 7 6 

-l seçmeli byte numarası ve farkı yazdırır:

farkı istiyorsanız

diff bin1 bin2 
Binary files bin1 and bin2 differ 

, cmp kullanmak

-l --verbose 
     Output byte numbers and values of all differing bytes. 
0

cksum deneyin - onlar aracını bsdiff kullanabilirsiniz aynı

9

olduğu gösterge verir ve verimli diffs ve ikili dosyalarının yamaları yapmak için, refakatçi bspatch bu. Eğer daha küçük yamalar almak istiyorsanız

, Google Chrome'dan, Courgette bir göz alabilir. Bsdiff üzerine kurulmuştur, ancak diff'yi yapmadan önce bunları gerçekten demonte ederek daha verimli çalıştırıcılar sağlarlar. Ayrı bir proje olarak dağıtılmıyor, ancak Chromium source repository'dan (check out the code'a kadar) alabilirsiniz.

da bsdiff daha uzun zamandır olmuştur xdelta aracı yoktur. Bsdiff'in yazarına göre, oldukça az verimli; yamalar çok daha büyük çıkıyor. Diğer birçok araç tarafından da desteklenen standart VCDIFF biçimini (RFC 3284) desteklemesi avantajı vardır, bu nedenle diğer araçlarla çalışmanız gerekirse daha kullanışlı olacaktır.

diff old_file new_file 

Ayrıca md5 kullanabilirsiniz ancak daha sonuçları karşılaştırmak zorunda:

+0

Bir uyarı: Gömülü sistemlerdeki gömülü sistemler (etiketlerde) ve bsdiff ana sayfasında "bsdiff oldukça bellek aç" diyor - Bunu hiç düşünmedim. – loreb

+0

@loreb Hafıza aç olan kısım, delta (genellikle bir geliştirme veya inşa makinesinde) oluşturduğunuz "diff" kısmıdır. Yama parçası çok daha makul bellek gereksinimlerine sahiptir. –

+0

Bana öyle gelmedi, teşekkürler – loreb

-1

Sen diff kullanabilirsiniz. Eğer md5 kontrol toplamı mevcut ise, indirilen dosyanın toplamı kontrol etmek için de kullanılabilir.