インストールコマンドの${D}変数

インストールコマンドの${D}変数

いくつかのyoctレシピで次のインストールコマンドを見ました。

install -d ${D}${libdir}

installコマンドとその目的を知っていますが、$ {D}変数は通常レシピで定義されていないため、その目的を理解できません。誰かがこのシェル変数の目的を説明できますか?

答え1

この${D}変数を使用すると、ビルドしているソフトウェアを実際のターゲットではなくディレクトリにインストールできます。たとえば、ソフトウェアをとして構成できますが、これはターゲットデバイス用ですlibdir/usr/libビルドシステムでインストールを実行するときに、新しくビルドされたファイルが実際にインストールされることを望まないで/usr/lib入れたいと思います。簡単に識別してターゲットシステムにコピーできるように、孤立した場所にあります。したがって、一時ディレクトリを作成してそこにインストールします。

mkdir /tmp/yocto-target
make install D=/tmp/yocto-target

したがって、ファイルは最終的に表示されます/tmp/yocto-target/usr/lib。その後、/tmp/yocto-target必要なツールを使用してすべてをアーカイブし、/tmp/yocto-targetプレフィックスを削除し、アーカイブをターゲットデバイスにコピーしてその内容をインストールできます。

他のビルドシステムでもDESTDIR同じ理由でこの変数が使用されます。

答え2

${D}レシピは、レシピによって生成されたパッケージに属するファイルをインストールするYoctoレシピによって使用されるパスの一般的なトップレベルです。次のディレクトリは、${D}ビルドシステムでパッケージに含まれるファイル(RPMファイルなど)を検索し、他のユーザーが使用できるように、いわゆるsysrootツリーに含まれるファイル(ライブラリやヘッダファイルなど)の場所です。パッケージ。このスキャンにはいくつかの基本的なルールがあり、ルールを拡張できます。${D}Yoctoの組み込みメカニズムの利点を得るには、可能な限りこれらのYoctoデフォルトパスを使用することをお勧めします。

${libdir}デフォルトではbitbake.confで定義されています。デフォルト${exec_prefix}/libでは/usr/lib同じファイルで定義されています。

install -d ${D}${libdir} 

/usr/libこの最後の「install」シェルコマンドは、ファイルを保持するディレクトリを作成し(たとえば、do_installを介して)、最終的にターゲットにインストールされます。

${D}/a/b/cfor fileはcYoctoパッケージングに使用される中間パスにすぎず、${D}同じファイルがターゲットファイルシステムにあるときに「切断」されます。cたとえば、目標${D}/a/b/cになります/a/b/c

${D}デフォルト値は以下に定義されています。ナロー/メタ/conf/bitbake.confように:

TMPDIR = "${TOPDIR}/tmp"
BASE_WORKDIR ?= "${TMPDIR}/work"
WORKDIR = "${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}"
D = "${WORKDIR}/image"

関連情報