Archiwa tagu: linux

Instalacja ROOT

ROOT jest biblioteką do analizy danych, statystyk, wizualizacji danych. Używany jest najczęściej w jednostkach naukowych (CERN, uczelnie itd.). Świetny opis instalacji tego frameworka znalazłam tu:
https://yannisflou.wordpress.com/2012/06/05/root-data-analysis-framework-on-ubuntu-12-04/.

Poniżej przedstawiam opis instalacji pod systemem Ubuntu 12.04, w języku polskim – dla absolutnych początkujących, nie znających systemu Linux.

  1. Download
    Ściągnęłam wersję ROOT 5.34/36 wybierając typ: „Source” na podstronie wersji: https://root.cern.ch/content/release-53436. (Po instalacji przedstawia się jako:
    v5-34-36@v5-34-36, Apr 05 2016, 10:25:45 on linuxx8664gcc)
  2. Rozpakowanie
    d9k@Nihilia:~$ cd rootSOURCE
    d9k@Nihilia:~/rootSOURCE$ gunzip root_v5.34.36.source.tar.gz
    d9k@Nihilia:~/rootSOURCE$ tar xvf root_v5.34.36.source.tar
    
  3. Miejsce docelowe instalacji
    ROOT-a installować będziemy w folderze /opt/ROOT/. Folder „opt” był używany niegdyś do instalowania oprogramowania niezwiązanego z systemem (coś jak windowsowe „Program files”). Obecnie zaleca się używać ścieżki /usr/local, w mojej instrukcji użyję jednak „starodawnych” rozwiązań :)Stworzenie folderu:

    d9k@Nihilia:~/rootSOURCE$ sudo mkdir /opt/ROOT/
    

    Stworzenie tymczasowej zmiennej globalnej (w następnych krokach „utrwalimy” ją, aby była dostępna także po zamknięciu tej sesji terminala):

    d9k@Nihilia:~/rootSOURCE$ export ROOTSYS=/opt/ROOT
    

    Możemy sprawdzić, czy się utworzyła:

    d9k@Nihilia:~/rootSOURCE$ echo $ROOTSYS
    /opt/ROOT
    

    Ok.

  4. Configure
    Configure to pierwszy krok instalacji. W skrócie Configure jest to skrypt, który na bazie podanych mu opcji (i zmiennych, uwarunkowań i zależności istniejących w systemie) tworzy plik Makefile, który z kolei zostanie użyty w kolejnych krokach.Można wyświetlić sobie helpa polecenia Configure – najlepiej zrzucając go do pliku, bo opcji konfiguracji ROOT-a jest ogólnie bardzo dużo. Instalować będziemy w opcjach domyślnych, wskazując jedynie miejsce instalacji.

    d9k@Nihilia:~/rootSOURCE$ cd root
    d9k@Nihilia:~/rootSOURCE/root$ ./configure --help > ../configure_help.txt
    

    I wywołanie samego polecenia – ze wskazaniem mu ścieżki, gdzie ROOT ma zostać zainstalowany:

    d9k@Nihilia:~/rootSOURCE/root$ ./configure --prefix=/opt/ROOT
    
  5. Make
    Wykonanie tego kroku trwało dość długo. Podczas tego etapu źródła są budowane za pomocą pliku Makefile, zawierającego instrukcje budowania.

    d9k@Nihilia:~/rootSOURCE/root$ make
    
  6. Make install
    Wreszcie ostatni krok. Na tym etapie skompilowany program jest kopiowany do miejsca docelowego (podanego w parametrze „prefix” na etapie konfiguracji).

    d9k@Nihilia:~/rootSOURCE/root$ sudo make install
    [sudo] password for d9k:
    ============================================================
    === ROOT BUILD SUCCESSFUL. ===
    === Run 'make install' now. ===
    ============================================================
    Installing binaries in /opt/ROOT/bin
    Installing libraries in /opt/ROOT/lib/root
    Installing headers in /opt/ROOT/include/root
    Installing /home/d9k/rootSOURCE/root/main/src/rmain.cxx in /opt/ROOT/include/root
    Installing cint/cint/include cint/cint/lib and cint/cint/stl in /opt/ROOT/lib/root/cint
    Installing icons in /opt/ROOT/share/root/icons
    Installing fonts in /opt/ROOT/share/root/fonts
    Installing misc docs in /opt/ROOT/share/doc/root
    Installing tutorials in /opt/ROOT/share/doc/root/tutorials
    Installing tests in /opt/ROOT/share/doc/root/test
    Installing macros in /opt/ROOT/share/root/macros
    Installing man(1) pages in /opt/ROOT/share/man/man1
    Installing config files in /etc/root
    Installing Autoconf macro in /opt/ROOT/share/aclocal
    Installing Emacs Lisp library in /opt/ROOT/share/emacs/site-lisp
    Installing GDML conversion scripts in /opt/ROOT/lib/root
    d9k@Nihilia:~/rootSOURCE/root$
    

    Udało się.

  7. Source
    Krok wymagany przez program ROOT – uruchomienie skryptu „thisroot.sh„, ustawiającego ścieżki używane przez program ROOT, takie jak $ROOTSYS, $LD_LIBRARY_PATH, $DYLD_LIBRARY_PATH, $PATH, $LIBPATH i wiele innych. Jego treść można oczywiście podejrzeć dowolnym edytorem:

    d9k@Nihilia:~$ cat /opt/ROOT/bin/thisroot.sh
    

    Ok, czas na wykonanie tego skryptu:

    d9k@Nihilia:~$ source /opt/ROOT/bin/thisroot.sh
    
  8. Uruchomienie
    Nareszcie możemy uruchomić program ROOT:

    d9k@Nihilia:~$ root
    *******************************************
    * *
    * W E L C O M E to R O O T *
    * *
    * Version 5.34/36 5 April 2016 *
    * *
    * You are welcome to visit our Web site *
    * http://root.cern.ch *
    * *
    *******************************************ROOT 5.34/36 (v5-34-36@v5-34-36, Apr 05 2016, 10:25:45 on linuxx8664gcc)CINT/ROOT C/C++ Interpreter version 5.18.00, July 2, 2010
    Type ? for help. Commands must be C++ statements.
    Enclose multiple statements between { }.
    root [0]
    
  9. Utrwalenie zmiennych
    Po wyłączeniu terminala, ustawiona w poprzednich punktach zmienna ROOTSYS zniknie. Można ją utrwalić.Jak czytamy w helpie Ubuntu:
    „A suitable file for environment variable settings that affect the system is /etc/environment.
    An alternative is to create a file for the purpose in the /etc/profile.d directory.”Modyfikujemy zatem plik:

     d9k@Nihilia:~$ sudo gedit /etc/environment
    

    Dodając na koniec:

    ROOTSYS="/opt/ROOT"
    

    Aby nie trzeba było za każdym włączeniem terminala uruchamiać na nowo skryptu thisroot, można ustawić, aby skrypt był uruchamiany przy starcie systemu:

    d9k@Nihilia:~$ sudo gedit .bashrc
    

    Na końcu dodając linijkę:

    source /opt/ROOT/bin/thisroot.sh
    
  10. Gotowe 🙂

