コマンドのバージョン確認(chactその1)


ドラマ『櫻子さんの足下には死体が埋まっている』
骨が好きってどういう感覚なんでしょう。魚の骨は見慣れてますので、綺麗に魚が食べられた時は、魚の骨美しい、なんて思います。そんな感覚でもないんでしょうねえ。
櫻子さんはスイーツが好きみたいで、ヘビーな骨を見た後に、骨休みになります。スイーツは次話以降もたくさん出てきそうで楽しみです。

/bin直下のコマンドのバージョン確認の続きです。
前回は、bzgrepまで見たので、バージョンがわからない次のコマンドは、chaclです。

bzgrep	FALSE
bzip2	TRUE	bzip2, a block-sorting file compressor. Version 1.0.6, 6-Sept-2010.
bzip2recover	FALSE
bzless	TRUE	bzip2, a block-sorting file compressor. Version 1.0.6, 6-Sept-2010.
bzmore	TRUE	bzip2, a block-sorting file compressor. Version 1.0.6, 6-Sept-2010.
cat	TRUE	cat (GNU coreutils) 8.23
chacl	FALSE
chgrp	TRUE	chgrp (GNU coreutils) 8.23
chmod	TRUE	chmod (GNU coreutils) 8.23
chown	TRUE	chown (GNU coreutils) 8.23
chvt	FALSE

ということでchaclのバージョンを発掘しましょう。

fileコマンドでバイナリを確認します。

takk@deb8:~$ file /bin/chacl
/bin/chacl: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),
 dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2,
 for GNU/Linux 2.6.32, BuildID[sha1]=
ef924411e9764d3683db5692817d55ab89d16520, stripped
takk@deb8:~$ 

バイナリには、ビルド時点の情報が詰まっています。
BuildIDが一致すれば、同一プログラムです。
stripppedは、バイナリからシンボルを削除してコンパクトにした意味で、ビルド後の情報になります。

chaclのバージョン発掘の前に、バージョンが一致していることが確実なコマンドで、このBuild IDの一致確認をしてみましょう。

takk@deb8:~/src$ apt-get source coreutils
takk@deb8:~/src/coreutils-8.23$ ./configure
takk@deb8:~/src/coreutils-8.23$ make

catのバイナリはここにできました。

takk@deb8:~/src/coreutils-8.23$ find -name cat
./src/cat

ではfileコマンドで両者を比較してみます。

takk@deb8:~/src/coreutils-8.23$ file src/cat /bin/cat
src/cat:  ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=e0d4017bc2ec449df1d9694e0a8cf6b5039f6187, not stripped
/bin/cat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=9da4332bd2b4ead38ac07ec3af90852cc328de14, stripped
takk@deb8:~/src/coreutils-8.23$ 

Build IDが一致しませんでした。

バージョンが一致してても、Build IDが一致しないとなると、バージョン探しは骨が折れそうです。

コメント

タイトルとURLをコピーしました