Пятница, 2024-05-17, 4:17 AM
Приветствую Вас Гость | RSS

Блог

Главная » 2009 » Декабрь » 12 » Сборка программы из исходников, установка, сборка пакета
10:43 PM
Сборка программы из исходников, установка, сборка пакета

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

Существует много способов сборки: в некоторых случаях достаточно запустить в терминале скрипт, который автоматически соберёт программу, в других используются стандартные утилиты, а в особо тяжёлых приходится править исходники. Мы рассмотрим два наиболее распространённых варианта: configure/make и scons. Также, можно собрать deb-пакет из исходников с помощью 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, так как они далеки от стандартов, и, возможно, на другом компьютере программа вообще не запустится. Они нужны лишь для удобства установки ПО на отдельно взятой машине.

Источник
Категория: Основы системы | Просмотров: 2491 | Добавил: Draco | Теги: Make, scons, configure, checkinstall | Рейтинг: 0.0/0
Всего комментариев: 1
1 Sandye  
0
seo sprint проект замечательный он помогает? заработать мне деньги для оплаты услуг в интернете продвижение в поисковиках http://www.dv-magic.ru/raskrutka-optimizatsiya-sayta/

Имя *:
Email *:
Код *:
Форма входа
Поиск
Опрос
Как вам Ubuntu 10.10?
Всего ответов: 28
Статистика