MyTetra Share
Делитесь знаниями!
О, смотри-ка какое хорошее место. Дайте два!
способы сборки пакетов
12.06.2012
14:39
Раздел: linux

способы сборки: в некоторых случаях достаточно запустить в терминале скрипт, который автоматически соберёт программу, в других используются стандартные утилиты, а в особо тяжёлых приходится править исходники. Мы рассмотрим два наиболее распространённых варианта: configure/make и scons. Также, можно собрать deb-пакет из исходников с помощью checkinstall.

configure/make

scons

checkinstall


Но сначала поставим мета-пакет с необходимыми программами:


sudo apt-get install build-essential

configure/make


Итак, установим новую версию текстового редактора leafpad. Для этого скачиваем архив с сайта: http://savannah.nongnu.org/download/leafpad/leafpad-0.8.16.tar.gz. Если установлена старая версия, её лучше удалить.


1. В терминале заходим в папку с архивом (у меня он находится в ~/software/source/) и распаковываем его:


cd ~/software/source/

tar xzvf leafpad-0.8.16.tar.gz

cd leafpad-0.8.16/


Или можно воспользоваться графическим менеджером архивов.


Открываем файл README:


gedit README &


Как правило, информации из него достаточно, но иногда приходится заходить на сайт программы.


В README ищем раздел "Installation" или что-то подобное. Прежде всего там написаны зависимости, необходимые для сборки. В данном случае, это библиотеки GTK+-2.x.x и libgnomeprintui-2.2 (причём, нам нужны версии для разработки, т.е. с суффиксом -dev). В Ubuntu это пакеты libgtk2.0-dev и libgnomeprintui2.2-dev. Устанавливаем их через менеджер пакетов или с помощью терминала:


sudo apt-get install libgtk2.0-dev libgnomeprintui2.2-dev


3. Дальше, следуя инструкциям README-файла, выполняем скрипт настройки программы под нашу систему (должна быть открыта папка с исходниками):


./configure


Если надо установить программу в какую-то определённую папку, то выполняем configure с параметром --prefix=<путь к папке>:


./configure --prefix=/usr/local


Так как /usr/local является папкой установки по умолчанию, то эти две команды равнозначны.




4. Смотрим лог выполнения, и, если никаких ошибок нет, собираем программу (если она большая, этот процесс может занять много времени):


make




5. Устанавливаем программу (может потребоваться ввод пароля):


sudo make install


6. Запускаем установленный редактор из меню "Приложения -> Стандартные" или командой:


leafpad


7. А теперь удалим программу (в терминале по-прежнему должна быть открыта папка с исходниками):


sudo make uninstall


К сожалению, иногда такое автоматическое удаление невозможно, и приходится убирать программу вручную. Это можно решить созданием deb-пакета, но о нём чуть позже.

scons


Ещё один часто встречающийся способ сборки - это scons. Для примера возьмём исходники программы LinuxDC++ 1.0.3: http://launchpad.net/linuxdcpp/1.0/1.0.3/+download/linuxdcpp-1.0.3.tar.bz2.


1. Заходим в папку с исходниками и распаковываем их.


cd software/source/

tar xjvf linuxdcpp-1.0.3.tar.bz2

cd linuxdcpp-1.0.3/


2. Открываем файл Readme.txt:


gedit Readme.txt &


Здесь нам нужные следующие зависимости:

scons >= 0.96

pkg-config

g++ >= 3.4

gtk+-2.0 >= 2.10

gthread-2.0 >= 2.4

libglade-2.0 >= 2.4

pthread

zlib

libbz2

libssl


Ищем и устанавливаем соответствующие пакеты с помощью менеджера или вводим следующую команду в терминале:


sudo apt-get install scons pkg-config g++ libgtk2.0-dev libglib2.0-dev libglade2-dev libpthread-stubs0-dev zlib1g-dev libbz2-dev libssl-dev


Увы, не всегда название пакета в дистрибутиве совпадает с его названием в readme: например, библиотека gthread-2.0 содержится в пакете libglib2.0-dev. Что, впрочем, можно легко узнать с помощью поиска в интернете по запросу: "Ubuntu gthread-2.0".


3. Теперь собираем программу (выполнять настройку отдельно в случае с scons не надо):


scons


Или, если надо указать папку для установки, добавляем параметр PREFIX=<путь к папке>, как написано в Readme.txt:


scons PREFIX=/usr/local


4. Устанавливаем программу:


sudo scons install




5. И запускаем:


linuxdcpp


6. Теперь удалим её из системы:


sudo scons install -с

checkinstall


Как я уже говорил выше, иногда программу нельзя удалить автоматически, и это вызывает некоторые трудности. Попробуем создать свой deb-пакет с помощью утилиты checkinstall.


1. Установим её из репозитория:


sudo apt-get install checkinstall


2. Теперь после сборки редактора leafpad вместо:


sudo make install


пишем:


sudo checkinstall -D


Параметр -D здесь означает, что мы хотим создать deb-пакет.


3. На все вопросы можно просто нажимать Enter, тогда будет выбираться ответ по умолчанию.


При желании вводим описание пакета, но это необязательно. Дальше проверяем и, если надо, изменяем параметры сборки пакета, после чего нажимаем Enter.




Небольшое пояснение к параметрам в checkinstall:


0 - Maintainer


Сборщик пакета - тут можно указать своё имя.


2 - Name, 3 - Version


Название и версия пакета, которые будет показываться в базе данных.


10 - Requires


Зависимости пакета. Здесь должны быть простые версии пакетов, а не -dev. В случае с leafpad, вписываем сюда значение:


libgtk2.0-0, libgnomeprintui2.2-0


4. Программа уже установлена, и теперь у нас есть deb-пакет.




Так как он создан под рутом, поменяем владельца (надо прописать имя и группу пользователя, под которым вы работаете):


sudo chown имя:группа leafpad_0.8.16-1_amd64.deb


5. Теперь программу можно удалить гораздо проще:


sudo apt-get remove leafpad


А если потребуется снова её установить, то заходим в папку с пакетом и выполняем:


sudo dpkg -i leafpad_0.8.16-1_amd64.deb


6. Аналогично происходит сборка пакета и для scons. Только выполняется она командой:


sudo checkinstall -D scons install


А в зависимостях нужно будет прописать также и требования к версиям:


scons (>= 0.96), pkg-config, g++ (>= 3.4), libgtk2.0-0 (>= 2.10), libglib2.0-0, libglade2-0 (>= 2.4), libpthread-stubs0, zlib1g, libbz2-1.0, libssl0.9.8


И последнее, не стоит выкладывать в сеть пакеты, собранные с помощью checkinstall, так как они далеки от стандартов, и, возможно, на другом компьютере программа вообще не запустится. Они нужны лишь для удобства установки ПО на отдельно взятой машине.


Так же в этом разделе:
← Содержание ...
 
MyTetra Share v.0.35
Яндекс индекс цитирования