2012-11-16 10 views
5

में दो बाइनरी (यानी दो निष्पादन योग्य) के बीच मतभेदों की गणना कैसे करें, लिनक्स में दो द्विआधारी (यानी दो निष्पादन योग्य) के बीच अंतरों की गणना करने का कोई तरीका है?लिनक्स

मुझे और अधिक विशिष्ट होने दें: मैं जानना चाहता हूं कि लिनक्स में निष्पादन योग्य या एप्लिकेशन या सॉफ़्टवेयर के दो संस्करणों के बीच डेल्टा (डेल्टा अंतर) की गणना कैसे करें। उदाहरण के लिए यदि मुझे किसी मौजूदा एप्लिकेशन या बाइनरी के केवल अपडेट किए गए भाग (नवीनतम संस्करण और पुराने संस्करण के बीच डेल्टा अंतर) को डाउनलोड और इंस्टॉल करना है, तो मैं इसे लिनक्स में कैसे कर सकता हूं।

+0

यदि यह आपके लिए उपलब्ध है, तो स्रोत कोड की तुलना करना सबसे आसान तरीका हो सकता है। –

+0

हाय बेसिल, मेरे पास स्रोत कोड की तुलना करने का कोई तरीका नहीं है, केवल उपलब्ध चीजें बाइनरी के दो संस्करण हैं, एक नवीनतम संस्करण और दूसरा एक पुराना संस्करण है। – indranil

+0

लेकिन बाइनरी निष्पादन योग्य तुलना के परिणामस्वरूप आप क्या कर सकते हैं? तो आप वास्तव में क्यों पूछते हैं ??? –

उत्तर

2

diff आपको पता चलेगा कि बाइनरी फ़ाइलें अलग हैं:

diff bin1 bin2 
Binary files bin1 and bin2 differ 

आप अंतर चाहते हैं, cmp का उपयोग करें:

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

-l विकल्प प्रिंट बाइट संख्या और अंतर:

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

cksum का प्रयास करें - संकेत है कि वे एक ही

9

आप उपकरण bsdiff उपयोग कर सकते हैं देता है, और यह साथी bspatch है, कुशल डिफ और बाइनरी फ़ाइलों के पैच करने के लिए।

यदि आप छोटे पैच भी प्राप्त करना चाहते हैं, तो आप Google क्रोम से Courgette पर एक नज़र डाल सकते हैं। यह bsdiff पर बनाया गया है, लेकिन वे diff करने से पहले वास्तव में उन्हें अलग करके निष्पादन योग्य के और भी अधिक कुशल diffs प्रदान करते हैं। इसे एक अलग परियोजना के रूप में वितरित नहीं किया जाता है, लेकिन आप इसे Chromium source repository (check out the code से कैसे प्राप्त कर सकते हैं) से प्राप्त कर सकते हैं।

xdelta उपकरण भी है, जो कि बीएसडीएफ से अधिक समय तक रहा है। बीएसडीएफ के लेखक के अनुसार, यह काफी कम कुशल है; पैच बहुत बड़ा आते हैं। इसका लाभ यह है कि यह मानक वीसीडीआईएफएफ प्रारूप (RFC 3284) का समर्थन करता है, जो कई अन्य उपकरणों द्वारा समर्थित है, इसलिए यदि आपको ऐसे अन्य उपकरणों के साथ काम करने की आवश्यकता है, तो यह अधिक उपयोगी होगा।

+0

एक चेतावनी: ओपी आयाम एम्बेडेड सिस्टम (टैग में), और बीएसडीएफ होमपेज कहता है "बीएसडीएफ काफी भूख लगी है" - मैंने कभी इसके बारे में सोचा नहीं। – loreb

+0

@loreb वह हिस्सा जो भूख लगी है वह "diff" भाग है, जिसमें आप डेल्टा उत्पन्न करते हैं (आमतौर पर विकास या निर्माण मशीन पर)। पैच भाग में अधिक उचित मेमोरी आवश्यकताएं होती हैं। –

+0

यह मेरे लिए नहीं हुआ, धन्यवाद – loreb

-1

आप diff उपयोग कर सकते हैं:

diff old_file new_file 

तुम भी md5 उपयोग कर सकते हैं, लेकिन आप से परिणामों की तुलना करने के लिए है। यदि एमडी 5 चेक योग उपलब्ध है तो इसे डाउनलोड की गई फाइल की राशि की जांच के लिए भी इस्तेमाल किया जा सकता है।