#navi(../)
* Ubuntuでコマンドのソースコードを取得する方法・apt-get [#ycdb7536]
Linuxを勉強していると各種コマンドのソースコードを取得して見てみたいと思ったりしますね。~
本資料はUbuntuを使用してコマンドのソースコードを取得する手順を記します。~
尚、Debianでも同様の操作でソースコードを取得することができます。
#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
* 関連資料 [#y6f22719]
-[[逆引きUNIXコマンド/ファイルやコマンドがどのパッケージに含まれているか調べる方法]]
* lsコマンドのソースコードを取得する手順 [#k19786c3]
定番のlsコマンド。このコマンドのソースコードを取得する操作手順を記します。
+ dpkg-devのインストール
dpkg-devを以下のコマンドでインストールします。
sudo apt-get install dpkg-dev
#br
+ lsコマンドのパッケージを調べます。~
$ which ls
/bin/ls
$ dpkg --search /bin/ls
coreutils: /bin/ls
whichコマンドでコマンドのパスを調べ、dpkgコマンドでパッケージを調べます。~
coreutilsパッケージであることが確認できます。~
''参考資料:''[[逆引きUNIXコマンド/ファイルやコマンドがどのパッケージに含まれているか調べる方法]]
#br
+ apt-getコマンドでパッケージのソースをダウンロードする
パッケージ名を指定してソースコードを取得する時のコマンドは以下のようになります。
apt-get source パッケージ名 [保存するディレクトリ]
保存するディレクトリは省略可能です。
#br
+ ダウンロードしたcoreutilsのファイル群を確認する
coreutils_8.13*がダウンロードされcoreutils-8.13ディレクトリが作成されているのが確認できます。
sakura@ubuntu:~$ ls coreutils*
coreutils_8.13-3ubuntu3.2.diff.gz coreutils_8.13.orig.tar.gz
coreutils_8.13-3ubuntu3.2.dsc
coreutils-8.13:
ABOUT-NLS Makefile.am bootstrap lib
AUTHORS Makefile.in bootstrap.conf m4
COPYING NEWS build-aux maint.mk
ChangeLog README cfg.mk man
ChangeLog-2005 THANKS configure old
ChangeLog-2006 THANKS-to-translators configure.ac po
ChangeLog-2007 THANKS.in debian src
ChangeLog-2008 THANKStt.in dist-check.mk tests
GNUmakefile TODO doc thanks-gen
INSTALL aclocal.m4 gnulib-tests
#br
+ coreutils-8.13/srcディレクトリ内を確認する
coreutils-8.13/srcディレクトリを確認するとlsコマンドのソースコードがあることが確認できます。
sakura@ubuntu:~/coreutils-8.13/src$ ls ls*
ls-dir.c ls-ls.c ls-vdir.c ls.c ls.h
coreutilsなので、よく使うコマンドのソースコードもあります。
sakura@ubuntu:~/coreutils-8.13/src$ ls
Makefile.am extent-scan.c mkfifo.c stdbuf.c
Makefile.in extent-scan.h mknod.c stty.c
base64.c extract-magic mktemp.c su.c
basename.c factor.c mv.c sum.c
c99-to-c89.diff false.c nice.c sync.c
cat.c fiemap.h nl.c system.h
chcon.c find-mount-point.c nohup.c tac-pipe.c
chgrp.c find-mount-point.h nproc.c tac.c
chmod.c fmt.c od.c tail.c
chown-core.c fold.c operand2sig.c tee.c
chown-core.h fs.h operand2sig.h test.c
chown.c getlimits.c paste.c timeout.c
chroot.c group-list.c pathchk.c touch.c
cksum.c group-list.h pinky.c tr.c
comm.c groups.c pr.c true.c
copy.c head.c printenv.c truncate.c
copy.h hostid.c printf.c tsort.c
cp-hash.c hostname.c prog-fprintf.c tty.c
cp-hash.h id.c prog-fprintf.h uname-arch.c
cp.c install.c ptx.c uname-uname.c
csplit.c ioblksize.h pwd.c uname.c
cut.c join.c readlink.c uname.h
date.c kill.c remove.c unexpand.c
dcgen lbracket.c remove.h uniq.c
dd.c libstdbuf.c rm.c unlink.c
df.c link.c rmdir.c uptime.c
dircolors.c ln.c runcon.c users.c
dircolors.h logname.c seq.c wc.c
dircolors.hin ls-dir.c setuidgid.c wheel-gen.pl
dirname.c ls-ls.c shred.c wheel-size.h
du.c ls-vdir.c shuf.c wheel.h
echo.c ls.c sleep.c who.c
env.c ls.h sort.c whoami.c
expand.c md5sum.c split.c yes.c
expr.c mkdir.c stat.c
以上、コマンドからコマンドのソースコードを取得する方法でした。
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)