web-dev-qa-db-ja.com

OS X MavericksへのRODBC / ROracleパッケージのインストール

RODBC、ROracle、RGtk2などのいくつかのパッケージをインストールしようとしています-ガラガラに使用されます。誰かがこの問題を回避するのを手伝ってくれて、mavericksと3.1.1 Rを備えたMacでこれらのアプリケーションを使用できるようにしていただければ幸いです

RODBCとRGtk2の両方でこの種のエラーが発生します。

パッケージ ‘RGtk2’はソースパッケージとして使用できますが、install.packagesのバイナリ警告としては使用できません:パッケージ ‘RGtk2’は使用できません(Rバージョン3.1.1の場合)

Type = 'source'を使用しようとすると、ダウンロードまたはダウンロードを開始できますが、次のようなエラーメッセージが表示されます...

Install.packagesでの警告:パッケージ「RODBC」のインストールでゼロ以外の終了ステータスが発生しました

20
runningbirds

この回答では、RODBCとROracleをOS Xにインストールする方法について説明します。

両方のパッケージをソースからビルド(コンパイル)する必要があります。つまり、最初に必要なのは、XCodeと関連する「コマンドラインツール」をダウンロードして、実際にコンパイラーを持つようにすることです。これを行う方法は、基本的にOS X/XCodeのすべてのバージョンで変更されていますが、グーグルを開始すると、おそらく着陸します here

それができたら...

