Lorsque j'essaie d'exécuter Rails console
J'obtiens cette erreur:
/Users/TuzsNewMacBook/.rvm/gems/Ruby-2.3.7/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require':
dlopen(/Users/TuzsNewMacBook/.rvm/rubies/Ruby-2.3.7/lib/Ruby/2.3.0/x86_64-darwin18/readline.bundle, 9):
Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)
Une recherche rapide m'a permis de cet article et j'ai essayé plusieurs choses:
brew reinstall postgresql
(c'est bien la BD de ce projet)
et
cd /usr/local/opt/readline/lib
ln libreadline.8.0.dylib libreadline.6.2.dylib
(ma version de readline est 8)
et brew link readline --force
Mais aucun de ceux-ci ne l'a corrigé.
J'ai récemment ajouté pry-coolline
, guard
et guard-livereload
gemmes à mon projet si cela fait une différence (la console Rails est bien chargée avant celles-ci). Je cours sur les dernières macos.
(Mise à jour) J'utilise pry Rails comme ma console Rails, si cela fait une différence).
De l'aide? Merci.
l'erreur semble être générée lors de la recherche de /usr/local/opt/readline/lib/libreadline.7.dylib
.
Avez-vous essayé de créer un lien symbolique avec cela?
Donc quelque chose comme:
cd /usr/local/opt/readline/lib
ln -s libreadline.8.0.dylib libreadline.7.dylib
Je viens d'essayer cela sur macOS Mojave, Ruby 2.5.3p105 et Rails 5.2.2 et j'ai travaillé).
Réinstaller ma Ruby semble l'avoir corrigé:
rvm reinstall 2.3.7
peux-tu essayer
cd /usr/local/opt/readline/lib
ln -s libreadline.8.dylib libreadline.7.dylib
vous êtes sur la bonne voie mais il semble que Rails recherche libreadline.7.dylib et libreadline.7.dylib n'est pas là dans le dossier.
Oui, la meilleure réponse est de réinstaller.
Vous pouvez obtenir la version facilement en tapant:
Ruby -v
Avec rbenv
, la commande est:
rbenv install 2.3.7
avec rvm
:
rvm reinstall 2.3.7
Le plus souvent dans les applications Ruby, cela est provoqué par des gemmes qui ont des extensions (les gemmes disant "Construire des extensions natives .."), qui sont construites en utilisant une version spécifique de, dans ce cas, readline
.
Fondamentalement, il existe deux solutions:
Soit, vous pouvez créer un lien symbolique entre la version 8 de la gemme et la version manquante. Cela fonctionnera dans de nombreux cas, mais si la compatibilité descendante est rompue, ce ne sera pas le cas.
Ou, si la gemme prend réellement en charge la version 8, vous pouvez réinstaller cette gemme spécifique ou la "purifier" en exécutant gem pristine --all
.
EDIT : Dans le cadre de votre "ce que j'ai essayé", la réinstallation de PostgreSQL, est également l'un des binaires, construit en utilisant une version spécifique, qui peut également nécessite une reconstruction, pour fonctionner avec une bibliothèque système, telle que readline.
J'ai donc vérifié quelques réponses ici, mais je ne pense pas qu'elles puissent fonctionner avec une installation Mac Vanilla Mojave. J'utilise 10.14.4 pendant que je faisais ceci:
obtenir l'homebrew de https://brew.sh
$ brew install coreutils
: ceci installe le paquet gnu coreutils pour mac, nous voulons le greadlink
de ceci car le lien de lecture de macOSX n'est pas le même que le lien de lecture gnu. C'est extrêmement déroutant, mais telle est la vie à Macland.
$ echo 'alias readlink=greadlink' >> ~/.bash_aliases
J'ai trouvé que le lien de lecture de mac manquait un peu, j'ai donc remplacé le lien de lecture existant en créant un alias greadlink. (vous pouvez le rendre utilisable par tous les utilisateurs par $ alias readlink=greadlink >> /etc/bashrc
qui permettra à chaque utilisateur de pouvoir l'utiliser.
$ ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
J'ai lié le déjà lié .8.
fichier au lieu de '.8.0.' parce que s'il devait être mis à jour vers .8.1.
alors mon readlink ne cassera pas ou ne manquera pas les fonctionnalités de la bibliothèque. Je suis presque sûr que nous formaterons nos macs avant la sortie de 9+.
Vous avez ce problème:
dyld: Library not loaded: /usr/local/opt/mpfr/lib/libmpfr.4.dylib
faire...
cd /usr/local/opt/mpfr/lib/
ln -s libmpfr.dylib libmpfr.4.dylib
a fait l'affaire pour moi pour macOS Catalina
Une solution très simple qui n'implique pas la reconstruction de votre gemmes RVM OR bibliothèques de liaison sym.
Ajoutez à votre Gemfile:
gem 'rb-readline'
Si vous faites des groupes de bundles
group :development do
gem 'rb-readline'
end
Exécutez ensuite
> bundle
Faites-moi savoir si cela ne fonctionne pas.
Je recommanderais de ne pas créer de lien manuel entre les bibliothèques natives. Comme sous OS X 10.4, la norme inclut le chemin de la bibliothèque /usr/include
n'est plus utilisé et est verrouillé par SIP (ce qui rend difficile le déplacement).
Apple expédie un "programme d'installation hérité" pour que vous puissiez installer les en-têtes dans "l'ancien emplacement", ce qui résoudra également votre chemin pour trouver correctement les en-têtes installés via brew
.
cp /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg ~/Desktop && open ~/Desktop/macOS_SDK_headers_for_macOS_10.14.pkg`
Mon problème était le même lors de l'exécution de lftp
.
Juste en cours d'exécution brew upgrade
a résolu mon problème, car il a mis à jour (entre autres):
readline 8.0.0_1 -> 8.0.1
lftp 4.8.4 -> 4.8.4_2