Предупреждающее сообщение при открытии RStudio или консоли R

Недавно я установил Microsoft R Open 3.3.1 на свой MacBook Pro (El Capitan 10.11.6). Когда я открываю RStudio или использую консоль R, я получаю это предупреждающее сообщение:

Warning message:
In doTryCatch(return(expr), name, parentenv, handler) :
  unable to load shared object '/Library/Frameworks/R.framework/Resources/modules//R_X11.so':
  dlopen(/Library/Frameworks/R.framework/Resources/modules//R_X11.so, 6): Symbol not found: _CGBitmapContextCreate
  Referenced from: /Library/Frameworks/R.framework/Resources/modules//R_X11.so
  Expected in: flat namespace
 in /Library/Frameworks/R.framework/Resources/modules//R_X11.so

Знаете ли вы способ предотвратить печать сообщения (или решить проблему)?

Спасибо!


person amarchin    schedule 21.09.2016    source источник
comment
Звучит как отличный вопрос для поддержки Microsoft. Ошибка исчезает, когда вы переключаетесь обратно на CRAN R?   -  person hrbrmstr    schedule 21.09.2016
comment
Я пробовал с версией CRAN R, и в этом случае предупреждения не было.   -  person amarchin    schedule 21.09.2016
comment
@amarchin, согласно github.com/IRkernel/IRkernel/issues/300, пожалуйста попробуйте установить XQuartz с сайта xquartz.org.   -  person jav    schedule 21.09.2016
comment
@jav, к сожалению, я уже пробовал этот вариант, но он мне не помог.   -  person amarchin    schedule 21.09.2016
comment
Я установил последнюю версию Quartz, а затем MRO. Такая же проблема 21.10.2016.   -  person JerryN    schedule 22.10.2016
comment
@amarchin ты пробовал версию Autobox?   -  person Tommaso Guerrini    schedule 22.11.2017


Ответы (2)


Для установки CRAN R я вижу, что R_X11.so ссылается на следующие библиотеки:

kevin@MBP:/Library/Frameworks/R.framework/Resources/modules
$ otool -L R_X11.so
R_X11.so:
        R_X11.so (compatibility version 0.0.0, current version 0.0.0)
        /opt/X11/lib/libSM.6.dylib (compatibility version 7.0.0, current version 7.1.0)
        /opt/X11/lib/libICE.6.dylib (compatibility version 10.0.0, current version 10.0.0)
        /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
        /opt/X11/lib/libX11.6.dylib (compatibility version 10.0.0, current version 10.0.0)
        /opt/X11/lib/libXext.6.dylib (compatibility version 11.0.0, current version 11.0.0)
        /opt/X11/lib/libXrender.1.dylib (compatibility version 5.0.0, current version 5.0.0)
        /usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.9.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
        /usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.5)
        /opt/X11/lib/libXt.6.dylib (compatibility version 7.0.0, current version 7.0.0)
        /opt/X11/lib/libXmu.6.dylib (compatibility version 9.0.0, current version 9.0.0)
        /Library/Frameworks/R.framework/Versions/3.3/Resources/lib/libR.dylib (compatibility version 3.3.0, current version 3.3.1)
        /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 855.17.0)

Эта библиотека не ссылается на символ, который вы предлагаете:

kevin@MBP:/Library/Frameworks/R.framework/Resources/modules
$ nm R_X11.so | grep CGBitmap

Однако для установки MRO я вижу следующие библиотеки + символы:

kevin@MBP:/Volumes/Samsung 850 EVO/Library/Frameworks/R.framework/Resources/modules
$ otool -L R_X11.so
R_X11.so:
        R_X11.so (compatibility version 0.0.0, current version 0.0.0)
        /opt/X11/lib/libSM.6.dylib (compatibility version 7.0.0, current version 7.1.0)
        /opt/X11/lib/libICE.6.dylib (compatibility version 10.0.0, current version 10.0.0)
        /opt/X11/lib/libX11.6.dylib (compatibility version 10.0.0, current version 10.0.0)
        /opt/X11/lib/libXext.6.dylib (compatibility version 11.0.0, current version 11.0.0)
        /opt/X11/lib/libXrender.1.dylib (compatibility version 5.0.0, current version 5.0.0)
        /usr/lib/libexpat.1.dylib (compatibility version 7.0.0, current version 7.2.0)
        /opt/X11/lib/libXt.7.dylib (compatibility version 8.0.0, current version 8.0.0)
        /opt/X11/lib/libXmu.6.dylib (compatibility version 9.0.0, current version 9.0.0)
        /Library/Frameworks/R.framework/Versions/3.3.1-MRO/Resources/lib/libR.dylib (compatibility version 3.3.0, current version 3.3.1)
        /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1255.1.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1225.1.1)

со ссылочными символами:

kevin@MBP:/Volumes/Samsung 850 EVO/Library/Frameworks/R.framework/Resources/modules
$ nm R_X11.so | grep CGBitmap
                 U _CGBitmapContextCreate

Эти символы обычно предоставляются CoreGraphics.framework:

kevin@MBP:/System/Library/Frameworks/CoreGraphics.framework/Versions/A
$ nm CoreGraphics | grep CGBitmapContext
0000000000046321 T _CGBitmapContextCreate
< ... other symbols ... >

Однако сгенерированный MRO R_X11.so не связан с этим, поэтому поиск этих символов завершается ошибкой.

Вкратце: Microsoft поставляет вам сломанное программное обеспечение, которое не содержит ссылок на библиотеки, предоставляющие необходимые символы. Вместо этого используйте предоставленные CRAN двоичные файлы R.

person Kevin Ushey    schedule 23.09.2016

У меня тоже была проблема. Проблема была решена после установки XQuartz и повторного входа в систему.

Примечание: для использования X11 (включая tcltk) требуется установить XQuartz, поскольку он больше не является частью ОС. X. Всегда переустанавливайте XQuartz при обновлении OS X до новой основной версии.

person Zack Jhuang    schedule 24.02.2017