Install ROOT CERN on Debian 10.3

Mar, 24/03/2020 - 20:03

Install ROOT CERN on Debian 10.3

Inviato da gala_00 0 commenti

Ciao a tutti oggi dopo molti anni aggiorno la guida per l'installazione di ROOT CERN su Debian
In particolare la guida si occupa dell'installazione base della release 6.16/00 - 2019-01-23 su Debian Buster 10.3
Il procedimento è analogo per le versioni di ROOT superiori alla release 6.14. fino alla release 19.
Oltre la release 19 viene richiesta una versione di libc6 superiore alla 2.28-10 che è dispopnibile in Sid. La release di ROOT 6.16/00 - 2019-01-23 risulta essere la più compatibli con Debian Buster 10.3

Nota introduttiva:
Attualmente non esiste un pacchetto .deb in Debian che contenga "ROOT CERN". Esiste una versione per ubunto di file binari ma non è del tutto compatibile quindi c'è da fare tutto il lavoro a mano e partire dal file sorgente.

I passi principali sono:

1) Scaricare il file sorgente
2) Installare le dipendenze
3) Preparare l'ambiente e estrarre il file sorgente
4) Configurare ROOT
5) Creare le librerie
6) Installare ROOT
7) Rendere ROOT disponibile

Introduzione:
Vi ricordo che ROOT è un framework di analisi dati molto avanzato per la gestion di grandi quantità di dati, esegue analisi statistiche, vettoriali grafiche, risoluzioni matematiche, regressioni di vario tipo, reti neurali. E' interfacciabile e richiamabile da diversi programmi come C++, Python e Ruby, in più è progettato per essere connesso alla rete di esperimenti del CERN e lavorare con altre macchine, e richiama molte funzionalità di database. Quindi necessita del supporto di molte librerie.

1) Scaricare il file sorgente

Questa è la pagina internet del CERN dove sono presenti tutte le release:
https://root.cern.ch/releases

Selezionare la versione compatibile con Debian, come suggerimento vi consiglio di far riferimento alle date di rilascio di Debian (non degli aggiornamenti) e quelle di ROOT. La data di ROOT non deve essere superiore a quella di rilascio di Debian. (ex: Debian Buster 10 rilasciata 2019-07-06, release ROOT 6.16/00 rilasciata 2019-01-23).

Una volta selezionata la release (ex:Release 6.16/00 - 2019-01-23) scarichiamo il file sorgente "root_v6.16.00.source.tar.gz" situato a metà della nuova pagina, cliccateci sopra e salvate il file sul vostro PC. Generalmente se non avete modificato le impostazione sarà scaricato in /home/utente/Scaricati

2) Installare le dipendenze

Questa è la fase più dura per cinque motivi 1) alcuni pacchetti non sono presenti nelle repository di Debian 2) alcuni pacchtti non hanno gli stessi nomi che sono riportati nella pagina del CERN 3) alcuni pacchetti hanno nomi diversi, 4) alcuni paccetti non sono essenziali per l'installazione base di ROOT 5) alcuni pacchtti fondamentali non rientrano in quelli proposti dal CERN.

L'elenco delle dipendenze lo trovate qui: https://root.cern.ch/build-prerequisites
si devono considerare quelle relative ad "Ubuntu 10, 12 , 14 and 16" che è cugino di Debian.

A questo punto la situazione si complica un pochino; nella pagina troviamo i seguenti comandi da eseguire per installare le dipendenze essenziali e quelle per la parte opzionale (si sugerisce di eseguire entambi i comandi)

Quindi da super utente eseguite nel terminale i seguenti comandi:

apt-get install git
      apt-get install dpkg-dev 
      apt-get install cmake 
      apt-get install g++ 
      apt-get install gcc 
      apt-get install binutils 
      apt-get install libx11-dev 
      apt-get install libxpm-dev 
      apt-get install libxft-dev 
      apt-get install libxext-dev

e poi

apt-get install gfortran 
      apt-get install libssl-dev libpcre3-dev
      apt-get install xlibmesa-glu-dev 
      apt-get install libglew1.5-dev 
      apt-get install libftgl-dev 
      apt-get install libmysqlclient-dev 
      apt-get install libfftw3-dev 
      apt-get install libcfitsio-dev 
      apt-get install graphviz-dev 
      apt-get install libavahi-compat-libdnssd-dev
      apt-get install libldap2-dev 
      apt-get install python-dev 
      apt-get install libxml2-dev 
      apt-get install libkrb5-dev
      apt-get install libgsl0-dev 
      apt-get install libqt4-dev

