web-dev-qa-db-fra.com

"Aucun fichier de ce type" lors de l'exécution d'un programme 32 bits sur un système 64 bits

J'ai téléchargé un instantané Chromium et l'ai décompressé, comme ceci:

michael@ubuntu:/opt/chrome-linux$ ls
chrome                  libffmpegsumo.so                nacl_irt_x86_32.nexe
chrome.1                libppGoogleNaClPluginChrome.so  product_logo_48.png
chrome_100_percent.pak  locales                         resources
chrome.pak              nacl_helper                     resources.pak
chrome_sandbox          nacl_helper_bootstrap           xdg-mime
chrome-wrapper          nacl_irt_srpc_x86_32.nexe       xdg-settings

Mais quand j'essaie de courir chrome, ce n'est pas là ...

michael@ubuntu:/opt/chrome-linux$ ./chrome
bash: ./chrome: No such file or directory

Est-ce que quelqu'un sait pourquoi il ne s'ouvre pas? Exécution de Xubuntu 12.10 AMD64.

michael@ubuntu:/opt/chrome-linux$ ldd /opt/chrome-linux/* | grep -i "not found"
ldd: /opt/chrome-linux/locales: not regular file
ldd: /opt/chrome-linux/resources: not regular file
6
Michael

Vous manquez le support 32 bits. Installez libc6:i386 , c’est-à-dire le package de bibliothèque de base 32 bits, ainsi que toutes les autres bibliothèques 32 bits dont Chrome a besoin (il est probable que les dépendances de le paquet de chrome ).

Lorsque vous ne parvenez pas à exécuter un fichier dépendant d'un "chargeur", l'erreur que vous obtenez peut faire référence au chargeur plutôt qu'au fichier que vous exécutez.

  • Le chargeur d'un exécutable natif lié dynamiquement est la partie du système responsable du chargement des bibliothèques dynamiques. C'est quelque chose comme _/lib/ld.so_ ou _/lib/ld-linux.so.2_, et devrait être un fichier exécutable.
  • Le chargeur d’un script est le programme mentionné sur la ligne Shebang , par exemple. _/bin/sh_ pour un script commençant par _#!/bin/sh_.

Le message d'erreur est plutôt trompeur car il n'indique pas que le chargeur est le problème. Malheureusement, il serait difficile de résoudre ce problème car l'interface du noyau ne permettait de signaler qu'un code d'erreur numérique, mais pas d'indiquer également que l'erreur concernait en fait un fichier différent.

Une fois que vous avez installé le chargeur dynamique 32 bits _/lib/ld-linux.so.2_, qui se trouve dans le package _libc6:i386_, vous obtiendrez au moins un message d'erreur non trompeur vous signalant les autres bibliothèques manquantes.

5
Gilles

Le moyen le plus rapide d’obtenir la solution de Gilles est d’installer ia32-libs-multiarch . Bien que cela attire un lot de paquets, cela vous fait gagner du temps pour comprendre toutes les différentes dépendances.

1
iGadget