Вопрос или проблема
Я использую Ubuntu 16.04. Я пытаюсь установить пакет R tcltk
. Когда я запускаю install.packages('tcltk')
, я получаю следующую ошибку:
Установка пакета в ‘/home/esander/R/x86_64-pc-linux-gnu-library/3.3’
(так как ‘lib’ не указан)
--- Пожалуйста, выберите зеркала CRAN для использования в этой сессии ---
Ошибка: .onLoad не удалось в loadNamespace() для 'tcltk', детали:
вызов: fun(libname, pkgname)
ошибка: Не удается найти подходящий init.tcl в следующих каталогах:
/opt/anaconda1anaconda2anaconda3/lib/tcl8.5 ./lib/tcl8.5 ./lib/tcl8.5 ./library ./library ./tcl8.5.18/library ./tcl8.5.18/library
Первое, что мне пришло в голову, это удалить и переустановить tcl
. Я это сделал, и теперь, если я запускаю sudo apt-get install tcl
, он говорит, что установлена последняя версия (8.6.0+9). Хорошо, похоже, что R ищет tcl в странных местах (и ищет tcl 8.5), поэтому я хочу найти путь и каким-то образом связать R с ним. Но когда я запускаю whereis tcl
, я получаю:
tcl:
Похоже, Ubuntu не может найти путь установки. Я пытался найти его грубым методом, запустив find / -name tcl 2> /dev/null
, и я получил:
/usr/share/ruby-rouge/demos/tcl
/usr/share/doc/tcl
/home/esander/anaconda3/lib/python3.5/site-packages/notebook/static/components/codemirror/mode/tcl
/home/esander/anaconda3/pkgs/notebook-4.2.1-py35_0/lib/python3.5/site-packages/notebook/static/components/codemirror/mode/tcl
/home/esander/.conda/envs/my_root/lib/python3.5/site-packages/notebook/static/components/codemirror/mode/tcl
Эти места либо выглядят как документация, либо как вещи, специфичные для ipython notebooks. Я не совсем это понимаю, но явно есть проблемы с ссылками/установкой. Как мне найти tcl
или установить его так, чтобы появился нормальный путь для установки?
Я ломал голову над той же проблемой. Похоже, я установил ~/anaconda3
в качестве рабочего каталога, и это сработало! Вероятно, потому что ./lib/tcl8.5/init.tcl
теперь находится в пути.
В общем, прежде чем устанавливать стороннюю программу/пакет, вы должны проверить стандартные репозитории (universe, multiverse и т.д.) на предмет доступности или нечто эквивалентное. Для моей системы Ubuntu 20.04 это может быть r-cran-tcltk2.
Если вы устанавливаете “иностранную” программу, она может не устанавливаться в те места, где Ubuntu ожидает, что будут установлены исполняемые файлы и библиотеки. Стандартный способ справляться с этим – добавить местоположения в переменную PATH для исполняемых файлов и LD_LIBRARY_PATH для библиотек. Затем экспортируйте LD_LIBRARY_PATH, чтобы сделать его доступным для последующих команд. PATH уже был экспортирован.
Добавление нового местоположения может быть в начале или в конце существующих переменных окружения. Добавление их в начале может перебить системную программу, но, возможно, это именно то, что вам нужно – например, когда вы хотите конкретную версию компилятора, отличающуюся от поставляемой системой.
PATH=~/anaconda3/bin:${PATH}
export LD_LIBRARY_PATH=~/anaconda3/lib/tcl8.5:${LD_LIBRARY_PATH}
Ответ или решение
Если вы столкнулись с проблемой установки пакета tcltk
в R на Ubuntu 16.04, и R не может найти init.tcl
, это может быть связано с тем, что tcl
не установлен или R ищет его в неправильных директориях. Ниже приведены шаги для решения данной проблемы.
Шаг 1: Установите tcl и tk
Первым делом убедитесь, что пакеты tcl
и tk
установлены. Вы можете установить их с помощью следующей команды:
sudo apt-get update
sudo apt-get install tcl tk
После этого проверьте, установлены ли библиотеки:
dpkg -l | grep tcl
dpkg -l | grep tk
Шаг 2: Найдите пути установленных библиотек
Если у вас установлены tcl
и tk
, но R все еще не может их найти, постарайтесь локализовать файлы init.tcl
и lib
каталогов:
find /usr/lib/ -name "init.tcl"
На современных системах они, вероятнее всего, будут находиться в местах, таких как /usr/lib/x86_64-linux-gnu/tcl8.6
.
Шаг 3: Установка переменных среды
Если вы установили tcl
и tk
, но R по-прежнему не может их найти, вам может понадобиться добавить правильные пути в ваши переменные окружения. Откройте файл .bashrc
или .profile
в вашем домашнем каталоге и добавьте следующие строки:
export TCL_LIBRARY=/usr/lib/x86_64-linux-gnu/tcl8.6
export TK_LIBRARY=/usr/lib/x86_64-linux-gnu/tk8.6
После добавления этих строк сохраните файл и выполните команду:
source ~/.bashrc
или
source ~/.profile
Шаг 4: Установка пакета tcltk в R
Теперь вы можете попробовать снова установить пакет tcltk
в R:
install.packages('tcltk')
Дополнительные меры
Если вы используете Anaconda, как в упомянутых вами примерах, то, возможно, стоит использовать Anaconda для управления пакетами R. В этом случае используйте:
conda install -c r r-tcltk
или убедитесь, что пути Anaconda правильно установлены:
export PATH=~/anaconda3/bin:${PATH}
export LD_LIBRARY_PATH=~/anaconda3/lib:${LD_LIBRARY_PATH}
В зависимости от вашей конфигурации, возможно, вам придется перезапустить терминал или R после внесения изменений.
Заключение
Следуя этим шагам, вы должны избежать проблем с установкой пакета tcltk
в R на вашей системе Ubuntu. Если у вас все еще возникают проблемы, убедитесь, что ваши системные библиотеки обновлены и не конфликтуют с установленными пакетами.