私たちは、組み込みx86コンピュータで独自のアプリケーションを実行するためにAlpine Linux用の自動インストーラを作成したいと思いました。私たちのアプリケーション設定には、ダウンロード可能なメディアにないパッケージが必要であり、それを独立してオフラインで実行する必要があります。必要な機能を実装しましたが、そのためにはUSBスティックに「プライマリ」と「コミュニティ」のストレージが必要です。
これまでISOモードでRufusを使用してISOイメージをUSBスティックに書き込んでから(書き込み可能にする)、イメージをUSBスティックにrsyncし、必要に応じてこのディレクトリを手動で追加することで/media/usb/alpine
この問題を解決しました。/etc/apk/repositories
これは素晴らしい作品です。
残念ながら、このダウンロード容量はほぼ20 GBに達します。これは、現在利用可能なUSBスティックからUSBスティックに手動でコピーするまでに長い時間(現在2時間)かかることを意味します。 SSD USBディスクは約20分かかります。
setup-apkcache
だから私は100MB未満のパッケージしか必要としませんが、setup-disk
「sys」モード(ステージの後ろで実行)でローカルハードドライブにインストールする実験では、lbu package -
キャッシュ内のそのパッケージを使用しないことがわかりました。ただし、すべてのパッケージがそのリストにリストされているリポジトリの1つに見つかると予想しています/etc/apk/repositories
。
APKキャッシュを使用するのが正しいアプローチですか?それとも私が間違った木を探しているのでしょうか?
答え1
後で参照できるようにSSEとTSLIBなしでQt5を再コンパイルする必要があるため、Alpine Linux aportsリポジトリをフォークし、3.14-stableブランチからローカルブランチを作成してDockerイメージからパッケージを再構築しました。
このドッカー画像はISOの構築にも非常に適していることがわかりました。必要に応じて追加のパッケージをscripts/mkimg.XXX.sh
調整して追加するための新しい設定ファイルを作成することで、Gitlabで変更されたパッケージで新しいISOを数分でビルドし、アーティファクト用の公式パッケージリポジトリの固定内部イメージを使用して保存できます。これにより、私たちの目的に十分速い620MB ISOが生成されました。profile_extended
$apks
時間が長ければ、必要なパッケージに基づいて Alpine Linux パッケージでカスタムペイロードを生成するので、ビルドスクリプトにそのパッケージを追加し、依存関係を透過的にインポートします。また、PXEネットワークから起動できるバージョンも開発中です。次回...
編集:Alpine Technical Steering Committeeは、2022年1月に、「最善の努力に基づいてi586を引き続き使用することを決定しました。 i686のみをサポートしている場合、一部のパッケージにはi686が必要な場合があります(たとえば、JITがある場合)。特定の使用法では、これは別々のコンパイルツリーを引き続き使用する必要があることを意味します。
https://gitlab.alpinelinux.org/alpine/tsc/-/blob/master/mines/2022-01-11.md