逆引きUNIXコマンド/ファイルのバイナリ差分を作成・適用する(bsdiff)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
* Linux環境でファイルのバイナリ差分を作成・適用する(bsdif...
バイナリ差分の作成や適用できるbsdiffを紹介します。
#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
* 関連記事 [#t996d901]
-[[バイナリエディタ ghex>ソフトウェア/開発・デバッグ/バイ...
-[[CentOS 5.4 インストール後の初期設定>CentOS/CentOS 5.4 ...
* バイナリ差分とは [#za3cfbb3]
Linuxではファイルの差分というのは、~
一般的に''diff''コマンドによる2つのテキストファイルの差異...
これは''パッチファイル''とも呼ばれます。
差分ファイルのよくある利用方法としては、~
ソフトウェアのソースコードから変更した部分のみを取り出し、~
別の場所にある古いバージョンのソースコードに対して、~
''patch''コマンドを使ってその変更部分を反映したりします。
テキスト以外のファイル、つまり実行プログラムファイルや画...
アーカイブファイルなど、バイナリファイルの差分を取ること...
これは元々UNIX(Linux)の世界では、ソフトウェアはソースコー...
コンパイルして実行ファイルを作ることが普通だったためです。~
たとえ同じソフトウェアを動かしていても、OSやCPUなどはそれ...
バイナリファイルとしては当然まったく別のファイルになりま...
そうなるとバイナリ差分の出番はありません。~
画像などその他のファイルもバイナリ差分での配布が有効であ...
しかし、巨大なバイナリファイルで変更の差分が少々であるこ...
バイナリ差分を取って、それのみを変更先へ送りたいこともあ...
ライブアップデートを行うブラウザなどのプロダクトでは、~
内部的にバイナリ差分を使っているものもあるようです。
Linuxにはバイナリ差分を取るコマンドとして、''bsdiff''があ...
* bsdiffのインストール [#e799e11f]
以下にUbuntuとCentOSにbsdiffコマンドをインストールする手...
** ubuntu [#h291dabd]
ubuntuでは以下のようにapt-getでインストールすることができ...
# apt-get install bsdiff
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
bsdiff
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個...
12.6 kB のアーカイブを取得する必要があります。
この操作後に追加で 86.0 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu/ precise/univ...
12.6 kB を 0秒 で取得しました (29.0 kB/s)
以前に未選択のパッケージ bsdiff を選択しています。
(データベースを読み込んでいます ... 現在 136445 個のファ...
(.../bsdiff_4.3-10ubuntu1_i386.deb から) bsdiff を展開し...
man-db のトリガを処理しています ...
bsdiff (4.3-10ubuntu1) を設定しています ...
#
** CentOS [#cae1fe54]
CentOS5やCentOS6では、EPELにパッケージが存在しています。~
EPELのレポジトリを登録していれば、yum installでインストー...
# yum install bsdiff
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* epel: buaya.klas.or.id
* extras: ftp.iij.ad.jp
* updates: centos.ustc.edu.cn
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package bsdiff.x86_64 0:4.3-7.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
========================================================...
Package Arch ...
========================================================...
Installing:
bsdiff x86_64 ...
Transaction Summary
========================================================...
Install 1 Package(s)
Total download size: 13 k
Installed size: 21 k
Is this ok [y/N]: y
Downloading Packages:
bsdiff-4.3-7.el6.x86_64.rpm ...
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : bsdiff-4.3-7.el6.x86_64 ...
Verifying : bsdiff-4.3-7.el6.x86_64 ...
Installed:
bsdiff.x86_64 0:4.3-7.el6
Complete!
#
* bsdiffの使用方法 [#o57cb0b3]
以下にbsdiffの使用方法を記します。
** バイナリ差分を作成する。 [#e86fcbd8]
バイナリ差分を作成するには、以下のようにファイルを引数と...
% bsdiff 元のファイル 変更したファイル 差分ファイル
実行すると「元のファイル」から「変更したファイル」への差...
新しく「差分ファイル」を作ってそこに書き込みます。
実際に実行してみます。
# ls -l
total 14792
-rw-r--r-- 1 root root 6923904 May 14 11:00 wd32_10_20_2...
-rw-r--r-- 1 root root 8219728 May 14 10:58 wd32_11_00_2...
# md5sum *
8b036e95fbdaebb19c1af5683216934d wd32_10_20_2631_en.exe
bbbeadaa5ed085b48e79ad83c2156255 wd32_11_00_2749_en.exe
# bsdiff wd32_10_20_2631_en.exe wd32_11_00_2749_en.exe w...
# ls -l
total 20404
-rw-r--r-- 1 root root 5743167 Sep 5 17:37 wb10-11.bsdiff
-rw-r--r-- 1 root root 6923904 May 14 11:00 wd32_10_20_2...
-rw-r--r-- 1 root root 8219728 May 14 10:58 wd32_11_00_2...
#
''wb10-11.bsdiff''が作成されたバイナリ差分です。
今回の差分ファイルのサイズは「元ファイル」や「変更したフ...
かろうじて小さい程度ですが、これは当然ですが対象とするデ...
また、差分作成はメモリを多く使用する重い処理です。~
bsdiffのmanには「元ファイルの17倍のサイズのメモリが必要」...
** バイナリ差分を適用する [#w6f6f968]
バイナリ差分を適用するには、''bspatch''コマンドを使用しま...
''bspatch''コマンドは''bsdiff''パッケージに同梱されていま...
''bspatch''の使い方は以下の通りです。
% bsdiff 元のファイル 新しいファイル 差分ファイル
実行すると「元のファイル」に「差分ファイル」を適用した内...
新しく「新しいファイル」を作ってそこに書き込みます。
実際に実行してみます。
# bspatch wd32_10_20_2631_en.exe hoge.exe wb10-11.bsdiff
# ls -l
total 28432
-rw-r--r-- 1 root root 8219728 Sep 5 17:43 hoge.exe
-rw-r--r-- 1 root root 5743167 Sep 5 17:37 wb10-11.bsdiff
-rw-r--r-- 1 root root 6923904 May 14 11:00 wd32_10_20_2...
-rw-r--r-- 1 root root 8219728 May 14 10:58 wd32_11_00_2...
# md5sum *
bbbeadaa5ed085b48e79ad83c2156255 hoge.exe
c6cd07e6ca8864b8cf940bf5276c48b3 wb10-11.bsdiff
8b036e95fbdaebb19c1af5683216934d wd32_10_20_2631_en.exe
bbbeadaa5ed085b48e79ad83c2156255 wd32_11_00_2749_en.exe
#
''hoge.exe''が、「元のファイル」にバイナリ差分が適用され...
差分の元となった''wd32_11_00_2749_en.exe''と同じファイル...
md5sumのハッシュ値から確認できます。~
バイナリ差分作成とは異なり、差分適用は重い処理ではありま...
バイナリ差分は利用するシチュエーションは限られますが、~
場合によってはプログラムのバージョンアップや、~
大容量データの更新などで、作業の手間や通信コストを削減で...
以上、Linuxでファイルのバイナリ差分を取得・適用する方法に...
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
終了行:
#navi(../)
* Linux環境でファイルのバイナリ差分を作成・適用する(bsdif...
バイナリ差分の作成や適用できるbsdiffを紹介します。
#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
* 関連記事 [#t996d901]
-[[バイナリエディタ ghex>ソフトウェア/開発・デバッグ/バイ...
-[[CentOS 5.4 インストール後の初期設定>CentOS/CentOS 5.4 ...
* バイナリ差分とは [#za3cfbb3]
Linuxではファイルの差分というのは、~
一般的に''diff''コマンドによる2つのテキストファイルの差異...
これは''パッチファイル''とも呼ばれます。
差分ファイルのよくある利用方法としては、~
ソフトウェアのソースコードから変更した部分のみを取り出し、~
別の場所にある古いバージョンのソースコードに対して、~
''patch''コマンドを使ってその変更部分を反映したりします。
テキスト以外のファイル、つまり実行プログラムファイルや画...
アーカイブファイルなど、バイナリファイルの差分を取ること...
これは元々UNIX(Linux)の世界では、ソフトウェアはソースコー...
コンパイルして実行ファイルを作ることが普通だったためです。~
たとえ同じソフトウェアを動かしていても、OSやCPUなどはそれ...
バイナリファイルとしては当然まったく別のファイルになりま...
そうなるとバイナリ差分の出番はありません。~
画像などその他のファイルもバイナリ差分での配布が有効であ...
しかし、巨大なバイナリファイルで変更の差分が少々であるこ...
バイナリ差分を取って、それのみを変更先へ送りたいこともあ...
ライブアップデートを行うブラウザなどのプロダクトでは、~
内部的にバイナリ差分を使っているものもあるようです。
Linuxにはバイナリ差分を取るコマンドとして、''bsdiff''があ...
* bsdiffのインストール [#e799e11f]
以下にUbuntuとCentOSにbsdiffコマンドをインストールする手...
** ubuntu [#h291dabd]
ubuntuでは以下のようにapt-getでインストールすることができ...
# apt-get install bsdiff
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
bsdiff
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個...
12.6 kB のアーカイブを取得する必要があります。
この操作後に追加で 86.0 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu/ precise/univ...
12.6 kB を 0秒 で取得しました (29.0 kB/s)
以前に未選択のパッケージ bsdiff を選択しています。
(データベースを読み込んでいます ... 現在 136445 個のファ...
(.../bsdiff_4.3-10ubuntu1_i386.deb から) bsdiff を展開し...
man-db のトリガを処理しています ...
bsdiff (4.3-10ubuntu1) を設定しています ...
#
** CentOS [#cae1fe54]
CentOS5やCentOS6では、EPELにパッケージが存在しています。~
EPELのレポジトリを登録していれば、yum installでインストー...
# yum install bsdiff
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* epel: buaya.klas.or.id
* extras: ftp.iij.ad.jp
* updates: centos.ustc.edu.cn
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package bsdiff.x86_64 0:4.3-7.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
========================================================...
Package Arch ...
========================================================...
Installing:
bsdiff x86_64 ...
Transaction Summary
========================================================...
Install 1 Package(s)
Total download size: 13 k
Installed size: 21 k
Is this ok [y/N]: y
Downloading Packages:
bsdiff-4.3-7.el6.x86_64.rpm ...
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : bsdiff-4.3-7.el6.x86_64 ...
Verifying : bsdiff-4.3-7.el6.x86_64 ...
Installed:
bsdiff.x86_64 0:4.3-7.el6
Complete!
#
* bsdiffの使用方法 [#o57cb0b3]
以下にbsdiffの使用方法を記します。
** バイナリ差分を作成する。 [#e86fcbd8]
バイナリ差分を作成するには、以下のようにファイルを引数と...
% bsdiff 元のファイル 変更したファイル 差分ファイル
実行すると「元のファイル」から「変更したファイル」への差...
新しく「差分ファイル」を作ってそこに書き込みます。
実際に実行してみます。
# ls -l
total 14792
-rw-r--r-- 1 root root 6923904 May 14 11:00 wd32_10_20_2...
-rw-r--r-- 1 root root 8219728 May 14 10:58 wd32_11_00_2...
# md5sum *
8b036e95fbdaebb19c1af5683216934d wd32_10_20_2631_en.exe
bbbeadaa5ed085b48e79ad83c2156255 wd32_11_00_2749_en.exe
# bsdiff wd32_10_20_2631_en.exe wd32_11_00_2749_en.exe w...
# ls -l
total 20404
-rw-r--r-- 1 root root 5743167 Sep 5 17:37 wb10-11.bsdiff
-rw-r--r-- 1 root root 6923904 May 14 11:00 wd32_10_20_2...
-rw-r--r-- 1 root root 8219728 May 14 10:58 wd32_11_00_2...
#
''wb10-11.bsdiff''が作成されたバイナリ差分です。
今回の差分ファイルのサイズは「元ファイル」や「変更したフ...
かろうじて小さい程度ですが、これは当然ですが対象とするデ...
また、差分作成はメモリを多く使用する重い処理です。~
bsdiffのmanには「元ファイルの17倍のサイズのメモリが必要」...
** バイナリ差分を適用する [#w6f6f968]
バイナリ差分を適用するには、''bspatch''コマンドを使用しま...
''bspatch''コマンドは''bsdiff''パッケージに同梱されていま...
''bspatch''の使い方は以下の通りです。
% bsdiff 元のファイル 新しいファイル 差分ファイル
実行すると「元のファイル」に「差分ファイル」を適用した内...
新しく「新しいファイル」を作ってそこに書き込みます。
実際に実行してみます。
# bspatch wd32_10_20_2631_en.exe hoge.exe wb10-11.bsdiff
# ls -l
total 28432
-rw-r--r-- 1 root root 8219728 Sep 5 17:43 hoge.exe
-rw-r--r-- 1 root root 5743167 Sep 5 17:37 wb10-11.bsdiff
-rw-r--r-- 1 root root 6923904 May 14 11:00 wd32_10_20_2...
-rw-r--r-- 1 root root 8219728 May 14 10:58 wd32_11_00_2...
# md5sum *
bbbeadaa5ed085b48e79ad83c2156255 hoge.exe
c6cd07e6ca8864b8cf940bf5276c48b3 wb10-11.bsdiff
8b036e95fbdaebb19c1af5683216934d wd32_10_20_2631_en.exe
bbbeadaa5ed085b48e79ad83c2156255 wd32_11_00_2749_en.exe
#
''hoge.exe''が、「元のファイル」にバイナリ差分が適用され...
差分の元となった''wd32_11_00_2749_en.exe''と同じファイル...
md5sumのハッシュ値から確認できます。~
バイナリ差分作成とは異なり、差分適用は重い処理ではありま...
バイナリ差分は利用するシチュエーションは限られますが、~
場合によってはプログラムのバージョンアップや、~
大容量データの更新などで、作業の手間や通信コストを削減で...
以上、Linuxでファイルのバイナリ差分を取得・適用する方法に...
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
ページ名: