このエントリーをはてなブックマークに追加


Ubuntuでコマンドのソースコードを取得する方法・apt-get

Linuxを勉強していると各種コマンドのソースコードを取得して見てみたいと思ったりしますね。
本資料はUbuntuを使用してコマンドのソースコードを取得する手順を記します。
尚、Debianでも同様の操作でソースコードを取得することができます。


関連資料

lsコマンドのソースコードを取得する手順

定番のlsコマンド。このコマンドのソースコードを取得する操作手順を記します。

  1. dpkg-devのインストール dpkg-devを以下のコマンドでインストールします。
    sudo apt-get install dpkg-dev
     
  2. lsコマンドのパッケージを調べます。
    $ which ls
    /bin/ls
    $ dpkg --search /bin/ls
    coreutils: /bin/ls
    whichコマンドでコマンドのパスを調べ、dpkgコマンドでパッケージを調べます。
    coreutilsパッケージであることが確認できます。
    参考資料:逆引きUNIXコマンド/ファイルやコマンドがどのパッケージに含まれているか調べる方法
     
  3. apt-getコマンドでパッケージのソースをダウンロードする パッケージ名を指定してソースコードを取得する時のコマンドは以下のようになります。
    apt-get source パッケージ名 [保存するディレクトリ]
    保存するディレクトリは省略可能です。
     
  4. ダウンロードした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
     
  5. 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

以上、コマンドからコマンドのソースコードを取得する方法でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:28:52