みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

YoctoProject oe-pkgdata-utilを使ってみる

はじめに

YoctoProjectではbitbake以外にもツールを提供している。 その1つにoe-pkgdata-utilが存在する。

パッケージ情報が見れそうなことは伺えるがいまいち使い方がわからない。 今回は逆引き形式で使い方を紹介してみる。

前提

oe-pkgdata-utilはbitbakeにより生成されたパッケージ情報を参照するため、 調べたいパッケージの情報はすでにビルドされている必要がある。

core-image-minimalなどすでにビルド済みである場合は、その時点で作成されているパッケージ情報について調べることができる。

使い方

ビルドしていないパッケージ情報を調べる

まず、調べたいパッケージに関連しそうなレシピがあるかbitbake-layersコマンドを使用して確認する。 その後一度ビルドして、oe-pkgdata-utilを実行する。

vimパッケージを調べたい場合

$ bitbake-layers show-recipes vim
... (snip) ...
=== Matching recipes: ===
vim:
  meta                 9.0.1894

vimのレシピが存在するためビルドする。

$ bitbake vim

パッケージ情報を表示する。

$ oe-pkgdata-util package-info vim
vim 9.0.1894-r0 vim 9.0.1894-r0 4123188

レシピから作成されるパッケージ一覧を取得

list-pkgsサブコマンドを使用する。-pオプションを渡すことでレシピ名を指定することができる。 レシピ名を渡すそのレシピから作成されるすべてのパッケージの一覧が表示される。

$ oe-pkgdata-util list-pkgs -p vim
vim
vim-common
vim-dbg
vim-dev
vim-doc
vim-help
vim-src
vim-syntax
vim-tools
vim-tutor
vim-vimrc

パッケージが提供するファイル一覧を取得

list-pkg-filesを使用する。

$ oe-pkgdata-util list-pkg-files vim-vimrc
vim-vimrc:
    /usr/share/vim/vimrc

パッケージ名から元になるレシピ名を取得

lookup-reciepサブコマンドを使用する。

$ oe-pkgdata-util lookup-recipe vim-vimrc
vim

bitbake-layers show-recipesと組み合わせて、そこからさらにレシピのファイルを探したりもできる。

$ bitbake-layers show-recipes -f vim
... (snip) ...
=== Matching recipes: ===
/home/mickey/seagate/yocto/qemuarm64/poky/meta/recipes-support/vim/vim_9.0.bb

ターゲット上のパスからパッケージ名を取得

find-pathサブコマンドを使用する。

$ oe-pkgdata-util find-path /usr/bin/ex
vim: /usr/bin/ex

ターゲット上には動的に生成されるなどしてパッケージに属しないファイルも存在する。その場合は下記のようにエラーになる。

$ oe-pkgdata-util find-path /var/log/messages
ERROR: Unable to find any package producing path /var/log/messages

パッケージの依存関係を取得

read-valueサブコマンドを使用する。

$ oe-pkgdata-util read-value RDEPENDS vim
desktop-file-utils ncurses-terminfo-base update-alternatives-opkg cairo (>= 1.16.0) gdk-pixbuf (>= 2.42.10) glib-2.0 (>= 2.72.3) glibc (>= 2.35) gtk+3 (>= 3.24.34) libacl (>= 2.3.1) libice (>= 1.0.10) libsm (>= 1.2.3) libx11 (>= 1.7.3.1) libxt (>= 1.2.1) ncurses-libtinfo (>= 6.3+20220423) pango (>= 1.50.4)

レシピにもよるが、RDEPENDS以外にも下記のような変数の値を取得することができる。

まとめ

oe-pkgdata-utilの使い方をまとめた。先にbitbakeを実行してビルドしておく必要はあるものの、 使い方を覚える意外と便利であることがわかった。