Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Конфигурирование

Пред. 

Глава 12. Сборка и установка свободного програмного обеспечения

 След.


Конфигурирование

Факт создания авторами исходных кодов представляет собой чисто технический интерес для портирования программ. Свободное программное обеспечение, разработанное для UNIX®-систем, может быть использовано во всех существующих системах UNIX® (как свободных, так и собственнических) с незначительными изменениями или вообще без изменений. Для этого требуется сконфигурировать ПО непосредственно перед его компиляцией.

Существует несколько систем конфигурирования. Вы должны использовать ту, которую требует автор программного обеспечения (а иногда и несколько). Обычно вы можете:

  • Использовать AutoConf (см. раздел «Autoconf»), если в родительском каталоге дистрибутива имеется файл с именем configure.
  • Использовать imake (см. раздел «Imake»), если в родительском каталоге дистрибутива имеется файл с именем Imakefile.
  • Запустить shell-скрипт (например, install.sh) согласно содержимому файла INSTALL (или файла README).

Autoconf

Принципы

Программа AutoConf используется для корректной настройки ПО. Она создcт необходимые для компиляции файлы (например, Makefile) и иногда изменяет непосредственно сами исходные тексты (например, при помощи файла config.h.in).

Принцип AutoConf прост:

  • Разработчик ПО знает, какие проверки необходимы для настройки его программы (например: «какую версию этой библиотеки вы используете?»). Он записывает их в файл с именем configure.in, используя определённый синтаксис.
  • Он запускает AutoConf, которая создcт из файла configure.in конфигурационный скрипт с именем configure. Этот скрипт выполняет тесты, необходимые при настройке программы.
  • Конечный пользователь запускает скрипт и AutoConf настраивает всё, что необходимо для компиляции.

Пример

Пример использования AutoConf:

