This service is available only in Japanese-language.
ローカルリポジトリ作成のためdpkg-scanpackagesを使用しようとしています。
しかし,実行するとDpkg.pmが存在しない旨のエラーが表示されます。
(ひとまず実行可能なことの確認のため,引数を入れていません。正しく引数を入れたとしても同様です)
root@stm32mp1-xxx:~# dpkg-scanpackages
Can't locate Dpkg.pm in @INC (you may need to install the Dpkg module) (@INC contains: /usr/lib/perl5/site_perl/5.30.1/arm-linux /usr/lib/perl5/site_perl/5.30.1 /usr/li.
BEGIN failed--compilation aborted at /usr/bin/dpkg-scanpackages line 27.
IMAGE_INSTALL_appendにて不足しているものがあるのではないかと考え,IMAGE_INSTALL_appendへ以下追加してある状態となっています。
apt
libmodule-build-perl
dpkg-dev
dpkg-perl
dpkg
しかし追加後も同様の現象が解消されることはありませんでした。
使用しているディストリビューションはopenstlinux-5.4-dunfell-mp1-20-11-12です。
何を追加すれば解消可能か,ご教示いただけますでしょうか。
yakuhito
2021/9/7 (火) 09:16
開発ホスト上でbitbake package-index を実行して生成可能です
ローカルリポジトリは、tmp-glibc/deploy/deb 以下に各レシピのdo_package_write_deb タスクでパッケージアーキテクチャ毎に出力されます。
このリポジトリをリポジトリデータとして使用できるようにpackage-indexを生成するツールとして、package-index という特殊なレシピが提供されています。
このレシピをbitbake package-index を実行することで、パッケージアーキテクチャのディレクトリ毎にRelease,Packages,Packages.gz のファイルが生成され、ターゲットボードからapt-get update を実行することで
リポジトリサーバーからindexデータが転送されローカルのキャッシュに保存されます。
リポジトリサーバーに対してアクセスするための情報は、ターゲットボードの
/etc/apt/souces.list に記載します。
弊社環境(qemuarm64)では以下の記載となっています。
deb http://192.168.7.1/deb/qemuarm64 ./
deb http://192.168.7.1/deb/aarch64 ./
deb http://192.168.7.1/deb/all ./
開発ホストにlighttpdをインストールし、/var/www/html 以下に tmp-glibc/deploy/deb に対するシンボリックリンク deb
を作成することで、単純なURLでアクセス可能としています。
一般的なbitbakeを使用した開発環境では
EXTRA_IMAGE_FEATURES変数にpackage-management を追加し
PACKAGE_FEED_URIS
PACKAGE_FEED_BASE_PATH
PACKAGE_FEED_ARCHIS
に使用環境に合わせた記述を行うことで、イメージ生成時にsouces.list ファイルの生成まで可能ですが、
OpenSTLinuxの場合、分割されたパーティション毎にイメージレシピが有る特殊な構成となっているため
EXTRA_IMAGE_FEATURES にpackage-management を指定するとイメージレシピの構築に失敗してしまう
現象を確認しております。
mackey
2021/9/7 (火) 16:18
ご回答ありがとうございます。
ご教示いただきありがとうございます。
試行し,update等可能なことを確認いたしました。
また,別の質問となってしまうかもしれませんが,
tmp-glibc/deploy/deb以下にあるdebファイルは実際にbitbake st-image-xxxで生成したイメージに存在しないものも含まれているのではないか,と思われます。
例えばイメージに存在するdebのリストを,ターゲットを起動せず開発PCから得たい場合,なにか方法はございますでしょうか。
ターゲットを起動しdpkg -lするしかないのでしょうか。
なお,apt-getとして使用する分には問題発生しておらず,
ただ実際にインストールされているdebのリストを開発PCから得たい,というものとなります。
例:cracklib-locale-zh-tw_2.9.5-r0.0_armhf.debがtmp-glibc/deploy/deb/cortexa7t2hf-neon-vfpv4に存在する状態で
ターゲット上で
dpkg -l | grep cracklib-locale-zh-tw
を行っても見つかりません。
インストールされていないことは全く問題ないのですが,
実際にインストールされるdebファイルのリストを開発PCから取得したいです。
yakuhito
2021/9/7 (火) 18:06
イメージにインストールされているパッケージ一覧のリストは存在します
package feedに含まれるパッケージはレシピの構築で出力されたものとなります。
・言語別パッケージを生成するレシピ
デフォルトではサポートする全言語別のパッケージを生成します。
IMAGE生成時には、IMAGE_LINGUS変数で指定されている言語別パッケージのみインストールされるため
インストールされないパッケージも存在します。
・レシピで生成されるライブラリのみ必要な場合
IMAGEにはライブラリパッケージのみ含まれ、レシピから生成される本体はインストールされない
IMAGEを構成するパッケージの一覧は、tmp-glibc/deploy/licenses/ 以下の各ディレクトリに存在します。
パーティション毎にインストールされているパッケージ・バージョン・ライセンス・構築元レシピ名といった情報が
イメージの構築時にファイルに出力されており、上書きされないファイルとなります。
st-image-bootfs-$DISTRO-$MACHIN-YYYYMMDDHHMMSS
↑ bootfsパーティション内にインストールされているパッケージ情報
st-image-userfs-$DISTRO-$MACHIN-YYYYMMDDHHMMSS
↑ userfsパーティション内にインストールされているパッケージ情報
st-image-vendorfs-$DISTRO-$MACHIN-YYYYMMDDHHMMSS
↑ vendorfsパーティション内にインストールされているパッケージ情報
[イメージレシピ名]-$DISTRO-$MACHIN-YYYYMMDDHHMMSS
↑ Bootパーティション内にインストールされているパッケージ情報? bootfsと同一構成
mackey
2021/9/8 (水) 10:53
ご回答いただきありがとうございます。
ご回答いただきありがとうございました。
tmp-glibc/deploy/licenses/内にインストールされるdebのリストが存在することを確認いたしました。