Télécharger le package via apt pour une autre architecture


15

Je suis actuellement dans une architecture amd64, donc quand j'essaye apt-get download vlc, il a téléchargé l'architecture appropriée pour mon système, mais comment puis-je télécharger la version i386 via apt?

C'est pour l'exportation vers un autre système qui n'a pas de connexion Internet, est-il également possible de télécharger les dépendances qui suivent?


Voulez-vous l'installer?
Braiam

Juste pour info, j'ai élargi ma réponse avec de nouvelles connaissances.
Seth

Réponses:


13

Oui, vous pouvez simplement ajouter :i386à la commande de téléchargement, comme ceci:

sudo apt-get download <package>:i386  

Alors pour vous:

sudo apt-get download vlc:i386  

Je ne connais aucun moyen de télécharger automatiquement les dépendances d'un package, build-depmais cela ne fonctionnera pas dans votre cas.

Après avoir fouillé un peu plus dans la page de manuel, j'ai constaté que vous pouvez, en fait, utiliser build-depdans une mesure comme celle-ci:

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

Qui va ensuite télécharger les packages requis dans le répertoire actuel. Notez cependant que cela build-depcherche à compiler le paquet à partir de la source, pas à l'installer à partir de a, .debdonc il suggérera des choses comme build-essentialet gccqui peuvent être nécessaires pour compiler vlc, mais pas nécessairement à installer à partir de a .deb.

Il peut être plus facile de lister les principales dépendances de vlc avec apt-cache:

apt-cache depends vlc:i386  

Si vous souhaitez filtrer par dépend, utilisez simplement:

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

Notez que certains packages, comme ceux libc6fournis par défaut dans Ubuntu, vous n'avez donc pas besoin de les télécharger. Si vous souhaitez simplement télécharger toutes les dépendances et déterminer si vous en avez besoin ou non plus tard, vous pouvez utiliser ce script:

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  

Cela téléchargera tous les packages dépendants, recommandés et suggérés et redirigera toutes les erreurs vers no32.txt. Vous devriez y jeter un œil lorsque vous avez terminé, car certains packages nécessaires qui n'ont pas de versions i386 (c'est-à-dire qu'ils ne sont pas des binaires) seront là.

Juste apt-get downloadceux-là.

Notez que ce script n'est pas très intelligent, il ne prend pas beaucoup de choses en compte, donc vous pouvez obtenir des erreurs stupides, il devrait cependant fonctionner en général.


Et qu'en est-il du package build-dep: i386?
enedil

@enedil build-dep télécharge et installe, donc cela installerait un tas de paquets i386 sur sa machine, ce qui n'est pas ce qu'il veut. Voir man apt-get pour plus de détails.
Seth

Il y a aussi une aptitude downloadcommande. Je ne sais pas si elle est activée multiarchitecture.
Faheem Mitha

@FaheemMitha Oui, l'aptitude peut faire à peu près tout apt-get.
Seth

0

Pour cela, vous pouvez utiliser chroot ou proot sur le système hôte pour créer un système de fichiers isolé de l'architecture appropriée. Vous pouvez ensuite exécuter apt dans cet environnement émulé pour installer les packages spécifiques à l'architecture comme si vous étiez sur une machine de cette architecture. Il s'exécute un peu plus lentement car il émule l'architecture, mais vous disposez alors d'un rootfs que vous pouvez déployer sur votre autre appareil d'une architecture différente.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.