Polecenie „ładowanie modułu” nie działa


12

Próbuję skompilować „Globalny model klimatu” za pomocą następujących poleceń.

module unload pgi gcc
module load gcc/4.6.3 pgi/11.8

Kiedy ich wykonania, odpowiedzi z terminala command not found.

Co ja robię źle? Jak to zrobić?


Czy potrafisz wyjaśnić, czym jest „globalny model klimatu”? Skąd bierzesz te instrukcje?
Oli

1
Umieściłbym tę odpowiedź w komentarzu, ale nie może z powodu braku reputacji :( Wygląda na environment-modulesto, że nie jest dostępny w 12.04, ale od 12.10 w górę: < packages.ubuntu.com/search?ke words=environment-modules >
Tssch

Odpowiedzi:


25

Wystarczy podsumować poprzednie komentarze i odpowiedzi oraz dodać trochę doświadczenia z pierwszej ręki :

Szukasz modulepolecenia dostarczonego przez pakiet modułów środowiskowych . Jest to narzędzie do modyfikowania środowiska powłoki (PATH, ale także aliasów itp.) I jest wspólne dla wielu klastrów wielu użytkowników, takich jak klastry obliczeniowe o wysokiej wydajności.

Otrzymane instrukcje prawdopodobnie pochodziły z jakiegoś klastra HPC, ponieważ chcesz uruchomić globalny model klimatu. Przeczytaj więcej o modułach środowiska na HPC tutaj.

A teraz coś związanego z Ubuntu : konfiguracja modułów środowiska pod Ubuntu nie jest tak uciążliwa. Zrobiłem to w niecałe 10 minut dla Ubuntu 14.10 i powłoki Bash.

Jak wspomniano w innych postach, możesz zainstalować moduły środowiska z repozytoriów (pakietu environment-modules).

Potem biegniesz add.modules. Umieści kilka linii w pliku inicjującym powłokę, w tym przypadku ~/.bashrc:

case "$0" in
          -sh|sh|*/sh)  modules_shell=sh ;;
       -ksh|ksh|*/ksh)  modules_shell=ksh ;;
       -zsh|zsh|*/zsh)  modules_shell=zsh ;;
    -bash|bash|*/bash)  modules_shell=bash ;;
esac
module() { eval `/usr/Modules/$MODULE_VERSION/bin/modulecmd $modules_shell $*`; }
#module() { eval `/usr/bin/modulecmd $modules_shell $*`; }

Musisz odkomentować ostatni wiersz i skomentować go lub usunąć od drugiego do ostatniego. Ta linia określa szukane modulepolecenie. Skutecznie działa modulecmd bashplus podane argumenty.

Mam wrażenie, że ta funkcja nie jest tak naprawdę zbyt bezpieczna, ponieważ ocenia wszystko, co dostarczysz w jej argumentach. Niektórzy użytkownicy mogą komentować, jak to poprawić.

Teraz wystarczy utworzyć katalog zawierający tak zwane modulefilesi dodać go $MODULEPATH, na przykład za pomocą module use /path/to/your/modulefiles. Istnieją przykłady plików modułów na tych stronach .

Uważam to za bardzo przydatne narzędzie nie tylko dla klastrów dla wielu użytkowników. Używam go do przełączania między różnymi dystrybucjami Pythona.


1
Myślę, że taka powinna być zaakceptowana odpowiedź na pytanie
credondo

przykładowy plik plików modułu link nie działa
muenalan 12.10.16


1
Wymaganie uruchomienia każdego użytkownika /usr/share/modules/bin/add.moduleswydaje się niewygodne. Dodałem „. /Etc/profile.d/modules.sh” na początku pliku /etc/bash.bashrc. Może to być rozwiązanie dla użytkowników, którzy używają bash jako powłoki logowania. Uwaga, było to potrzebne tylko do logowania GUI. Logowanie SSH działało już przed zmianą. Jak myślisz, czy to dobre rozwiązanie, czy polecasz coś innego?
Erik Sjölund,

