Yocto 2.3 で、パッケージマネージャがsmartからdnfに変更されました。
dnfそのもののドキュメントは存在しますが、Yoctoで使う方法は情報が皆無に等しい状況です。
本稿は、あれこれ試した結果を忘れないようにメモ書きしたものです。
#dnfとは?
Fedoraで採用されている、yumの後継パッケージマネージャ。
オフィシャルドキュメントは以下にある
http://dnf.readthedocs.io/en/latest/
dnfそのものの解説はあえて書くまでもないので、以下を参照
https://ja.wikipedia.org/wiki/DNF_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)
Yocto2.3の「New Features / Enhancements」に以下のような一言が書かれており、変更されたことがわかる。
- Replaced smart+rpm5 with dnf+rpm4 for more standard and widely-supported RPM functionality
#Yoctoでdnfを使う方法
Yocto Project Reference Manual の5.18.4. Using Runtime Package Managementに使い方が書かれている。
http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html
パッケージ方式にrpmを採用した場合に、ビルドするPCからターゲットボードにinstallできるようにする方法を以下に記す。(マニュアルの内容を見る限りipkも同じ方法でできそう)
-
local.confもしくは、イメージレシピに以下の1行を追加して、パッケージマネージメント関連のファイルがインストールされるようにする
IMAGE_FEATURES += " package-management " -
ビルドディレクトリのrpmディレクトリ(例:build\tmp\deploy\rpm)をhttpで公開する。
-
rpmディレクトリで createrepo . を実行しておく。本来の使い方とは異なるが、いちいちリポジトリデータを作り直すのは面倒なので、ひとつ上のディレクトリで作ってしまう。
-
ターゲットボードを起動し、
mkdir yum.repos.d
で、ディレクトリを作成し、次のように記述したyocto.repoファイルを格納する
[yocto]
baseurl=http://yourserver/rpm
gpgcheck=0
この方法では、リポジトリの検証用のgpgkeyを無効にしているが、ローカル接続であれば問題ない。外部公開の場合は適切に設定すること。 -
以下の順番でコマンドを実行する
dnf makecache
dnf update
dnf install インストールしたいパッケージ名
smartから移行する場合は、4の手順が変わっているところなので、そこに注意すれば比較的すんなり使えます。