web-dev-qa-db-ja.com

別のアーキテクチャ用のパッケージを構築する

64ビットXubuntu 14.04でパッケージ(libvorbis、その価値があるもの)にパッチを当てて再構築しようとしています。過去に、私がこのようなことをしたいと思ったとき、私はこの式に従いました:

Sudo apt-get build-dep <package>
apt-get source <package>
cd <package-dir>
patch -Np1 < ../<patch>
dch -i
dpkg-source --commit
debuild -us -uc
cd ..
Sudo dpkg -i <new.deb>

そして、過去のWineにパッチを適用する場合、それは魅力のように機能しました。私の現在のプロジェクトでは、何とかしてパッケージを再構築し、再構築することができましたが、新しいパッケージをインストールしようとすると、次のようになりました。

dpkg: error processing package libvorbis0a:AMD64 (--install):
 package libvorbis0a:AMD64 1.3.2-1.3ubuntu2 cannot be configured because libvorbis0a:i386 is at a different version (1.3.2-1.3ubuntu1)

32ビットパッケージを本当にアンインストールするか試してみましたが、本当に必要かどうかはわかりませんが、多くのことで依存関係が壊れてしまいました。並列インストール用の32ビットバージョンのパッケージもビルドするように手順を変更(または再実行)するにはどうすればよいですか?出来ますか?

編集:試しましたapt-get source libvorbis:i386、しかし得た:

E: Can not find a package for architecture 'i386'
E: Unable to find a source package for libvorbis:i386

編集2:apt-get source libvorbis0a:i386は機能しているように見えましたが、64ビットパッケージに戻ってしまいました。

2
glibdud

ポーキングアラウンド multiarchの良さにもかかわらず、少なくとも大量のパッケージをインストールしたり、chrootされた環境を作成したりしないと、必要なことを実行できないことがわかりました。

幸運なことに、ビルドボットとメンテナーはこれを行う必要があるようです。そのため、この提案に役立つツールがいくつかあります。私はpbuilderを使用します。これは、2つの理由で、Debianのメインリポジトリであるergo Ubuntuで利用でき、メインに触れることなく気まぐれに更新/削除/維持できるクリーンなエコシステムの自動作成ですシステムの柔軟性は別として。多分しばらくして、クロスツールチェーンについて書こうと思います。

したがって、まずpbuilderおよびubuntu-dev-toolsパッケージをインストールし、その後pbuilder-dist trusty i386 createを実行します(たとえば、--distribution trustyを使用してターゲットリリースを指定することもできます)。ダウンロードとシステムの速度によっては、しばらく時間がかかる場合があります。終了すると、次のコードのみを使用してパッケージを作成できるようになります。

pbuilder-dist trusty i386 libvorbis_1.3.2-1.4.dsc

trustyは、他の使用可能なバージョンに変更できます。パッケージのi386バージョンを生成します。

1
Braiam