Widzę, że pakiet środowisko-moduły historycznie zmienił metodę, aby wprowadzić funkcję „modułów” do powłoki. W starszym systemie Red Hat /etc/profile.d/modules.shmuszę pobierać źródła, aby zapewnić funkcję modułów (kiedyś rpm -ql environment-modulesrozumiałem, jakie pliki są dostępne). Na Ubuntu byłoby to dpkg-query -S /usr/share/modules- pomoże to zrozumieć, co zapewnia pakiet.
qneill

6

Dla tych, którzy „przeglądają” (patrząc na ciebie Seth): To NIE JEST PYTANIE O MODUŁY KERNELA. Jest to pytanie o manipulowanie zmiennymi środowiskowymi powłoki za pomocą narzędzia o nazwie MODUŁY ŚRODOWISKA. Jeśli w ogóle znasz moduły jądra, zorientujesz się, że nie ma standardowego narzędzia jądra (skryptu lub innego) o nazwie „moduł”. Wszystkie narzędzia do manipulacji modułami skracają moduł jako mod (lsmod, insmod, modprobe itp.). I nie ma modułu o nazwie gcc.

Moduły środowiskowe ( http://modules.sourceforge.net/ ) to kolejne narzędzie środowiskowe do przełączania środowisk wykonawczych w powłoce. Pomaga ludziom, którzy potrzebują Python 2.4 i Python 2.7 na tym samym komputerze. Lub pomaga ludziom zarządzać kompilatorami i bibliotekami Intel v. GNU.

Niestety, moduły środowiskowe nie są pakietem dla Ubuntu 12.04 LTS.

Opcje obejmują instalację ze źródła (kliknij powyższy link), aktualizację do 14.04 LTS lub przeglądanie plików deb. Z tych trzech instalowałbym ze źródła. Plik deb zależy od biblioteki libtcl8.6, która znajduje się w tej samej sytuacji, niedostępnej w wersji 12.04LTS.


4

Prawdopodobnie próbujesz użyć pakietu oprogramowania, który nie jest zainstalowany na twoim komputerze. Oczywiście nie jestem do końca pewien, ale zgaduję, że próbujesz użyć modułów środowiska . Jeśli jest to poprawne, możesz zainstalować moduły środowiskowe ze standardowych repozytoriów Ubuntu.

Pamiętaj jednak, że moduły środowiskowe to dość stary program. Strona główna odnotowuje ostatnią aktualizację narzędzia pomocniczego z 2011 roku, informacja o prawach autorskich nie wykracza poza rok 1999. Nie ma więc gwarancji, że ten pakiet oprogramowania będzie działał bezbłędnie z aktualnymi wersjami Ubuntu. Może, ale nie możesz być tego pewien.


2
Jest to ogromny problem w konfiguracji, ale działa bardzo dobrze i jest de facto standardem w klastrach dla wielu użytkowników.
Emmet

0

To nie jest przypadek module loadnie pracuje , module loadnie jest standardowym komenda w Ubuntu.

Jeśli próbujesz załadować istniejący moduł, sudo modprobe <modulename>to polecenie, którego szukasz. I możesz użyć rmmodlub modprobe -rzwolnić moduł.


Oli Te instrukcje otrzymuję z podręcznika użytkownika globalnego modelu klimatu „ECHAM6”. Wspomniane wyżej linie „ładowanie modułu” są wspomniane w instrukcji ładowania kompilatora z terminala ...
uzair mannan 10.09.13

4
Próbuje użyć programu modułów środowiska (zwykle instalowanego w klastrach), który zarządza zmiennymi środowiskowymi dla różnych kompilatorów, implementacji MPI itp., Ale nie ładuje modułów jądra.
Emmet

faktycznie istnieje, używamy go codziennie w naszej firmie: P
Bruno Pereira

modulejest narzędziem służącym do zmiany wersji narzędzia i biblioteki lib z jednego do drugiego, podobnie jak virtualenv to python, ale zamiast tego zmienia ścieżki i zmienne w celu odzwierciedlenia innych ustawień, np .: ładowanie modułu gcc-4.8 ładuje gcc-4.8, moduł load gcc-4.7 załaduje 4.7, itd.
Bruno Pereira

0

po prostu dodaj to do pierwszego wiersza skryptu. Następnie polecenie modułu zostanie odczytane przez tsch.

#!/bin/tcsh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.