web-dev-qa-db-ja.com

busybox dpkgandroidを設定する方法は?

https://unix.stackexchange.com/questions/235795/use-dpkg-in-busybox と同様の問題


こんにちは! dpkgに新しいバージョンのbusyboxが付属していることに興奮したので、パッケージのインストールに取り掛かりました。 aptのすべての依存関係を収集し、実行しました。
dpkg -i *.deb残念ながら、エラーが発生しました。
dpkg: Unable to open /var/lib/dpkg/status: no such file or directory
わかりました。ディレクトリ/ var/lib/dpkgを作成してから、空のファイル/ var/lib/dpkg/statusを作成しました。それから私は再試行しました:
dpkg -i *.deb dpkg: package libtasn1-6 pre-depends on multiarch-support, which is not installed or flagged to be installed
multiarch-supportをインストールしようとしましたが、multiarch-supportに依存するlibgccに依存するlibc6に依存しています。また、それらをすべて同じ行にインストールしようとしましたが、同じ依存関係エラーが発生しました。
そこで--force-dependsを使用してlibgccをインストールしようとしましたが、/ var/lib/dpkg/info/libgcc1.md5sumsがないと文句を言うので、infoディレクトリを作成します。しかしその後:
sh: /var/lib/dpkg/info/libgcc1.postinst: No such file or directory dpkg: postinst failed, error code 256


何が足りないのですか?実際にパッケージをインストールできるようにbusyboxのdpkgを設定する方法はありますか?

2
Panda0nEarth

dpkgユーティリティの実行は1つのことであり、ディストリビューションのインストールは別のことです。ディストリビューションを実行するには、多数のパッケージをインストールし、最も基本的なユーティリティでは、ほとんどすべてが他のすべての動作に依存しているという事実を回避する必要があります。 ブートストラップ の問題です。

幸いなことに、そのためのアプリがあります! Debootstrap はまさにこの目的のために設計されています。 BusyBoxを搭載したシステムでDeboostrapを実行できると思いますが、2フェーズモードを使用する方がおそらく簡単です。

  1. Debootstrap(もちろん、Debianでパッケージとして入手可能ですが、他のいくつかのディストリビューションでも入手可能)を入手し、Linux PCで実行して、ディレクトリツリーを準備します。

    debootstrap --Arch=armhf --foreign jessie debian
    
  2. BusyBoxを使用してディレクトリツリーをデバイスにコピーし、ファイル属性を保持するようにします。 tarを使用してディレクトリをアーカイブし、ターゲットデバイスで解凍します。

  3. ターゲットデバイスで、アーカイブを解凍した場所にchrootし、実行します

    /debootstrap/debootstrap --second-stage