Библиотека сайта rus-linux.net
Конфигурирование |
||
---|---|---|
Глава 12. Сборка и установка свободного програмного обеспечения |
Конфигурирование
Факт создания авторами исходных кодов представляет собой чисто технический интерес для портирования программ. Свободное программное обеспечение, разработанное для UNIX®-систем, может быть использовано во всех существующих системах UNIX® (как свободных, так и собственнических) с незначительными изменениями или вообще без изменений. Для этого требуется сконфигурировать ПО непосредственно перед его компиляцией.
Существует несколько систем конфигурирования. Вы должны использовать ту, которую требует автор программного обеспечения (а иногда и несколько). Обычно вы можете:
- Использовать
AutoConf (см. раздел «Autoconf»),
если в родительском каталоге дистрибутива имеется файл с именем
configure
. - Использовать
imake (см. раздел «Imake»),
если в родительском каталоге дистрибутива имеется файл с именем
Imakefile
. - Запустить
shell-скрипт
(например,
install.sh
) согласно содержимому файлаINSTALL
(или файлаREADME
).
Autoconf
Принципы
Программа
AutoConf используется для корректной настройки ПО. Она создcт
необходимые для компиляции файлы (например, Makefile
)
и иногда изменяет непосредственно сами исходные тексты (например, при
помощи файла config.h.in
).
- Разработчик
ПО знает, какие проверки необходимы для настройки его программы
(например: «какую версию этой библиотеки
вы используете?»). Он записывает их в файл с именем
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 |
$ 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
(это просто условное имя).
Мы не советуем делать эти манипуляции, за исключением тех пользователей, которые действительно знают, что они делают. Для этого требуются реальные знания и немного стремления к успеху, однако практика - путь к совершенству.
Распаковка |
Компиляция |