Como uso o pacman em uma imagem Arch montada em loop para uma arquitetura diferente?

Como uso o pacman em uma imagem Arch montada em loop para uma arquitetura diferente?

Gostaria de instalar alguns pacotes em uma imagem ARM antes de atualizá-la para um cartão SD. Até agora, montei a imagem em loop

sudo mount -o loop,offset=99614720 archlinuxarm-13-06-2012.img /mnt

e adicionei os espelhos ARM ao meu arquivo /etc/pacman.d/mirrorlist. Eu então tentei correr

sudo pacman --root /mnt --arch arm --conf /mnt/etc/pacman.conf -S curl

Mas falha com a seguinte saída ...

warning: curl-7.26.0-1 is up to date -- reinstalling
resolving dependencies...
looking for inter-conflicts...

Targets (1): curl-7.26.0-1

Total Download Size:    0.48 MiB
Total Installed Size:   1.50 MiB
Net Upgrade Size:       0.00 MiB

Proceed with installation? [Y/n] Y
:: Retrieving packages from core...
error: failed retrieving file 'curl-7.26.0-1-arm.pkg.tar.xz' from mirror.lividpenguin.com : The requested URL returned error: 404
 curl-7.26.0-1-arm                   492.9 KiB   293K/s 00:02 [##################################] 100%
(1/1) checking package integrity                              [##################################] 100%
(1/1) loading package files                                   [##################################] 100%
(1/1) checking for file conflicts                             [##################################] 100%
(1/1) checking available disk space                           [##################################] 100%
(1/1) upgrading curl                                          [##################################] 100%
call to execv failed (Exec format error)
error: command failed to execute correctly

Alguma idéia de como fazer isso funcionar sem emulação? Alguma ideia do que está sendo execv-d?

Atualizar

Eu descobri que ele está tentando executar ldconfig, o que obviamente está falhando. Felizmente, não preciso disso para funcionar!

Responder1

A maioria das distribuições Linux não suporta a instalação de pacotes para um sistema de destino em um sistema host incompatível. Arch não é exceção. ldconfigé apenas um entre muitos programas do sistema alvo que pode precisar ser executado durante a instalação do pacote.

Faça a instalação no próprio dispositivo ARM ou em um emulador como o QEmu.

Alternativamente, baixe o tar.xzarquivo, modifique o arquivo para removê- .INSTALLlo e execute o pacman novamente no arquivo modificado. Em seguida, lide com a falha causada por não ter executado o script de instalação manualmente.

Responder2

tenteicorrigindo o pacmanentão agora tem uma --no-ldconfigopção e resolve o problema. Há também outra solução com uma ferramenta feita por Alex Chamberlain,piimg, mas ainda não foi testado.

informação relacionada