Пакет R geoR не будет установлен на macOS, несмотря на наличие tcl-tk в системе

Я установил R и RStudio через brew, Для проекта мне нужна функция из библиотеки R geoR который в свою очередь зависит от tcl-tk, Я также установил это с помощью brew: brew install tcl-tk, Тем не менее, пытаясь установить geoR все еще приводит к ошибке ниже - что я не понимаю. Переустановка R / RStudio не помогла. Не перезагружал мой Mac. Ох и пытаюсь установить geoR из загруженного двоичного файла из CRAN тоже не помогает... И, наконец, пытается установить tcl-tk пакет с сайта R тоже не решает эту проблему.

Я также разместил это на GitHub brew - но, возможно, другие посещают сферы Stackru.

мой brew статус

brew config
HOMEBREW_VERSION: 1.5.2
ORIGIN: https://github.com/Homebrew/brew
HEAD: 60a30e966b7cece5bd4823dae3fb981ab85106ea
Last commit: 11 days ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: 8c1c4f86a269cb23d9d92008abf1a37eabb297b6
Core tap last commit: 2 hours ago
HOMEBREW_PREFIX: /usr/local
CPU: quad-core 64-bit skylake
Homebrew Ruby: 2.3.3 => /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
Clang: 9.0 build 900
Git: 2.16.1 => /usr/local/bin/git
Curl: 7.54.0 => /usr/bin/curl
Perl: /usr/bin/perl
Python: /usr/local/opt/python/libexec/bin/python => /usr/local/Cellar/python/2.7.14_2/Frameworks/Python.framework/Versions/2.7/bin/python2.7
Ruby: /usr/bin/ruby => /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
Java: 9.0.1
macOS: 10.13.3-x86_64
Xcode: N/A
CLT: 9.2.0.0.1.1510905681
X11: 2.7.11 => /opt/X11

ОШИБКА

