
Ich verwende es, reprepro
um einen teilweisen lokalen Debian-Spiegel zu erstellen. Meine conf/updates
Datei 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
FilterList
verweist 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-selections
enthä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:
- Ist das ein Fehler in Reprepro? Oder mache ich etwas falsch? Auf der Manpage steht, dass
FilterList
das Ausgabeformat . istdpkg --get-selections
. - Gibt es eine Möglichkeit,
dpkg
die Architektur zu unterdrücken? - Warum haben einige Pakete das
:i386
Suffix, die meisten aber nicht? - 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.