Я использую 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
FilterList
указывает на файл mirror.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
Теперь мои вопросы:
FilterList
принимает выходной формат dpkg --get-selections
.dpkg
подавить архитектуру? :i386
суффикс, но у большинства нет?: I386 не является частью имени пакета, но указывает на архитектуру, для которой этот пакет предназначен. Это результат того, что в Debian появилась поддержка установки пакетов с нескольких архитектур («мультиархитектур»).
Видеть https://wiki.debian.org/Multiarch для получения дополнительной информации.
Я не уверен, что определяет, отображается ли архитектура для конкретного пакета. Сначала я думал, что это отображается только тогда, когда пакет был от иностранной архитектуры, но, судя по комментариям nharrer, я явно ошибался. Глядя на список nharrer и размышляя о других контекстах, я видел: <architecture> в, я думаю, он может показывать его для всех пакетов "multi-arch: same"
Я подозреваю, что функциональность списков фильтров в репозитории предшествует многоархивности, не понимает, что означает: i386, и поэтому рассматривает их как часть имени пакета.