Wie verwende ich Pacman auf einem Loop-gemounteten Arch-Image für eine andere Architektur?

Wie verwende ich Pacman auf einem Loop-gemounteten Arch-Image für eine andere Architektur?

Ich möchte einige Pakete auf einem ARM-Image installieren, bevor ich es auf eine SD-Karte flashe. Bisher habe ich das Image per Loop-Mount gemountet.

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

und habe die ARM-Spiegel zu meinem hinzugefügt /etc/pacman.d/mirrorlist. Ich habe dann versucht,

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

Es schlägt jedoch mit der folgenden Ausgabe fehl ...

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

Irgendwelche Ideen, wie man das ohne Emulation zum Laufen bekommt? Irgendeine Idee, was -d ist execv?

Aktualisieren

Ich habe festgestellt, dass es versucht, zu laufen ldconfig, was offensichtlich fehlschlägt. Zum Glück muss es nicht laufen!

Antwort1

Die meisten Linux-Distributionen unterstützen die Installation von Paketen für ein Zielsystem auf einem inkompatiblen Hostsystem nicht. Arch ist keine Ausnahme. ldconfigist nur eines von vielen Programmen des Zielsystems, die möglicherweise während der Paketinstallation ausgeführt werden müssen.

Führen Sie die Installation auf dem ARM-Gerät selbst oder in einem Emulator wie QEmu durch.

Alternativ können Sie die tar.xzDatei herunterladen, das Archiv ändern, um die .INSTALLDatei zu entfernen, und Pacman erneut auf dem geänderten Archiv ausführen. Beheben Sie dann den Fehler, der dadurch verursacht wurde, dass Sie das Installationsskript nicht manuell ausgeführt haben.

Antwort2

Ich habe es versuchtPacman patchenalso gibt es jetzt eine --no-ldconfigOption, und sie löst das Problem. Es gibt auch eine andere Lösung mit einem Tool von Alex Chamberlain,Abonnieren, aber es ist noch nicht getestet.

verwandte Informationen