Activer le Multiarch sous debian

Qu’est ce que Multi-arch ?

Multi-arch vous permet d’installer des bibliothèque de paquets venant de différentes architectures sur un même système. C’est très utile dans beaucoup de cas, cela permet le plus souvent d’installer à la fois des logiciels 32 et 64 bits sur la même machine, tout en conservant une résolution des dépendances automatique correcte. Notez que cela ne permet pas d’installer simultanément plusieurs versions d’une même « application » dans de multiples architectures.

Concepts

Il y a une architecture dite architecture courante, et affichée par la commande dpkg --print-architecture. Elle est définie dans le paquet dpkg actuellement installé.

(Notez qu’ici « architecture » désigne une Interface Binaire-Programme (ABI, Application Binary Interface), et non une Architecture de Jeu d’Instruction (ISA, Instruction Set Architecture). Ainsi, par exemple, « armel » et « armhf » sont bien des « architectures » différentes car, bien qu’elles utilisent (presque) le même jeu d’instruction, elles se reposent sur des ABI différentes pour l’appel de fonctions depuis les bibliothèques.

Il est maintenant possible de se référer à un paquet via « paquet:architecture » à peu près partout où il était possible de le faire avant avec « paquet » — nous avons donc libc:i386 et libc:amd64 — malheureusement, les sémantiques comprises par dpkg et apt étant légèrement différentes, les résultats obtenus via ces deux interfaces peuvent être légèrement différents. Cependant, préciser l’architecture d’un paquet devrait toujours être sûr et sans ambigüité, quant au nom « paquet » sans précision, il se réfère au paquet dans l’architecture courante d’apt.

Les autres architectures disponibles sont visibles grâce à la commande dpkg --print-foreign-architectures. Dpkg gèrera les paquets de ces architectures ainsi que ceux de l’architecture de la machine.

Il y a un entête « Multi-Arch » inscrit dans les méta-données pour chaque paquet multi-architectures concerné.

Les paquets existants fonctionnent très bien dans un environnement multi-architectures, mais pour bénéficier d’une co-installation ou d’un arbre de dépendances multi-architectures, beaucoup de paquets ont besoin d’être rendus compatibles en multi-architectures.

  • Pour un paquet inchangé vous pouvez choisir quelle version d’architecture du paquet vous souhaitez installer (par exemple, « amd64 » ou « i386 »).
  • Si un paquet est étiqueté « Multi-Arch: foreign », alors il peut satisfaire la dépendance d’un paquet d’une architecture différente (par exemple, « make:amd64 » permettra de satisfaire une dépendance faite pour un paquet de n’importe quelle architecture).
  • Pour activer plus d’une version d’architecture d’un paquet en même temps (généralement les librairies et les paquets dev-) les fichiers ont besoin d’être déplacés pour ne pas avoir de conflit. Ces paquets sont eux aussi tagués « Multi-Arch: same ».

Des paquets étiquetés « Multi-Arch : allowed » existent aussi. Ils peuvent être traités à la fois comme « :same » ou comme « :foreign » en fonction des paquets dont ils dépendent.

Le plus souvent, les responsables des paquets travaillent sur leur distribution en commençant par installer les paquets les plus utiles pour la rendre multi-architectures. Voir multiarch spec et howto implementation pour avoir des détails sur le fonctionnement actuel et pour savoir comment mettre à jour les paquets et tirer avantage de cette fonctionnalité.

Continuer la lecture de « Activer le Multiarch sous debian »