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

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

Теперь мои вопросы:

  1. Это ошибка в reprepro? Или я что-то не так делаю? На странице руководства указано, что FilterListпринимает выходной формат dpkg --get-selections.
  2. Есть ли способ подавить dpkgархитектуру?
  3. Почему некоторые пакеты имеют :i386суффикс, а большинство — нет?
  4. Почему архитектура является частью имени пакета? Возможно ли иметь один и тот же пакет из разных архитектур в одной системе?

решение1

:i386 не является частью имени пакета, а указывает на архитектуру, для которой предназначен пакет. Это результат того, что Debian ввел поддержку установки пакетов из нескольких архитектур («мультиархитектура»).

Видетьhttps://wiki.debian.org/Multiarchдля получения дополнительной информации.

Я не уверен, что определяет, будет ли показана архитектура для конкретного пакета. Сначала я думал, что она показывается только тогда, когда пакет был из чужой архитектуры, но из комментариев nharrer я явно ошибался. Глядя на список nharrer и думая о других контекстах, я видел :<architecture> в Я думаю, что она может показываться для всех "multi-arch:same" пакетов

Я подозреваю, что функциональность списка фильтров в reprepro появилась раньше мультиархитектуры, не понимает, что означает :i386, и поэтому рассматривает его как часть имени пакета.

Связанный контент