
Estou usando reprepro
para criar um espelho Debian local parcial. Meu conf/updates
arquivo está assim:
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
aponta para o arquivo mirror.packages
que contém todos os pacotes atualmente instalados. Eu crio este arquivo com dpkg
:
dpkg --get-selections > conf/mirror.packages
Até agora tudo bem. Isso funciona bem. Mas então percebi que alguns pacotes estão faltando no meu repositório local. A saída de dpkg --get-selections
contém algumas linhas onde o nome do pacote termina com :i386
. Exemplo:
libxxf86dga1:i386 install
libxxf86vm1:i386 install
lighttpd install
Exatamente esses i386
pacotes estão faltando. Eu resolvi isso removendo o sufixo:
dpkg --get-selections | sed 's/:i386//g' > conf/mirror.packages
Agora minhas perguntas:
- Isso é um bug no reprepro? Ou estou fazendo algo errado? A página man afirma que
FilterList
usa o formato de saídadpkg --get-selections
. - Existe alguma maneira de suprimir
dpkg
a arquitetura? - Por que alguns pacotes possuem o
:i386
sufixo, mas a maioria não? - Por que a arquitetura faz parte do nome do pacote? É possível ter o mesmo pacote de arquiteturas diferentes no mesmo sistema?
Responder1
O :i386 não faz parte do nome do pacote, mas é uma indicação da arquitetura para a qual o pacote se destina. Isto é o resultado da introdução do suporte do debian para instalação de pacotes de múltiplas arquiteturas ("multiarch").
Verhttps://wiki.debian.org/Multiarchpara mais informações.
Não tenho certeza sobre o que determina se a arquitetura é mostrada para um pacote específico. Inicialmente pensei que só fosse mostrado quando o pacote fosse de uma arquitetura estrangeira, mas pelos comentários do nharrer estava claramente enganado. Olhando a lista de nharrer e pensando em outros contextos, vi :<architecture> em, acho que pode estar mostrando isso para todos os pacotes "multi-arch:same"
Suspeito que a funcionalidade filterlist no reprepro seja anterior ao multiarch, não entende o que :i386 significa e, portanto, o trata como parte do nome do pacote.