programing

루비-oci8을 설치하는 방법은?

javajsp 2023. 6. 13. 21:59

루비-oci8을 설치하는 방법은?

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

10.9/10.10/10.11 OSX 매버릭스/요세미티/엘 캐피탄용 루비-oci8 설치 약간 업데이트 - 단계별:

  1. 여기로 이동: http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html
  2. 64비트 버전의 instantclient-sqlplus, instantclient-sdk, instantclient-basic 다운로드 - 32비트 버전은 OSX 10.9에서 작동하지 않습니다.
  3. /opt/oracle에서 디렉토리 생성
  4. instantclient-basic 압축을 먼저 풀고 /opt/oracle로 이동합니다(폴더를 추가해야 함 - /opt/oracle/instantclient_11_2/ 같은 것).
  5. instantclient-sdk의 압축을 풀고 내용을 /opt/oracle/instantclient_11_2/로 이동합니다.
  6. instantclient-sqlplus의 압축을 풀고 내용을 /opt/oracle/instantclient_11_2/로 이동합니다.
  7. 터미널을 열고(아직 열지 않은 경우) 입력...
  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 링크 표시으)로 표시됨)
  12. env
  13. DYLD_LIBRARY_PATH=/opt/oracle/instantclient_11_2(instantclient_11_2 이후/뒤에 후행이 없는지 확인)
  14. ORACLE_HOME=/opt/oracle/instantclient_11_2 확인
  15. gem 설치 루비-oci8

그 후에 일을 해야 합니다.파일 구조는 다음과 유사해야 합니다.

여기에 이미지 설명 입력

2016년의 좋은 해에 이것을 작동시키려고 시도하는 사람들을 위해, 오류 메시지는 이제 홈브루를 사용하여 그것을 하는 방법에 대한 지침을 제공하는 페이지 http://www.rubydoc.info/github/kubo/ruby-oci8/file/docs/install-on-osx.md 에 대한 링크를 포함합니다.위의 어떤 것도 저에게 효과가 없었습니다(그리고 저는 그것을 모두 시도했습니다). 하지만 저는 이 문제를 동료에게 가져갔고, 그들은 "저기, 오류 메시지에 있는 링크를 시도했어요?"라고 말했습니다.아니나 다를까, 그것으로 끝입니다.