[〜#〜] rodbc [〜#〜]

OS X 10.9(Mavericks)以降Apple iODBC SQLヘッダーファイルと、OS XのRユーザーがソースからRパッケージをビルドするためにインストールするのに慣れている「コマンドラインツール」を含むことを停止。

したがって、この時点でMavericksのソースからRODBCを構築しようとすると、次のようなエラーが発生します。

構成:エラー:「ODBCヘッダーsql.hおよびsqlext.hが見つかりません」

これを修正するには、最新バージョンのiODBC(www.iodbc.org)をダウンロードし、ファイルを解凍して、ヘッダーとライブラリの検索パスを解凍したパッケージを配置した場所に設定する必要があります。検索パスの設定方法がわからない場合は、ヘッダーファイル(sql.hおよびsqlext.h)を_/usr/include_ディレクトリに配置し、_libiodbc.a_ファイルを_/usr/lib_ディレクトリ。

その後、あなたはできるはずです

_install.packages("RODBC",type = "source")
_

問題なく。おそらく、これは他の主要なオープンソースODBCプロジェクト、unixODBCでも同様に機能しますが、私は試していません。

私はこれを(そして別の答えで自家製の方法を)El Capitanでテストしましたが、どちらもまだ動作します。

ROracle

これはもっと複雑です。ただし、ROracleはOS Xにインストールできます(El Capitanを通じてMountain Lionでテストしました)。 ROracleはOracle Instant Clientに依存しているため、どのプラットフォームでも使用できるバイナリはありません。パッケージの詳細なインストール手順 here があります。

OS Xの場合、(ほとんど)Linuxの指示に従う必要があります。

まず、Linuzの指示に従って、適切な Oracle Instant Client とSDKをダウンロードします。

Linuxのインストール手順では、すべてを「適切な場所」に配置するRPMからのクライアントのインストールについて説明しています。 OS Xにも適用できるかどうかわからなかったため、作成したディレクトリにクライアントを解凍し、SDKをそのディレクトリ内の_/sdk_に配置しました。

Linuxのインストール手順では、libclntsh.so.11.1のシンボリックリンクを作成するように指示しています。これはOS Xなので、実際にはlibclntsh.dylib.11.1と呼ばれます。したがって、クライアントを解凍したディレクトリにcdしてから実行する必要があります。

_ln -s libclntsh.dylib.11.1 libclntsh.dylib
_

OS Xでは、次に_DYLD_LIBRARY_PATH_ではなく_LD_LIBRARY_PATH_を設定します。

_export DYLD_LIBRARY_PATH=/scratch/instantclient_11_2:$DYLD_LIBRARY_PATH
_

マシンに適したパスを使用します。

ROracleに_OCI_LIB_環境変数を使用してコンパイルさせることはできませんでした。代わりに、_--with-oci-lib_コンパイラフラグオプションを使用しました。

_R CMD INSTALL --configure-args='--with-oci-lib=/scratch/instantclient_11_2' ROracle_1.1-11.tar.gz
_

ここでも、適切なパスとROracleバージョン番号を使用します。

Tnsnames.oraファイルを使用してOracleデータベースに接続する場合は、TNS_ADMIN環境変数を設定して、そのファイルの場所を指すようにする必要もあります。

最後にもう1つ、コマンドライン(ターミナルなど)からRを起動した場合にのみ機能することがわかります(私が行ったように)。具体的には、GUIからRGui.appまたはRStudio.appを起動してlibrary(ROracle)を実行しようとすると、次のようなエラーメッセージが表示されます。

_> library("ROracle")
Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/Library/Frameworks/R.framework/Versions/3.1/Resources/library/ROracle/libs/ROracle.so':
  dlopen(/Library/Frameworks/R.framework/Versions/3.1/Resources/library/ROracle/libs/ROracle.so, 6): Library not loaded: /ade/b/3071542110/Oracle/rdbms/lib/libclntsh.dylib.11.1
  Referenced from: /Library/Frameworks/R.framework/Versions/3.1/Resources/library/ROracle/libs/ROracle.so
  Reason: image not found
Error: package or namespace load failed for ‘ROracle’
_

これは、Sys.getenv("DYLD_LIBRARY_PATH")が正しいパスを忠実に報告している場合でも発生します。

しばらくの間、起動時にRStudio/RGuiを起動するシェルスクリプトを作成する "ソリューション"を一緒にハッキングしました。

_open -a R.app
open -a RStudio.app
_

問題は明らかに、OS XでGUI起動アプリケーションが環境変数を利用できるようにする方法に関係しています。通常そうであるように、最終的に StackOverflow で解決策を見つけました。 _/etc/launchd.conf_ファイルを編集してこの問題を解決したため、RStudio/RGuiがFinderから起動された場合でも、ROracleがロードされるようになりました。ただし、 ここ は、ヨセミテでは_/etc/launchd.conf_ソリューションがサポートされなくなったことに注意してください。その答えは、起動時にlaunchctlの環境を設定するためだけに起動plistファイルを設定する必要があることを示唆しています。

Elapitan Update for ROracle

エルキャピタンのこの1つでるつぼを試してみましたが、上記のように機能しますが、最初にシステム整合性保護を無効にした場合のみです!それを行うのはかなり迅速であり、指示はGoogleを介して簡単に見つけることができます。

ふew。

30
joran

あなたが自作したなら、それは簡単でしょう。端末で、使用

brew install unixodbc

Rコンソールで、

install.packages("RODBC",type="source")

それが役に立てば幸い

24
kaboom

MacPortsを使用している場合は、次のようにします。

Sudo port install unixODBC

次に、ホームディレクトリにファイルを作成します(存在する場合は編集します)。

~/.R/Makevars

行を含む必要があります

CFLAGS += -I/opt/local/include

次に、RODBCをインストールします。

install.packages("RODBC",type="source")

基本的に、上記

  • 必要なライブラリとヘッダーファイルをインストールします
  • それらを見つける場所をRに指示します
  • RODBCをインストールします。
2
roffe

ソースから手動でパッケージをビルドする必要があります。 [〜#〜] rodbc [〜#〜] サイトにアクセスすると、バイナリがMavericksで使用できないことがわかります。パッケージをダウンロードし、ソースからパッケージをビルドするための指示に従います。 これらはWindowsの手順です ですが、一般的な考え方は同じです。特定のパッケージのビルドプロセス中に使用されるすべての必要なOSパッケージが必要になります。

0
Roman Luštrik