понедельник, 7 марта 2011 г.

Как собирать программы из исходников или установка из .tar.gz

Конечно на данный момент в менеджере пакетов для дистрибутива есть почти все программы необходимые не только среднестатистическому юзеру, но и для специалистов в каких-то областях, либо же программы которые написаны для той же цели, что и искомая. Но как же быть, если вы хотите «именно эту программу» или подходящей так и не нашлось, а на просторах глобальной сети нашелся только странный архив с расширением .tar.gz или tar.bz2. Это пакет для сборки, т.е. исходный код программы + необходимое для программы(картинки, саунды, и т.п.) + конфигурационный и make-файл. Система собирает программу как конструктор, а пакет — набор кубиков для её постройки.


Profit

1. Простой способ, но он редко работает.

Процедура установки программного обеспечения, из пакетов tar.gz или tar.bz2 обычно (но не всегда) происходит так:


tar xvzf package.tar.gz (или tar xvjf package.tar.bz2)
cd package
./configure
make
make install

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

2. Если не вышел первый способ

Шаг1. Распаковка.

Может быть, Вы уже заметили, что пакеты, содержащие исходные коды программ имеют расширения tar.gz и tar.bz2. Это означает, что пакет представляет собой сжатый tar архив. При оформлении пакета файлы исходного кода другие необходимые файлы были сложены вместе в единый tar-архив, естественно, с расширением tar. После укладки их всех вместе в архив, он был сжат компрессором gzip, и получил, как следствие, расширение gz.
Некоторые люди используют вместо компрессора gzip компрессор bzip2, и в этих случаях файл с программой будет иметь расширение tar.bz2. Эти пакеты распаковываются точно так-же, как tar.gz, только нужно немного изменить командную строку при распаковке. Не имеет значения, куда Вы сохраняете архивы, загруженные из интернета, но я предлагаю создать для них специальный каталог, к примеру dls. Учтите, что каталог dls всего лишь пример. Вы можете разместить загруженные пакеты программ в той папке, в которой захотите. К примеру, предположим, что Ваше имя пользователя me, а пакет, который Вы сохранили в папке dls, созданной в домашнем каталоге (/home/me/dls), называется pkg.tar.gz.
И, наконец, перейдем к распаковке архива. После загрузки пакета распакуйте его следующей командой:

me@puter: ~/dls$ tar xvzf pkg.tar.gz

Как Вы видите, для распаковки архива можно использовать команду tar с соответствующими опциями (xvzf). Если Ваш пакет с расширением tar.bz2, то необходимо в параметрах указать, что это более сжатый tar-архив. Это делается с помощью опции z, например так:

me@puter: ~/dls$ tar xvjf pkg.tar.bz2

Кратко об опциях:
-x = извлечь
-v = подробный режим. Показывает какие файлы распаковываются.
-z = указать, что используется gzip.
-j = указать, что используется bzip2.
-f = указать, с каким файлом работать. Требует после себя аргумента.

Что-же происходит после распаковки, зависит от пакета, но в большинстве случаев будет создан каталог с именем пакета. Только что созданный каталог будет находиться в директории, в которой Вы сейчас находитесь. Естественно, Вы можете просмотреть его командой ls:

me@puter: ~/dls$ ls
pkg pkg.tar.gz
me@puter: ~/dls$

В нашем примере получили то, что ожидалось, и архиватор создал из пакета pkg.tar.gz каталог с его именем. Теперь необходимо перейти внутрь этого каталога командой cd:

me@puter: ~/dls$ cd pkg
me@puter: ~/dls/pkg$

В данном каталоге может содержаться различная документация, например файлы README или INSTALL. Крайне рекомендую ознакомиться с их содержанием перед продолжением.

Шаг 2. Настройка.

Теперь, после того как мы изменили месторасположение исходников программы (и провели небольшое изучение документации), пришло время конфигурирования пакета. Обычно, но не всегда (именно поэтому необходимо читать файлы REAMDE и INSTALL), это делается запуском конфигурационного скрипта.
Вы можете запустить этот скрипт командой:

me@puter: ~/dls/pkg$ ./configure

При запуске скрипта конфигурации, Вы на самом деле ничего не компилируете. Настройка только проверяет Вашу систему и присваивает значения системо-зависимым переменным. Эти значения используются для генерации Makefile. Makefile, в свою очередь, используется для генерации исполняемого модуля. При запуске конфигурационного скрипта, Вы увидите кучу странных сообщений, прокручивающихся на экране. Это нормально, не волнуйтесь по этому поводу. Если конфигурация находит ошибку, она сообщает об этом и останавливает процесс. Однако, если все работает как нужно, утилита конфигурации не выводит ошибок и заканчивает свою работу.
Если конфигурация произошла без ошибок, самое время переходить к следующему шагу.