OS X Sierra에서 시스템 무결성 보호 때문에 DYLD_LIBRARY_PATH를 설정할 수 없었습니다(https://forums.developer.apple.com/thread/13161), 그래서 다음을 포함한 일부 디렉토리에 폴백이 있기 때문에 모든 오라클의 인스턴트 클라이언트 파일을 /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

다른 사람이 macosexel capitan의 Ruby 1.8.7에 Ruby-oci8의 레거시 버전을 설치해야 할 경우를 대비하여, 저는 다음 방법을 사용하여 Ruby-oci8-2.1.2를 설치하는 데 성공했습니다.다른 루비-1.8.7 버전(루비-oci8 < 2.2.0)에서도 작동할 것으로 생각하지만 다른 버전은 확인하지 않았습니다.

  1. 여기로 이동: http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html 64비트 버전의 인스턴트 클라이언트-베이직, 인스턴트 클라이언트-스냅샷, 인스턴트 클라이언트-sqlplus 다운로드(나는 -syslog.x64-11.2.0.4.0 버전을 사용합니다)
  2. zip 파일을 /opt/oracle에 복사하고 각 파일의 압축을 풉니다./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. 스크립트를 실행할 때 -a 플래그를 추가해야 합니다. 그러면 스크립트가 @rpath/*.dylib 경로가 아닌 절대 경로를 사용하여 립스를 수정하여 Gem 빌드 프로세스가 중단됩니다.(확인하려면 fix_oralib.dll 스크립트를 먼저 읽으십시오.) 실행:ruby fix_oralib.rb -a
  7. export OCI_DIR=/opt/oracle/instantclient_11_2
  8. 이제 루비-oci8 소스를 가져옵니다.git clone https://github.com/kubo/ruby-oci8.git
  9. (가 필요했습니다.git checkout ruby-oci8-2.1.2
  10. ruby-oci8/ext/oci8/oraconf.rb 파일을 편집하고 다음 행을 변경합니다.

when /darwin/ @@ld_envs = %w[DYLD_LIBRARY_PATH] so_ext = 'dylib'

대상:

when /darwin/ @@ld_envs = %w[DYLD_LIBRARY_PATH OCI_DIR] so_ext = 'dylib'

  1. 다시 합니다.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

El Capitan과 함께 MAC를 사용하는 경우 SIP(System Integrity Protection)의 최신 내장 기능으로 인해 DYLD_* 환경 변수가 무시됩니다.

따라서 El Capitan과 함께 ruby-oci8을 설치하려면 먼저 SIP를 비활성화해야 합니다.

SIP를 사용하지 않도록 설정하려면 다음 단계를 수행합니다.

  1. Mac을 다시 시작합니다.
  2. OS X가 시작되기 전에 Command-R을 누른 상태에서 Apple 아이콘과 진행률 표시줄이 나타날 때까지 계속 누르고 있습니다.풀어주다.그러면 복구로 부팅됩니다.
  3. 유틸리티 메뉴에서 터미널을 선택합니다.
  4. 프롬프트에서 다음을 정확히 입력한 다음 Return: csrutil disable을 누릅니다.
  5. 터미널에 SIP가 비활성화되었다는 메시지가 표시되어야 합니다.
  6.  메뉴에서 다시 시작을 선택합니다.

여전히 문제가 발생하면 이 링크를 사용하십시오. http://blog.codiez.co.za/2013/09/setup-oracle-instant-client-ruby-oci8-gem-mac/

오류 메시지는 다소 장황하지만 기본적으로 Oracle Client 라이브러리를 설치하고 다음을 지시해야 합니다.DYLD_LIBRARY_PATH해당 위치에 대한 변수입니다.

이것은 고통스러워 보였습니다.(적어도 Mac OS에서는) 이 문제를 해결할 수 있는 더 나은 방법을 찾은 것 같습니다.

다음 brew 명령을 실행하기만 하면 됩니다.

brew tap InstantClientTap/instantclient
brew install instantclient-basic
brew install instantclient-sqlplus
brew install instantclient-sdk

웹 사이트에서 32비트 Linux용 Oracle 인스턴트 클라이언트 버전 11.2를 다운로드하는 것으로 시작합니다.버전 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 셸에 오라클 클라이언트의 위치를 알려줘야 합니다.숨겨진 파일을 보고 텍스트 편집기로 $home/.bashrc를 열 수 있습니다.파일의 맨 아래에 다음 행을 추가한 후 저장합니다.

export LD_LIBRARY_PATH=/opt/oracle/instantclient_11_2

-이제 source .bashrc에서 터미널에 다음 명령을 사용하여 새 설정을 로드합니다.

source ~/.bashrc

-이제 모든 것을 올바르게 수행했다면 Oracle 데이터베이스 어댑터 gem을 설치할 수 있을 것입니다.다음 명령을 사용하여 사용해 보십시오.

gem install ruby-oci8 -v '2.1.5'

어떤 이유에서인지 ruby-oci8이 인스턴트 client_11_2와 함께 설치되지 않았습니다.저는 이곳과 다른 곳에서 제안된 모든 답을 시도했지만 그것을 할 수 없었습니다.나중에 인스턴트 클라이언트 12_1로 시도해보니 문제없이 작동했습니다.

Ruby-oci8 for CENTOS7 설치의 업데이트된 버전

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'

bash 대신 zsh를 사용하는 사람들은 여전히 Etusm의 대답을 따르지만, 8단계와 9단계에서 다음으로 대체합니다.

8. export DYLD_LIBRARY_PATH=/opt/oracle/instantclient_11_2 
9. export ORACLE_HOME=/opt/oracle/instantclient_11_2  

OS X 엘 캐피탄, 요세미티, 매버릭스를 사용하는 경우.Oracle 웹 사이트에서 Instant Client 12.1.0.2 다운로드를 사용해야 합니다.

  1. instantclient-basic-basic.x64-12.1.0.2.0.zip
  2. instantclient-sqlplus-sqlplus.x64-12.1.0.2.0.zip
  3. instantclient-interval-interval.x64-12.1.0.2.0.zip

그런 다음 다음 단계를 수행합니다.

  1. /opt/oracle에서 디렉토리 생성
  2. 먼저 인스턴트 클라이언트-basic 압축을 풀고 /opt/oracle로 이동합니다(폴더를 추가해야 함 -).
    /opt/sshd/sshdclient_12_1/과 같은 것.
  3. instantclient-sdk의 압축을 풀고 내용을 /opt/oracle/instantclient_12_1/로 이동합니다.
  4. instantclient-sqlplus의 압축을 풀고 내용을 이동합니다. /opt/oracle/instantclient_12_1/
  5. 터미널을 열고(아직 열지 않은 경우) 입력...

DYLD_LIBRARY_PATH=/opt/oracle/instantclient_12_1 내보내기 DYLD_LIBRARY_PATH ORACLE_HOME=/opt/oracle/instantclient_12_1 내보내기 ORACLE_HOME

  1. cd /opt/sys/sysclient_12_1

ln -slibclntsh.dylib.12.1 libclntsh.dylib(심볼 링크 포함)

ln -slibocci.dylib.12.1 libocci.dylib

  1. 실행: env
    1. DYLD_LIBRARY_PATH=/opt/oracle/instantclient_11_2를 확인합니다.
      추적 없음/instantclient_11_2 이후) ORACLE_HOME=/opt/oracle/instantclient_11_2 확인
    2. gem 설치 루비-oci8-vgemVersion

참고:- 그래도 Mac에서 SIP를 비활성화해도 작동하지 않으면 다시 시도하십시오.

그것이 당신에게도 효과가 있기를 바랍니다. 행운을 빌어요.

언급URL : https://stackoverflow.com/questions/11894194/how-to-install-ruby-oci8