$ ./configure
loading cache ./config.cache
checking for gcc... gcc
checking whether the C compiler (gcc  ) works... yes
checking whether the C compiler (gcc  ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking for main in -lX11... yes
checking for main in -lXpm... yes
checking for main in -lguile... yes
checking for main in -lm... yes
checking for main in -lncurses... yes
checking how to run the C preprocessor... gcc -E
checking for X... libraries /usr/X11R6/lib, headers /usr/X11R6/include
checking for ANSI C header files... yes
checking for unistd.h... yes
checking for working const... yes
updating cache ./config.cache
creating ./config.status
creating lib/Makefile
creating src/Makefile
creating Makefile

Для лучшего управления информацией, генерируемой configure, из командной строки или через переменные окружения могут быть добавлены некоторые опции. Пример:

$ ./configure --with-gcc --prefix=/opt/GNU

или (при помощи bash):

$ export CC=`which gcc`
$ export CFLAGS=-O2
$ ./configure --with-gcc

или:

$ CC=gcc CFLAGS=-O2 ./configure

А что если... это не работает?

Обычно это ошибка подобного вида: configure: error: Cannot find library guile (подобным образом выглядит большинство ошибок скрипта configure).

Это означает, что скрипт configure не смог найти библиотеку (в этой примере библиотеку guile). Принцип заключается в том, что скрипт configure компилирует небольшую тестовую программу, использующую эту библиотеку. Если компиляция этой программы завершится неудачей, то невозможно будет откомпилировать и весь программный пакет. Затем возникает ошибка.

  • Причину ошибки ищите в конце файла config.log, содержащего отчёт обо всех этапах конфигурирования. Компилятор C выводит довольно чёткие сообщения об ошибках. Обычно это поможет вам при решении возникающих проблем.
  • Проверьте, правильно ли установлена названная библиотека. Если это не так - установите её (из исходных кодов или в виде откомпилированного бинарного файла) и ещё раз запустите configure. Эффективным способом проверки является поиск файла, содержащего символы библиотеки, коим всегда будет lib<имя>.so. Например,
    $ find / -name 'libguile*'

    или, как вариант:

    $ locate libguile
  • Проверьте, доступна ли библиотека для компилятора. Это означает, что она находится в одном из каталогов: /usr/lib, /lib, /usr/X11R6/lib (или в одном из тех, что определеныпеременной окружения LD_LIBRARY_PATH, как описано в «А что если... это не работает?» пункт b). Проверьте, является ли этот файл библиотекой, набрав file libguile.so.
  • Проверьте, правильно ли установлены заголовочные файлы библиотеки (обычно в /usr/include, /usr/local/include или /usr/X11R6/include). Если вы не знаете, какие файлы заголовков вам нужны, проверьте, установлена ли у вас development-версия (для разработки) требуемой библиотеки (например, libgtk+2.0-devel вместо libgtk+2.0). Версия библиотеки для разработки предоставляет файлы «include», необходимые для компиляции ПО, использующего эту библиотеку.
  • Проверьте, достаточно ли у вас свободного дискового пространства (для скрипта configure требуется некоторый объём для временных файлов). Воспользуйтесь командой df -h для вывода списка разделов вашей системы и обратите внимание на заполненные или почти заполненные разделы.

Если вы не понимаете сообщения, сохранённые в файле config.log, не стесняйтесь попросить помощи у сообщества свободного ПО (см. раздел «Техническая поддержка»).

Кроме того, проверьте, существует ли библиотека, даже если configure говорит, что её нет (например, было бы очень странно, если бы в вашей системе отсутствовала библиотека curses). В этом случае, вероятно, повреждена переменная окружения LD_LIBRARY_PATH!

Imake

imake позволяет вам конфигурировать свободное ПО путём создания по простым правилам файла Makefile. Эти правила определяют, какие файлы должны быть откомпилированы для сборки бинарного файла, а imake генерируетсоответствующий Makefile. Эти правила находятся в файле с именем Imakefile.

Интересная вещь, касающаяся imake, заключается в том, что последний использует сайт-зависимую (зависящую от архитектуры) информацию. Этодовольно удобно для приложений, использующих X Window System. Но imake используется также и для многих других приложений.

Простейшее использование imake заключается в переходе в главный каталог распакованного архива и последующем запуске скрипта xmkmf, который вызывает программу imake:

$ xmkmf -a
$ imake -DUseInstalled -I/usr/X11R6/lib/X11/config
$ make Makefiles

Если сайт установлен неправильно, перекомпилируйте и установите X11R6!

Разные shell-скрипты

Для получения дополнительной информации прочтите файлы INSTALL или README. Обычно вам нужно запустить файл install.sh или configure.sh. Затем инсталляционный скрипт будет либо бездиалоговым (и сам определит всё, что ему нужно), либо будет запрашивать у вас информацию о вашей системе (пути, например).

Если вы не можете определить, какой файл нужно запустить, вы можете ввести ./ (в bash'е), а затем дважды нажать TAB. bash автоматически (в конфигурации по умолчанию) дополнит команду возможным исполняемым файлом из каталога (а, следовательно, возможным конфигурационным скриптом). Если выполнены могут быть несколько файлов, вам будет выведен их список. Затем вам нужно просто выбрать правильный файл.

Другим особым случаем является установка модулей perl. Установка таких модулей выполняется путём запуска конфигурационного скрипта, написанного на perl. Обычно выполняется команда:

$ perl Makefile.PL

Альтернативы

Некоторые дистрибутивы свободного ПО имеют плохо организованную структуру, особенно на начальных этапах разработки (но пользователя об этом предупреждают!). Для них иногда требуется, чтобы вы «вручную» изменили некоторые конфигурационные файлы. Обычно это файлы Makefile (см. раздел «Make») и config.h (это просто условное имя).

Мы не советуем делать эти манипуляции, за исключением тех пользователей, которые действительно знают, что они делают. Для этого требуются реальные знания и немного стремления к успеху, однако практика - путь к совершенству.


Пред. 

Уровень выше

 След.

Распаковка 

Начало

 Компиляция