¿Cómo uso pacman en una imagen de Arch montada en bucle para una arquitectura diferente?

¿Cómo uso pacman en una imagen de Arch montada en bucle para una arquitectura diferente?

Me gustaría instalar algunos paquetes en una imagen ARM antes de actualizarla a una tarjeta SD. Hasta ahora, he montado la imagen en bucle.

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

y agregué los espejos ARM a mi /etc/pacman.d/mirrorlist. Luego intenté correr

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

Pero falla con el siguiente resultado...

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

¿Alguna idea sobre cómo hacer que esto funcione sin emulación? ¿Alguna idea de qué se está execv-d?

Actualizar

Descubrí que está intentando ejecutarse ldconfig, lo cual obviamente está fallando. ¡Afortunadamente, no necesito que eso se ejecute!

Respuesta1

La mayoría de las distribuciones de Linux no admiten la instalación de paquetes para un sistema de destino en un sistema host incompatible. Arco no es una excepción. ldconfiges solo uno entre muchos programas del sistema de destino que pueden necesitar ejecutarse durante la instalación del paquete.

Realice la instalación en el propio dispositivo ARM, o en un emulador como QEmu.

Alternativamente, descargue el tar.xzarchivo, modifique el archivo para eliminarlo .INSTALLy ejecute pacman nuevamente en el archivo modificado. Luego solucione la rotura causada por no haber ejecutado el script de instalación manualmente.

Respuesta2

Lo intentéparcheando pacmanentonces ahora tiene una --no-ldconfigopción y resuelve el problema. También hay otra solución con una herramienta fabricada por Alex Chamberlain,piimg, pero aún no se ha probado.

información relacionada