ネットワークの勉強がてらpingのソースコードをみたくなってしらべてみた。 環境はWSL2のUbuntuとする。
まずはpingのパッケージを調べる。
$ which ping /bin/ping $ dpkg --search /bin/ping iputils-ping: /bin/ping
iputils-pingだとわかった。 次にaptでiputils-pingのソースコードを取得してみる。
$ apt-get source iputils-ping ./ Reading package lists... Done E: You must put some 'deb-src' URIs in your sources.list
dev-srcの設定が必要とのこと。/etc/apt/sources.list
で設定変更する。
具体的にはコメントになっているdev-srcをコメントアウトしておく。どれかわからないのでとりあえず全部の定義をコメントアウトした。
deb http://archive.ubuntu.com/ubuntu/ focal multiverse # deb-src http://archive.ubuntu.com/ubuntu/ focal multiverse
aptをアップデートしておく。
$ sudo apt update
ソースコードを取得しようとする。
sudo apt-get source iputils-ping ./ Reading package lists... Done Picking 'iputils' as source package instead of 'iputils-ping' NOTICE: 'iputils' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/debian/iputils.git Please use: git clone https://salsa.debian.org/debian/iputils.git to retrieve the latest (possibly unreleased) updates to the package. E: Unable to find a source package for .
結局gitからとってこいとのこと。
git clone https://salsa.debian.org/debian/iputils.git
できた。
コードの規模はそんなに大きくなさそうかな。
$ wc -l iputils/ping/* 28 iputils/ping/meson.build 446 iputils/ping/node_info.c 1705 iputils/ping/ping.c 430 iputils/ping/ping.h 925 iputils/ping/ping6_common.c 963 iputils/ping/ping_common.c 4497 total