reprepro FilterList は :i386 を含むパッケージを無視します

reprepro FilterList は :i386 を含むパッケージを無視します

reprepro部分的なローカル Debian ミラーを作成するために使用しています。conf/updatesファイルは次のようになります。

Name: update-wheezy
Method: http://ftp.tu-graz.ac.at/mirror/debian
Suite: wheezy
Components: main contrib non-free
Architectures: i386
FilterList: purge mirror.packages

FilterListmirror.packages現在インストールされているすべてのパッケージを含むファイルを指します。このファイルは次のように作成しますdpkg:

dpkg --get-selections > conf/mirror.packages

ここまでは順調です。うまく動作しています。しかし、ローカル リポジトリにいくつかのパッケージが不足していることに気付きました。 の出力には、dpkg --get-selectionsパッケージ名が で終わる行がいくつか含まれています:i386。例:

libxxf86dga1:i386                               install
libxxf86vm1:i386                                install
lighttpd                                        install

まさにそれらのi386パッケージが欠落しています。私はサフィックスを削除することでこれを回避しました:

dpkg --get-selections | sed 's/:i386//g' > conf/mirror.packages

さて、私の質問は次のとおりです。

  1. これは reprepro のバグでしょうか? それとも私が何か間違っているのでしょうか? man ページには、FilterListが の出力形式を取ると記載されていますdpkg --get-selections
  2. dpkgアーキテクチャを抑制する方法はありますか?
  3. :i386一部のパッケージにはサフィックスが付いているのに、ほとんどのパッケージには付いていないのはなぜですか?
  4. そもそも、パッケージ名にアーキテクチャが含まれているのはなぜですか? 同じシステム上で異なるアーキテクチャの同じパッケージを使用することは可能ですか?

答え1

:i386 はパッケージ名の一部ではなく、パッケージが対象とするアーキテクチャを示しています。これは、Debian が複数のアーキテクチャ (「マルチアーキテクチャ」) からのパッケージのインストールのサポートを導入した結果です。

見るhttps://wiki.debian.org/マルチアーチ詳細については。

特定のパッケージのアーキテクチャが表示されるかどうかを決定する要因については確信が持てません。最初はパッケージが外部のアーキテクチャの場合にのみ表示されると思っていましたが、nharrer のコメントから明らかに間違っていました。nharrer のリストを見て、私が見た他のコンテキストについて考えると、:<architecture> はすべての "multi-arch:same" パッケージで表示されるのではないかと思います。

reprepro のフィルターリスト機能は multiarch より前のものであり、:i386 の意味を理解していないため、パッケージ名の一部として扱っているのではないかと思います。

関連情報