J'essaie d'installer Ruby-oci8 sur OS X.
J'ai essayé d'installer les deux avec et sans Sudo
.
Message d'erreur sans Sudo
:
gem install Ruby-oci8
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions into the /Library/Ruby/Gems/1.8 directory.
Message d'erreur avec Sudo
:
Sudo gem install Ruby-oci8
Password:
Building native extensions. This could take a while...
ERROR: Error installing Ruby-oci8:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/Ruby extconf.rb
checking for load library path...
DYLD_LIBRARY_PATH is not set.
checking for cc... ok
checking for gcc... yes
checking for LP64... yes
checking for sys/types.h... yes
checking for Ruby header... ok
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--Ruby=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/Ruby
--with-instant-client
--without-instant-client
./oraconf.rb:887:in `get_home': RuntimeError (RuntimeError)
from ./oraconf.rb:703:in `initialize'
from ./oraconf.rb:319:in `new'
from ./oraconf.rb:319:in `get'
from extconf.rb:18
Message d'erreur:
Set the environment variable Oracle_HOME if Oracle Full Client.
Append the path of Oracle client libraries to DYLD_LIBRARY_PATH if Oracle Instant Client.
The 'Sudo' command unset some environment variables for security reasons.
Pass required varialbes as follows
Sudo env DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH /usr/bin/gem install Ruby-oci8
or
Sudo env Oracle_HOME=$Oracle_HOME /usr/bin/gem install Ruby-oci8
Backtrace:
./oraconf.rb:887:in `get_home'
./oraconf.rb:703:in `initialize'
./oraconf.rb:319:in `new'
./oraconf.rb:319:in `get'
extconf.rb:18
See:
* http://Ruby-oci8.rubyforge.org/en/HowToInstall.html
* http://Ruby-oci8.rubyforge.org/en/ReportInstallProblem.html
Version légèrement mise à jour de l'installation de Ruby-oci8 pour 10.9/10.10/10.11OSX Mavericks/Yosemite/El Capitan - étape par étape:
DYLD_LIBRARY_PATH=/opt/Oracle/instantclient_11_2 export DYLD_LIBRARY_PATH
Oracle_HOME=/opt/Oracle/instantclient_11_2 export Oracle_HOME
cd /opt/Oracle/instantclient_11_2
ln -s libclntsh.dylib.11.1 libclntsh.dylib
(crée un lien symbolique)env
Devrait travailler après cela. La structure de fichier devrait ressembler à ceci:
Pour tous ceux qui tentent de faire en sorte que cela fonctionne au cours de la vieille année 2016, le message d'erreur contient maintenant un lien vers la page http://www.rubydoc.info/github/kubo/Ruby-oci8/file/docs/ install-on-osx.md qui vous explique comment le faire avec Homebrew. Aucun des éléments ci-dessus n'a fonctionné pour moi (et j'ai tout essayé), mais j'ai ensuite pris ce problème à un collègue et ils m'ont dit: "Hé, as-tu essayé ce lien dans le message d'erreur?" Bien sûr, ça l'a fait.
Sur OS X Sierra, je ne pouvais pas définir DYLD_LIBRARY_PATH en raison de la protection de l'intégrité du système ( https://forums.developer.Apple.com/thread/13161 ). J'ai donc copié tous les fichiers client instantanés d'Oracle dans/users /. .../lib, car il a un repli sur certains répertoires, dont celui-ci:
...
checking the default value of DYLD_FALLBACK_LIBRARY_PATH...
checking /Users/<username>/lib... no
checking /usr/local/lib... no
checking /lib... no
checking /usr/lib... no
...
Et la gemme installée avec succès!
cp -R /opt/Oracle/instantclient_11_2/* /users/..username../lib
gem install Ruby-oci8
Building native extensions. This could take a while...
Successfully installed Ruby-oci8-2.2.2
1 gem installed
Dans le cas où quelqu'un d'autre aurait besoin d'installer l'ancienne version de Ruby-oci8 sur Ruby 1.8.7 sur mac osx el capitan, l'installation de Ruby-oci8-2.1.2 était réussie. méthode suivante. Je pense que cela fonctionnera également sur d'autres versions de Ruby-1.8.7 (Ruby-oci8 <2.2.0), mais je n'ai pas vérifié les autres versions:
cd /opt/Oracle/instantclient_11_2
ln -s libclntsh.dylib.11.1 libclntsh.dylib
curl -O https://raw.githubusercontent.com/kubo/fix_oralib_osx/master/fix_oralib.rb
Ruby fix_oralib.rb -a
export OCI_DIR=/opt/Oracle/instantclient_11_2
git clone https://github.com/kubo/Ruby-oci8.git
git checkout Ruby-oci8-2.1.2
when /darwin/
@@ld_envs = %w[DYLD_LIBRARY_PATH]
so_ext = 'dylib'
Pour ça:
when /darwin/
@@ld_envs = %w[DYLD_LIBRARY_PATH OCI_DIR]
so_ext = 'dylib'
gem build Ruby-oci8.gemspec
2potatocakes$ gem install Ruby-oci8-2.1.2.gem
Building native extensions. This could take a while...
Successfully installed Ruby-oci8-2.1.2
1 gem installed
Le message d'erreur est quelque peu détaillé, mais il indique en gros que vous devez installer les bibliothèques Oracle Client et pointer la variable DYLD_LIBRARY_PATH
vers cet emplacement.
Si vous utilisez MAC avec El Capitan, les variables d'environnement DYLD_ * sont ignorées, en raison de la dernière fonctionnalité intégrée de SIP (System Integrity Protection).
Donc, si vous voulez installer Ruby-oci8 avec El Capitan, vous devez d’abord désactiver SIP.
Suivez ces étapes pour désactiver SIP:
Si le problème persiste, essayez ce lien http://blog.codiez.co.za/2013/09/setup-Oracle-instant-client-Ruby-oci8-gem-mac/
Commencez par télécharger Oracle instantclient version 11.2 pour Linux 32 bits à partir de leur site Web. La version 12 ou ultérieure ne fonctionnera pas avec la base de données visuelle (j'ai toujours saisi les versions .Zip, c'est donc ce que le guide suppose. Cela suppose également que les fichiers téléchargés se trouvent dans le dossier/tmp.). Vous aurez besoin de la version de base, sqlplus et sdk. Une fois ces téléchargements terminés, exécutez les commandes suivantes dans le terminal.
Sudo mkdir -p /opt/Oracle
Sudo cd /opt/Oracle
Sudo unzip /tmp/instantclient-basic-linux-11.2.0.4.0.Zip
Sudo unzip /tmp/instantclient-sqlplus-linux-11.2.0.4.0.Zip
Sudo unzip /tmp/instantclient-sdk-linux-11.2.0.4.0.Zip
Sudo apt-get install libaio1
Sudo cd instantclient_11_2
Sudo ln -s libclntsh.so.11.2 libclntsh.so
-Maintenant, nous devrons indiquer à notre shell bash où se trouve le client Oracle. Alors, permettez-vous de voir les fichiers cachés et ouvrez $ home/.bashrc avec un éditeur de texte. Ajoutez la ligne suivante au bas du fichier, puis enregistrez-le:
export LD_LIBRARY_PATH=/opt/Oracle/instantclient_11_2
-Maintenant, source .bashrc pour charger les nouveaux paramètres avec cette commande dans le terminal:
source ~/.bashrc
-Maintenant si nous avons tout fait correctement, nous devrions pouvoir installer le gem adaptateur de base de données Oracle. Essayez-le avec cette commande:
gem install Ruby-oci8 -v '2.1.5'