我正在尝试在OS X上安装ruby-oci8。
我尝试使用和不使用sudo
安装。
没有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.
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
错误讯息:
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
答案 0 :(得分:46)
为10.9 / 10.10 / 10.11OSX Mavericks / Yosemite / El Capitan安装ruby-oci8的稍微更新版本 - 一步一步:
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
(创建符号链接)env
之后应该工作。文件结构应类似于:
答案 1 :(得分:8)
对于任何试图在2016年的旧年工作的人,错误消息现在包含指向页面http://www.rubydoc.info/github/kubo/ruby-oci8/file/docs/install-on-osx.md的链接,该页面为您提供了如何使用Homebrew进行操作的说明。以上所有的东西都没有为我工作(我尝试了所有这些),但后来我把这个问题交给了同事,他们说:“嘿,你在那里的错误信息中尝试了那个链接吗?”果然,这样做了。
答案 2 :(得分:3)
在OS X Sierra上,由于系统完整性保护(https://forums.developer.apple.com/thread/13161),我无法设置DYLD_LIBRARY_PATH,因此我将所有oracle的即时客户端文件复制到/users/.../lib,因为它有后备到某些目录,包括这一个:
...
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
...
宝石安装成功!
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 :(得分:2)
如果其他人需要在mac osx el capitan上的 Ruby 1.8.7 上安装旧版本的ruby-oci8,我成功安装 ruby-oci8-2.1.2 < / strong>使用以下方法。我认为它也适用于其他ruby-1.8.7版本(ruby-oci8&lt; 2.2.0)但我还没有检查过其他版本:
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'
对此:
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
答案 4 :(得分:1)
错误消息有点冗长,但它基本上表示您需要安装Oracle Client libraries并将DYLD_LIBRARY_PATH
变量指向该位置。
答案 5 :(得分:1)
如果您使用MAC与El Capitan,由于系统完整性保护(SIP)的最新嵌入式功能,DYLD_ *环境变量将被忽略。
所以如果你想用El Capitan安装ruby-oci8,首先你必须禁用SIP。
按照以下步骤禁用SIP:
如果您仍然遇到问题,请尝试此链接 http://blog.codiez.co.za/2013/09/setup-oracle-instant-client-ruby-oci8-gem-mac/
答案 6 :(得分:0)
首先从他们的网站下载oracle instantclient版本11.2 for 32位Linux。版本12或更高版本不适用于可视化数据库(我总是抓住.zip版本,因此指南假设。它还假设下载的文件位于/ tmp文件夹中。)。您将需要基本版本,sqlplus和sdk。完成这些下载后,在终端
中执行以下命令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
- 现在,我们需要告诉我们的bash shell oracle客户端所在的位置。因此,请允许自己查看隐藏文件,并使用文本编辑器打开$ home / .bashrc。将以下行添加到文件的底部,然后保存:
export LD_LIBRARY_PATH=/opt/oracle/instantclient_11_2
- 在源终端中使用此命令加载.bashrc以加载新设置:
source ~/.bashrc
- 如果我们正确地完成了所有工作,我们应该能够安装oracle数据库适配器gem。尝试使用此命令:
gem install ruby-oci8 -v '2.1.5'
答案 7 :(得分:0)
由于某种原因,ruby-oci8尚未与即时client_11_2一起安装。我尝试了这里和其他地方建议的所有答案,但无法完成。后来我尝试使用即时客户端12_1,它可以正常工作。
答案 8 :(得分:0)
CENTOS7
的ruby-oci8安装更新版本cd /etc/yum.repos.d
sudo wget http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7
sudo rpm --import RPM-GPG-KEY-oracle-ol7
sudo yum-config-manager --enable ol7_oracle_instantclient
sudo yum install oracle-instantclient18.3-basic
sudo yum install oracle-instantclient18.3-devel
sudo yum install oracle-instantclient18.3-jdbc
sudo yum install oracle-instantclient18.3-sqlplus
export ORACLE_HOME=/usr/lib/oracle/18.3/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
gem install ruby-oci8 -v '2.2.7'
答案 9 :(得分:0)
这看起来很痛苦。我想我可能已经找到了解决此问题的更好方法(至少在Mac OS上如此)。
只需运行以下brew命令:
brew tap InstantClientTap/instantclient
brew install instantclient-basic
brew install instantclient-sqlplus
brew install instantclient-sdk
答案 10 :(得分:0)
对于那些使用 zsh 而不是 bash 的人仍然遵循 Etusm's 答案但是,在第 8 步和第 9 步替换为
8. export DYLD_LIBRARY_PATH=/opt/oracle/instantclient_11_2
9. export ORACLE_HOME=/opt/oracle/instantclient_11_2
答案 11 :(得分:-1)
如果您使用 OS X El Capitan,Yosemite和Mavericks 。您应该使用 Instant Client 12.1.0.2 从oracle网站下载Instant Client 12.1.0.2
然后按照以下步骤: -
DYLD_LIBRARY_PATH = / opt / oracle / instantclient_12_1导出 DYLD_LIBRARY_PATH ORACLE_HOME = / opt / oracle / instantclient_12_1 export ORACLE_HOME
ln -s libclntsh.dylib.12.1 libclntsh.dylib(创建符号链接)
ln -s libocci.dylib.12.1 libocci.dylib
注意: - 如果这仍然不起作用,请尝试禁用Mac上的SIP 然后再试一次。
它对我有用,希望它也适合你。 一切顺利