Jeśli chcesz natomiast przeczytać, jak zainstalować moduł LHAPDF, pisałam o tym tutaj.

Składanie PIT pod systemem Linux + 1% na naukę

Nie będę powielać tematu, ale zapisuję sobie „ku pamięci”, bardzo dobry artykuł jak zainstalować program e-Deklaracje w systemie Linux, instalacja (na zasadzie sztuczek niestety!) – krok po kroku: http://nocnypingwin.pl/e-deklaracje-pod-linuxem-2017/.

Gdyby ktoś natomiast zastanawiał się, na co może przeznaczyć swój jeden procent podatku, a kręci go nauka i chciałby ją wesprzeć, oto lista moich kandydatów:

  • 1% Na Astronomię, czyli program Ciemne Niebo – popularyzacja astronomii i działania z zakresu ochrony ciemnego nieba (KRS 0000076686). Kiedyś już pisałam o fundacji Polaris przy okazji innej ich akcji.
  • Fundacja Sieci Obserwatorów Burz (KRS: 0000546557) – robią dobrą robotę, wystarczy zajrzeć na http://obserwatorzy.org/ 
  • Polskie Towarzystwo Rakietowe – popularyzacja nauki – tym razem rakiety amatorskie. (KRS: 0000355014)
  • Fundacja Wikimedia – myślę, że nikomu nie trzeba przestawiać, Wikipedię znają chyba wszyscy 🙂 (KRS: 0000244732)

