Как я могу позволить Ubuntu найти путь установки для tcl?
Я использую Ubuntu 16.04. Я пытаюсь установить пакет R tcltk
, Когда я бегу install.packages('tcltk')
Я получаю следующую ошибку:
Installing package into ‘/home/esander/R/x86_64-pc-linux-gnu-library/3.3’
(as ‘lib’ is unspecified)
--- Please select a CRAN mirror for use in this session ---
Error: .onLoad failed in loadNamespace() for 'tcltk', details:
call: fun(libname, pkgname)
error: Can't find a usable init.tcl in the following directories:
/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. Я не до конца понимаю это, но явно есть проблемы с компоновкой / установкой. Как мне найти tcl
или установить его так, чтобы появился нормальный путь установки?
2 ответа
Я ломал голову по той же проблеме. Видимо я поставил ~/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}