Probabilmente alcuni di questi pacchetti non saranno trovari o faranno parte di altri, non spaventiamoci. Installiamo i pacchetti che vengono suggeriti da apt-get come alternativi e lasciamo perdere quelli che non vengono trovati.

Ora aprimao "synaptic", lo troviamo sotto: "Sistema/Amministrazione/Gestore pacchetti" oppure eseguiamo il comando da terminale come super utente: synaptic-pkexec Una volta aperto inizia una fase di ricerca importante. Si devono cercare le seguenti parole chaive ed istallare i pacchetti o programmi o librerie corrispondenti se non sono già stati installati.

Essenziali
git
dpkg-dev
cmake
g++ (ROOT 6 requires g++ 4.8 or clang 3.4 for how to install g++ 4.8 on Ubuntu 12)
clang
gcc
binutils
libx11-dev e libX11.so
libxpm-dev e libXpm.so
libxft-dev e Xft.h e libXft.so
libxext-dev e shape.h e libXext.so
libpng
libjpeg
python (ROOT6 requires version >= 2.7)

Opzionali

gfortran
openssl-dev e libssl-dev e pem.h e libssl e libcrypto.so
libpcre3-dev e pcre-config
xlibmesa-glu-dev e GL e libGL
libglew1.5-dev e glew e libGLEW
libftgl-dev e pkg-config
libmysqlclient-dev e mysql_config
libfftw3-dev e fftw3 e libfftw3
libcfitsio-dev e fitsio2 e libcfitsio
graphviz-dev e gvc e libgvc
libavahi-compat-libdnssd-dev e dns_sd libdns_sd
libldap2-dev e ldap libldap
python-dev e python2.7 e Python e libpython2.7
python-numpy-dev e PyMVA
libxml2-dev e exml2-config
libkrb5-dev e krb5.h e libkrb5.so
libgsl0-dev e gsl e gsl_version e libgsl
libqt4-dev e Qt e qglobal.h e libQtCore
r-base e Rcpp e RInside

La lista è lunga e si deve andare un po' a sensazione, ma in un primo momento installate solo quello che trovate che corrisponde ai nomi della lista.

3) Preparare l'ambiente e estrarre il file sorgente

L'ambiente per installare ROOT lo si può preparare in vari modi, per motivi di continuità con la guida precedente useremo la stessa tecnico.

Come utente normale digitate i seguenti comandi da terminale.
nella vostra home
mkdir ROORSYS // per generare la directory di lavoro
cd ROOTSYS
mkdir root
Poi recuperiamo il sorgente
cd ../Scaricati
mv root_v6.16.00.source.tar.gz ../ROOTSYS
cd ../ROOTSYS
Estraiamo i file sorgenti
tar -xzvf root_v6.16.00.source.tar.gz
Viene creata la directory "root-6-16.00", entriamoci e copiamo il contenuto nella directory "root" che abbiamo creato.
cd root-6-16.00
cp -r * ../root
Ora troviamo la guida per l'installazione di ROOT nella dir "README" il file è "INSTALL"
Quindi usimao un editor di testo (ex pluma, gedit, nedit ....) per aprirla, da terminale eseguiamo.
pluma README/INSTALL &
Poi
cd ../root

4) Configurare ROOT

La procedura di installazione prevede due metodi, qui seguiamo il secondo, paragrafo 3.2. "Fixed location build"

Riportiamo ora il testo di INSTALL per l'installazione:

Citazione:


1) Get the sources of latest ROOT (see above)

2) Now type the build commands:
mkdir
cd
cmake ../root -DCMAKE_INSTALL_PREFIX= -Dgnuinstall=ON
cmake --build . [ or simply "make -j" on Unix systems ]
cmake --build . --target install [ or simply "make install" on Unix systems ]

3) Update the ldconfig cache by doing:
ldconfig

4) try running root:
root