XnView – zamiennik Irfan View (Linux)

Niedawno pisałam o Irfan View i narzekałam na brak odpowiednika dla systemów linuksowych. Owszem, jest GIMP, ale do niektórych zastosowań jest to po prostu strzelanie z armaty do muchy 😉

Instalacja – typowa, z konsoli…

sudo add-apt-repository ppa:dhor/myway
sudo apt-get update
sudo apt-get install xnview
Need to get 27,3 MB of archives.
After this operation, 77,5 MB of additional disk space will be used.
Get:1 http://ppa.launchpad.net/dhor/myway/ubuntu/ precise/main xnview amd64 0.64-dhor1~precise [27,3 MB]
Fetched 27,3 MB in 27s (988 kB/s)
...

Programik jest przyjemny, na start umożliwia przeglądanie plików graficznych z dysku, po dwukrotnym kliknięciu przechodzimy do trybu edycji obrazka.

XnView

 

Większość opcji, których potrzebuję – jest obecna! Obracanie, wygodne wycinanie, proste filtry, zmiana jasności, gammy itd. Dla mnie bomba.

xnview2

Tymczasowa zmiana języka w terminalu Ubuntu

Moje Ubuntu było w wersji polskiej, co za tym idzie – komunikaty błędów w terminalu były po polsku, co utrudniało szukanie pomocy w sieci. Na szczęście język można zmienić tymczasowo na angielski, komendą:

LC_ALL=C bash

Jeśli natomiast chce się zmienić język na zawsze, trzeba wyedytować pliki:

sudo gedit /etc/default/locale
sudo gedit ~/.pam_environment

Zmieniając linijki:

LANGUAGE=en_GB:en
LANG=en_GB.UTF-8

Po tej zmianie konieczny jest reset.

Zapisywanie wyniku komendy do pliku w Linuksie

Większość poleceń, których efekt widać na konsoli, zwraca swój efekt do strumienia stdout. Aby efekt zapisać do pliku (co polecam w przypadku konieczności analizy dużej ilości wyników, które po prostu nie mieszczą się na ekranie), wystarczy przekierować go do pliku za pomocą „>

ls > result_ls.txt

Czasem jednak tak się nie da. Na przykład polecenie make zwraca wynik nie do strumienia stdout, lecz do stderr. Mamy dwie opcje:

  1. Przekazanie stdout i stderr do pliku:
    make &> result_make_full.txt
  2. Przekazanie tylko stderr do pliku:
    make 2> result_make_stderr.txt
  3. Przekazanie tylko stdout do pliku:
    make 1> result_make_stdout.txt

 

How to install LHAPDF6

Instruction is easy to find here: https://lhapdf.hepforge.org/install.html. But on „fresh” Linux you need to install some dependencies.

Download LHAPDF archive from page https://www.hepforge.org/downloads/lhapdf and unpack to any directory. Alternative method is to use wget:

wget http://www.hepforge.org/archive/lhapdf/LHAPDF-6.6.1.6.tar.gz
tar xf LHAPDF-6.1.6.tar.gz
cd LHAPDF-6.1.6

Installation is standard: configure, make, make install.

I prefer to not use any special path and install this lib directly to /usr/local/lib. So I didn’t use any prefixes:

./configure

