Revision as of 16:42, 25 Feb 2007 Orloffm (Talk | contribs) Собственно, Geant4 ← Go to previous diff |
Revision as of 16:43, 25 Feb 2007 Orloffm (Talk | contribs) Установка GEANT4 (Современный способ) Go to next diff → |
||
Line 1: | Line 1: | ||
- | ==Установка GEANT4 (Современный способ)== | + | =Установка GEANT4 (Современный способ)= |
===Введение=== | ===Введение=== |
Revision as of 16:43, 25 Feb 2007
Содержание |
Установка GEANT4 (Современный способ)
Введение
Пошаговое руководство по установке GEANT4, которое раньше предлагалось на этом сайте в качестве основного, не содержало фактических ошибок. Пользуясь им, GEANT4 можно установить и сейчас, однако на момент, когда оно было написано, последней версией библиотеки была 4.6.0. За полтора года изменилось довольно многое, и, в частности, официально рекомендованный разработчиками способ установки GEANT4. Скрипт Configure находился в корне дерева папок geant4 и раньше, но тогда он не работал.
Совместимость
Лучшей платформой для запуска Geant4 является Linux. Официально поддерживается еще целый список архитектур, в числе которых есть и Windows, но Linux является основной платформой разработки geant, и поэтому вероятность успешной устанвки именно в ней будет несколько выше. Нам ничего не известно о случаях запуска Geant4 в Windows, поэтому не желающих переключаться в более свободную ОС просто отсылаем к официальному руководству по установке в Windows с использованием окружения Cygwin (англ.) или к статье об установке без Cygwin, но с с экстраординарными усилиями.
Итак, установка в Линуксе. Вопреки расхожему мнению, установить GEANT4 удастся на любом более-менее современном дистрибутиве линукса. Единственным условием успешности этого процесса является наличие достаточно свежих версий gcc (http://en.wikipedia.org/wiki/GNU_Compiler_Collection). Проверить его наличие можно командой
$ gcc --version
На нашей машине данная команда выдает следующий текст:
gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3) Copyright (C) 2004 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.
Из чего следует, что версия GCC, установленная у нас — gcc 3.4.2. Geant4 нельзя установить на систему с версией gcc ниже, чем 3.0.6. В любом современно дистрибутиве Линукса это требование выполнено, так что заморачиваться по этому поводу не стоит.
Несколько замечаний про Ubuntu
Во-первых, следует чётко понимать всю местную катавасию с root'ом. Все программы устанавливаются только в режиме суперпользователя, т.е. с правами пользователя root. Обычный пользователь не имеет таких прав. Для запуска из терминала всех мало-мальски связанных с системой программ приходится каждую из них предварять командой sudo, либо один раз ввести sudo -s. Обратите внимание, что приглашение терминала для обычного пользователя выглядит как $, а для рута — как #. Если в примере команда предворяется знаком решётки, то нужно либо предворить её командой sudo:
$ sudo apt-get install emacs $ sudo gedit /boot/grub/menu.lst
либо получить права суперпользователя с помощью sudo -s:
$ sudo -s Password: # apt-get install emacs # gedit /boot/grub/menu.lst # exit
Если команда в примерах предворяется долларом, то ввести её можно и так.
Второй момент. Перед установкой Geant4 в Ubuntu надо предварительно установить несколько отсутствующих изначально пакетов:
# apt-get install build-essential freeglut3-dev xorg-dev
Третье. Нужно добавить обработку ~/.bash_profile при загрузке системы. Этот файл обрабатывается при загрузке практически всех Линуксов кроме Ubuntu, и руководства по установке различных программ (в том числе и наше) часто предлагают поставить ссылки на разные скрипты именно в него. Чтобы ~/.bash_profile, а с ним и эти скрипты, выполнялись, делаем следующее.
# gedit /etc/gdm/Xsession
В этом файле ищем строчку
# this will go into the .xsession-errors along with all other echo's
и добавляем перед ней строчку
. ~/.bash_profile
Файл /etc/gdm/Xsession выполняется при загрузке системы. Тогда же и будет выполнен ~/.bash_profile, в который мы позднее добавим ссылку на скрипт Geant4, задающий его переменные окружения. На всякий случай в скобках отметим, что при каждом запуске терминала запускаются /etc/bash.bashrc и ~/.bashrc.
Что нам нужно
Нам понадобится несколько файлов.
Математическая библиотека CLHEP
CLHEP содержит базовые операции для манипуляций с векторами, матрицами, случайными числами и т. п.
Нам нужен, на самом деле, набор исходных кодов этой библиотеки. Соответствующий архив можно взять здесь: http://proj-clhep.web.cern.ch/proj-clhep/, по ссылке Downloading / Latest source code.
Обычно в один момент времени доступно несколько версий CLHEP, и на ее сайте ничего не сказано на предмет того, какую версию использовать для работы с Geant4. На самом деле, не всегда последняя версия Clhep совместима с Geant4 — например, если вы попытаетесь собрать geant4.7 с clhep-2.0, то неприятным сюрпризом для вас окажутся утечки памяти в физических процессах, такие, что при числе PrimaryEvents 1×106 использование памяти будет в районе 500 Mb. Так что лучше всего будет на домашней страничке Geant выяснить, какая версия clhep была использованна для тестирования последнего релиза Geant4 и воспользоваться именно ей.
Собственно, Geant4
То есть, опять-таки, его исходные коды. Они находятся по этому адресу: http://geant4.web.cern.ch/geant4/support/download.shtml. Для скачивания нужно нажать под заголовком Source Files на кнопку слева от надписи "GNU or Linux tar format, compressed using gzip".
Data files
Ещё нам нужны пять библиотек, доступных на той же странице под заголовком Data files. Их нужно точно так же скачать, нажав на соответствующие кнопки.
Вот список адресов последних доступных файлов на 25 февраля 2007 года.
http://proj-clhep.web.cern.ch/proj-clhep/DISTRIBUTION/distributions/clhep-2.0.3.1.tgz http://geant4.cern.ch/support/source/geant4.8.2.p01.gtar.gz http://geant4.cern.ch/support/source/G4NDL.3.10.tar.gz http://geant4.cern.ch/support/source/G4NDL.0.2.tar.gz http://geant4.cern.ch/support/source/G4EMLOW.4.2.tar.gz http://geant4.cern.ch/support/source/PhotonEvaporation.2.0.tar.gz http://geant4.cern.ch/support/source/G4RadioactiveDecay.3.1.tar.gz
CLHEP
Сборка Clhep — процесс прямолинейный. Предполагая, что устанавливать ее вы будете в /usr/local/CLHEP, необходимо выполнить следующие команды (в режиме суперпользователя):
$ tar xzf clhep-1.9.2.2 $ cd 1.9.2.2/CLHEP $ ./configure --prefix=/usr/local/CLHEP --disable-shared $ make && make install
Здесь мы отключили компиляцию динамических библиотек по причинам, которые станут ясны несколько позднее. Все.
Configure
Секрет быстрой и безболезненной установки Geant4 — скрипт Configure, находящийся в корневой директории пакета.
С сайта CERN скачивается последняя версия Geant4. На текущий момент (Tue Jan 17 2006) таковая — geant4.8.0, которую можно скачать здесь (http://geant4.cern.ch/source/source/geant4.8.0.gtar.gz). Распаковывается:
$ tar xzf geant4.8.0.gtar.gz -С <директория инсталляции> $ cd <директория инсталляции>/geant4.8.0
Здесь <директория инсталляции> это место, где будет установлен Geant. Например, /usr/local. Всю дальнейшую работу за нас сделает Configure, который запускается командой ./Configure -build. Его работа состоит в том, что он задаст вам несколько вопросов и на основании ваших ответов создаст конфигурацию для установки и использований Geant4. Итак, первые несколько экранов его вывода можно безопасно пропустить, нажимая Enter в ответ на запрос
[Type carriage return to continue]
Первым важным вопросом будет вопрос о платформе:
Definition of G4SYSTEM variable is Linux-g++. That stands for: 1) OS : Linux 2) Compiler : g++ To modify default settings, select number above (e.g. 2) [Press [Enter] for default settings]
Нам был предложен вариант по умолчанию (система Linux и компилятор GCC), с которым мы соглашаемся. Configure всегда предлагает достаточно разумные варианты ответов по умолчанию, которые выводятся в квадратных скобках и с которыми можно согласиться просто нажатием Enter.
Следующий вопрос касается портабельности сгенерированных Configure скриптов, которые будут в дальнейшем использоваться при компиляции программ на основе Geant.
Do you expect to run these scripts and binaries on multiple machines? [n]
На этот вопрос стоит ответить y, если вы планируете использовать одну и ту же установку Geant по сети, или, скажем, просто захотите скопировать его с одной машины на другую. На уже откомпилированные программы ограничения ответа n не распространяются, но и ответ y вопреки утверждениям Configure не даст сколько-нибудь заметного падения скорости компиляции. Отвечаем y и нажимаем Enter
Where is Geant4 source installed? [/soft/GEANT4]
Где находится исходный код Geant. Ответ по умолчанию подходит.
Specify the path where Geant4 libraries and source files should be installed. [/soft/GEANT4]
Куда будет установлен Geant4. Так как мы планируем устанавлнивать его в ту же самую директорию, куда и распаковали, то соглашаемся с предложенным вариантом (нажатием Enter)
Do you want to copy all Geant4 headers in one directory? [n]
Configure любезно предлагает скопировать все заголовочные файлы Geant4 в одну папку. В принципе это может оказаться в один момент очень удобно, так что отвечаем y.
Please, specify default directory where ALL the Geant4 data is installed: G4LEVELGAMMADATA: /soft/GEANT4/data/PhotonEvaporation2.0 G4RADIOACTIVEDATA: /soft/GEANT4/data/RadiativeDecay3.0 G4LEDATA: /soft/GEANT4/data/G4EMLOW3.0 NeutronHPCrossSections: /soft/GEANT4/data/G4NDL3.7 G4ELASTICDATA: /soft/GEANT4/data/G4ELASTIC1.1 You will be asked about customizing these next. [/soft/GEANT4/data] Directory /soft/GEANT4/data doesn't exist. Use that name anyway? [n] y Please, specify default directory where the Geant4 data is installed: 1) G4LEVELGAMMADATA: /soft/GEANT4/data/PhotonEvaporation 2) G4RADIOACTIVEDATA: /soft/GEANT4/data/RadiativeDecay 3) G4LEDATA: /soft/GEANT4/data/G4EMLOW3.0 4) NeutronHPCrossSections: /soft/GEANT4/data/G4NDL3.7 5) G4ELASTICDATA: /soft/GEANT4/data/G4ELASTIC1.1 To modify default settings, select number above (e.g. 2) [Press [Enter] for default settings]
В этой серии вопросов нам предлагается ответить, где будут установленны файлы данных, используемые некоторыми процессами Geant4. Я предлагаю согласиться со значениями по умолчанию, нажав Enter в ответ на первый вопрос, ответив y на второй и снова Enter на третий.
Please, specify where CLHEP is installed (set by default): CLHEP_BASE_DIR: /usr/local According to it will be set: CLHEP_INCLUDE_DIR CLHEP_LIB_DIR You will be asked about customizing these next. [/usr/local]
Здесь необходимо указать, где был установлен CLHEP. Введите имя директории, которую вы выбрали на предыдущем этапе (/usr/local/CLHEP), и нажмите Enter. Затем вас попросят уточнить детали ее расположения, и вам снова достаточно будет согласиться с предложениями по умолчанию.
By default 'static' (.a) libraries are built. Do you want to build 'shared' (.so) libraries? [n]
На i386 динамические библиотеки приблизительно на 20—30% медленнее статических, поэтому принимаем предложение по умолчанию не собирать динамических библиотек.
Do you want to build 'global' compound libraries? [n]
Здесь вам предстоит выбрать, компилировать Geant в огромное количество (~150) маленьких «гранулярных» библиотек, либо десять, но больших. Разницы в скорости работы Geant это не дает, однако, на медленных старых машинах с небольшим количеством памяти программы на Geant4 компилируются значительно быстрее при использовании гранулярных библиотек. Однако этот подход привязывает вас к собственной системе Geant4 для нахождения зависимостей и сборки, что может оказаться неудобным в каких-то случаях. На Athlon 1700+ с 512 Мб памяти использование глобальных (больших) библиотек никак не замедляет работу с Geant4.
Granular libraries are used by defaults, you asked to build global compound libraries. Do you want to build 'granular' libraries too? [n]
Нужно ли собирать гранулярные библиотеки. Они только занимают место, так что отвечаем n.
Do you want to compile libraries in DEBUG mode (-g)? [n]
Ни в коем случае не отвечаем положительно на этот вопрос! Если вы соберете Geant4 в отладочном режиме, то ваши бинарники будут занимать по 300 Мб, а при их компоновке (то есть, каждый раз, когда вы будете модифицировать свою программу для симуляции) система будет на полчаса уходить в своп.
G4UI_NONE If this variable is set, no UI sessions nor any UI libraries are built. This can be useful when running a pure batch job or in a user framework having its own UI system. Do you want to set this variable ? [n] G4UI_BUILD_XAW_SESSION G4UI_USE_XAW Specifies to include and use the XAW interfaces in the application to be built. The XAW (X11 Athena Widget set) extensions are required to activate and build this driver. [n] G4UI_BUILD_XM_SESSION G4UI_USE_XM Specifies to include and use the XM Motif based user interfaces. The XM Motif extensions are required to activate and build this driver. [n] G4VIS_NONE If this variable is set, no visualization drivers will be built or used. Do you want to set this variable ? [n]
Далее четыре вопроса, на которые отвечаем принимая предложение по умолчанию. Первый спрашивает, отключить ли все встроенные средства взаимодействия с программой во время выполнения, в том числе и командный интерпретатор. Второй и третий относятся к графическим интерфейсам на основе Xaw и Motif — если они вам нужны, то вы вряд ли сейчас выполняете по шагам действия, следуя данному руководству. Последний предлагает полностью отключить визуализацию. Кому-то может и понадобиться, но не нам. Мы — большинство.
G4VIS_BUILD_OPENGLX_DRIVER G4VIS_USE_OPENGLX It is an interface to the de facto standard 3D graphics library, OpenGL. It is well suited for real-time fast visualization and prototyping. The X11 version of the OpenGL libraries is required. [n] y
Визуализация геометрии и траекторий посредством OpenGL. По всей видимости оно вам понадобится, поскольку это основной, самый удобный и самый быстрый драйвер визуализации. Отвечаем y.
G4VIS_BUILD_OPENGLXM_DRIVER G4VIS_USE_OPENGLXM It is an interface to the de facto standard 3D graphics library, OpenGL. It is well suited for real-time fast visualization and prototyping. The X11 version of the OpenGL libraries and the Motif Xm extension is required. [n]
То же самое, но с использованием Motif. Cкрытые преимущества данного драйвера мне опять-таки неизвестны.
G4VIS_BUILD_DAWN_DRIVER G4VIS_USE_DAWN DAWN drivers are interfaces to the Fukui Renderer DAWN. DAWN is a vectorized 3D PostScript processor suited to prepare technical high quality outputs for presentation and/or documentation. [n] y
DAWN это достаточно удобная система, которая позволяет генерировать картинки визуализации в формате .ps и .eps. Работает она в отличие от OpenGL, режиме офф-лайн, то есть, вы сначала запускаете свою программу, которая после завершения симуляций, генерирует файл в формате DAWN, который затем обрабатывается другой специальной программой Fukui Renderer, и только потом у вас на руках остается векторная иллюстрация. Но тем не менее, повторюсь, достаточно удобно и красиво.
G4VIS_BUILD_OIX_DRIVER G4VIS_USE_OIX The OpenInventor driver is based on OpenInventor technology for scientific visualization. The X11 version of OpenInventor is required. [n]
OpenInventor — это библиотеки и софт для трехмерного моделирования от фирмы SGI. Он позволяет всячески вертеть и обозревать вашу модель прямо во время выполнения программы, все это с аппаратным ускорением. Но без шансов, что он у вас установлен, поэтому отвечаем отрицательно, по умолчанию.
G4VIS_BUILD_RAYTRACERXX_DRIVER G4VIS_USE_RAYTRACERX Allows for interactive ray-tracing graphics through X11. The X11 package is required. [n] G4VIS_BUILD_VRML_DRIVER G4VIS_USE_VRML These driver generate VRML files, which describe 3D scenes to be visualized with a proper VRML viewer. [n]
Что такое RayTracerX, я еще не знаю, эта фишка появилась в g4 только начиная с восьмой версии, а вот VRML вам очень может понадобиться. Хотя бы для того, чтобы импортировать модели Geant в 3D Max, или для отлаживания геометрии.
OGLHOME/include OGLHOME/lib You have selected to use OpenGL driver. Specify the correct path (OGLHOME) where OpenGL is installed in your system. It was found in: [/usr]
Здесь нужно указать, где именно у вас установленны библиотеки OpenGL. На большинстве систем они именно там, куда указывает путь, предложенный Configure, в папке /usr, так что, принимаем этот вариант.
G4LIB_BUILD_G3TOG4 The utility module 'g3tog4' will be built by setting this variable. NOTE: it requires a valid FORTRAN compiler to be installed on your system and the 'cernlib' command in the path, in order to build the ancillary tools! Do you want to build 'g3tog4' ? [n] G4LIB_BUILD_ZLIB Do you wish to activate compression for output files generated through the HepRep visualization driver ? [n] G4ANALYSIS_USE Activates the configuration setup for allowing plugins to analysis tools based on AIDA (Astract Interfaces for Data Analysis). In order to use AIDA features and compliant analysis tools, the proper environment for these tools will have to be set (see documentation for the specific analysis tools). [n]
На эти, последние, три вопроса следует отвечать нажатием Enter. Первый из них выясняет, желаете ли вы использовать модуль G3toG4, который позволяет использовать существующий фортрановский код для GEANT3 в ваших программах на Geant4. И снова, те кому это может быть интересно, вряд ли читают этот текст.
End of configuration phase. Creating configuration setup file... WARNING: the generated configuration file can be edited if necessary! You can introduce any change to the configuration file /soft/GEANT4/.config/bin/Linux-g++/config.sh before the final installation. To do so, use a shell escape now (e.g. !vi /soft/GEANT4/.config/bin/Linux-g++/config.sh). Press [Enter] to start installation or use a shell escape to edit config.sh:
О да. Готово. Нажимаем Enter и ждем несколько часов. Затем, если компиляция завершится успешно, то последним шагом в установке GEANT4 с вашей стороны будет команда ./Configure -install.
Единственное, если вы все-таки указали ему, что хотели бы использовать GEANT в виде динамических библиотек, то, возможно, вам понадобится указать их месторасположение динамическому линкеру. Для этого можно сделать, например, так:
$ su # echo $G4INSTALL/lib/Linux-g++ > /etc/ld.so.conf.d/GEANT.conf # /sbin/ldconfig
Теперь уже точно все. Не забудьте добавить в свой файлик ~/.bash_profile ссылочку на сгенерированный Configure скрипт env.sh:
. /soft/GEANT4/.config/bin/Linux-g++/env.sh
От души поздравляю!