Makepkg (Русский)
From ArchWiki
Contents |
Makepkg
makepkg - это базовая утилита для сборки собственных пакетов, которые могут быть использованы менеджером pacman. Основанный на скриптовой системе сборки пакетов, makepkg способен загрузить из интернета и проверить на целостность исходники (например архивы tar.gz и bz2), установить параметры сборки пакета (т.к флаги CFLAGS и другие параметры компилятора), собрать пакет во временную папку и создать готовый архив соответствующий стандарту Arch, удалив все ненужное.
Установка и настройка
ABS - Система автоматической сборки пакетов Arch
Для начала, убедитесь что у вас установлены утилиты для сборки собственных пакетов, в их список входят: компилятор, линкер, некоторые базовые библиотеки и вспомогательные приложения типа automake и autoconf. Чтобы загрузить и установить их последние версии, наберите в командной строке эти команды с привилегиями root-пользователя:
# pacman -Sy base-devel # pacman -S abs
Впишите Y для всех вопросов и pacman закачает и установит (или обновит) средства необходимые для создания собственных пакетов. Затем, опять-же с привилегиями root-пользователя, выполните:
# abs
Этот скрипт подсоединится к ближайшему серверу, закачает и установит дерево ABS в каталог /var/abs. По умолчанию, некоторые репозитории отключены, вы можете установить свои настройки редактируя файл /etc/abs.conf
Теперь необходимо создать папку в которой будут содержаться исходники, скрипты, патчи или прочие файлы для будущего пакета. Папку можно создать, например, в корне вашего домашнего каталога:
$ mkdir ~/abs
Makepkg
Если вы хотите иметь возможность устанавливать недостающие для сборки пакета зависимости, установите утилиту sudo и добавьте вашего пользователя в файл настройки утилиты: /etc/sudoers.
ЗАМЕТКА: в состав пакета sudo входит утилита visudo которая запускает редактор vi в особом режиме, позволяющем сразу-же отредактировать файл без изменения прав доступа.
USER_NAME ALL=(ALL) NOPASSWD: /usr/bin/pacman
Добавив эту строку и заменив USER_NAME именем вашего пользователя, у вас появится возможность запускать pacman без необходимости ввода пароля.
Следующий шаг - это определения папки в которой будут перемещены "свежесобранные" пакеты, например вы можете назначить здесь папку в вашем домашнем каталоге. Если этот параметр не был установлен, то пакеты будут расположены в той-же папке откуда был запущен makepkg.
Например, создайте такую папку:
$ mkdir /home/$USER/packages
и установите переменную PKGDEST в файле /etc/makepkg.conf соотвествующим образом.
Пока вы редактируете его, можете посмотреть на другие переменные влияющие на сборку ваших пакетов. Например вы можете установить переменную PACKAGER, при этом ваше имя будет добавлено к собранным пакетам, либо убрать ! перед параметром docs в массиве OPTIONS, в случае если вы не хотите чтобы makepkg удалял папку с документацией к вашему пакету. Просмотрите статью Makepkg.conf для подробной информации по возможным параметрам.
Сборка пакета
Для сборки пакета вы можете создать собственный "с нуля" следуя указаниям Руководства по сборки пакетов Arch, либо посмотреть если кто-то уже сделал это за вас поискав его на странице AUR или в дереве ABS.
Скажем например, что вы нашли какой-то очень интересующий вас пакет в AUR и вы хотите собрать его и установить (в этом примере будет приведен rufus, клиент bittorrent основанный на Python). Вы можете достать PKGBUILD и все необходимые для сборки файлы (в некоторых случаях это патчи или дополнительные скрипты) нажав на ссылку "Tarball" или "Архив", для пользователей просматривающих страницу на русском языке.
$ cd /path/to/tarball $ tar -zxf rufus.tar.gz $ cd rufus
Обратите внимание на то, что в папке rufus появились несколько файлов, один из них называется PKGBUILD, именно он и содержит инструкции для сборки пакета. Для сборки пакета введите (под управлением вашего пользователя) команду:
$ makepkg
Утилита загрузит все необходимые для сборки исходники и попытается собрать пакет. Если не хватает каких-то зависимостей, makepkg сообщит об этом прежде чем завершить работу с ошибкой. Если вы хотите собрать пакет и дать возможность makepkg самому загрузить и установить необходимые зависимости, то введите эту команду:
$ makepkg -s
Обратите внимание что зависимости должны быть доступны в заранее настроенных вами репозитариях. С другой стороны вы можете собственноручно установить их командой
$ sudo pacman -Sy dep1 dep2 depN
После того как все необходимые зависимости были установлены и ваш пакет был собран удачно, у вас появится файл rufus-0.7.0-1.pkg.tar.gz. Вы можете установить его командой
$ sudo pacman -U rufus-0.7.0-1.pkg.tar.gz
Установка через скрипты сборки
Иногда со сторонних репозитариев вы можете обнаружить только файлы типа *.pkgbuild. В этом случае добавьте параметр -p к makepkg указав имя нужного вам сборочного скрипта:
$ makepkg -p <buildscript>
Поздравляем! Теперь вы успешно собрали и установили ваш собственный пакет!