After invoking this command I got a message:

checking for Boost headers version >= 1.41.0... no
configure: error: cannot find Boost headers version >= 1.41.0

Boost was missing. To install:

sudo apt-get install libboost1.48-*

When installation process ends, checking if boost is installed:

dpkg -s libboost1.48-all-dev

How to get version of Boost:

dpkg -s libboost1.48-all-dev | grep 'Version'

In my case: Version: 1.48.0-3.

After installing Boost, retry configure LHAPDF:

./configure

Succeed. Installation:

make
sudo make install

How to check if LHAPDF is installed? Try to invoke:

ls /usr/local/lib/

Linux – zmienne systemowe

Tak się składa, że czasem nawet najbardziej zagorzałą fankę Microsoftu 😉 dopada konieczność przesiadki na inny system. I szybko okazuje się, jak wielu rzeczy się nie wie lub nie pamięta. Przeczuwam więc, że w najbliższym czasie będą się tu pojawiać głównie notatki związane z różnymi poleceniami linuksowymi.

Wyświetlenie zmiennych systemowych na konsolę realizowane jest poleceniem: env lub printenv

Przykładowy output:

d9k@Nihilia:~$ env
SSH_AGENT_PID=1689
TERM=xterm
SHELL=/bin/bash
WINDOWID=69209558
USER=d9k
...

i tak dalej.

Ważną zmienną jest także PATH (jak na Windowsie). Jej zawartość można wyświetlić po prostu:

d9k@Nihilia2:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Jak widać, separatorem jest dwukropek (w przeciwieństwie do Windowsowego średnika).

Modyfikacja zmiennej PATH – w zależności od konfiguracji systemu:

  1. Plik ~/.profile
  2. Plik ~/.bash_profile
  3. Plik ~/.bash_login
  4. Plik  /etc/environment

W moim przypadku (Ubuntu 12.04.2 LTS) zmienna PATH występowała w /etc/environment. Zmodyfikowałam plik (sudo gedit /etc/environment), dla zastosowania zmian: source /etc/environment && export PATH.

Bash – kilka krótkich skryptów

Kilka banalnych fragmentów skryptów, pomocnych podczas pracy z systemem Linux lub podczas pisania większego skryptu, napisanych w Bashu.

Wyświetlanie efektu polecenia:

Na przykład w celu wpisania do zmiennej aktualnej ścieżki (pwd):

PWD_VAR=`pwd`
echo 'Moving file from: ' $PWD_VAR ' to: ' $DEST_PATH'/..'

Przejście do folderu i powrót:

mkdir myDirectory
ACTUAL=`pwd`
cd myDirectory
cd $ACTUAL

Pobieranie nazwy pliku z adresu URL:

url=http://blog.d9k.info/any.file
FILENAME=$(basename "$url")
echo $FILENAME

Pobieranie zawartości pliku na serwerze/strony www:

url=http://blog.d9k.info/any.html
wget $url -O outputFile.html

Jak wyświetlić nazwę używanej dystrybucji Linux

Jak błyskawicznie zobaczyć, z jakim systemem mamy do czynienia oraz wyświetlić kilka innych informacji o systemie? Z pomocą przyjdzie nam konsola Linux oraz następujące polecenia:

Wyświetlenie dystrybucji:

cat /etc/*-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.2 LTS"
NAME="Ubuntu"
VERSION="12.04.2 LTS, Precise Pangolin"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu precise (12.04.2 LTS)"
VERSION_ID="12.04"


lsb_release -a

No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.2 LTS
Release: 12.04
Codename: precise


Wersja kernela:

uname -a

Linux Nihilia 3.2.0-101-generic #141-Ubuntu SMP Thu Mar 10 21:43:24 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

uname -mrs

Linux 3.2.0-101-generic x86_64

Wersja kernela i gcc:

cat /proc/version

Linux version 3.2.0-101-generic (buildd@lgw01-35) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #141-Ubuntu SMP Thu Mar 10 21:43:24 UTC 2016