Установка программ из source
Установка программ из source Одно из достоинств Open Source в том, что вам доступен исходный код фактически любой программы. Данная статья описывает процесс установки программы, используя ее исходники, чтобы исключить всевозможные проблемы, возникающие у читателей нашей рубрики.
Вообще, в Linux есть хорошие встроенные возможности по установке программ из пакетов, таких как rpm в RedHat. Если вы уже устанавливали программы с использованием RPM или еще чего-нибудь, то вам будет легче понять обсуждаемые здесь вещи.
Первое, что вам нужно, — это, конечно, исходники той программы, которую вы собираетесь установить. Программу для установки вы можете утянуть с любого FTP, на котором она есть:).
Используйте отдельную директорию для хранения всех скачанных файлов. Все скачанные файлы пусть находятся в директории, скажем, ~/downloaded. Помещение всех файлов в один общий каталог преследует две цели — вы всегде помните, где находится скачанный вами файл, кроме того если вы однажды пытаетесь снова скачать файл, который уже был вами скачан, то ваше программное обеспечение скажет вам, что такой файл уже имеется в каталоге и вы не будете попусту тратить время на бесполезную закачку.
По большей части исходные тексты программ поставляются как файлы ".tar" — это так называемые "tarballs". Это, по своей сути, означает, что все файлы, которые нужны для инсталляции выбранной вами программы, находятся в одном архивном файле, созданном при помощи программы tar. Поскольку сама программа tar не производит сжатие файлов, то такой файл сжимают архиватором gzip или bzip2. В таких случаях расширения файла становится tar.gz или tar.bz.
Очевидно, что следующим нашим шагом будет распаковка архива. Большинство современных дистрибутивов поставляется с программами, подобными виндошным WinRAR или WinZip, а также кучей консольных архиваторов типа gzip и bzip2. Для распаковки архива следует воспользоваться ими или из командной строки просто дать следующую команду:
tar zxvf имя_пакета.tar.gz
Данная команда распакует все файлы в текущий каталог, создаст необходимые каталоги (такие же, как они заданы в tar-файле).
Следующий шаг, после того как архив распакован в нужную директорию, заключается в том, что вам нужно прочитать файл Readme. Данный файл содержит важную информацию о том, какое программное обеспечение необходимо для того, чтобы программа работала после установки, часто данный файл содержит пошаговые инструкции по установке программы.
Если tarball файл не содержит данного файла Readme, то поищите файл аналогичного назначения, называемый Install. Очень часто файл Readme отсылает user'a к файлу INSTALL, который содержит команды, необходимые для инсталляции программы. Могу поспорить, что команды будут выглядеть так:
./configure
make
make install
Почти для всех программ инсталляционный процесс, как правило, одинаков. Существуют только три необходимые команды — './configure', 'make' и 'make install' — и больше кроме них вам ничего не нужно. Первая команда — ./configure — запускает последовательность shell скриптов для определения местоположения необходимых библиотек и командные имена компиляторов и линковщиков. Эта же команда создает файл Makefile, который используется для запуска компилятора и линкера, а также для копирования скомпилированных бинарников в новое местоположение.
Откройте терминальное окно и перейдите в ту директорию, куда вы распаковали файлы программы. Далее запустите первую команду — ./configure.
На экране вы увидите примерно следующее:
[xstranger@strange bprogx-0.12]$./configure
creating cache./config.cache
checking for extra includes... no
checking for extra libs... no
checking for a BSD compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking whether make sets ${MAKE}... yes
checking for working aclocal... found
checking for working autoconf... found
checking for working automake... found
checking for working autoheader... found
checking for working makeinfo... found
checking for a C-Compiler...
checking for gcc... gcc
...
updating cache./config.cache
creating./config.status
creating Makefile
creating bprogx /Makefile
...
creating config.h
[xstranger@strange bprogx-0.12]$
Здесь показана лишь малая доля того, что у вас будет выводиться на экран. На самом деле выводится гораздо больше информации. Кстати, первая строчка создает временный файл.
Команда make делает две операции: компиляцию и линковку. Если на этом этапе вам выдается какая-либо ошибка, то это, как правило говорит о том, что у вас нет каких-либо необходимых библиотек. Если это так, то вам нужно будет либо установить эти библиотеки, либо, если они у вас есть, но их версии не соответствуют требуемым, обновить их. После этого попытайтесь заново установить программу.
Итак, команда ./сonfigure завершилась успешно. Вы переходите к этапу компиляции и во время компиляции программы... получили ошибку, не связанную с отсутствием какой-либо библиотеки. Что делать? Во-первых, это RTFM (для тех, кто не знает, расшифровывается "примерно" так: Read The Fantastic Manual;-)). Проверьте документацию, которая идет вместе с исходным кодом. Иногда некоторые примечания даются в файлах Readme или Install, но обычно их там мало либо они очень неинформативные. Если поставляемая документация не помогла решить вашу проблему, вы можете пойти на сайт программы — там могут быть patch'и и update'ы для нее. Если и это вам не помогло, попробуйте поискать ответы по конференциям Usenet через систему Deja.com. Используйте сообщение об ошибке в качестве текста для поиска.
Если и этот вариант вам ничем не помог, то вы можете напрямую обратиться к разработчику программы. Но до этой стадии дело доходит редко:). Порывшись хорошенько в Интернете, вы сможете найти ответ на любой ваш вопрос. Главное — хорошо искать.
Прежде чем выполнить третью команду, вы либо должны пользователю дать соответствующие привилегии на команду установки и необходимые директории, либо зайти в систему как root. Иначе при попытке установки программы вы можете получить сообщение типа "Permission denied", что говорит о вашей невозможности выполнить команду — у вас нет привилегий, которые может вам дать только администратор системы.
Здесь стоит вспомнить главное правило _нормального_ админа: нельзя давать простым юзерам заходить в систему как root — это может быть большим риском, скажем, для серверной системы. Посему root'вый пароль не должен разглашаться.
Зайти как root в систему вы можете при помощи команды su (это в том случае, если вы залогинились в систему как обычный user). Прочитайте man по этой команде. Теперь смело запускайте команду make install. Если на этом этапе вы получаете сообщение об ошибке, то это означает, что файлы копируются (идет попытка скопировать их) в несуществующую директорию.
Как только эта команда завершилась, сделайте, если это необходимо, logout и login — и можете опробовать новую программу.
Где же еще могут быть грабли? Давайте представим ситуацию, что содержимое файлов Readme и Install не сильно вам помогает понять, что же нужно сделать. Что тогда? В принципе, команды для компиляции и инсталляции всегда одни и те же. Если в каталоге с исходными файлами имеется файл makefile, то вы можете использовать команду make для компиляции программы и, вероятно, для ее установки. Если там также имеется и config-скрипт, то запустите его первым, т.е. перед запуском команды make.
Напоследок хочется дать следующий совет: вход в систему как обычный пользователь, нежели как root, помогает вам избежать множества неприятных моментов. В частности, вы сможете протестировать программу на предмет доступа к ней обычных пользователей системы, а не пользователей категории root.
(c) компьютерная газета
Вообще, в Linux есть хорошие встроенные возможности по установке программ из пакетов, таких как rpm в RedHat. Если вы уже устанавливали программы с использованием RPM или еще чего-нибудь, то вам будет легче понять обсуждаемые здесь вещи.
Первое, что вам нужно, — это, конечно, исходники той программы, которую вы собираетесь установить. Программу для установки вы можете утянуть с любого FTP, на котором она есть:).
Используйте отдельную директорию для хранения всех скачанных файлов. Все скачанные файлы пусть находятся в директории, скажем, ~/downloaded. Помещение всех файлов в один общий каталог преследует две цели — вы всегде помните, где находится скачанный вами файл, кроме того если вы однажды пытаетесь снова скачать файл, который уже был вами скачан, то ваше программное обеспечение скажет вам, что такой файл уже имеется в каталоге и вы не будете попусту тратить время на бесполезную закачку.
По большей части исходные тексты программ поставляются как файлы ".tar" — это так называемые "tarballs". Это, по своей сути, означает, что все файлы, которые нужны для инсталляции выбранной вами программы, находятся в одном архивном файле, созданном при помощи программы tar. Поскольку сама программа tar не производит сжатие файлов, то такой файл сжимают архиватором gzip или bzip2. В таких случаях расширения файла становится tar.gz или tar.bz.
Очевидно, что следующим нашим шагом будет распаковка архива. Большинство современных дистрибутивов поставляется с программами, подобными виндошным WinRAR или WinZip, а также кучей консольных архиваторов типа gzip и bzip2. Для распаковки архива следует воспользоваться ими или из командной строки просто дать следующую команду:
tar zxvf имя_пакета.tar.gz
Данная команда распакует все файлы в текущий каталог, создаст необходимые каталоги (такие же, как они заданы в tar-файле).
Следующий шаг, после того как архив распакован в нужную директорию, заключается в том, что вам нужно прочитать файл Readme. Данный файл содержит важную информацию о том, какое программное обеспечение необходимо для того, чтобы программа работала после установки, часто данный файл содержит пошаговые инструкции по установке программы.
Если tarball файл не содержит данного файла Readme, то поищите файл аналогичного назначения, называемый Install. Очень часто файл Readme отсылает user'a к файлу INSTALL, который содержит команды, необходимые для инсталляции программы. Могу поспорить, что команды будут выглядеть так:
./configure
make
make install
Почти для всех программ инсталляционный процесс, как правило, одинаков. Существуют только три необходимые команды — './configure', 'make' и 'make install' — и больше кроме них вам ничего не нужно. Первая команда — ./configure — запускает последовательность shell скриптов для определения местоположения необходимых библиотек и командные имена компиляторов и линковщиков. Эта же команда создает файл Makefile, который используется для запуска компилятора и линкера, а также для копирования скомпилированных бинарников в новое местоположение.
Откройте терминальное окно и перейдите в ту директорию, куда вы распаковали файлы программы. Далее запустите первую команду — ./configure.
На экране вы увидите примерно следующее:
[xstranger@strange bprogx-0.12]$./configure
creating cache./config.cache
checking for extra includes... no
checking for extra libs... no
checking for a BSD compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking whether make sets ${MAKE}... yes
checking for working aclocal... found
checking for working autoconf... found
checking for working automake... found
checking for working autoheader... found
checking for working makeinfo... found
checking for a C-Compiler...
checking for gcc... gcc
...
updating cache./config.cache
creating./config.status
creating Makefile
creating bprogx /Makefile
...
creating config.h
[xstranger@strange bprogx-0.12]$
Здесь показана лишь малая доля того, что у вас будет выводиться на экран. На самом деле выводится гораздо больше информации. Кстати, первая строчка создает временный файл.
Команда make делает две операции: компиляцию и линковку. Если на этом этапе вам выдается какая-либо ошибка, то это, как правило говорит о том, что у вас нет каких-либо необходимых библиотек. Если это так, то вам нужно будет либо установить эти библиотеки, либо, если они у вас есть, но их версии не соответствуют требуемым, обновить их. После этого попытайтесь заново установить программу.
Итак, команда ./сonfigure завершилась успешно. Вы переходите к этапу компиляции и во время компиляции программы... получили ошибку, не связанную с отсутствием какой-либо библиотеки. Что делать? Во-первых, это RTFM (для тех, кто не знает, расшифровывается "примерно" так: Read The Fantastic Manual;-)). Проверьте документацию, которая идет вместе с исходным кодом. Иногда некоторые примечания даются в файлах Readme или Install, но обычно их там мало либо они очень неинформативные. Если поставляемая документация не помогла решить вашу проблему, вы можете пойти на сайт программы — там могут быть patch'и и update'ы для нее. Если и это вам не помогло, попробуйте поискать ответы по конференциям Usenet через систему Deja.com. Используйте сообщение об ошибке в качестве текста для поиска.
Если и этот вариант вам ничем не помог, то вы можете напрямую обратиться к разработчику программы. Но до этой стадии дело доходит редко:). Порывшись хорошенько в Интернете, вы сможете найти ответ на любой ваш вопрос. Главное — хорошо искать.
Прежде чем выполнить третью команду, вы либо должны пользователю дать соответствующие привилегии на команду установки и необходимые директории, либо зайти в систему как root. Иначе при попытке установки программы вы можете получить сообщение типа "Permission denied", что говорит о вашей невозможности выполнить команду — у вас нет привилегий, которые может вам дать только администратор системы.
Здесь стоит вспомнить главное правило _нормального_ админа: нельзя давать простым юзерам заходить в систему как root — это может быть большим риском, скажем, для серверной системы. Посему root'вый пароль не должен разглашаться.
Зайти как root в систему вы можете при помощи команды su (это в том случае, если вы залогинились в систему как обычный user). Прочитайте man по этой команде. Теперь смело запускайте команду make install. Если на этом этапе вы получаете сообщение об ошибке, то это означает, что файлы копируются (идет попытка скопировать их) в несуществующую директорию.
Как только эта команда завершилась, сделайте, если это необходимо, logout и login — и можете опробовать новую программу.
Где же еще могут быть грабли? Давайте представим ситуацию, что содержимое файлов Readme и Install не сильно вам помогает понять, что же нужно сделать. Что тогда? В принципе, команды для компиляции и инсталляции всегда одни и те же. Если в каталоге с исходными файлами имеется файл makefile, то вы можете использовать команду make для компиляции программы и, вероятно, для ее установки. Если там также имеется и config-скрипт, то запустите его первым, т.е. перед запуском команды make.
Напоследок хочется дать следующий совет: вход в систему как обычный пользователь, нежели как root, помогает вам избежать множества неприятных моментов. В частности, вы сможете протестировать программу на предмет доступа к ней обычных пользователей системы, а не пользователей категории root.
(c) компьютерная газета
Компьютерная газета. Статья была опубликована в номере 42 за 2001 год в рубрике soft :: linux