Готовые решения для многих вопросов, которые очень часто задаются снова и снова.
4 сообщения • Страница 1 из 1
Uncle_Theodore Сообщения: 3339 ОС: Slackware 12.2, ArchLinux 64
Установка программ из исходников
Форум-version
Created Понедельник 08/10/2007
Установка софта из исходников имеет
некоторые положительные моменты, но и
немало отрицательных.
Положительные:
* Нужного пакета (или нужной версии) может не быть в репозитариях Вашего дистрибутива
* Программа, установленная из исходников, может быть сконфигурирована по Вашему желанию
* Вобщем-то, полезный опыт.
Отрицательные:
* Вам придётся самим отслеживать все зависимости для установки программы
* Если что-то пойдёт не так, рассчитывать придется только на помощь разработчиков софта
Перед установкой
Прежде чем устанавливать софт из исходников, убедитесь, что подходящего пакета в Вашем
дистрибутиве нет.
Убедитесь, что в системе установлены средства разработки – компилятор, библиотеки и заголовки для разных пакетов (многие дистрибутивы выделяют их в отдельные пакеты), для компиляции некоторых программ нужны и исходники ядра. Убедитесь, что символическая ссылка linux в директории /usr/src указывает на исходники того ядра, под которым будет бегать установленная программа.
Автоустановка всех зависимостей при установке программ из исходников в Linux. Сборка пакетов DEB
Получение исходников
Закачиваем исходники. Здесь обычно есть два варианта:
1. Закачать готовый архив в формате tar.gz
2. Взять файлы с CVS репозитория. В CVS обычно находится софт «в процессе разработки», более свежий, но и менее протестированный.
Инструкции по пользованию CVS-репозиториями обычно находятся на сайте разработчика.
Распаковываем тарболы. Это можно сделать при помощи любого графического архиватора (например File Roller в Гноме), или же из консоли:
* для архива ‘.tar.gz’:
tar xvzf имя.архива.tar.gz
* для архива ‘.tar.bz2’:
tar xvjf имя.архива.tar.bz2
Затем перемещаемся в распакованный таким образом каталог и внимательно читаем, что написано в файлах README и INSTALL. Этот шаг абсолютно необходим. Без него ничего работать не будет.
Если софт получен из CVS-репозитория, читаем инструкции разработчика на сайте по «бутстрапанию» (см. http://en.wikipedia.org/wiki/Bootstrapping_%28computing%29) пакета, если необходимо.
Конфигурирование и компиляция
Если инструкции требуют запуска скрипта с названием configure в качестве первого шага, сначала прогоняем
./configure —help
и внимательно читаем, какие опции можно послать скрипту configure для правильного конфигурирования программы.
Затем запускаем
./configure
с выбранными опциями. На этом этапе программе могут понадобиться зависимости, которые либо не установлены в нашей системе, либо не найдены скриптом configure. В первом случае, их надо найти и поставить, во втором — еще раз исследовать опции скрипта configure на предмет указания ему места, где искать нужные зависимости.
Компиляция и установка программ из исходников
Если configure сработал нормально, запускаем make.
Здесь тоже возможны варианты. Если make завершается ошибкой, копируем ошибку в окошка ГУГЛА и смотрим, как наши товарищи по несчастью справились с подобной ошибкой. Иногда решения нет, и надо писать разработчику.
Установка
Если make прошел нормально, мы почти у цели.
Думаете, теперь надо прогонять make install? В сущности, можно и так (не забудьте стать рутом для этого).
Но Правильный Путь заключается в том, чтобы сделать теперь из скомпилированного исходника пакет для нашего дистрибутива и поставить его средствами штатного менеджера пакетов.
Создание пакета
checkinstall
Это одна из немалого количества программ для построения пакетов из исходников. Она не дистроспецифична и генерирует пакеты для самых распространённых пакетных менеджеров (в отличие от paco, который тоже всем хорош, кроме того, что держит свою базу пакетов).
В классической схеме сборки приложения из исходников, использующих automake (./configure make make install)’, эта утилита заменяет собой ‘make install. Делая в принципе то же самое, но при этом регистрируя устанавливаемую программу в пакетной базе дистрибутива.
checkinstall -R
Построит и установит RPM пакет(для Fedora, Mandriva, SuSe, Alt, ASP. )
checkinstall -D
Создаст и установит DEB-пакет(для Debian, Ubuntu. )
checkinstall -S
Создаст и установит TGZ-пакет(для Slackware, Zenwalk, DeepStyle, Vektorlinux, Mops; в поставке дистра есть checkinstall, патченный самим Патриком. )
Имя пакета по умолчанию будет myNewUtil.
Версия: 1.2.3. После запуска checkinstall всегда просит ввести описание пакета, а также даёт возможность изменить имя, версию и т.д.
makepkg
Ещё раз просмотрите опции configure на предмет префикса, куда устанавливается программа. Обычно это /usr или /usr/local.
Создаем в домашней директории нашего пользователя директорию foo, а в ней – директории usr и usr/local
Теперь становимся рутом и пишем
make install prefix=/home//foo/usr/local cd foo makepkg foo.tgz
В результате получаем Слакварный пакет, который можно теперь установить программой installpkg.
Система портов ABS в ArchLinux
В ArchLinux существует свой механизм сборки программ из исходников — система портов ABS. Каждый порт содержит файл с набором правил для загрузки архива с исходниками и сборки пакета PKGBUILD и дополнительные файлы, если требуется (например, патчи). Все ПО в ABS распределено по репозиториям (current, extra, community, testing, unstable) и категориям (multimedia, office, x11, etc.). Т.е в корне дерева портов ABS располагаются каталоги с репозиториями, внутри которых — каталоги с категориями пакетов (каталоги с категориями репозитория current расположены в самом корне дерева). Для обновления дерева используется простая команда ‘abs’, без всяких ключей (только для ее работы потребуется пакет cvs, потому
что порты ABS распространяются именно с помощью этого механизма). Чтобы найти порт требующейся программы, достаточно выполнить в консоли:
find /var/abs -name имя_пакета
Что требуется для сборки пакета?
Ничего мудреного — переходим в каталог с портом нужной программы и в консоли выполняем ‘makepkg’. Что делает makepkg:
1. Проверяет, нет ли уже собранного пакета в директории сборки (или в директории, в которую указано складывать собранные пакеты, указывается в файле /etc/makepkg.conf). Если уже есть, то выкинет ошибку, обойти это можно, если запустить makepkg с ключом ‘-f’
2. Проверяет зависимости программы, указанные в PKGBUILD.
Если чего не хватает — укажет, чего придется поставить.
3. Проверяет наличие архива с исходниками и дополнительных файлов (makepkg складывает их в /var/cache/pacman/src ), если нет, то скачивает его по адресам, указанным в PKGBUILD.
4. Проверяет контрольные суммы скачанных файлов, если они указаны в PKGBUILD
5. Распаковывает архивы с исходниками
6. Выполняет действия, указанные в секции ‘build’ в PKGBUILD — какие-либо дополнительные действия (например, наложение патчей) и собственно сборку.
7. Если сборка проходит успешно, ‘makepkg’ устанавливает программу в директорию ‘pkg’ в корне директории порта и упаковывает эту директорию в стандартный pkg.tar.gz-пакет. Все,
пакет собран. Теперь его можно установить:
pacman -A имя_пакета.pkg.tar.gz
В ArchLinux есть также пользовательский репозиторий пакетов AUR. На AUR лежат те же порты, из которых собираются программы в ABS.
Для установки программы с AUR есть два пути:
Первый:
1. Заходим на http://aur.archlinux.org , находим нужную нам программу.
2. Скачиваем PKGBUILD, создаем каталог с именем, в точности соответствующим названию пакета, указанного в PKGBUILD (желательно в /usr/abs, дабы не замусоривать систему).
3. Выполняем makepkg, устанавливаем pacman’ом ,как было указано выше.
Второй:
1. Устанавливаем программу
2. Ищем программу на AUR, выполнив
qpkg -a имя_нужной_программы
3. Выполняем
qpkg -p имя_нужной_программы
(эта команда сама скачает PKGBUILD, исходники, соберет программу в пакет и установит ее).
Создание собственного пакета в ArchLinux
(На случай, если даже в AUR его не нашлось).
Как было сказано, для построения пакета в Арче нужен PKGBUID файл.
Разложим его по полочкам.
Прежде всего стоит отметить, что, чтобы не захламлять дерево ABS собственными пакетами, лучше выделить для этого отдельный каталог (у меня — /var/abs/local), в этом каталоге создаем подкаталог, где, собственно, все и будет происходить. Копируем туда файл »/var/abs/ PKGBUILD.proto» (прототип, который есть в дереве ABS) и переименовываем его в «PKGBUILD». Далее нужно подправить файл. Сначала нужно подправить описание пакета:
*’pkgname’ — название пакета,
*’pkgver’ – версия пакета,
*’pkgrel’ – версия сборки,
*’url’ – обычно домашняя страница приложения,
*’license’ – лицензия, под которой выпускается приложение,
Далее следует указать зависимости, конфликты и источник исходников собираемого пакета:
*’depends’ – список зависимостей пакета, названия должны быть заключены в одинарные кавычки и разделены пробелами. Если важна версия зависимости – ее можно указать
(например, kdelibs>=3.5.1),
*’makedepends’ – список пакетов, необходимых на этапе сборки (например, если пакет собирается какой-нибуть нестандартной системой сборки типа cmake),
*’conflicts’ – список пакетов, с которыми может конфликтовать собираемый
*’replaces’ – список пакетов, которые заменяет собираемый,
*’backup’ – список файлов, которые необходимо будет сохранить при установке собираемого пакета,
*’install’ – имя установочного скрипта (в нем – дополнительные шаги, необходимые для завершения установки пакета),
*’source’ – указывает путь, откуда будут забираться исходники пакета.
Если для сборки необходимо несколько файлов (например, дополнительные патчи), их указывают через пробел,
*’md5sums’ – md5 суммы скачанных исходников. Если не заполнять эту строчку, ничего страшного не произойдет, makepkg лишь обратит на это внимание. Кстати, makepkg может сгенерировать эти контрольные суммы и добавить их в PKGBUILD. Для этого необходимо выполнить
makepkg -g >> PKGBUILD
Далее следует скрипт сборки, который представляет собой все те действия, которые пришлось бы выполнить, если пакет собирался бы вручную. Обычно это стандартная последовательность
./configure make make install
однако здесь стоит обратить внимание на префикс, куда будет устанавливаться пакет и опции скрипта ./configure.
Теперь о флагах ‘makepkg’.
Об ‘-f’ уже говорилось, еще два полезных флага – это ‘-c’, очищающий каталог пакета после сборки и ‘-i’, который позволяет сразу же установить собранный пакет.
rpmbuild
Cтандартная утилита для сборки программ из исходников и упаковки их в пакеты rpm во многих пакетных дистрибутивах, построенных на базе RedHat.
Для сборки бинарного пакета обычно используются пакеты *.src.rpm, содержащие сами архивы с исходниками программ, дополнительные файлы (патчи, desktop-файлы и т.д.) и spec-файл – набор правил для сборки программы.
Итак, если нужно собрать в пакет rpm какую-нибудь программу, выполняем следующее:
*1. Качаем файл *.src.rpm для нашей программы (обычно их можно найти на
ресурсах http://rpmfind.net, http://rpm.pbone.net или в репозиториях дистрибутива (если он ориентирован на rpm-пакеты) ).
*2. Устанавливаем его:
rpm -ivh имя_пакета.src.rpm
В каталоге /usr/src/rpm/SOURCES должен появиться архив с исходниками нужной нам программы, а в каталоге »/usr/src/rpm/SPECS — файл ‘имя_программы.spec»’ (это файл, описывающий правила сборки).
*3. Переходим в директорию /usr/src/rpm/SPECS и там выполняем:
rpmbuild -bb –target=архитектура_процессора название_программы.spec
(запускаем сборку программы)
Вместо «архитектура_процессора» подставляем архитектуру процессора, под которую собираем пакет(в большинстве случаев подойдет i686 ), ‘название_программы.spec’ — это »spec-файл» для нашей программы. Если не удовлетворены какие-то зависимости, ‘rpmbuild’ скажет об этом – тогда придется доустановить недостающие пакеты.
*4. Если все пройдет удачно, на выходе получим rpm-пакет нашей программы, он будет лежать в »/usr/src/rpm/RPMS/архитектура_процессора_под_которую_собирался_пакет». Переходим в эту директорию и оттуда делаем:
rpm -ivh имя_программы.rpm
Все, программа установлена.
Stow
Stow – это программа управления пакетами, которая держит их на «отдельных полочках» (например /usr/local/stow/emacs но »/usr/local/stow/perl» ) и в то же время «делая вид», что они установлены в одном и том же месте (/usr/local).Почитать мануал по Stow можно здесь.
Stow — это скрипт на Перл, который не будет запинаться, если у вас установлен Perl 5.005 и выше. Его надо установить перед установкой самой Stow.
Пример использования Stow.
Предположим, нам нужно установить ‘abc-1.4’, и у нас есть ‘abc-1.4.tar.gz’, и его нужно установить в /usr/local/bin. После распаковки
tar -zxvf abc-1.4.tar.gz
переходим в созданный каталог ‘abc-1.4’
cd abc-1.4
Сначала нам нужно установить приложение в каталог stow. Пусть это будет /usr/local/stow.
Произведём рутинные шаги по установке:
Далее, нам нужно «положить на полочку» приложение, и создать симв. Ссылки внутри целевого каталога, т.е. »/usr/local/bin», с помощью stow. Эти операции можно проводить из-под юзера.
Приложение ‘abc-1.4’ теперь расположилось в своём каталоге, abc-1.4, внутри каталога stow, а
соответствующие ему ссылки – в целевом каталоге, /usr/local/bin.Если нам понадобится перекофигурировать или апгрейдить приложение ‘abc-1.4’, мы можем просто произвести соответствующие изменения в его собственном каталоге, а после этого снова «положить на полочку», обновив соответствующие символические ссылки:
Для удаления приложения, нам нужно будет просто «убрать с полочки» ‘abc-1.4’:
Stow просто удалит символические ссылки, указывающие на установленное приложение и никогда не удалит самих установочных файлов. Таким образом, остаётся возможность позже снова «поставить на полочку» приложение с помощью stow.
Авторы: группа товарищей (Uncle_Theodore, eduard_pustobaev, Juliette, Aectann, alastor)
Источник: unixforum.org
Luzerblog.ru
Установка программ в Linux из исходных кодов
08.05.2009 |
Sepulka | Блог
Установка программ в Linux из исходных кодов
Установка софта из исходников имеет
некоторые положительные моменты, но и
немало отрицательных.
Положительные:
* Нужного пакета (или нужной версии) может не быть в репозитариях Вашего дистрибутива
* Программа, установленная из исходников, может быть сконфигурирована по Вашему желанию
* Вобщем-то, полезный опыт.
Отрицательные:
* Вам придётся самим отслеживать все зависимости для установки программы
* Если что-то пойдёт не так, рассчитывать придется только на помощь разработчиков софта
Перед установкой
Прежде чем устанавливать софт из исходников, убедитесь, что подходящего пакета в Вашем
дистрибутиве нет.
Убедитесь, что в системе установлены средства разработки – компилятор, библиотеки и заголовки для разных пакетов (многие дистрибутивы выделяют их в отдельные пакеты), для компиляции некоторых программ нужны и исходники ядра. Убедитесь, что символическая ссылка linux в директории /usr/src указывает на исходники того ядра, под которым будет бегать установленная программа.
Получение исходников
Закачиваем исходники. Здесь обычно есть два варианта:
1. Закачать готовый архив в формате tar.gz
2. Взять файлы с CVS репозитория. В CVS обычно находится софт «в процессе разработки», более свежий, но и менее протестированный.
Инструкции по пользованию CVS-репозиториями обычно находятся на сайте разработчика.
Распаковываем тарболы. Это можно сделать при помощи любого графического архиватора (например File Roller в Гноме), или же из консоли:
* для архива ‘.tar.gz’:
tar xvzf имя.архива.tar.gz
* для архива ‘.tar.bz2’:
tar xvjf имя.архива.tar.bz2
Затем перемещаемся в распакованный таким образом каталог и внимательно читаем, что написано в файлах README и INSTALL. Этот шаг абсолютно необходим. Без него ничего работать не будет.
Если софт получен из CVS-репозитория, читаем инструкции разработчика на сайте по «бутстрапанию» (см. http://en.wikipedia.org/wiki/Bootstrapping_%28computing%29) пакета, если необходимо.
Конфигурирование и компиляция
Если инструкции требуют запуска скрипта с названием configure в качестве первого шага, сначала прогоняем
./configure —help
и внимательно читаем, какие опции можно послать скрипту configure для правильного конфигурирования программы.
Затем запускаем
./configure
с выбранными опциями. На этом этапе программе могут понадобиться зависимости, которые либо не установлены в нашей системе, либо не найдены скриптом configure. В первом случае, их надо найти и поставить, во втором — еще раз исследовать опции скрипта configure на предмет указания ему места, где искать нужные зависимости.
Если configure сработал нормально, запускаем make.
Здесь тоже возможны варианты. Если make завершается ошибкой, копируем ошибку в окошка ГУГЛА и смотрим, как наши товарищи по несчастью справились с подобной ошибкой. Иногда решения нет, и надо писать разработчику.
Если make прошел нормально, мы почти у цели.
Думаете, теперь надо прогонять make install? В сущности, можно и так (не забудьте стать рутом для этого).
Но Правильный Путь™ заключается в том, чтобы сделать теперь из скомпилированного исходника пакет для нашего дистрибутива и поставить его средствами штатного менеджера пакетов.
checkinstall
Это одна из немалого количества программ для построения пакетов из исходников. Она не дистроспецифична и генерирует пакеты для самых распространённых пакетных менеджеров (в отличие от paco, который тоже всем хорош, кроме того, что держит свою базу пакетов).
В классической схеме сборки приложения из исходников, использующих automake (./configure make make install)’, эта утилита заменяет собой ‘make install. Делая в принципе то же самое, но при этом регистрируя устанавливаемую программу в пакетной базе дистрибутива.
checkinstall -R
Построит и установит RPM пакет(для Fedora, Mandriva, SuSe, Alt, ASP. )
checkinstall -D
Создаст и установит DEB-пакет(для Debian, Ubuntu. )
checkinstall -S
Создаст и установит TGZ-пакет(для Slackware, Zenwalk, DeepStyle, Vektorlinux, Mops; в поставке дистра есть checkinstall, патченный самим Патриком. )
Имя пакета по умолчанию будет myNewUtil.
Версия: 1.2.3. После запуска checkinstall всегда просит ввести описание пакета, а также даёт возможность изменить имя, версию и т.д.
makepkg
Ещё раз просмотрите опции configure на предмет префикса, куда устанавливается программа. Обычно это /usr или /usr/local.
Создаем в домашней директории нашего пользователя директорию foo, а в ней – директории usr и usr/local
Теперь становимся рутом и пишем
make install prefix=/home//foo/usr/local
cd foo
makepkg foo.tgz
В результате получаем Слакварный пакет, который можно теперь установить программой installpkg.
Система портов ABS в ArchLinux
В ArchLinux существует свой механизм сборки программ из исходников — система портов ABS. Каждый порт содержит файл с набором правил для загрузки архива с исходниками и сборки пакета PKGBUILD и дополнительные файлы, если требуется (например, патчи). Все ПО в ABS распределено по репозиториям (current, extra, community, testing, unstable) и категориям (multimedia, office, x11, etc.). Т.е в корне дерева портов ABS располагаются каталоги с репозиториями, внутри которых — каталоги с категориями пакетов (каталоги с категориями репозитория current расположены в самом корне дерева). Для обновления дерева используется простая команда ‘abs’, без всяких ключей (только для ее работы потребуется пакет cvs, потому
что порты ABS распространяются именно с помощью этого механизма). Чтобы найти порт требующейся программы, достаточно выполнить в консоли:
find /var/abs -name имя_пакета
Что требуется для сборки пакета?
Ничего мудреного — переходим в каталог с портом нужной программы и в консоли выполняем ‘makepkg’. Что делает makepkg:
1. Проверяет, нет ли уже собранного пакета в директории сборки (или в директории, в которую указано складывать собранные пакеты, указывается в файле /etc/makepkg.conf). Если уже есть, то выкинет ошибку, обойти это можно, если запустить makepkg с ключом ‘-f’
2. Проверяет зависимости программы, указанные в PKGBUILD.
Если чего не хватает — укажет, чего придется поставить.
3. Проверяет наличие архива с исходниками и дополнительных файлов (makepkg складывает их в /var/cache/pacman/src ), если нет, то скачивает его по адресам, указанным в PKGBUILD.
4. Проверяет контрольные суммы скачанных файлов, если они указаны в PKGBUILD
5. Распаковывает архивы с исходниками
6. Выполняет действия, указанные в секции ‘build’ в PKGBUILD — какие-либо дополнительные действия (например, наложение патчей) и собственно сборку.
7. Если сборка проходит успешно, ‘makepkg’ устанавливает программу в директорию ‘pkg’ в корне директории порта и упаковывает эту директорию в стандартный pkg.tar.gz-пакет. Все,
пакет собран. Теперь его можно установить:
pacman -A имя_пакета.pkg.tar.gz
В ArchLinux есть также пользовательский репозиторий пакетов AUR. На AUR лежат те же порты, из которых собираются программы в ABS.
Для установки программы с AUR есть два пути:
Первый:
1. Заходим на http://aur.archlinux.org , находим нужную нам программу.
2. Скачиваем PKGBUILD, создаем каталог с именем, в точности соответствующим названию пакета, указанного в PKGBUILD (желательно в /usr/abs, дабы не замусоривать систему).
3. Выполняем makepkg, устанавливаем pacman’ом ,как было указано выше.
Второй:
1. Устанавливаем программу
2. Ищем программу на AUR, выполнив
qpkg -a имя_нужной_программы
3. Выполняем
qpkg -p имя_нужной_программы
(эта команда сама скачает PKGBUILD, исходники, соберет программу в пакет и установит ее).
Создание собственного пакета в ArchLinux
(На случай, если даже в AUR его не нашлось).
Как было сказано, для построения пакета в Арче нужен PKGBUID файл.
Разложим его по полочкам.
Прежде всего стоит отметить, что, чтобы не захламлять дерево ABS собственными пакетами, лучше выделить для этого отдельный каталог (у меня — /var/abs/local), в этом каталоге создаем подкаталог, где, собственно, все и будет происходить. Копируем туда файл »/var/abs/ PKGBUILD.proto» (прототип, который есть в дереве ABS) и переименовываем его в «PKGBUILD». Далее нужно подправить файл. Сначала нужно подправить описание пакета:
*’pkgname’ — название пакета,
*’pkgver’ – версия пакета,
*’pkgrel’ – версия сборки,
*’url’ – обычно домашняя страница приложения,
*’license’ – лицензия, под которой выпускается приложение,
Далее следует указать зависимости, конфликты и источник исходников собираемого пакета:
*’depends’ – список зависимостей пакета, названия должны быть заключены в одинарные кавычки и разделены пробелами. Если важна версия зависимости – ее можно указать
(например, kdelibs>=3.5.1),
*’makedepends’ – список пакетов, необходимых на этапе сборки (например, если пакет собирается какой-нибуть нестандартной системой сборки типа cmake),
*’conflicts’ – список пакетов, с которыми может конфликтовать собираемый
*’replaces’ – список пакетов, которые заменяет собираемый,
*’backup’ – список файлов, которые необходимо будет сохранить при установке собираемого пакета,
*’install’ – имя установочного скрипта (в нем – дополнительные шаги, необходимые для завершения установки пакета),
*’source’ – указывает путь, откуда будут забираться исходники пакета.
Если для сборки необходимо несколько файлов (например, дополнительные патчи), их указывают через пробел,
*’md5sums’ – md5 суммы скачанных исходников. Если не заполнять эту строчку, ничего страшного не произойдет, makepkg лишь обратит на это внимание. Кстати, makepkg может сгенерировать эти контрольные суммы и добавить их в PKGBUILD. Для этого необходимо выполнить
makepkg -g >> PKGBUILD
Далее следует скрипт сборки, который представляет собой все те действия, которые пришлось бы выполнить, если пакет собирался бы вручную. Обычно это стандартная последовательность
./configure make make install
однако здесь стоит обратить внимание на префикс, куда будет устанавливаться пакет и опции скрипта ./configure.
Теперь о флагах ‘makepkg’.
Об ‘-f’ уже говорилось, еще два полезных флага – это ‘-c’, очищающий каталог пакета после сборки и ‘-i’, который позволяет сразу же установить собранный пакет.
rpmbuild
Cтандартная утилита для сборки программ из исходников и упаковки их в пакеты rpm во многих пакетных дистрибутивах, построенных на базе RedHat.
Для сборки бинарного пакета обычно используются пакеты *.src.rpm, содержащие сами архивы с исходниками программ, дополнительные файлы (патчи, desktop-файлы и т.д.) и spec-файл – набор правил для сборки программы.
Итак, если нужно собрать в пакет rpm какую-нибудь программу, выполняем следующее:
*1. Качаем файл *.src.rpm для нашей программы (обычно их можно найти на
ресурсах http://rpmfind.net, http://rpm.pbone.net или в репозиториях дистрибутива (если он ориентирован на rpm-пакеты) ).
*2. Устанавливаем его:
rpm -ivh имя_пакета.src.rpm
В каталоге /usr/src/rpm/SOURCES должен появиться архив с исходниками нужной нам программы, а в каталоге »/usr/src/rpm/SPECS — файл ‘имя_программы.spec»’ (это файл, описывающий правила сборки).
*3. Переходим в директорию /usr/src/rpm/SPECS и там выполняем:
rpmbuild -bb –target=архитектура_процессора название_программы.spec
(запускаем сборку программы)
Вместо «архитектура_процессора» подставляем архитектуру процессора, под которую собираем пакет(в большинстве случаев подойдет i686 ), ‘название_программы.spec’ — это »spec-файл» для нашей программы. Если не удовлетворены какие-то зависимости, ‘rpmbuild’ скажет об этом – тогда придется доустановить недостающие пакеты.
*4. Если все пройдет удачно, на выходе получим rpm-пакет нашей программы, он будет лежать в »/usr/src/rpm/RPMS/архитектура_процессора_под_которую_собирался_пакет». Переходим в эту директорию и оттуда делаем:
rpm -ivh имя_программы.rpm
Все, программа установлена.
Stow
Stow – это программа управления пакетами, которая держит их на «отдельных полочках» (например /usr/local/stow/emacs но »/usr/local/stow/perl» ) и в то же время «делая вид», что они установлены в одном и том же месте (/usr/local).Почитать мануал по Stow можно здесь.
Stow — это скрипт на Перл, который не будет запинаться, если у вас установлен Perl 5.005 и выше. Его надо установить перед установкой самой Stow.
Пример использования Stow.
Предположим, нам нужно установить ‘abc-1.4’, и у нас есть ‘abc-1.4.tar.gz’, и его нужно установить в /usr/local/bin. После распаковки
tar -zxvf abc-1.4.tar.gz
переходим в созданный каталог ‘abc-1.4’
cd abc-1.4
Stow просто удалит символические ссылки, указывающие на установленное приложение и никогда не удалит самих установочных файлов. Таким образом, остаётся возможность позже снова «поставить на полочку» приложение с помощью stow
Источник: luzerblog.ru
Cборка программ из исходников в Ubuntu
Ошибка в тексте? Выделите ее мышкой! И нажмите: CTRL+Enter, сообщите об этом, автор постарается в краткие сроки обновить / исправить материал.
Часто ли вы сталкивались с тем, что нужной версии приложения для вашей архитектуры в дистрибутиве Ubuntu просто нет, но данная программа имеется на сайте разработчиков в виде исходников в архиве .tar.gz. Думаю многим знакома данная ситуация, но не все продолжали искать пути решения данного вопроса и просто искали другой аналог приложения или версию немного старее и продолжали работать.
Сразу же хочется добавить несколько слов для новичков в Linux, прежде чем что-то выполнять с данной статьи, изучите основательно терминал и команды которые используются для работы с ним, почитайте маны или же материалы в сети.
- Для сборки приложений нам конечно же потребуются инструменты разработчика, в нашем случае это компилятор и другие сопутствующие ему программы, главную работу конечно нам будет выполнять утилита make, а командная строка (терминал) будет как бы нашей кухней где мы и будем готовить/собирать/устанавливать наше приложение с исходников. В Linux терминал доступен по умолчанию, для вашего удобства вы конечно же можете установить любой другой более функциональный к которому вы привыкли, я например использую Guake, уж очень много возможностей в сравнении с стандартным, где легко настроить как копирование так и вставку команд или любого текста с помощью CTRL+C,CTRL+V и много другого, что делает работу с консолью более комфортной.
- 1. С чего стоит начать при сборке приложений с исходников, это конечно же скачать приложение в архиве tar.gz или же tar.bz2, в моем случае это например приложение Gimp 2.9.2, хотя в нашем случае архив не tar.gz формата, а tar.bz2, это не имеет никакой разницы, качаем, после правой кнопкой мыши по архиву — Извлечь здесь.
На этом пожалуй первый этап завершен, что мы делаем далее? А далее мы запускаем терминал и перейдем в нашу распакованную папку с файлами:
cd /home/linux/Загрузки/gimp-2.9.2/ ls
далее вы увидите содержимое архива, то есть исходники для сборки приложения.
- 2. Перед запуском подготовки исходников к сборке советовал бы прежде открыть и ознакомиться с файлом INSTALL, найдете очень много полезной информации, в данном файле описывается как устанавливать приложение, какие команды нужно выполнять и много чего еще интересного. Сейчас я вас советую установить дополнительный пакет под названием — auto-apt, выполняет много рутинной работы вместо вас.
sudo apt-get install auto-apt
Что значит выполняет много рутинной работы вместо меня, спросите вы, если запустить конфигурацию исходников приложения с приставкой данного пакета например в виде:
auto-apt -y run ./configure
Конечно можно выполнить конфигурацию и без помощь данного пакета и просто выполнить команду:
./configure
Если выполнять конфигурацию с приставкой — auto-apt -y run, то подготовка исходников к сборке будет происходить в автоматическом режиме, то есть эта команда может автоматически скачивать и установит вместо вас все необходимые файлы и библиотеки и удовлетворит все зависимости которые потребуются.
- 3. При реальной работе не все так гладко, может в одном случае пройдет все хорошо и этап подготовки исходников к сборке пройдет без ошибок, в других же случаях и таких наверное большинство, вы будете встречать ошибки разного рода например, не хватает того или иного пакета для дальнейшей подготовки исходников. В большинстве случае пишется название пакета которого не хватает.
Пробуем установить отсутствующий пакет командой:
sudo apt-get install pakage_name
В том случае если пакет при выполнении команды выше не обнаруживается, меня очень часто выручает следующая комбинация, ищем пакеты которых нам не хватает в кеше:
apt-cache search pakage_name
- После выполнения данной команды подходящий пакет вы может и найдете, часто бывает что подходящий пакет вы не находите, но встречается точная копия пакета но с приставкой dev то есть пакет вида pakage_name-dev и вы можете воспользоваться им чтобы удовлетворить зависимости.
- 4. После удачного завершения конфигурации исходников для сборки, желательно установить пакет checkinstall который облегчает работы с сборкой пакета приложения под ваш дистрибутив.
sudo apt-get install checkinstall
Установили пакет, после можно выполнить команду:
checkinstall -D
- Атрибут -D создаст deb пакет, атрибут -R создаст rpm-пакет, который применяется в дистрибутивах Fedora, RHEL, ASP Linux, ALT Linux, Mandriva, openSUSE, дополнительно имеется еще атрибут -S который создаст пакет применяемый в Slackware.
В моем случае я работаю в Ubuntu и выполнил команду с атрибутом -D, далее пойдет сборка приложения в готовый пакет формата Deb, от нас потребуются некоторые уточнительные данные например такие как добавить описание к пакету, так как вы его собираете и соответственно описание совершенно чистое и как бы от вас требуется краткая справка, что это за приложение для чего. В моем случае как я проверил автоматически заполняются так же следующие поля:
1 — Summary: [ EOF ] 2 — Name: [ gimp ] 3 — Version: [ 2.9.2 ] 4 — Release: [ 1 ] 5 — License: [ GPL ] 6 — Group: [ checkinstall ] 7 — Architecture: [ i386 ] 8 — Source location: [ gimp-2.9.2 ] 9 — Alternate source location: [ ] 10 — Requires: [ ] 11 — Provides: [ gimp ] 12 — Conflicts: [ ] 13 — Replaces: [ ]
- Как видно перед сборкой идет проверка, завершилась ли конфигурация успешно, не остались ли неудовлетворенные зависимости или другие конфликты, если все хорошо, то и сборка пакета пройдет без проблем.
Я ранее как то устанавливал без сборки пакета, выполняя команды:
make make install
Если вы захотите удалить установленное приложение, стоит выполнить команду:
make uninstall
команда выше в автоматическом режиме удалит относящиеся к приложению, что вы устанавливали и не затронет ничего стороннего, желательно не бегать по директориям и выполнять ее с той же директории приложения в которой вы работали, то есть подготавливали конфигурацию итд.
Хотя и без ошибок прошло все, но весь процесс длился очень долго, примерно минут 20 пока у меня установился гимп с исходников, я успел пойти сделать кофе и еще наблюдать за процессом установки, долго все происходит из-за того, что приходится в много разных папок раскидать файлы исходников приложения, каждый файл имеет свое предназначение и должен находиться в определенной директории, так вот после выполнения make install и происходит процесс установки тысяч файлов исходников по требуемым директориям.
Вот как то так и происходит установка приложения с исходников, да, не все так просто на первый взгляд, я и не говорил что будет легко, но если попробовать то это очень хорошо развивает ваше мышление и способы поиска решений в той или иной ситуации, что есть даже очень хорошо.
На этом пожалуй все, если у вас будут вопросы по материалу выше, или вы пытались установить и столкнулись с ошибками, спрашивайте в комментариях к материалу, будем искать решение вместе.
Источник: linuxsoid.ru