Kali Linux 4.18.10にmakeなどビルドツールを入れる方法
Kali Linuxにmakeなどのビルドツールを入れようとしてLinux Headersを導入しようとしたところkali2シリーズのものがaptで入らなくなっている。
uname -aで調べるとLinux kali 4.18.0 kali2-amd64と出たので
もしちゃんと動くとしたら
sudo apt install build-essential
sudo apt install linux-headers-4.18.0-kali2-amd64
でビルドツールが入るはず。ところが2行目がダメ。
debファイルのプールに行って対象ファイルを調べるといくつか関係していそうなものがあった。
あれこれやって依存性をクリアするのに必要だったのは下の七つ。
linux-headers-4.18.0-kali2-all-amd64_4.18.10-2kali1_amd64.deb
linux-headers-4.18.0-kali2-all_4.18.10-2kali1_amd64.deb
linux-headers-4.18.0-kali2-amd64_4.18.10-2kali1_amd64.deb
linux-headers-4.18.0-kali2-cloud-amd64_4.18.10-2kali1_amd64.deb
linux-headers-4.18.0-kali2-common-rt_4.18.10-2kali1_all.deb
linux-headers-4.18.0-kali2-common_4.18.10-2kali1_all.deb
linux-headers-4.18.0-kali2-rt-amd64_4.18.10-2kali1_amd64.deb
これらをダウンロードしてダウンロードディレクトリへ行って
sudo apt install ./linux-headers-4.18.0-kali2-*
とやるとlinux-headersがインストールできた。
その後でapt upgradeを実施、再び上のコマンドを実行するとそれらについて
already the newest version (4.18.10-2kali1)と出てちゃんとインストールされているようだ。
原因解明
なぜこのような面倒が生じたのか、原因と対策がほぼ分かった。
原因はapt update、apt upgrade直後にはuname -r がkali2なのに対し、一度シャットダウンして起動するとkali3になっているという現象にある。
つまり再起動しないでビルドしようとするとkali2の依存性があるので上の七つがビルドに必要となる。
ところがapt updateされたモジュール群はkali3を想定した依存性を引っ張ってくるのでkali2関係の上の7モジュールは読み込み対象にならない。
再起動後はuname -rがkali3になっていてここで必要なものをビルドすると上のような依存性の混乱がない。
対策としてはupgradeまで実施して一旦シャットダウン、再起動後にビルドを開始することにする。
もちろん最初に書いた方法でもビルドはできるのでkali2に留まらなくてはならない理由があれば、upgradeしないで7つのモジュールをダウンロードしてビルドすることもできる。