[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:54380] Re: apt-crossとdpkg-crossとopensslについてご質問



こんにちは。岩松です。

On Mon, Aug 02, 2010 at 01:39:40PM +0900, S.Oota wrote:
> はじめまして。太田と申します。
> 
> Debian lenny(とetch)にて、ARM用のopenssl関連の以下の共有ライブラリを、
> クロスコンパイル用ライブラリに変換する場合についてですが、
> 
> libcurl4-openssl-dev、libcurl3、libidn11、libldap-2.4-2、libsasl2-2、libdb4.6、
> libssh2-1、libidn11-dev、pkg-config、libssh2-1-dev、libldap2-dev
> ※過不足があるかもしれません
> 
> Debian lennyでは、apt-crossの以下のコマンドで、上手く変換できるのですが、
> 
> apt-cross --arch armel --suite lenny --install ・・・.deb
> 
> dpkg-crossでは、変換していくと、
> 依存ファイルとして、ca-certificates_20080809_all.debが必要とメッセージが表示されます。
> 
> そこで、以下のコマンドで変換しようとすると、
> 
> dpkg-cross --build --arch armel ca-certificates_20080809_all.deb
> 
> 以下のメッセージが表示されます。
> 
> dpkg-cross: package ca-certificates doesn't provide any useful files.
> Skipping.

ca-certificates は アーキテクチャ非依存のパッケージなので変換する必要はありません。
ホストにあるデータを使います。
といっても、私はca-certificates が必要ではないことを知っているので、こういうことが
言えるだけで、知らないユーザはよくわからないという状態になると思います。

> 
> Debian lennyでは、apt-crossを使用することで解決できましたが、
> Debian etchでは、apt-crossが使えないようですので、dpkg-crossを使う必要があると思われるのですが、
> Debian lennyのときと同様に上手く変換できない状況です。
> 
> apt-crossではca-certificates_20080809_all.debは必要なく(?)変換できますので、
> 何らかの手順が間違っているか抜けていると思われるのですが、
> 何が違うのかが分からず困っております。
> apt-crossのソースコードを見ても残念ながら分かりませんでした。
> 
> dpkg-crossで、openssl関連の共有ライブラリをクロスコンパイル用に変換するにはどのような手順が必要になりますでしょうか?

方法は2つあって、ひとつはクロス用のパッケージにコンバートする時に、(今回は lubcrul3)依存関係を
無効にするという方法です。これは dpkg-cross の -X オプションを使います。
以下のように実行します。

dpkg-cross --build --arch armel -X ca-certificates libcurl3_7.21.0-1_armel.deb 
Building libcurl3-armel-cross_7.21.0-1_all.deb
dpkg-deb: `./libcurl3-armel-cross_7.21.0-1_all.deb' にパッケージ `libcurl3-armel-cross' を構築しています。

もう一つは、ダミーのパッケージを作るという方法です。
これは、dpkg-cross の--convert-anywayオプションを使います。
以下のように実行します。

失敗する例。
$ dpkg-cross --build --arch armel ca-certificates_20090814_all.deb 
dpkg-cross: package ca-certificates doesn't provide any useful files. Skipping.

成功する例。
$ dpkg-cross --build --arch armel --convert-anyway ca-certificates_20090814_all.deb 
dpkg-cross: package ca-certificates doesn't provide any useful files, but
processing it anyway as requested
Building ca-certificates-armel-cross_20090814_all.deb
dpkg-deb: `./ca-certificates-armel-cross_20090814_all.deb' にパッケージ `ca-certificates-armel-cross' を構築しています。

中身が空のパッケージを作ってくれます。

$ dpkg --contents ./ca-certificates-armel-cross_20090814_all.deb
drwxr-xr-x root/root         0 2010-08-03 05:24 ./
drwxr-xr-x root/root         0 2010-08-03 05:24 ./usr/
drwxr-xr-x root/root         0 2010-08-03 05:24 ./usr/share/
drwxr-xr-x root/root         0 2010-08-03 05:24 ./usr/share/doc/
drwxr-xr-x root/root         0 2010-08-03 05:24 ./usr/share/doc/ca-certificates-armel-cross/
-rw-r--r-- root/root       286 2010-08-03 05:24 ./usr/share/doc/ca-certificates-armel-cross/README

以上、よろしくおねがいします。
岩松

----
Nobuhiro Iwamatsu
  iwamatsu at {nigauri.org/debian.org}