Шаг 3. Компилирование.

Итак, сейчас мы будем создавать из исходных текстов саму програму. Это делается путем запуска команды:

me@puter: ~/dls/pkg$ make

Обратите внимание, что эта команда требует наличие Makefile для создания программы. Если его нет, то команда будет не в курсе необходимых действий. Вот почему так важно запускать конфигурирование пакета, либо настраивать Makefile каким-либо другим способом. При запуске make Вы вновь увидите кучу странных сообщений, наполняющих Ваш экран. Это также совершенно нормально, и пускай это снова Вас не тревожит. Эта процедура может отнять некоторое время, в зависимости от того, насколько велика программа и насколько быстр Ваш компьютер. Если Вы делаете это на старых устаревших компьютерах, можете пойти попить кофе. На этом этапе я обычно совершенно теряю терпение.
Если все пройдет гладко, Ваш исполняемый модуль готов к запуску. Теперь перейдем к заключительному шагу, в котором будем устанавливать программу.

Шаг 4. Установка.

Наконец, пришло время установить программу. При этом Вы должны иметь права суперпользователя. Для этого перед командой добавим оператор sudo. Он запросит у Вас пароль администратора, и после этого запустит заключительный шаг:

root@puter: /home/me/dls/pkg$ sudo make install
Password:
root@puter: /home/me/dls/pkg$

Опять же, Вы получите странные сообщения на экран. После того, как они остановятся, и на экране не будет следов ошибок (например слова error), поздравляю: Вы уже установили программу, и готовы запустить ее.
Так как Мы в этом примере не изменяли поведение конфигурационного скрипта, программа была установлена в место по-умолчанию. Во многих случаях это /usr/local/bin. Если Вы уже находитесь в /usr/local/bin (или другом местe, в которое Вы установили программу), можете просто запустить программу, набрав ее название.

4. Удаление ненужных файлов.

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

me@puter: ~/dls/pkg$ make clean

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

5. Удаление программы.

Итак, Вы решили что Вам не нравится программа. Удаление собранных Вами программ так-же легко, как удаление программ, установленных менеджером пакетов, как, к примеру, rpm. Если Вы хотите удалить программное обеспечение, Вами-же собранное, необходимо снова почитать документацию, которая шла с пакетом. Там можно увидеть, упоминается ли там процедура удаления. Если там этого не описано, можете хвататься и рвать свои волосы.
Если Вы не удалили Makefile, Вы сможете удалить программу, выполнив команду:

root@puter: /home/me/dls/pkg$ make uninstall

Если Вы увидите странные прокрутки текста (Вы, вероятно, уже к этому привыкли? =) — это хороший признак. Если-же команда make начинает жаловаться и выдавать ошибки, то это признак плохой. Тогда следует удалить файлы программ вручную.
Если Вы знаете, где была установлена программа, Вам придется вручную удалить установочные файлы или каталоги, где находиться Ваша программа. Если Вы не знаете, где все эти файлы, Вам придется читать Makefile и смотреть, где эти файлы были установлены, и затем удалять их.

P.S. Считается, что программы собранные из исходных кодов надёжнее и быстрее, чем программы из пакетов, т.к. собираются под данную систему и данную конфигурацию компьютера. Яркий тому пример — дистрибутив Gentoo, который не устанавливается из бинарных файлов и пакетов, а компилируется. Раньше, при слабых процессорах, время его компиляции — около...24 часов =). Теперь же на это уходит всего лишь несколько часов, но как результат — высокая скорость работы и стабильность ядра и приложений. Кстати Gentoo назвал так не случайно, Gentoo — порода самых быстрых пингвинов на земле. Ну и еще один «плюс» — это кроссплатформенность (поймут пользователи х64).

6 комментариев:

  1. ваще как надо, статья то что нужно:)

    ОтветитьУдалить
  2. Этот комментарий был удален автором.

    ОтветитьУдалить
  3. Ума не приложу, как же тов. Юрий Мурашко сумел установить себе Gentoo, если он собрался в памятку себе записывать "configure - make - make install".
    Во-первых, не помнить такое, все равно, что забывать, как открывать дверь в собственный дом, во-вторых, так делать не правильно, даже если так написано в README. Правильно собирать в пакет или хотя бы устанавливать через checkinstall.

    ОтветитьУдалить
  4. так почему на этом видео нет никакой копмиляции? хотя также в.tar.bz2. как по мне просто, распаковывает и устанавливает без лишних здесь описанных действий. "установка firefox на linux вручную" - https://www.youtube.com/watch?v=6rb9NmrHEsM
    поясните это как называется? (а то я уже голову сломал с этими способами)

    ОтветитьУдалить