LoginSignup
11
10

More than 5 years have passed since last update.

Yoctoで作ったLinuxのパッケージをアップデートする(dnf)

Last updated at Posted at 2018-12-09

Aptpod Advent Calendar 10日目の担当、矢部です。

Aptpod入社してまだ日が浅い私ですがいろいろと新しく知ることが多く、その中にYoctoがあります。
今回はYoctoで作成したLinuxパッケージをアップデートするための方法の一つである、パッケージマネージャの利用について説明します。

手順

Yoctoでパッケージマネージャを使う方法は非常に簡単です。設定ファイルであるlocal.confに以下を追加するだけ1です。

local.conf
IMAGE_FEATURES += " package-management "
PACKAGE_CLASSES ?= " package_rpm "

2行目のほうはパッケージにrpmを利用する場合で、ほかにも

  • package_deb
  • package_ipk
  • package_tar

が設定可能です。
設定ができたらイメージのビルド。

パッケージリポジトリの公開

作成したパッケージはローカルにrpmファイルをおいてアップデートする方法もありますが、リポジトリを作成してhttp公開するのが便利です。

$ createrepo /<build_dir>/<tmp_dir>/deploy/rpm

上記で作成したリポジトリディレクトリを、ApacheやらNginxやらお好きなもので公開します。

ボード側の設定

公開したリポジトリを利用するために、ボード側には最低限以下の設定が必要です。
設定ファイル(.repo)の名前はなんでもよいです。

$ mkdir /etc/yum.repos.d
/etc/yum.repos.d/yocto.repo
[yocto]
name=yocto
baseurl=http://<build machine>
gpgcheck=0

gpgcheckの設定については、以下の通り。

この方法では、リポジトリの検証用のgpgkeyを無効にしているが、ローカル接続であれば問題ない。外部公開の場合は適切に設定すること。
https://qiita.com/watatuki/items/4c3447a96309e19e7d5c

上記設定ができたら以下のコマンドを実行。

$ dnf makecache

正常に設定されていればリポジトリが読み込まれます。うまくいかない場合は設定ファイルや、リポジトリの公開設定などを見直してみてください。

動作確認

ここまでくれば、あとは

  • パッケージのインストール
$ dnf install <package name>
  • アップデート
$ dnf update
  • 自分が公開したパッケージの確認
$ dnf list --available

などなど、コマンド一発でいろいろ簡単に行えるようになります。

さいごに

組込み機器に限らずアップデートの機能はちゃんと作らないと苦労します(した)が、このように簡単に実装できてしまうのはすばらしいですね。

(おまけ)バージョンを変えずにアップデートしたい

デイリービルドなどバージョンナンバーを変えずにアップデートしたいケースはあるかと思いますが、dnfでは同一バージョンの強制アップデートが(素直には)できません2
Yoctoではレシピのリビジョン設定をする変数が用意されているため、その値を変更することでdnfに異なるバージョン(リビジョン)のSWとして認識されるようになります。
https://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-PR
ちなみに、自動でリビジョンを上げる方法もあるようです。
https://www.yoctoproject.org/docs/2.6/dev-manual/dev-manual.html#working-with-a-pr-service

参考


  1. 1行目はlocal.confよりも、イメージ用のレシピファイルに追加するほうが自然かもしれません 

  2. rpmコマンドを直接使用するとか、いくつか方法はある 

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10