8
votes

Impossible d'installer une version de ruby ​​sur Mojave - la commande ranlib interne a échoué

Je sais qu'il y a quelques problèmes de silimar dans celui-ci, mais je ne trouve pas celui qui correspond à mon problème.

Je ne peux installer aucune version de ruby ​​avec rvm ou rbenv. Les deux entraînent la même erreur. Par exemple, voici un extrait des journaux lors de l'installation de ruby ​​2.5.3:

gcc --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.0 (clang-1000.10.44.4)
Target: x86_64-apple-darwin18.0.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

Le problème semble être ici:

/opt/local/bin/ranlib: object: libruby.2.5.3-static.a(dln.o) malformed object (unknown load command 1)
ar: internal ranlib command failed
make: *** [libruby.2.5.3-static.a] Error 1

Ce que j'ai essayé

  • Installation, réinstallation, désinstallation de rvm, rbenv.
  • Mise à jour, réinstallation de XCode.
  • Suppression, installation des outils de ligne de commande XCode

Quelle est la cause de cela?

Update

gcc --version renvoie:

compiling loadpath.c
making srcs under enc
linking static-library libruby.2.5.3-static.a
make[1]: Nothing to be done for `srcs'.
generating transdb.h
/opt/local/bin/ranlib: object: libruby.2.5.3-static.a(dln.o) malformed object (unknown load command 1)
ar: internal ranlib command failed
make: *** [libruby.2.5.3-static.a] Error 1
make: *** Waiting for unfinished jobs....
transdb.h updated


8 commentaires

S'agit-il d'une nouvelle installation de Mojave ou avez-vous mis à niveau depuis (High) Sierra?


IIRC, / opt / local est le préfixe par défaut pour MacPorts. Peut-être avez-vous une installation gcc défectueuse? Que dit gcc --version ? BTW, j'exécute le gcc par défaut fourni avec macOS / XCode et l'installation de rbenv fonctionnait très bien.


Salut Stefan, merci. C'était donc une mise à niveau de Sierra. J'ai mis à jour la question avec le résultat de la version . Fait intéressant, lorsque j'ai essayé d'installer quelque chose aujourd'hui en utilisant macports (que je n'utilise généralement pas), je pense que XCode n'est pas installé ... 🤔


Mon gcc --version affiche /Applications/Xcode.app/Contents/Developer au lieu de / Library / Developer / CommandLineTools . C'est également ce que xcode-select -p imprime. J'ai également des versions légèrement supérieures, à savoir clang-1000.11.45.5 et x86_64-apple-darwin18.2.0 . Peut-être que vous utilisez une version obsolète (ou spécifique à Sierra)? Avez-vous essayé d'installer XCode à partir de zéro?


BTW, avez-vous essayé de réinstaller (ou de supprimer) ranlib de MacPort? (ou le paquet dont il provient)


hé @Stefan merci! Ouais je vais essayer Xcode, bonne idée. En termes de ranlib, ce n'est pas dans ma liste macports et je ne sais honnêtement pas d'où cela vient. En fait, la liste macport affiche 0 (je ne me souviens pas avoir jamais utilisé explicitement macports, j'utilise généralement brew pour tout)


Dans ce cas, essayez de désinstaller MacPorts , donc / opt / local / bin / ranlib n'est plus utilisé.


@Stefan merci encore! Ok, je vais devoir attendre que XCode se télécharge / s'installe à nouveau, alors laissez-moi vous répondre dans 4 ans ... 😬


3 Réponses :


0
votes

Donc, je pense que le correctif était en cours d'exécution:

$ sudo xcodebuild -runFirstLaunch

Pourquoi? Je ne suis pas sûr. Je soupçonne que j'ai essayé de construire ruby ​​avant de mettre à jour XCode. Mais une fois que j'ai mis à jour XCode, je soupçonne que le mauvais / ancien outil de ligne de commande était encore référencé d'une manière ou d'une autre.

Je ne sais pas exactement ce qui a résolu ce problème, mais j'ai complètement supprimé XCode et ruby ​​ne s'est toujours pas installé.

Ensuite, j'ai complètement supprimé les outils de ligne de commande et ruby ​​ne s'est toujours pas installé.

Ensuite, j'ai réinstallé uniquement les outils de ligne de commande sans XCode et ruby ​​ne s'est toujours pas installé.

Ensuite, j'ai exécuté cette commande runFirstLaunch et ruby ​​installé.


0 commentaires

8
votes

Pour tous ceux qui marchent sur la même mine terrestre, pour moi, c'était qu'il y avait une copie incompatible de ranlib depuis homebrew via le cctools paquet. Pour le réparer, je viens de le désinstaller:

brew uninstall cctools


3 commentaires

Merci pour la solution! Après avoir tenté tant de suggestions, c'est ce qui a finalement permis à rvm d'installer à nouveau de nouvelles versions de Ruby sur mon Mac.


Merci beaucoup d'avoir partagé ceci. Cela semble être une situation rare, mais cela rend seulement diaboliquement difficile à régler.


J'ai eu le même problème avec rbenv et je cherche la solution depuis des jours, ce qui a finalement résolu le problème! Merci beaucoup!



3
votes

Pour ceux qui trouvent ceci et qui ne sont pas aidés par la solution ci-dessus ...

J'ai également rencontré ce problème. Dans mon cas, cela était dû au fait que MacPorts était obsolète après la mise à niveau vers (MacOS) Mojave.

J'ai suivi les étapes répertoriées dans le guide de migration de MacPorts ici: https://trac.macports.org/wiki/Migration

Terminal fermé et rouvert (juste b / c)

a exécuté rvm install ruby ​​ et obtenu Installation de ruby-2.6.0 - #complete , hourra!


0 commentaires