Vediamo che il primo punto lo abbiamo fatto e abbiamo crerato anche la directory di "build" (ROOTSYS/root) dove ci troviamo ora con il terminale.
La guida di ROOT suggerisce di usare come "fixed location" il percorso '/usr/local/bin' o `/usr/bin' noi useremo '/usr/local' in quanto la dir 'bin' è già presente.

Modifichiamo il comando di configurazione per le nostre esigenze ed eseguiamolo come utente normale

cmake ../root-6-16.00 -DCMAKE_INSTALL_PREFIX=/usr/local/ -Dgnuinstall=ON

Per attivare le varie opzioni proposte da ROOT inserite in coda al comando precedente il segunete pezzo di codice -D<nome_opzione>=ON si vede la pagina: https://root.cern.ch/building-root punto "Build Options"

L'output del comando è il segunete:

-- The C compiler identification is GNU 8.3.0
-- The CXX compiler identification is GNU 8.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: /usr/bin/git (found version "2.20.1") 
-- ROOT default compression algorithm: zlib
-- Found GCC. Major version 8, minor version 8
-- Performing Test HAS_CXX11
-- Performing Test HAS_CXX11 - Success
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Found a 64bit system
-- Found GNU compiler collection
-- Performing Test GLIBCXX_USE_CXX11_ABI
-- Performing Test GLIBCXX_USE_CXX11_ABI - Success
-- ROOT Platform: linux
-- ROOT Architecture: linuxx8664gcc
-- Build Type: RelWithDebInfo
-- Compiler Flags:  -Wno-implicit-fallthrough -Wno-noexcept-type -pipe -m64  -Wshadow -Wall -W -Woverloaded-virtual -fsigned-char -pthread -std=c++11 -DR__HAVE_CONFIG 
-- Looking for ZLib
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11") 
-- Looking for Freetype
-- Found Freetype: /usr/lib/x86_64-linux-gnu/libfreetype.so (found version "2.9.1") 
-- Looking for PCRE
-- Found PCRE: /usr/include  
-- Looking for LZMA
-- Found LZMA includes at /usr/include
-- Found LZMA library at /usr/lib/x86_64-linux-gnu/liblzma.so
-- Looking for xxHash
-- Could NOT find xxHash (missing: xxHash_LIBRARY xxHash_INCLUDE_DIR) 
-- xxHash not found. Switching on builtin_xxhash option
-- Looking for LZ4
-- Could NOT find LZ4 (missing: LZ4_LIBRARY LZ4_INCLUDE_DIR) 
-- LZ4 not found. Switching on builtin_lz4 option
-- Looking for X11
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib/x86_64-linux-gnu/libX11.so
-- X11_INCLUDE_DIR: /usr/include
-- X11_LIBRARIES: /usr/lib/x86_64-linux-gnu/libSM.so;/usr/lib/x86_64-linux-gnu/libICE.so;/usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- X11_Xpm_INCLUDE_PATH: /usr/include
-- X11_Xpm_LIB: /usr/lib/x86_64-linux-gnu/libXpm.so
-- X11_Xft_INCLUDE_PATH: /usr/include
-- X11_Xft_LIB: /usr/lib/x86_64-linux-gnu/libXft.so
-- X11_Xext_INCLUDE_PATH: 
-- X11_Xext_LIB: /usr/lib/x86_64-linux-gnu/libXext.so
-- Found GIF: /usr/lib/x86_64-linux-gnu/libgif.so (found version "5.1.4") 
-- Found TIFF: /usr/lib/x86_64-linux-gnu/libtiff.so (found version "4.1.0") 
-- Found PNG: /usr/lib/x86_64-linux-gnu/libpng.so (found version "1.6.36") 
-- Found JPEG: /usr/lib/x86_64-linux-gnu/libjpeg.so (found version "62") 
-- Building AfterImage library included in ROOT itself
-- Looking for GSL
-- Found GSL: /usr/include (found suitable version "2.5", minimum required is "1.10") 
-- Looking for python
-- Found PythonInterp: /usr/bin/python (found version "2.7.16") 
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython2.7.so (found version "2.7.16") 
-- Looking for numpy (python package)
-- Found NUMPY: /usr/lib/python2.7/dist-packages/numpy/core/include (found version "1.16.2") 
-- Looking for OpenGL
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so   
-- Looking for gl2ps
-- Found GL2PS: /usr/lib/x86_64-linux-gnu/libgl2ps.so  
-- Looking for LibXml2
-- Found LibXml2: /usr/lib/x86_64-linux-gnu/libxml2.so (found version "2.9.4") 
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.so (found version "1.1.1d")  
-- Looking for MySQL
-- Found MYSQL: /usr/include/mariadb  
-- Looking for Oracle
-- Oracle not found.
-- Oracle: You can specify includes: -DORACLE_PATH_INCLUDES=/usr/include/oracle/10.2.0.3/client
--    currently found includes: 
-- Oracle: You can specify libs: -DORACLE_PATH_LIB=/usr/lib/oracle/10.2.0.3/client/lib
--    currently found libs: ORACLE_LIBRARY_OCCI-NOTFOUND;ORACLE_LIBRARY_CLNTSH-NOTFOUND;ORACLE_LIBRARY_LNNZ-NOTFOUND
-- Oracle not found. Switching off oracle option
-- Looking for PostgreSQL
-- Found PostgreSQL: /usr/include/postgresql  
-- Looking for SQLite
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29") 
-- Found Sqlite: /usr/include  
-- Looking for Pythia6
-- Pythia6 not found. Switching off pythia6 option
-- Looking for Pythia8
-- Could NOT find Pythia8 (missing: PYTHIA8_INCLUDE_DIR PYTHIA8_LIBRARY) 
-- Pythia8 not found. Switching off pythia8 option
-- Looking for FFTW3
-- Found fftw3 includes at /usr/include
-- Found fftw3 library at /usr/lib/x86_64-linux-gnu/libfftw3.so
-- Looking for CFITSIO
-- Found CFITSIO: /usr/include  
-- Found CFITSIO version: 3.45
-- Looking for XROOTD
-- XROOTD not found. Set environment variable XRDSYS to point to your XROOTD installation
--                   Alternatively, you can also enable the option 'builtin_xrootd' to build XROOTD internally
--                   For the time being switching OFF 'xrootd' option
-- Checking for module 'glib-2.0'
--   Found glib-2.0, version 2.58.3
-- Could NOT find GFAL (missing: SRM_IFCE_INCLUDE_DIR) 
-- GFAL library not found. Set variable GFAL_DIR to point to your gfal installation
                      and the variable SRM_IFCE_DIR to the srm_ifce installation
-- For the time being switching OFF 'gfal' option
-- Checking for module 'davix>=0.6.4'
--   Found davix, version 0.7.2
-- Looking for TBB
-- Found TBB: /usr (found version "2018.0")  
-- Looking for VDT
-- Could NOT find VDT (missing: VDT_INCLUDE_DIR VDT_LIBRARY) 
-- VDT not found. Ensure that the installation of VDT is in the CMAKE_PREFIX_PATH
--                Switching ON 'builtin_vdt' option
-- Looking for BLAS for optional parts of TMVA
-- Looking for sgemm_
-- Looking for sgemm_ - not found
-- Looking for sgemm_
-- Looking for sgemm_ - found
-- Found BLAS: /usr/lib/x86_64-linux-gnu/libopenblas.so  
-- Enabled support for:  asimage astiff builtin_afterimage builtin_clang builtin_ftgl builtin_glew builtin_llvm builtin_lz4 builtin_vdt builtin_xxhash clad cling cxx11 davix exceptions explicitlink fftw3 fitsio gdml gnuinstall http imt mathmore mysql opengl pch pgsql python roofit shared sqlite ssl thread tmva tmva-cpu tmva-pymva vdt x11 xft xml
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/cc
-- Looking for backtrace
-- Looking for backtrace - found
-- backtrace facility detected in default set of libraries
-- Found Backtrace: /usr/include  
-- Native target architecture is X86
-- Threads disabled.
-- Doxygen disabled.
-- Go bindings enabled.
-- LLVM host triple: x86_64-unknown-linux-gnu
-- LLVM default target triple: x86_64-unknown-linux-gnu
-- Building with -fPIC
-- Constructing LLVMBuild project information
-- Linker detection: GNU ld
-- SysLibs: rt;dl;tinfo;-lpthread;/usr/lib/x86_64-linux-gnu/libz.so
-- Targeting X86
-- Clang version: 5.0.0
-- Cling version (from VERSION file): ROOT_0.6~dev
-- Cling will look for C++ headers in '/usr/include/c++/8:/usr/include/x86_64-linux-gnu/c++/8:/usr/include/c++/8/backward' at runtime.
-- And then fallback to: 'x86_64-linux-gnu-g++-8'
-- Performing Test CXX_HAS_Wno_maybe_uninitialized
-- Performing Test CXX_HAS_Wno_maybe_uninitialized - Success
-- Performing Test __result
-- Performing Test __result - Success
-- Performing Test CXX_HAS_fno_rtti
-- Performing Test CXX_HAS_fno_rtti - Success
Recording the git revision now
-- Performing Test C_HAS_Wno_strict_overflow
-- Performing Test C_HAS_Wno_strict_overflow - Success
-- Performing Test C_HAS_Wno_maybe_uninitialized
-- Performing Test C_HAS_Wno_maybe_uninitialized - Success
-- Performing Test C_HAS_Wno_parentheses_equality
-- Performing Test C_HAS_Wno_parentheses_equality - Success
-- Looking for m
-- Looking for m - not found
-- Performing Test CXX_HAS_fno_strict_aliasing
-- Performing Test CXX_HAS_fno_strict_aliasing - Success
-- Performing Test CXX_HAS_Wno_parentheses_equality
-- Performing Test CXX_HAS_Wno_parentheses_equality - Success
-- Performing Test CXX_HAS_Wno_cast_function_type
-- Performing Test CXX_HAS_Wno_cast_function_type - Success
-- Performing Test CXX_HAS_Wno_deprecated_register
-- Performing Test CXX_HAS_Wno_deprecated_register - Success
-- Performing Test CXX_HAS_Wno_register
-- Performing Test CXX_HAS_Wno_register - Success
-- Using TMVA-DNN with BLAS installation: /usr/lib/x86_64-linux-gnu/libopenblas.so
-- Performing Test found_setresuid
-- Performing Test found_setresuid - Success
-- Performing Test found_stdstringview
-- Performing Test found_stdstringview - Failed
-- Performing Test found_stdexpstringview
-- Performing Test found_stdexpstringview - Failed
-- Performing Test found_stdapply
-- Performing Test found_stdapply - Failed
-- Performing Test found_stdinvoke
-- Performing Test found_stdinvoke - Failed
-- Performing Test found_stdindexsequence
-- Performing Test found_stdindexsequence - Failed
-- Performing Test found_attribute_always_inline
-- Performing Test found_attribute_always_inline - Success
Running /home/utente/ROOTSYS/root-6.16.00/build/unix/compiledata.sh
Making /home/utente/ROOTSYS/root/include/compiledata.h
-- Configuring done
-- Generating done
-- Build files have been written to: /home/utente/ROOTSYS/root

Controllate che l'output sia uguale altrimenti ci possono essere problemi che causano instabilità.
Se si presentano altri "not found" rispetto a quelli presenti, si devono ricercare i pacchetti con "synaptic-pkexec" ed installarli. (vedi punto 2)

NB: Se rilanciate il comando appena usato (cmake ../root-6-16.00 -DCMAKE_INSTALL_PREFIX=/usr/local/ -Dgnuinstall=ON), ROOT legge la configurazione precedentemente creata e imposta automaticamente i parametri di installazione, per esempio nella mia macchina non ho Oracle quindi ROOT non installa tale funzionalità Oracle not found. Switching off oracle option In questo modo se non trova componenti o pacchetti, ROOT non attiva quelle funzioni, ma alcune sono necessarie e devono essere attivate. Quindi il comando cmake ../root-6-16.00 -DCMAKE_INSTALL_PREFIX=/usr/local/ -Dgnuinstall=ON deve rigirare da zero.

Per ripartire da zero va eliminato tutto il contenuto della directory "root" e ricopiamo tutto il contenuto dalla directory "root-6-16.00" dentro la dir "root" e rieseguire il comando cmake ../root-6-16.00 -DCMAKE_INSTALL_PREFIX=/usr/local/ -Dgnuinstall=ON

Dato che questo passaggio va fatto più volte fino ad ottenere la configurazione corretta si consiglia di creare il seguente script che ci agevola i passaggi.

Da terminale andare nella directory ROOTSYS, aprite un editor di testo e copiate il seguentoe codice:
Quindi:
cd ../ se siete nella dir "root"
pluma reload_root.sh

testo da copiare:

#Script per il reload di root cern
 
cd root/
rm -r *
cd ../root-6.16.00
cp -r * ../root
cd ../root
cmake ../root-6-16.00 -DCMAKE_INSTALL_PREFIX=/usr/local/ -Dgnuinstall=ON
cd ../

Rendiamolo eseguibile

chmod ugo+x reload_root.sh

Lo script creato "reload_root.sh" va fatto girare fino a quando non si ottiene il file di configurazione corretto. quindi i passaggi sono:

  1. Eseguite "reload_root.sh" da terminale digitate: ./reload_root.sh
  2. Verificate la presenza di errori/anomalie nell output come "not found", "Failed" ecc..
  3. Tramite synaptic installare la libreria o pacchtto mancante (anche simili).
  4. Ripeter i passaggi fino a quando non si ottiene la configurazione corretta.

Non preoccupatevi per il momento si sta lavorando in locale e non si va ad intaccare il sistema.

Nota 1:
Nell'output riportato troviamo mancanti i seguenti programmi/pacchetti:

  • Oracle: Come detto non l'ho installato e non è essenziale
  • Pythia6 e Pythia8: Sono programmi dedicati per lo studio delle collisioni di particelle ad alte energia e vanno installati partendo dal sorgente.
  • XROOTD: E` un programma che accede da remoto ad alcuni dati di CSM. Va installato facendolo generare da ROOT.
  • GFAL: E' una libreria C che fornisce uno strato di astrazione della complessità del sistema di archiviazione dati
  • VDT: E' una libreria di funzioni matematiche, implementata in doppia e singola precisione.
  • m: Penso che "m" sia obsoleto. (Ricordo di averlo trovato in una vecchia versione di debian 7 poi non l'ho più visto. Se qualcuno della cumunità sa qualche cosa a proposito sarei lieto di inserire nella guida la sua spiegazione).
  • TMVA-DNN e sotto librerie stdstringview, stdapply, stdindexsequence: Nonostante le librerie siano installate sul sistema, ROOT non riesce a vederle, probabilmente servono le -dev che non ho installato.

Nota 2:
Ritengo che siano importani ed essenziali per l'installazione i seguenti pacchetti alcuni già noti e proposti qundi in questa fase verificate la loro presenza.

  • ZLib
  • X11
  • OpenGL
  • GSL
  • MySQL
  • PostgreSQL
  • TBB
  • BLAS
  • Clang
  • Cling

5) Creare le librerie

