Słowo wstępu

Instalacja frameworku eksperymentalnego wymaga zainstalowania oprogramowania w 3 krokach - FairSoft, FairRoota oraz właściwego oprogramowania dedykowanego danemu eksperymentowi. Tutaj zajmę się pokazaniem instalacji dwóch pierwszych frameworków. W poniższej instrukcji założę, że instalujesz jedną określoną wersję FairSoftu oraz FairRoota. Jeśli jednak planujesz używać kilku wersji warto jest wszystko jasno ponazywać tzn. np. instalować FairSoft 19 w katalogu FairSoftInst_19 a wersję 21 w FairSoftInst_21 zamiast nazywać je FairSoft, TenDrugiFairsoft.

Istotne są też pewne wymagania systemowe - sam FairSoft 19 łącznie z plikami instalacyjnymi instalowany metodą poniżej zajmuje około 40 GB, FairSoft 20 zajmuje zaś około 25 GB, do tego należy doliczyć około 1 GB FairRoota + rozmiar frameworku danego eksperymentu. Problemem może być też kompilacja ROOT'a jeśli ma się mało RAM-u, tutaj nie podam konkretnego progu - aczkolwiek 8 GB powinno wystarczyć.

No i jeszcze jedna uwaga, zwykle framework tego typu instaluje się w katalogu opt. Jest to katalog który domyślnie należy do roota, jednak nie powinno się tych frameworków instalować jako root! Najlepiej jest po prostu utworzyć katalog w katalogu opt i nadać mu odpowiednie prawa/właściciela, żeby można było kompilować/instalować kody jako zwykły użytkownik.

Instalacja w systemie Mint FairSoftu 19

FairSoft 19 to obecnie (połowa 2021 roku) główna wersja. W przypadku systemu mint instalacja jest dosyć prosta, najpierw należy zainstalować niezbędne pakiety oprogramowania komendą:

apt-get install  cmake cmake-data g++ gcc gfortran \
  debianutils build-essential make patch sed \
  libx11-dev libxft-dev libxext-dev libxpm-dev libxmu-dev \
  libglu1-mesa-dev libgl1-mesa-dev \
  libncurses5-dev curl libcurl4-openssl-dev bzip2 libbz2-dev gzip unzip tar \
  subversion git xutils-dev flex bison lsb-release python-dev \
  libc6-dev-i386 libxml2-dev wget libssl-dev libkrb5-dev \
  automake autoconf libtool

Zalecam również zainstalowanie sqlite czyli pakietów:

sqlite3 libsqlite3-dev

Jest to koniecznie w przypadku instalacji nowszego CbmROOTa. Następnie pobieramy FairSoft, w mojej opinii najlepszą opcją jest zainstalowanie tego oprogramowania w katalogu /opt/FairGroup. Następnie pobieramy FairSoft:

git clone https://github.com/FairRootGroup/FairSoft.git
cd FairSoft
git checkout jun19p1 //tutaj wybieramy jaką wersję oprogramowania chcemy
./configure.sh

 

Wchodzimy w katalog, tutaj możemy wybrać sposób instalacji. Rekomenduję:

  • wśród kompilatorów wybieramy GCC
  • z debugowaniem (zajmuje więcej miejsca ale ułatwia poszukiwanie błędów w kodzie, tak więc wybieramy debug jeśli będziemy się dużo bawić kodem, jeżeli zaś tylko używamy gotowców można wybrać optimize)
  • wybieramy opcję instalacji nie tylko FairMQ
  • przy pytaniu o simulation engines and event generators wybieramy tak
  • przy pytaniu o dodatkowe pliki do Geant4 "Tak" oraz "z internetu"
  • lepiej kompilować bez opcji wielowątkowego Geant
  • w opcji budowania z Pythonem zaznaczam nie (no chyba że ktoś lubi pisać skrypty w Pythonie)
  • przy instalacji najlepiej wybrać /opt/FairGrou/FairSoftInst (aczkolwiek może to być dowolne miejsce np. w home, trzeba potem po prostu trochę inaczej ustalić ścieżki przy instalacji FairRoota)

