Невозможно скомпилировать xps после установки ROOT, отсутствуют библиотеки

Я пытаюсь установить xps в R и установил ROOT из CERN.

во время компиляции я получаю:

TMLMath.cxx:51:19: fatal error: TMath.h: No such file or directory

 #include "TMath.h"
                   ^
compilation terminated.
make: *** [TMLMath.o] Error 1
ERROR: compilation failed for package ‘xps’

Я попытался добавить этот файл вручную, затем потребовался другой, затем еще один ... пока ошибка не заключалась не только в отсутствии файлов, но и в переопределении вещей (см. примечания здесь), и снова не удалось выполнить компиляцию.

Мои данные ROOT:

Version   5.34/14  16 December 2013
ROOT 5.34/14 (heads/v5-34-00-patches@v5-34-13-131-gd110ad3, Jan 07 2014, 00:12:00 on linuxx8664gcc)

CINT/ROOT C/C++ Interpreter version 5.18.00, July 2, 2010
whereis root
root: /usr/bin/root /usr/bin/root.exe /etc/root /usr/bin/X11/root /usr/bin/X11/root.exe /usr/include/root /usr/share/root /usr/share/man/man1/root.1.gz

Я попытался make uninstall использовать только что загруженную версию root, и, возможно, тревожно, что ничего не вышло (я удалил папку, в которой изначально make находился)

Я предполагаю, что, возможно, в моей версии ROOT отсутствуют некоторые из них, потому что xps полагается на более старую версию ROOT? Однако в руководстве указана очень недавняя дата, так что это не значит, что это запущенное программное обеспечение (если я правильно понимаю) ...

ROOT установлен нормально, и были установлены все необходимые компоненты:

sudo apt-get install build-essential dpkg-dev make g++ gcc binutils libx11-dev libxpm-dev libxft-dev libxext-dev gfortran libssl-dev libpcre3-dev libglu1-mesa-dev libglew-dev libftgl-dev libmysqlclient-dev libfftw3-dev libcfitsio3-dev graphviz-dev libavahi-compat-libdnssd-dev libldap2-dev python-dev libxml2-dev libkrb5-dev libgsl0-dev libqt4-dev xfs xfstt t1-xfree86-nonfree ttf-xfree86-nonfree ttf-xfree86-nonfree-syriac xfonts-75dpi xfonts-100dpi

Любая помощь будет принята с благодарностью, пожалуйста, дайте мне знать, если я должен предоставить более подробную информацию о моей системе.

Полный вывод от установки Bioconductor:

> biocLite('xps')
BioC_mirror: http://bioconductor.org
Using Bioconductor version 3.0 (BiocInstaller 1.16.1), R version 3.1.2.
Installing package(s) 'xps'
trying URL 'http://bioconductor.org/packages/3.0/bioc/src/contrib/xps_1.26.0.tar.gz'
Content type 'application/x-gzip' length 6669399 bytes (6.4 Mb)
opened URL
==================================================
downloaded 6.4 Mb

* installing *source* package ‘xps’ ...
checking for gcc... gcc -std=gnu99
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc -std=gnu99 accepts -g... yes
checking for gcc -std=gnu99 option to accept ANSI C... none needed
checking how to run the C preprocessor... gcc -std=gnu99 -E
checking for gcc... (cached) gcc -std=gnu99
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc -std=gnu99 accepts -g... (cached) yes
checking for gcc -std=gnu99 option to accept ANSI C... (cached) none needed
found ROOT version 5.34/14 in directory /usr
** libs
** arch - 
g++ -I/usr//include -O2 -Wall -fPIC -pthread -m64 -I/usr/include/root -c TMLMath.cxx
TMLMath.cxx:51:19: fatal error: TMath.h: No such file or directory
 #include "TMath.h"
                   ^
compilation terminated.
make: *** [TMLMath.o] Error 1
ERROR: compilation failed for package ‘xps’
* removing ‘/home/louis/R/x86_64-pc-linux-gnu-library/3.1/xps’