Seguendo il file INSTALL come super utente nella directory root creata, eseguiamo il comando:

cmake --build . -j<N_cpu>

Abbiamo aggiunto l'opzione -j "numero di cpu" che si hanno a disposizione per creare le librerie in parallelo e ridurre i tempi altrimenti ci vuole circa 1 ora.
Per verificare il numero di cpu a disposizione eseguite il comando cat /proc/cpuinfo | grep processor
L'ultima riga mostra il numero di cpu/threads che avete a disposizione nella vostra macchina, si sconsiglia di non superare quel valore.
In questa fase vengono generate le librerie di ROOT e la macchina va sotto stress, bilanciate anche il numero di cpu/threads da inserire in funzione della RAM, circa 500MB di RAM per ogni cpu/threads.
Quindi se avete 12 cpu e 4GB di RAM, non inserite un valore maggiore di 8 per l'opzione -j.

6) Installare ROOT

Sempre seguendo il file INSTALL come super utente nella directory root creata, eseguite il comando

cmake --build . --target install

In questo modo le librerie create ed i programmi di avvio vengono posizionati in /usr/local/
Ora ROOT è installato ma non è pronto per essere avviato.

7) Rendere ROOT disponibile

In questa fase renderemo root disponibile sia per il super utente che per la nostra utenza.
Il file INSTALL ci propone di eseguire come super utente il comando ldconfig che probabilmente non funzione quindi aggiriamo il problema e terminiamo l'installazione nel seguente modo:
Come super utente andiamo in /usr/local/bin qui troviamo i programmi di avvio di ROOT e rendiamo eseguibile il file "thisroot.sh"
Quindi da terminale eseguiamo:
cd /usr/local/bin
e poi
chmod ugo+x thisroot.sh
Poi andiamo nella directory del super utente e modifichiamo il file nascosto ".bashrc"
quindi:
cd /root
pluma .bashrc
inseriamo le seguenti stinghe di codice:
expot PATH=/usr/local/sbin:/usr/local/bin:usr/sbin:/usr/bin:/sbin:/bin
Che serve per abilitare il comando ldconfig
Ed inseriamo anche:
source /usr/local/bin/thisroot.sh
Che serve per indirizzare i puntamenti alle librerie in modo corretto e automatico ad ogni avvio della macchina.
La stessa cosa va fatta nella file della propria utenza.
Quindi come utente normale in /home/utente eseguiamo i seguenti codici.
pluma .bashrc
Ed inseriamo solamente la stringa:
source /usr/local/bin/thisroot.sh
Che serve per indirizzare i puntamenti alle librerie in modo corretto e automatico ad ogni avvio della macchina.

Ora come super utente diamo il comando:ldconfig
Poi come utente normale diamo il comando: source /usr/local/bin/thisroot.sh
Infine avviamo ROOT con il comando root per verificare che non ci siano stati errori
Questo avvio va fatto dallo stesso terminale dove è stato eseguito il comando source /usr/local/bin/thisroot.sh
Solo al riavvio del computer ROOT sarà eseguibile su ogni terminate della propria utenza.

A presto
_00