web-dev-qa-db-fra.com

Comment installer Ruby-oci8?

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
22
earlyriser

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:

  1. Allez ici: http://www.Oracle.com/technetwork/topics/intel-macsoft-096467.html
  2. Téléchargez les versions 64 bits d’instantclient-sqlplus, instantclient-sdk, instantclient-basic - les versions 32 bits ne fonctionnent pas avec OSX 10.9
  3. Créez des répertoires sur/opt/Oracle
  4. Commencez par décompresser instantclient-basic, puis déplacez-vous dans/opt/Oracle (vous devez ajouter un dossier, par exemple,/opt/Oracle/instantclient_11_2 /).
  5. Décompressez instantclient-sdk et déplacez son contenu dans/opt/Oracle/instantclient_11_2 /
  6. Décompressez instantclient-sqlplus et déplacez son contenu/opt/Oracle/instantclient_11_2 /
  7. Ouvrez Terminal (si vous ne l'avez pas déjà fait) et tapez ...
  8. DYLD_LIBRARY_PATH=/opt/Oracle/instantclient_11_2 export DYLD_LIBRARY_PATH
  9. Oracle_HOME=/opt/Oracle/instantclient_11_2 export Oracle_HOME
  10. cd /opt/Oracle/instantclient_11_2
  11. ln -s libclntsh.dylib.11.1 libclntsh.dylib (crée un lien symbolique)
  12. env
  13. vérifiez que DYLD_LIBRARY_PATH =/opt/Oracle/instantclient_11_2 (assurez-vous qu'il n'y a pas de fin/après instantclient_11_2)
  14. vérifie Oracle_HOME =/opt/Oracle/instantclient_11_2
  15. bijou installer Ruby-oci8

Devrait travailler après cela. La structure de fichier devrait ressembler à ceci:

enter image description here

46
etusm

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.

8
Garrett Disco

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
3
Jose Neto

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:

  1. Allez ici: http://www.Oracle.com/technetwork/topics/intel-macsoft-096467.html Téléchargez les versions 64 bits de instantclient-basic , instantclient-sdk , instantclient-sqlplus (j'utilise les versions -macos.x64-11.2.0.4.0)
  2. Copiez les fichiers Zip dans/opt/Oracle et décompressez chacun d’entre eux. Il devrait les extraire dans/opt/Oracle/instantclient_11_2
  3. cd /opt/Oracle/instantclient_11_2
  4. ln -s libclntsh.dylib.11.1 libclntsh.dylib
  5. curl -O https://raw.githubusercontent.com/kubo/fix_oralib_osx/master/fix_oralib.rb
  6. Assurez-vous d’ajouter l’indicateur -a lors de l’exécution du script. Le script corrigera les bibliothèques à l’aide d’un chemin absolu plutôt que d’un chemin @rpath/*. Dylib qui finit par étouffer le processus de création de gem. (lisez d'abord le script fix_oralib.rb si vous voulez vérifier). Quoi qu'il en soit, exécutez: Ruby fix_oralib.rb -a
  7. export OCI_DIR=/opt/Oracle/instantclient_11_2
  8. Maintenant, récupérez la source Ruby-oci8 git clone https://github.com/kubo/Ruby-oci8.git
  9. Commander la version que vous souhaitez installer (j'avais besoin de 2.1.2) git checkout Ruby-oci8-2.1.2 
  10. Éditez ce fichier: Ruby-oci8/ext/oci8/oraconf.rb et changez cette ligne: 

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'

  1. Maintenant, revenez dans le répertoire racine de la gem elle-même et construisez le gemspec: gem build Ruby-oci8.gemspec
  2. 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
2
2potatocakes

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.

1
Steen

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:

  1. Redémarrez votre Mac.
  2. Avant de démarrer OS X, maintenez la touche Command-R enfoncée et maintenez-la enfoncée jusqu'à ce que vous voyiez une icône Apple et une barre de progression. Libération. Cela vous lance dans la récupération.
  3. Dans le menu Utilitaires, sélectionnez Terminal.
  4. À l'invite, tapez exactement ce qui suit, puis appuyez sur Retour: csrutil disable
  5. Le terminal doit afficher un message indiquant que SIP est désactivé.
  6. Dans le menu , sélectionnez Redémarrer.

Si le problème persiste, essayez ce lien http://blog.codiez.co.za/2013/09/setup-Oracle-instant-client-Ruby-oci8-gem-mac/

1
Prashant Mishra

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'
0
Justin