Команда «загрузка модуля» не работает


12

Я пытаюсь скомпилировать «Глобальную модель климата» с помощью следующих команд.

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

Когда я их выполняю, терминал отвечает command not found.

Что я делаю неправильно? Как правильно это сделать?


Можете ли вы объяснить, что такое «Глобальная модель климата»? Где вы получаете эти инструкции?
— Оли

1
Я бы поставил этот ответ в комментарии, но не смог бы из-за отсутствия репутации :( Похоже, что environment-modulesон недоступен в 12.04, но начиная с 12.10 и выше: < packages.ubuntu.com/search?keywords=environment-modules >
— цщ

Ответы:


25

Просто суммируем предыдущие комментарии и ответы и добавим немного опыта из первых рук :

Вы ищете moduleкоманду, предоставляемую пакетом Environment Modules . Это инструмент для изменения среды оболочки (PATH, а также псевдонимы и т. Д.), Общий для многих многопользовательских кластеров, таких как кластеры высокопроизводительных вычислений.

Вероятно, вы получили инструкции от какого-то кластера высокопроизводительных вычислений, поскольку вы хотите использовать глобальную модель климата. Узнайте больше о модулях окружающей среды на HPC здесь.

Теперь о чем-то, действительно связанном с Ubuntu : на самом деле не так уж и сложно устанавливать модули среды под Ubuntu. Я сделал это менее чем за 10 минут для Ubuntu 14.10 и оболочки Bash.

Как упоминалось в других статьях, вы можете установить модули среды из репозитория (пакета environment-modules).

Тогда ты бежишь add.modules. Это поместит несколько строк в ваш файл инициализации оболочки, в этом случае ~/.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 $*`; }

Вам нужно раскомментировать последнюю строку и закомментировать или удалить вторую последнюю. Эта строка определяет moduleкоманду, которую вы искали. Это эффективно работает modulecmd bashплюс аргументы, которые вы приводите.

У меня такое ощущение, что эта функция на самом деле не очень безопасна, потому что она оценивает все, что вы ей предоставляете, в своих аргументах. Некоторые пользователи могут прокомментировать, как это улучшить.

Теперь вам просто нужно создать каталог, содержащий так называемые, modulefilesи добавить его $MODULEPATH, например, с помощью module use /path/to/your/modulefiles. Есть примеры для файлов модулей там, на веб-сайтах .

Я считаю, что это очень удобный инструмент не только для многопользовательских кластеров. Я использую его для переключения между различными дистрибутивами Python.


1
Я думаю, что это должен быть принятый ответ на вопрос
— credondo

пример файла модуля ссылка мертва
— muenalan


1
Требование к запуску каждого пользователя /usr/share/modules/bin/add.modulesкажется неудобным. Я добавил « .etc/profile.d/modules.sh » в начало файла /etc/bash.bashrc. Это может быть решением для пользователей, использующих bash в качестве оболочки для входа. Обратите внимание, это было необходимо только для входа в GUI. SSH-логин уже работал до изменения. Как вы думаете, это хорошее решение или вы рекомендуете что-то еще?
— Эрик Шёлунд

Я вижу, что пакет environment-modules исторически изменил метод для добавления функции 'modules' в вашу оболочку. В более старой системе Red Hat есть /etc/profile.d/modules.shисточник, который должен обеспечить функцию модулей (раньше я rpm -ql environment-modulesпонимал, какие файлы были доступны). На Ubuntu это будет dpkg-query -S /usr/share/modules- это поможет вам понять, что предоставляет пакет.
— Qneill

6

Для тех, кто "скользит" (смотрит на тебя, Сет): это НЕ ВОПРОС О МОДУЛЯХ ЯДРА. Это вопрос манипулирования переменными среды оболочки с помощью инструмента ENIRONMENT-MODULES. Если вы вообще знакомы с модулями ядра, вы поймете, что не существует стандартного инструмента ядра (сценария или иного) с именем «модуль». Все инструменты манипулирования модулями сокращают модуль как мод (lsmod, insmod, modprobe и т. Д.). И нет модуля с именем gcc.

Environment-modules ( http://modules.sourceforge.net/ ) - это еще один инструмент среды для переключения сред выполнения в оболочке. Это помогает людям, которым нужен Python 2.4 и Python 2.7 на одной машине. Или это помогает людям управлять компиляторами и библиотеками Intel v. GNU.

К сожалению, environment-modules не является пакетом для Ubuntu 12.04 LTS.

Варианты включают установку из исходного кода (перейдите по ссылке выше), обновление до 14.04 LTS или просмотр файлов deb. Из трех я бы установил из источника. Файл deb зависит от libtcl8.6, которая находится в том же затруднительном положении и недоступна для 12.04LTS.


4

Возможно, вы пытаетесь использовать программный пакет, который не установлен на вашем компьютере. Конечно, я не совсем уверен, но я думаю, вы пытаетесь использовать модули среды . Если это правильно, вы можете установить модули среды из стандартных репозиториев Ubuntu.

Но имейте в виду, что environment-modules - довольно старая программа. На домашней странице отмечается последнее обновление вспомогательного инструмента от 2011 года, уведомление об авторских правах не идет дальше 1999 года. Поэтому нет гарантии, что этот программный пакет работает безупречно с текущими версиями Ubuntu. Возможно, но вы не можете быть уверены.


2
Это огромная боль в настройке, но она работает очень хорошо и фактически является стандартом для многопользовательских кластеров.
— Эммет

0

Это не случай module loadне работать , module loadэто не стандартная команда в Ubuntu.

Если вы пытаетесь загрузить существующий модуль, sudo modprobe <modulename>это команда, которую вы ищете. И вы можете использовать rmmodили modprobe -rвыгрузить модуль.


Оли Я получаю эти инструкции из руководства пользователя модели глобального климата "ECHAM6". Упомянутые выше строки «загрузка модуля» упоминаются в руководстве по загрузке компилятора с терминала ...
— uzair mannan

4
Он пытается использовать программу модулей среды (обычно устанавливаемую в кластерах), которая управляет переменными среды для разных компиляторов, реализаций MPI и т. Д., А не загружает модули ядра.
— Эммет

это действительно существует, мы используем это каждый день в нашей компании: P
— Бруно Перейра

moduleэто инструмент, используемый для смены версии инструмента и библиотеки от одной к другой, очень похожий на virtualenv для python, но вместо этого он меняет ваши пути и переменные, чтобы отражать другие настройки, например: загрузка модуля gcc-4.8 загрузит модуль gcc-4.8, модуль загрузите gcc-4.7, загрузите 4.7 и т. д.
— Бруно Перейра

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.