The downloaded source packages are in
    ‘/tmp/RtmpZVOlbW/downloaded_packages’
Warning message:
In install.packages(pkgs = pkgs, lib = lib, repos = repos, ...) :
  installation of package ‘xps’ had non-zero exit status

Изменить: я следил за изменениями переменной ROOTSYS перед запуском R:

export ROOTSYS=/usr/
export "PATH=$ROOTSYS/bin:$PATH"

Изначально я использовал ROOTSYS=/usr/include/root, и именно там я нахожу программу с whereis root. Однако это дает другую ошибку - /usr/bin/root/include not a directory. Следовательно, используя ROOTSYS=/usr ...

> source("http://bioconductor.org/biocLite.R")
Bioconductor version 3.0 (BiocInstaller 1.16.1), ?biocLite for help
> biocLite('xps')
BioC_mirror: http://bioconductor.org
Using Bioconductor version 3.0 (BiocInstaller 1.16.1), R version 3.1.2.
Installing package(s) 'xps'
trying URL 'http://bioconductor.org/packages/3.0/bioc/src/contrib/xps_1.26.0.tar.gz'
Content type 'application/x-gzip' length 6669399 bytes (6.4 Mb)
opened URL
==================================================
downloaded 6.4 Mb

* installing *source* package ‘xps’ ...
checking for gcc... gcc -std=gnu99
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc -std=gnu99 accepts -g... yes
checking for gcc -std=gnu99 option to accept ANSI C... none needed
checking how to run the C preprocessor... gcc -std=gnu99 -E
checking for gcc... (cached) gcc -std=gnu99
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc -std=gnu99 accepts -g... (cached) yes
checking for gcc -std=gnu99 option to accept ANSI C... (cached) none needed
found ROOT version 5.34/14 in directory /usr
** libs
** arch - 
g++ -I/usr/bin/root/include -O2 -Wall -fPIC -pthread -m64 -I/usr/include/root -c TMLMath.cxx
cc1plus: error: /usr/bin/root/include: Not a directory
make: *** [TMLMath.o] Error 1
ERROR: compilation failed for package ‘xps’
* removing ‘/home/louis/R/x86_64-pc-linux-gnu-library/3.1/xps’

The downloaded source packages are in
    ‘/tmp/Rtmpc9EO9W/downloaded_packages’
Warning messages:
1: In install.packages(pkgs = pkgs, lib = lib, repos = repos, ...) :
  installation of package ‘xps’ had non-zero exit status
2: installed directory not writable, cannot update packages 'maptools'

person Louis Maddox    schedule 04.02.2015    source источник
comment
Вы следовали этим инструкциям, особенно переменной оболочки ROOTSYS?   -  person    schedule 04.02.2015
comment
Ах, ну да, они не работали странно, посмотрите, пожалуйста, только что сделанное мной изменение - в этом случае каталог вообще не находит, поэтому я просто установил ROOTSYS на /usr/ ... Не думаю, что я установил это перед установкой самого ROOT (который, похоже, работает)   -  person Louis Maddox    schedule 04.02.2015
comment
Сообщение об ошибке /usr/bin/root/include: Not a directory означает, что компилятор пытается войти в этот каталог, которого не существует. Например, каков результат выполнения locate TMLMath.h или аналогичной команды?   -  person    schedule 04.02.2015
comment
locate TMLMath.h ничего не возвращает, locate TMath.h выдает мою папку загрузок ... ~/Downloads/root-6.02.04/include/TMath.h ~/Downloads/root-6.02.04/math/mathcore/inc/TMath.h   -  person Louis Maddox    schedule 04.02.2015
comment
Тогда ROOT не выглядит правильно установленным.   -  person    schedule 04.02.2015


Ответы (1)


Как указано в комментариях выше, ROOT был установлен неправильно - со мной только что связался кто-то с той же проблемой, думая, что она не решена (я оставил заметки о решении здесь, а не на этот вопрос). Я знаю С.О. политика заключается в том, чтобы включать исправление, а не ссылаться на него, поэтому я вставляю его под следующим разделителем раздела. Предположительно, я бы сказал, что совет, данный по использованию v5.34.24, а не в производственной среде, все еще должен применяться (возможно, это будет где-то указано, или кто-то может снова связаться с сопровождающим). [Я удалил раздел о ручном исправлении, которое не сработало]


