6

Linux で、2 つのバイナリ (つまり、2 つの実行可能ファイル) の違いを計算する方法はありますか?

もっと具体的に言えば、Linux の実行可能ファイル、アプリケーション、またはソフトウェアの 2 つのバージョン間のデルタ (デルタ差) を計算する方法を知りたいのです。たとえば、既存のアプリケーションまたはバイナリの更新された部分 (最新バージョンと古いバージョンの差分) のみをダウンロードしてインストールする必要がある場合、Linux でそれを行うにはどうすればよいでしょうか。

4

4 に答える 4

10

ツールbsdiffを使用できます。これは、バイナリ ファイルの効率的な差分とパッチを行うためのコンパニオン bspatch です。

さらに小さなパッチを取得したい場合は、Google ChromeのCourgetteを参照してください。bsdiff に基づいて構築されていますが、差分を実行する前に実際に逆アセンブルすることで、実行可能ファイルのさらに効率的な差分を提供します。別のプロジェクトとして配布されているわけではありませんが、Chromium ソース リポジトリ(コードのチェック アウト方法) から入手できます。

bsdiff よりも長く使用されているxdeltaツールもあります。bsdiff の作成者によると、かなり効率が悪いとのことです。パッチははるかに大きくなります。他のいくつかのツールでもサポートされている標準の VCDIFF 形式 ( RFC 3284 )をサポートしているという利点があるため、そのような他のツールを使用する必要がある場合は、より便利です。

于 2012-11-16T11:04:14.413 に答える
3

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.
于 2012-11-16T10:59:19.357 に答える
0

cksumを試してください- それらが同じであることを示します

于 2012-11-16T11:01:22.983 に答える
-1

diffを使用できます:

diff old_file new_file

md5も使用できますが、結果を比較する必要があります。md5 チェックサムが利用できる場合は、ダウンロードしたファイルの合計をチェックするためにも使用できます。

于 2012-11-16T11:05:09.700 に答える