0

以下のシナリオを考えてみましょう。R2.14.0にパッケージ「RMySQL」を追加

> install.packages('RMySQL',type='source')


* installing *source* package 'RMySQL' ...
** package 'RMySQL' successfully unpacked and MD5 sums checked
**checking for $MYSQL_HOME... C:/wampp/mysql/**

gcc  -I"G:/PROGRA~1/R/R-214~1.0/include" -I"C:/wampp/mysql/"/include    -I"d:/RCompile/CRANpkg/extralibs/local/include"     -O3 -Wall  -std=gnu99 -mtune=core2 -c RS-DBI.c -o RS-DBI.o
gcc  -I"G:/PROGRA~1/R/R-214~1.0/include" -I"C:/wampp/mysql/"/include    -I"d:/RCompile/CRANpkg/extralibs/local/include"     -O3 -Wall  -std=gnu99 -mtune=core2 -c RS-MySQL.c -o RS-MySQL.o
gcc -shared -s -static-libgcc -o RMySQL.dll tmp.def RS-DBI.o RS-MySQL.o -Ld:/RCompile/CRANpkg/extralibs/local/lib C:/wampp/mysql//lib/opt/libmysql.lib -LG:/PROGRA~1/R/R-214~1.0/bin/i386 -lR
installing to G:/Program Files/R/R-2.14.0/library/RMySQL/libs/i386
** R
** inst
** preparing package for lazy loading
Creating a generic function for 'format' from package 'base' in package 'RMySQL'
Creating a generic function for 'print' from package 'base' in package 'RMySQL'
** help
*** installing help indices
** building package indices ...
** testing if installed package can be loaded
Error : .onLoad failed in loadNamespace() for 'RMySQL', details:
  call: i$Location
  error: $ operator is invalid for atomic vectors
Error: loading failed
Execution halted
ERROR: loading failed
* removing 'G:/Program Files/R/R-2.14.0/library/RMySQL'

失敗したインストールのアイデアや説明はありますか? プラットフォームの詳細:

  1. ウィンXP
  2. R2.14.0
  3. RMySQL_0.9-3.tar.gz
  4. mysql_home ディレクトリの下のそれぞれのディレクトリに lib およびヘッダー ファイルを含む、最新の xampp インストールからの MySQL。
4

1 に答える 1

1

最新バージョンの MySQL のレジストリの性質とパッケージ内のコードの間に不一致があります。

tar.gz ファイル内には、次のコードを含む R ファイル "\RMySQL_0.9-3.tar\RMySQL\R\zzz.R" があります。

# check registry
if (!dir.exists(mysql)) {
    reg <- utils::readRegistry("SOFTWARE\\MySQL AB", hive="HLM", maxdepth=2)
    for (i in reg){
    mysql <- i$Location
    if (dir.exists(mysql)) {
        if (verbose) cat(mysql, "found in registry\n")
        break
    }
    }
}

以前は「reg」の各要素がリストでしたが、最初の要素がベクトルになりました。これは、「mysql <- i$Location」ステートメントが失敗し、観察したエラー メッセージが作成されることを意味します。

行を変更して、レジストリの最初の要素をスキップするようにステートメントを変更しました

for (i in reg){

for (i in reg[-1]){

ローカルで変更された tarball で install.packages を実行してインストールします。

于 2013-10-22T20:17:06.930 に答える