Предпосылки

(Из блога Елены Граверини)

Предпосылки:

sudo apt-get install build-essential git subversion dpkg-dev make g++ gcc binutils libx11-dev libxpm-dev libxft-dev libxext-dev

Необязательные (рекомендуемые) предварительные условия:

sudo apt-get install gfortran libssl-dev libpcre3-dev libglu1-mesa-dev libglew-dev libftgl-dev libmysqlclient-dev libfftw3-dev libcfitsio3-dev graphviz-dev libavahi-compat-libdnssd-dev libldap2-dev python-dev libxml2-dev libkrb5-dev libgsl0-dev libqt4-dev

Установите сервер шрифтов и шрифты для ROOT:

sudo apt-get install xfs xfstt
sudo apt-get install t1-xfree86-nonfree ttf-xfree86-nonfree ttf-xfree86-nonfree-syriac xfonts-75dpi xfonts-100dpi

Установка

  • Find the pro (production) version number on root.cern.ch
    • The developer of xps recommends 5.34.24 as of February 4th 2015
  • Загрузите файл source.tar.gz по адресу ftp://root.cern.ch/root/ root_v5.34.24.source.tar.gz
  • Не устанавливайте в /usr/ каталог (xps советы разработчика по электронной почте), как предлагают многие доступные руководства.
gzip -dc root_v5.34.24.source.tar.gz | tar -xf -
mv root ~
cd ~/root
./configure --all
make -j N

где N - количество ядер ЦП на вашем компьютере (cat /proc/cpuinfo | grep 'cpu cores')

  • For Ubuntu 14.04 run: sudo mkdir /usr/include/freetype && sudo cp /usr/include/freetype2/freetype.h /usr/include/freetype/freetype.h
    • If you're uninstalling don't forget to take this out too

Удаление версии ROOT для Ubuntu устраняет ld ошибки в make

sudo apt-get purge root-system root-system-bin root-system-common export ROOTSYS=/home/louis/root

Повторный запуск make с config, поскольку ./configure --prefix=/home/louis/ работает

  • Я думаю, что флаг префикса эквивалентен установке переменной ROOTSYS до make (я использовал несколько направляющих и забыл установить его, но он работал независимо)
  • Установка CERN ROOT со страницы источника отмечает, что make install является "NOOP "... но он не устанавливается, если вы не запустите его после make, так что сделайте это в любом случае

Последний шаг - добавить $ ROOTSYS / bin в PATH - добавить source ~/bin/thisroot.sh в ваш ~/.bashrc (при условии, что ваш .bashrc уже загружен в новые терминалы)

  • Для меня ROOTSYS теперь устанавливается в оболочках. xps README предлагает вам установить его, но PATH не , поэтому я добавил в свой .bashrc следующее:
export PATH=$ROOTSYS/bin:$PATH
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH

ROOT теперь должен работать и компилировать _22 _...

  • По какой-то причине LD_LIBRARY_PATH не устанавливается, а PATH ...? .bashrc в остальном работает так, как ожидалось.
cd $ROOTSYS/tutorials`
root
root [0] .x demos.C

Если ошибок нет, ROOT работает.

Установка xps

Я ожидал, что biocLite ('xps') выйдет из строя, поскольку двоичный файл был создан с помощью ROOT v.5.34.05 ... но v5.34.24 был рекомендован сопровождающим, поэтому попробуйте все равно:

source("http://bioconductor.org/biocLite.R")
biocLite("xps")

и это работает :-)

  • Также можно загрузить из источника и обойти Bioconductor, запустив R CMD INSTALL xps_1.26.0.tar.gz
  • RootTalk Дискуссионные форумы (включая поддержку ROOT forum): https://root.cern.ch/phpBB3/
person Louis Maddox    schedule 06.06.2016