reprepro FilterList ignoriert Pakete, die :i386 enthalten

reprepro FilterList ignoriert Pakete, die :i386 enthalten

Ich verwende es, repreproum einen teilweisen lokalen Debian-Spiegel zu erstellen. Meine conf/updatesDatei sieht folgendermaßen aus:

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

FilterListverweist auf die Datei mirror.packages, die alle aktuell installierten Pakete enthält. Ich erstelle diese Datei mit dpkg:

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

So weit, so gut. Es funktioniert gut. Aber dann fiel mir auf, dass in meinem lokalen Repository einige Pakete fehlen. Die Ausgabe von dpkg --get-selectionsenthält einige Zeilen, bei denen der Paketname mit endet :i386. Beispiel:

libxxf86dga1:i386                               install
libxxf86vm1:i386                                install
lighttpd                                        install

Genau diese i386-Pakete fehlen. Ich habe das Problem umgangen, indem ich das Suffix entfernt habe:

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

Nun meine Fragen:

  1. Ist das ein Fehler in Reprepro? Oder mache ich etwas falsch? Auf der Manpage steht, dass FilterListdas Ausgabeformat . ist dpkg --get-selections.
  2. Gibt es eine Möglichkeit, dpkgdie Architektur zu unterdrücken?
  3. Warum haben einige Pakete das :i386Suffix, die meisten aber nicht?
  4. Warum ist die Architektur überhaupt Teil des Paketnamens? Ist es möglich, dasselbe Paket von verschiedenen Architekturen auf demselben System zu haben?

Antwort1

Das :i386 ist kein Teil des Paketnamens, sondern ein Hinweis auf die Architektur, für die das Paket bestimmt ist. Dies ist ein Ergebnis der Einführung der Unterstützung für die Installation von Paketen aus mehreren Architekturen („Multiarch“) durch Debian.

Sehenhttps://wiki.debian.org/MultiarchFür mehr Information.

Ich bin mir nicht sicher, was bestimmt, ob die Architektur für ein bestimmtes Paket angezeigt wird. Anfangs dachte ich, sie würde nur angezeigt, wenn das Paket von einer fremden Architektur stammte, aber aus den Kommentaren von nharrer ging klar hervor, dass ich mich geirrt habe. Wenn ich mir nharrers Liste ansehe und über andere Kontexte nachdenke, in denen ich das :<architecture> gesehen habe, denke ich, dass es für alle „multi-arch:same“-Pakete angezeigt wird.

Ich vermute, dass die Filterlistenfunktionalität in Reprepro älter ist als Multiarch, nicht versteht, was :i386 bedeutet, und es daher als Teil des Paketnamens behandelt.

verwandte Informationen