* installing *source* package ‘geoR’ ...
** package ‘geoR’ successfully unpacked and MD5 sums checked
** libs
clang -I/usr/local/Cellar/r/3.4.3_1/lib/R/include -DNDEBUG   -I/usr/local/opt/gettext/include -I/usr/local/opt/readline/include -I/usr/local/include   -fPIC  -g -O2  -c geoR.c -o geoR.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/Cellar/r/3.4.3_1/lib/R/lib -L/usr/local/opt/gettext/lib -L/usr/local/opt/readline/lib -L/usr/local/lib -o geoR.so geoR.o -L/usr/local/Cellar/r/3.4.3_1/lib/R/lib -lR -lintl -Wl,-framework -Wl,CoreFoundation
installing to /usr/local/lib/R/3.4/site-library/geoR/libs
** R
** data
*** moving datasets to lazyload DB
** inst
** preparing package for lazy loading
Warning: S3 methods ‘as.character.tclObj’, ‘as.character.tclVar’, ‘as.double.tclObj’, ‘as.integer.tclObj’, ‘as.logical.tclObj’, ‘as.raw.tclObj’, ‘print.tclObj’, ‘[[.tclArray’, ‘[[<-.tclArray’, ‘$.tclArray’, ‘$<-.tclArray’, ‘names.tclArray’, ‘names<-.tclArray’, ‘length.tclArray’, ‘length<-.tclArray’, ‘tclObj.tclVar’, ‘tclObj<-.tclVar’, ‘tclvalue.default’, ‘tclvalue.tclObj’, ‘tclvalue.tclVar’, ‘tclvalue<-.default’, ‘tclvalue<-.tclVar’, ‘close.tkProgressBar’ were declared in NAMESPACE but not found
Error : .onLoad failed in loadNamespace() for 'tcltk', details:
  call: fun(libname, pkgname)
  error: Tcl/Tk support is not available on this system
ERROR: lazy loading failed for package ‘geoR’
* removing ‘/usr/local/lib/R/3.4/site-library/geoR’
* restoring previous ‘/usr/local/lib/R/3.4/site-library/geoR’

The downloaded source packages are in
    ‘/private/var/folders/kh/0s66cjl5487fg_fhwgxqd2340000gn/T/RtmpooD5vJ/downloaded_packages’
Warning message:
In install.packages("geoR") :
  installation of package ‘geoR’ had non-zero exit status

2 ответа

Решение

Что ж, после долгих поисков и анализа прочитанного я нашел решение.

Здесь я добавляю некоторые сведения о том, почему мне нужно решение, и пошаговую процедуру, которую я выбрал. Обратите внимание, что это, конечно, не окончательное решение / процедура, и, возможно, некоторые шаги излишни - я позволю это другим.

Фон

Иногда данные очень искажены и содержат много "нулей" (или очень маленьких чисел, приближающихся к "нулю"). Перед анализом такие данные нуждаются в нормализации, чтобы соответствовать допущениям статистического теста ( вы можете найти больше информации о преобразовании и нормализации здесь). Обычно люди преобразуют лог-преобразование (например, натуральный логарифм или лог- 2), недостатком является то, что вы теряете "нули".

В моем случае это проблема, потому что сделанные измерения были выполнены правильно (никаких технических проблем), поэтому "ноль" действительно представляет "ноль". Другими словами: я не хочу их терять. Несколько лет назад мой коллега указал мне на * преобразование "Бокса-Кокса" ** (об этом вы можете узнать здесь), и этот метод доступен в R через geoR пакет.

Дело в том, что я использую brew установить R и многие другие пакеты / библиотеки, отсутствующие в macOS, например wget, По причинам, которые я до сих пор не понимаю - но я также понимаю, что это выходит за рамки моих возможностей кодирования - brew обычно не устанавливается R с tcl-tk пакет. И пусть это будет критической частью, в которой вы нуждаетесь geoR и, соответственно, функция boxccoxfit работать. После некоторого поиска в Google я получил некоторые подсказки, которые привели меня к (на первый взгляд) постоянному решению; обсуждение на brew сайт был критическим.

Шаг за шагом

  1. Я удостоверился, что я установил tcl-tk через brew,
    • brew install tcl-tk
    • Я убедился tcl-tk был на моем пути: echo 'export PATH="/usr/local/opt/tcl-tk/bin:$PATH"' >> ~/.bash_profile,
    • Команда wish также подтвердил это.
  2. Я также удостоверился, что правильно установил инструменты командной строки - на прошлой неделе было несколько обновлений для High Sierra, а другие сообщали о проблемах с этим, поэтому я опасался, что их придется переустанавливать. Я не должен был, но вот как я это проверил. Команда brew config показывает:

    HOMEBREW_VERSION: 1.5.2
    ПРОИСХОЖДЕНИЕ: https://github.com/Homebrew/brew
    HEAD: 60a30e966b7cece5bd4823dae3fb981ab85106ea
    Последний коммит: 13 дней назад
    Основной кран ПРОИСХОЖДЕНИЕ: https://github.com/Homebrew/homebrew-core
    Основной кран ГОЛОВКА: 8c1c4f86a269cb23d9d92008abf1a37eabb297b6
    Core tap последний коммит: 2 дня назад
    HOMEBREW_PREFIX: /usr/local
    Процессор: четырехъядерный 64-битный Skylake
    Доморощенный Рубин: 2.3.3 => /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
    Clang: 9.0 построить 900
    Git: 2.16.1 => / usr / local / bin / git
    Curl: 7.54.0 => / usr / bin / curl
    Perl: / usr / bin / perl
    Python: / usr / local / opt / python / libexec / bin / python => /usr/local/Cellar/python/2.7.14_2/Frameworks/Python.framework/Versions/2.7/bin/python2.7
    Ruby: / usr / bin / ruby ​​=> /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby Java: 9.0.1
    macOS: 10.13.3-x86_64
    Xcode: N / A
    ** CLT: 9.2.0.0.1.1510905681 **
    X11: 2.7.11 => / opt / X11

    Жирная печатная линия предполагает, что Command Line Tools должен быть установлен.

  3. Затем я дважды проверил, был ли задан путь, используя команду xcode-select -p, который показывает:

    / Library / Разработчик / CommandLineTools


  4. Также gcc правильно установлено. Я проверил это с помощью gcc --version, который показывает:

    Настраивается с помощью: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/ C++ / 4.2.1
    Apple LLVM версия 9.0.0 (clang-900.0.39.2)
    Цель: x86_64-apple-darwin17.4.0
    Модель потока: posix
    InstalledDir: / Library / Developer / CommandLineTools / usr / bin


  5. Теперь, когда я подтвердил наличие основ, я переустановил Xquartz, R а также RStudio, Чтобы убедиться, что я получаю R с tcl-tk Я использовал R версию @srfore. Это последующие команды.

    • brew cask reinstall xquartz, переустановите Xquartz, Необязательно, если он уже установлен.
    • brew reinstall -s sethrfore/homebrew-r-srf/r Установил отредактированную версию R,
    • brew cask reinstall rstudio, переустановите Rstudio, Необязательно, если он уже установлен.

  6. Все казалось хорошо, я дважды проверил с brew doctor,

    Ваша система готова заваривать.

  7. Конечно, для меня все началось с необходимости использовать функцию boxcoxfit от R пакет geoR который зависит от tcl-tk, Итак, теперь это было время показа, и я начал R:

    install.packages ("GEOR")
    Установка пакета в /usr/local/lib/R/3.4/site-library
    (поскольку "lib" не указано)
    --- Пожалуйста, выберите зеркало CRAN для использования в этом сеансе ---
    Безопасные зеркала CRAN

    Для многих, чтобы показать здесь, поэтому я удалил эту часть.

    Выбор: 1
    пробуя URL ' https://cloud.r-project.org/src/contrib/geoR_1.7-5.2.tar.gz '
    Тип контента 'application/x-gzip' длина 421612 байт (411 КБ)
    ==================================================
    скачал 411 кб

    * установка исходного пакета 'geoR'...
    ** пакет 'geoR' успешно распакован и проверены суммы MD5
    ** libs
    clang -I / usr / local / Cellar / r / 3.4.3_1 / lib / R / include -DNDEBUG -I / usr / local / opt / gettext / include -I / usr / local / opt / readline / include -I / usr / local / include -fPIC -g -O2 -c geoR.c -o geoR.o
    clang -dynamiclib -Wl, -headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined подавить -L/usr/local/Cellar/r/3.4.3_1/lib/R/lib -L/usr/local/opt/gettext/ gettext / lib -L/usr/local/opt/readline/lib -L/usr/local/lib -o geoR.so geoR.o -L/usr/local/Cellar/r/3.4.3_1/lib/R/lib -lR -lintl -Wl,-framework -Wl,CoreFoundation
    установка в /usr/local/lib/R/3.4/site-library/geoR/libs
    ** Р
    ** данные
    * перемещение наборов данных в базу данных lazyload
    ** инст
    ** подготовка пакета для ленивой загрузки
    ** Помогите
    * установка справочных индексов
    ** строительные индексы
    ** тестирование, если установленный пакет может быть загружен
    * СДЕЛАНО (geoR)

    Загруженные исходные пакеты находятся в
    '/ Частный / вар / папки / кк /0s66cjl5487fg_fhwgxqd2340000gn/T/RtmpHJHtGf/downloaded_packages'


    И загрузка geoR не было проблемой:

    библиотека ("GEOR")
    -------------------------------------------------- ------------
    Анализ геостатистических данных
    Для ознакомления с geoR перейдите по http://www.leg.ufpr.br/geoR
    geoR версия 1.7-5.2 (построена 2016-05-02) теперь загружена
    -------------------------------------------------- ------------

Это не лучшее решение, которое я собираюсь предложить, но оно решило некоторые проблемы для меня. Я участвую в совместном проекте, в котором мы хотим использовать, в частности, geoR:varcov.spatial(). Из-за проблем с xquartz и т. Д. Для пользователей Mac мы фактически извлекли функцию из исходного кода пакета и загрузили только эту функцию отдельно в отдельный скрипт. Мы все еще цитируем пакет в документе, но на самом деле мы не устанавливаем и не загружаем geoR.

Не очень хорошо, я знаю, но это казалось наименьшим количеством хлопот. Не решает всех ваших проблем, но может быть полезным аспектом для рассмотрения в качестве плана Б.

Другие вопросы по тегам