Następnie jeśli wszystkie zależności są zainstalowane powinna rozpocząć się kompilacja, proces ten może trwać dosyć długo - nawet kilka godzin. Gdy kompilacja dobiegnie końca instalujemy FairROOT. Wymienione tu kroki działać powinny w systemach debianopochodnych (tj. min. Debian, Ubuntu i Mint) w przypadku systemów bazujących np. Red Hat kroki są podobne, ale nazwy pakietów wymaganych do zainstalowania w pierwszym kroku mogą się nieco różnić.

Instalacja w systemie Mint FairSoftu 21

FairSoft 21 to najnowsza wersja. Można go instalować na dwa sposoby. Ja wybrałem instalację w trybie "legacy". Dla tej wersji nieco zmieniła się lista zależności, aby jest zainstalować trzeba użyć następujących komend:

apt-get update
apt-get -y upgrade
apt-get -y install autoconf automake binutils \
	bison build-essential bzip2 ca-certificates coreutils \
	curl debianutils file findutils flex g++ gcc gfortran git gzip \
	hostname libbz2-dev libcurl4-openssl-dev libgsl-dev libicu-dev \
	libgl1-mesa-dev libglu1-mesa-dev \
	libncurses-dev libsqlite3-dev libssl-dev libtool \
	libx11-dev libxerces-c-dev libxext-dev libxft-dev \
	libxml2-dev libxmu-dev libxpm-dev libyaml-cpp-dev lsb-release make patch python-dev \
	python3-dev rsync sed subversion tar unzip wget xutils-dev xz-utils
apt-get -y install cmake
apt-get -y clean

Następnie  ściągamy FairSoft np. do /opt/FairGroup/FairSoft i przy pomocy git checkout przełączamy się w wersję apr21p1. Potem dobrze jest otworzyć plik FairSoftConfig.cmake i ustawić miejsce do którego zainstalowany zostanie FairSoft. Przykładowo dla /opt/FairGroup/FairSoftInst można zrobić to wpisując: set(CMAKE_INSTALL_PREFIX "/opt/FairGroup/FairSoftInst" CACHE PATH "Install prefix" FORCE) do FairSoftConfig.cmake .

Następnie wywołujemy komendy:

cmake -S <path-to-source> -B <path-to-build> -C <path-to-source>/FairSoftConfig.cmake
cmake --build <path-to-build> [-j<ncpus>]

Gdzie path-to-source to miejsce gdzie ściągneliśmy FairSoft (tutaj /opt/FairGroup/FairSoft), path-to-build miejsce na tymczasowe pliki budowy (np. /opt/FairGroup/FairSoftTemp, zaś ncpus to liczba rdzeni użytych do kompilacji.

Instalacja FairROOT

Gdy zakończy się instalacja FairSoftu można przystąpić do kompilacji FairROOTa. Najpierw należy ustawić odpowiednie ścieżki środowiskowe:

export SIMPATH=/opt/FairGroup/FairSoftInst
export PATH=$SIMPATH/bin:$PATH

Następnie wychodzimy z powrotem do /opt/FairGroup, i pobieramy FairROOT:

git clone https://github.com/FairRootGroup/FairRoot.git FairRoot
cd FairRoot
git checkout X //gdzie X jest wybraną wersją
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX="miejsce gdzie będzie zainstalowane oprogramowanie" ..
make -j8 // lub make -jN gdzie N to liczba rdzeni - umożliwia to kompilację przy użyciu wielu rdzeni
make install

Zwykle na miejsce instalacji wybiera się miejsce obok FairSoft np. /opt/FairGroup/FairRootInst, ale nie jest to konieczne. Rozpocznie się proces instalacji FairROOTa który nie powinien zająć więcej niż kilkanaście minut.