While packaging an application you will discover that debian/rules file is one of the most importants maintainer scripts required for a perfect package's build. This file it's simply a makefile, and learning make structures, variables and constructions can help you to understand how to modify and learn maintainer scripts like debian/rules too. Rules file can be invoked by saying its name instead of launching make itself, thanks to the starting line at the top of the file: #!/usr/bin/make -f.

アプリケーションのパッケージを作成してみると、debian/rulesファイルが、完全なパッケージを作成するためにもっとも重要なメンテナスクリプトの一つであることがわかるでしょう。このファイルは単純なMakefileなので、makeの仕組みや変数、構文を学べば、debian/rulesのようなメンテナスクリプトを修正・学習する際の一助となるでしょう。ルールファイルでは、ファイルの先頭で #!/usr/bin/make -f を実行することによって、makeを実行する代わりとしています。

A simple rule is made on a simple structure based on targets, dependencies and commands. Here is what a simple rule looks like:

単純なルールは、ターゲット(target)と依存性、コマンドからなる単純な構造を持っています。ここでは、以下のような単純なルールについて見ていきましょう:

config.status: bar 
foo

# Add here commands to configure the package.
./configure 

In our case: 今回の場合:

  1. target is "config.status"

  2. dependencies are represented by "bar"

  3. foo and ./configure are the commands that will be executed, in this case, to configure the package.

  4. ターゲットは"config.status"です。

  5. "bar"に依存しています。

  6. foo./configureは実行されるコマンドで、今回の場合はパッケージの設定を行っています。

The lines with the colon " : " in them are called dependency lines. They determine whether the target has to be rebuilt. The Left side of the colon is identified as the target itself of the dependency. Right side of the colon got the sources needed to make the target. A dependency line says, for example, that the target depends on a source file or a to another target as in the previous example. Until configure target is launched, config.status is not able to work as it depends directly from configure target specified above. When this has been verified, rules file keep checking the next space under this target where the developer will place every command is needed to build/configure/clean the package.

コロン(" : ")のある行は依存行(dependency line)と呼ばれていて、そのターゲットが再構築されるべきかどうかを示しています。コロンの左側では、依存されるターゲット自身の識別子です。コロンの右側ではターゲットを構築する際に必要になるソースを指定します。依存行は、ターゲットがソースファイルや前例のように(訳注:「config.status: bar」のように)別のターゲットに依存していることを示します。ターゲット「config.status」は、上記で指示された依存性である「bar」が満たされていないので、そのままでは動作しません。configureターゲットが準備され、依存性が満たされれば(訳注:ファイル「bar」が用意されれば)、ルールファイルはそのターゲットの次の行から順次読み取りを行い、パッケージをbuild/configure/cleanするために開発者が記述した、すべてのコマンドを実行していきます。

訳注:この段落の後半が意味不明です。→直しときました。

The Makefile rules for building and installation can also use compilers and related programs by running them via make variables so that the developer can substitute them with other alternatives:

ビルドやインストールのために行われるMakefileルールでは、make変数を使うことで、コンパイラや関係するプログラムの代替物を利用できます:

ar bison cc flex install ld ldconfig lex 
make makeinfo ranlib texi2dvi yacc 

Those programs can be called by using these variables while writing the makefile: これらのプログラムは、makefile中で、以下の変数を使って呼び出せます:

$(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX) 
$(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC) 

UbuntuJapaneseWiki: UbuntuPackagingGuideJa/ch04s01 (最終更新日時 2012-01-10 11:49:16 更新者 匿名)