OpenWrt/LEDEでは、バイナリリポジトリのURLを/etc/opkg/customfeed.conf
に登録することで標準以外のバイナリパッケージをopkg
コマンドで管理することができます。
src example_feed_name http://www.example.com/path/to/files
自前のバイナリリポジトリとして機能させるには、最低限バイナリパッケージ*.ipk
とそれらのパッケージ情報を含んだメタデータファイルPackages
が必要です。
*.ipk
はOpenWrtのビルド環境を作れば簡単に作れます(参照:OpenWrtで既存パッケージを再ビルドする - Qiita)。
Packages
は全パッケージ分のopkg info
を連結したようなファイルです。これは$SDK/scripts/ipkg-make-index.sh
を利用して作ります。
OpenWrt 15.05.1(Chaos Calmer)からメタデータ検証機構が導入された
ところで、OpenWrt 15.05.1(Chaos Calmer)からはメタデータの正当性確認のためPackages.sig
というファイルを使って元のファイルPackages
の検証を行うようになりました。
この検証はデフォルトでオンになっています。何かの理由でシグネチャの検証を無効にしたい場合、下記のように設定すれば全ての*.ipk
がインストール可能になります。
option check_signature 0
検証用シグネチャファイルPackages.sig
は次のように作ります。
export PATH=${SDK}/staging_dir/host/bin/:$PATH
usign -G -s secret.key -p public.key
usign -S -m Packages -s secret.key -x Packages.sig
上記のうちpublic.keyは各マシンで検証に使う鍵で、利用者に公開すべきものです。このバイナリリポジトリを利用したいマシン上で次のように打つと公開鍵が取り込まれます。
opkg-key add public.key
秘密鍵の方はCIサーバから持ち出さないなどして秘密にしましょう。誰でも見えるようだと誰でも署名ができてしまい、バイナリパッケージの改ざんを防ぐことができません。
ちなみに、この鍵ペアおよび*.sig
の形式はOpenWrt独自の実装のようです。他のディストリビューション(Yocktなど)のopkg
ではGPGで作られた*.sig
を利用しており、OpenWrtのものと互換性がありません。
gzip圧縮
メタデータファイルをgzip圧縮したPackages.gz
を利用することもできます。
src/gz example_feed_name http://www.example.com/path/to/files
このように書くとPackages.gz
を探しにいくようになります。対応するシグネチャファイルはPackages.gz.sig
になります。