Instalacja nowego oprogramowania
- EN: This page is not translated to English.
Dostępność oprogramowania oraz wymagania dla instalacji nowych programów na komputerach ICM opisane są tu. Ze względów bezpieczeństwa, administratorzy nie mogą instalować mało rozpoznawalnego i słabo udokumentowanego oprogramowania w systemie.
W takiej sytuacji użytkownik może zainstalować program lokalnie, na swoim koncie.
Ogólna procedura
Aplikacje różnią się między sobą. Poniższa, ogólna procedura może stanowić punkt startowy.
Ściągnięcie kodu źródłowego
wget https://somewhere.com/archive.tar.gz
tar -zxvf archive.tar.gz
# lub
git clone https://github.com/somewhere/something.git
Instalacja programu w lokalnym katalogu
Instalacja programu w lokalnym katalogu użytkownika, np. $HOME/myapps
.
cd extracted_archive
make configure
./configure --prefix=$HOME/myapps
make
make install
Wybór kompilatora - Okeanos
Superkomputer Okeanos został zbudowany przez firmę Cray.
Udostępnia ona polecenia cc
/CC
, które są uniwersalnym opakowaniem na kompilatory języka C/C++.
Pod maską używany jest żądany kompilator (gcc, icc, itp.) oraz odpowiednie biblioteki MPI.
Po załadowaniu żądanego środowiska, należy używać tylko polecenia cc
/CC
.
Na przykład:
$ module list
...
...
PrgEnv-cray/6.0.5 # środowisko domyślne
...
...
$ cc --version
Cray clang version 9.0.2 (2a3a7003aaa5b93e2070bde59a5ee6b9682b67d7) (based on LLVM 9.0.0svn)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/cray/pe/cce/9.0.2/cce-clang/x86_64/bin
$ module switch PrgEnv-cray PrgEnv-intel
$ cc --version
icc (ICC) 19.1.0.166 20191121
Copyright (C) 1985-2019 Intel Corporation. All rights reserved.
$ module switch PrgEnv-intel PrgEnv-gnu
$ cc --version
gcc (GCC) 8.3.0 20190222 (Cray Inc.)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ CC --version
g++ (GCC) 8.3.0 20190222 (Cray Inc.)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Dodatek - zmienna $PATH
Aby nie musieć każdorazowo wpisywać pełnej ścieżki do programu w celu jego uruchomienia, można zmodyfikować systemową zmienną $PATH
.
Więcej w Google: How to set your $PATH variable in Linux
-
https://unix.stackexchange.com/questions/26047/how-to-correctly-add-a-path-to-path
-
https://linuxize.com/post/how-to-add-directory-to-path-in-linux/
Różne systemy mogą mieć ustawione różne domyślne powłoki.
echo "$SHELL"
/bin/tcsh # topola i okeanos
/bin/bash # rysy
Przykładowo, aby aktywować powłokę bash
, należy wpisać /bin/bash -l
w linii poleceń.
Następnie, aby zmodyfikować zmienną $PATH
dla powłoki bash
, to należy zmodyfikować plik ~/.bashrc
export PATH=$PATH:$HOME/myapps/application_XYZ/place_with_the_file
Plik ten wczytywany automatycznie w trakcie ładowania powłoki bash
(np. podczas logowania - o ile bash
jest ustawiony jako domyślna powłoka).
Aby nie logować się ponownie, wystarczy wczytać plik ~/.bashrc
.
$ source ~/.bashrc
Celem ćwiczenia, użytkownik może dodać poniższe linie do pliku ~/.bashrc
alias say_something='/usr/bin/echo '
alias say_hello_user="say_something hello ${USER}"
Następnie można sprawdzić działanie nowych skrótów:
[someone@hpc ~]$ say_hello_user
say_hello_user: Command not found.
$ source ~/.bashrc
... some errors - powłoka tcsh nie interpretuje niektórych komend bash'a
[someone@hpc ~]$ bash -l
[someone@hpc ~]$ say_something blahblah
blahblah
[someone@hpc ~]$ say_hello_user
hello someone
Dla innych powłok procedura jest podobna.
Chcąc zmienić powłokę należy wpisać bash | tcsh | ksh
w linii poleceń.
Dodatek - domyślna powłoka
Q: Chciałbym aby bash
był domyślną powłoką po zalogowaniu.
A: Należy utworzyć/zmodyfikować plik ~/.login
, wtedy po zalogowaniu będzie uruchamiana powłoka bash.
[user@hpc ~]$ cat .login
if ("$SHELL" != "/bin/bash") then
setenv SHELL "/bin/bash"
exec /bin/bash -l # -l: login shell again
endif