Na unixových strojích v doméně fi.muni.cz je nainstalován systém modulů. Ten umožňuje jednodušší používání nainstalovaného software. Sjednocuje totiž přístup k programům na různých platformách.
Jak je používat?
Za prvé je nutno moduly inicializovat. To je provedeno v systémových souborech /etc/profile, nebo (pro X window) *[xX]session. Potom lze seznam dostupných modulů vypsat příkazem
$ module availVýstup bude vypadat například takto:
--------- /packages/run/modules-2.0/modulefiles --------- binhex gnuplot modules tcl-tk devel info-services plan texlive eclipse maple snns viewersPotom je nutné si potřebné moduly připojit příkazem:
$ module add jménoSeznam aktuálně připojených modulů získáme
$ module list Currently Loaded Modulefiles: 1) modulesStručnou nápovědu o čem je konkrétní modul získáme
$ module help jménoModul
modules
musí být připojen vždy. Pokud není, uděláme to příkazem
$ module add modulesPodobně přidáme i ostatní, např.
module add texliveModul je souhrn software, který k sobě logicky patří. Připojením modulu si tyto programy zpřístupníme. Například po posledně uvedeném příkazu máme k dispozici nejen vlastní TeX, ale i prohlížeč .dvi souborů (xdvi), konvertor (dvips), manuálové stránky, a další.
Jak je to uděláno?
Příkazem
$ module add jménodojde ke změně v nastavení proměnných prostředí shellu, typicky proměnných
PATH
, MANPATH
a XUSERFILESEARCHPATH
. Vlastní příkaz module je implementován jako funkce shellu, která má ale tu vlastnost, že se nedědí. Proto je vhodné její inicializaci dát do ~/.kshrc
či jiného souboru, který se provádí při spuštění shellu. Například implicitní /etc/kshrc
obsahuje řádek
. /packages/run/modules-2.0/init/kshDalší podrobnosti viz též:
man module
Jak psát moduly?
Dále jsou k dispozici informace pro ty, které systém zajímá podrobněji, nebo pro ty kteří chtějí nainstalovat všem dostupný balík programů.
O co jde?
Moduly slouží pro sjednocení přístupu k instalovanému SW na jednotlivých platformách, určují jediné místo pro instalaci SW, které je sdílené mezi různými počítači a v neposlední řadě dává možnost mít současně nainstalováno více verzí jednoho balíku programů.
Jak to funguje?
Moduly jsou na všech unixových platformách dostupné v adresáři
/packages
. Zde jsou podadresáře run
(run64
), share
a share_rw
. V těchto adresářích jsou jednotlivé balíky instalovány do adresářů jméno_balíku-verze
, například gcc-3.4.1
.
Adresář run
obsahuje na platformě závislé věci, obvykle to co se
nachází v adresářích bin
či lib
. Proto je
run
sdílen mezi podobnými stroji.
Adresář share
je určen pro data a programy nezávislé na platformě. Analogie je s daty v /etc
(konfigurační soubory), man
a info
. Měly by zde být i programy napsané např. v perlu, sedu nebo pythonu. Tento adresář je sdílen mezi všemi platformami.
Adresář share_rw
je jako jediný dostupný i pro zápis. Proto by v něm měly být ty části instalace, ke které se i během práce musí přistupovat pro zápis. Pro běžné programy to není potřeba, ty si data ukládají buď v /tmp
nebo v domovském adresáři uživatele která si program pouští.
V adresáři run/links
a zde v bin
a lib
se nacházejí linky na binárky v /packages/{run,share}
, které by měly být dostupné i bez explicitního přidání modulu, který je obsahuje (ve skutečnosti jsou tyto adresáře přidány po zadání module add modules
). Sem se obvykle dávají např. poštovní klienti (elm, mutt, pine,... nebo jiné užitečné nástroje (gtar, gzip,...). Umisťování linků sem by se mělo dít s rozvahou. V adresáři run/modules-2.0
je vše potřebné pro inicializaci a chod modulů. Zde v init
jsou soubory pro inicializaci v jednotlivých shellech. Inicializace obvykle probíhá v profile
nebo xsession
(i v globálních) například voláním:
. /packages/run/modules-2.0/init/basha poté už je v shellu dostupný příkaz
module
. Jeho popis je v uživatelské části této stránky.
Dále v adresáři modulefiles
je vlastní popis modulu (který se provádí při module add jméno
) a v adresáři helpfiles
je stručná nápověda ke každému balíku.
Jak postupovat při zakládání nového modulu
Nejprve je potřeba založit adresáře /packages/run/balík-verze
(nejlépe na všech platformách) a /packages/share/balík-verze
. K
tomuto účelu slouží aplikace na vytváření
modulů. Poté se provede kompilace balíku, která je nastavena tak, že
--prefix
(tj. kam se instaluje) je nastaven
/packages/share/balík-verze
a --bin-prefix
a
--lib-prefix
(tj. binárky a knihovny) jsou nastaveny na
/packages/run/balík-verze
. Poté se provede instalace do těchto
adresářů. Balík by se měl ideálně nainstalovat na všech dostupných platformách
na FI (tj. Linux x86 a Linux x86-64).
Soubor /packages/run/modules-2.0/modulefiles/balík-verze
se naplní potřebnou konfigurací a do souboru /packages/run/modules-2.0/helpfiles/balík-verze
se umístí stručný text o obsahu a použití tohoto balíku.
Nyní by balík měl být viditelný v module avail
a přístupný po zadání module add balík-verze
.
V adresáři /packages/run/modules-2.0/modulefiles
by každý balík měl mít i označení verze. Jedinou výjimkou je tzv. defaultní verze, která se tvoří pomocí symbolického linku na existující soubor balík-verze
. Ten je pak dostupný pouhým zadáním module add balík
.
Syntaxe souboru v modulefiles
Podrobnosti viz module(1)
a modulefile(4)
. Stručně následuje i zde:
#%Module1.0 #! #! Title: #! Platforms: sun4 #! Version: #! Description: #! #! #! proc ModulesHelp {} { global ModulesCurrentModulefile puts stdout "modulehelp $ModulesCurrentModulefile" }Takto by měl vypadat začátek souboru s tím, že je správně uveden Title = jméno balíku, Platforms = pro které platformy je určen (typicky jen jedna), Version a Description = verze a popis. Následovat může:
append-path JMÉNO HODNOTA prepend-path JMÉNO HODNOTApřidá
HODNOTA
na začátek nebo na konec proměnné JMÉNO
. Např.:
append-path PATH /packages/run/gcc-3.4.1/bin append-path LD_LIBRARY_PATH /packages/run/gcc-3.4.1/lib
setenv JMÉNO HODNOTA unsetenv JMÉNONastaví proměnnou JMÉNO na hodnotu HODNOTA. Smaže obsah proměnné.
conflict MODUL [MODUL ...]Se kterými moduly je v konfliktu.
prereq MODUL [MODUL ...]Které moduly potřebuje.
module PŘÍKAZ [ARG]ty samé povely jako příkaz
module
a jiné, které jsou popsány v manové stránce.
Na kterých strojích lze instalovat?
Protože /packages
jsou na většině strojů dostupné pouze pro čtení, je nutné sem zapisovat na vybraných strojích. Ty jsou:
- anxur, aisa, aura a nymfe01
Jak získám práva pro zápis do /packages
Pokud se rozhodnete nainstalovat program pro všechny, potřebné adresáře a soubory vytvoříte aplikací na vytváření modulů na Fakultní administrativě. Musíte zadat jméno balíku, verzi a pro které OS ho hodláte nainstalovat. Při zakládání nového modulu prosím dodržujte výše uvedené pokyny. Zjednodušíte a zpříjemníte tak situaci nejen nám, ale i spoustě studentů, kteří se rozhodnou váš balík používat. Také je potřeba dbát na licence instalovaných balíků. Rozhodně by zde neměly být nainstalované ty programy, jejichž licence to neumožňuje.
Stejně tak pokud chcete převzít správu nějakého balíku po svém předchůdci, můžete, pokud je to třeba, požádat unix@fi
o přivlastnění existujícího balíku Vám.
A teď?
Teď už si jen vyberte jaký software chcete přiinstalovat a hurá do toho! Pokud chcete upgradovat stávající modul, kontaktujte prosím napřed toho kdo spravuje balík s nižší verzí -- zjistíte ho podle vlastníka příslušného adresáře.