RODBC、ROracle、RGtk2などのいくつかのパッケージをインストールしようとしています-ガラガラに使用されます。誰かがこの問題を回避するのを手伝ってくれて、mavericksと3.1.1 Rを備えたMacでこれらのアプリケーションを使用できるようにしていただければ幸いです
RODBCとRGtk2の両方でこの種のエラーが発生します。
パッケージ ‘RGtk2’はソースパッケージとして使用できますが、install.packagesのバイナリ警告としては使用できません:パッケージ ‘RGtk2’は使用できません(Rバージョン3.1.1の場合)
Type = 'source'を使用しようとすると、ダウンロードまたはダウンロードを開始できますが、次のようなエラーメッセージが表示されます...
Install.packagesでの警告:パッケージ「RODBC」のインストールでゼロ以外の終了ステータスが発生しました
この回答では、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。
あなたが自作したなら、それは簡単でしょう。端末で、使用
brew install unixodbc
Rコンソールで、
install.packages("RODBC",type="source")
それが役に立てば幸い
MacPortsを使用している場合は、次のようにします。
Sudo port install unixODBC
次に、ホームディレクトリにファイルを作成します(存在する場合は編集します)。
~/.R/Makevars
行を含む必要があります
CFLAGS += -I/opt/local/include
次に、RODBCをインストールします。
install.packages("RODBC",type="source")
基本的に、上記
ソースから手動でパッケージをビルドする必要があります。 [〜#〜] rodbc [〜#〜] サイトにアクセスすると、バイナリがMavericksで使用できないことがわかります。パッケージをダウンロードし、ソースからパッケージをビルドするための指示に従います。 これらはWindowsの手順です ですが、一般的な考え方は同じです。特定のパッケージのビルドプロセス中に使用されるすべての必要なOSパッケージが必要になります。