Paket über apt für eine andere Architektur herunterladen

15

Ich arbeite derzeit in einer Architektur amd64. Wenn ich also versuche apt-get download vlc, die für mein System geeignete Architektur herunterzuladen, aber wie kann ich die i386-Version über apt herunterladen?

Es ist für den Export in ein anderes System ohne Internetverbindung gedacht. Gibt es auch eine Möglichkeit, die folgenden Abhängigkeiten herunterzuladen?

Anonym
quelle
Möchten Sie es installieren?
Braiam
Nur zu Ihrer Information, ich habe meine Antwort mit neuen Erkenntnissen erweitert.
Seth

Antworten:

13

Ja, Sie können einfach :i386den Download-Befehl wie folgt anhängen :

sudo apt-get download <package>:i386  

Also für dich:

sudo apt-get download vlc:i386  

Ich kenne keine Möglichkeit, Abhängigkeiten eines Pakets automatisch herunterzuladen, build-depaber das funktioniert in Ihrem Fall nicht.

Nach einigem Stöbern in der Manpage habe ich festgestellt, dass Sie in der Tat build-depin einem Ausmaß wie folgt verwenden können:

sudo apt-get build-dep --download-only vlc:i386  

Welches wird dann die erforderlichen Pakete in das aktuelle Verzeichnis herunterladen. Beachten Sie jedoch, dass build-depes .debdarum geht , das Paket aus dem Quellcode zu kompilieren und nicht aus a zu installieren, sodass Dinge wie build-essentialund vorgeschlagen gccwerden, die zum Kompilieren von vlc erforderlich sind, aber nicht unbedingt aus a installiert werden müssen .deb.

Es kann einfacher sein, die Hauptabhängigkeiten von vlc aufzulisten mit apt-cache:

apt-cache depends vlc:i386  

Wenn Sie nach nur abhängiger Verwendung filtern möchten:

apt-cache depends vlc:i386 | grep 'Depends'  

Beachten Sie, dass einige Pakete, wie libc6sie in Ubuntu standardmäßig enthalten sind, nicht heruntergeladen werden müssen. Wenn Sie nur alle Abhängigkeiten herunterladen und prüfen möchten, ob Sie sie später benötigen, können Sie das folgende Skript verwenden:

for i in $(apt-cache depends vlc:i386 | grep -E 'Depends|Recommends|Suggests' | cut -d ':' -f 2,3 | sed -e s/'<'/''/ -e s/'>'/''/); do sudo apt-get download $i 2>>no32.txt; done  

Dadurch werden alle abhängigen, empfohlenen und vorgeschlagenen Pakete heruntergeladen und Fehler an umgeleitet no32.txt. Sie sollten einen Blick darauf werfen, wenn Sie fertig sind, da einige der benötigten Pakete, die keine i386-Versionen haben (dh keine Binärdateien sind), dort enthalten sein werden.

Nur apt-get downloaddie.

Beachten Sie, dass dieses Skript nicht sehr intelligent ist, viele Dinge nicht berücksichtigt, sodass Sie möglicherweise alberne Fehler erhalten. Es sollte jedoch im Allgemeinen funktionieren.

Seth
quelle
Und was ist mit Build-Dep-Paket: i386?
15.
@enedil build-dep wird heruntergeladen und installiert, daher würde dies eine Reihe von i386-Paketen auf seinem Computer installieren, was nicht das ist, was er will. Siehe man apt-get für Details.
Seth
Es gibt auch einen aptitude downloadBefehl. Ich bin mir nicht sicher, ob Multiarch aktiviert ist.
Faheem Mitha
@FaheemMitha Ja, Aptitude kann so gut wie alles apt-get.
Seth
0

Eine Möglichkeit, dies zu tun, besteht darin, chroot oder proot auf dem Hostsystem zu verwenden, um ein isoliertes Dateisystem mit der entsprechenden Architektur zu erstellen. Sie können dann apt in dieser emulierten Umgebung ausführen, um die architekturspezifischen Pakete so zu installieren, als befänden Sie sich auf einem Computer dieser Architektur. Es läuft etwas langsamer, da es die Architektur emuliert, aber Sie haben dann rootfs, die Sie auf Ihrem anderen Gerät einer anderen Architektur bereitstellen können.

ryeager
quelle