lsrm など、GNU Coreutilsのコマンドを改造したいと思ったことはありませんか? そういうときは、自分でGNU Coreutilsをビルとする必要があります。やってみましょう。

GNU CoreutilsのソースはGitHubにミラーが上がっているので、それをcloneしてビルドするだけです。

検証環境

  • Ubuntu 16.04 LTS

手順

必要なコマンド・ライブラリのインストール

ビルドの際、 ./bootstrap./configure を実行したときに必要なコマンド・ライブラリがあるかどうかチェックされます。 セットアップ直後の状態で試してみると、以下のコマンド・ライブラリが足りないとメッセージが表示されました。

  • ./bootstrap
    • autoconf
    • automake
    • autopoint
    • bison
    • gettext
    • git
    • gperf
    • makeinfo ← パッケージはtexinfo
    • patch
    • rsync
    • xz ← パッケージはxz-utils
  • ./configure
    • gcc
    • g++
  • make に必要
    • make

全て合わせて、以下のようなコマンドでインストールしておきます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
$ apt install --no-install-recommends \
    autoconf \
    automake \
    autopoint \
    bison \
    gettext \
    git \
    gperf \
    texinfo \
    patch \
    rsync \
    xz-utils \
    gcc \
    g++ \
    make
  • --no-install-recommends オプションはお好みで。
  • ※こんなに神経質にやらなくても、半分くらいは apt install build-essential で入る。

リポジトリの取得

GitHubからcloneします。サブモジュール付きなので注意。

1
$ git clone --recursive https://github.com/coreutils/coreutils.git

ビルド設定

makeの準備をします。

cloneしたディレクトリに移動して

1
$ cd coreutils

bootstrap を叩き

1
$ ./bootstrap

./configure します。

1
$ ./configure

make

全体をビルドする場合

1
$ make

これで全てのソースがコンパイルされ、 src ディレクトリに実行可能ファイルが作成されます。

特定のコマンドだけビルドする場合

……はできないよう1で、一度上記の手順で make する必要があります。

rm コマンドだけを再度ビルドしたい場合は以下のようにします。

1
$ make src/rm

必要なソースだけがコンパイルされ、 src ディレクトリに実行可能ファイルが作成されます。