Russian Qt Forum
Ноябрь 22, 2024, 07:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сборка deb пакетов по разные Ubuntu/Debian  (Прочитано 3843 раз)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« : Апрель 18, 2016, 15:46 »

Привет. Понадобилось собрать пакет под trusty/xenial. Ставить виртуалки мне было лень, ведь есть же debootstrap. Накидал пару скриптов, которые делают chroot окружения и собирают пакет внутри них.

Что делают скрипты:

  • С помощью debootstrap создают chroot окружение выбранной вами версии Ubuntu/Debian
  • Делают checkout ваших исходников из git или svn
  • Собирают deb пакет внутри всех закешированных chroot окружений. Подразумевается, что ваши исходники содержат всё необходимое для сборки стандартно в подкаталоге debian/ (control, rules и т.д.)

Хост-система:

Желательно использовать последнюю 64-битную версию Ubuntu. Последнюю - потому что последний debootstrap понимает все версии Ubuntu/Debian. 64-битную - потому что под 64-бит можно сделать chroot в 32-битную систему, наоборот - нет. Если вам не нужно 64-бит, то можно использовать и i386.

Пример сборки:

Код:
# Создаём chroot окружения для Trusty и Xenial, i386 и amd64
# Образы закешируются в подкаталог images/
sudo ./debootstrap ubuntu xenial amd64 i386
sudo ./debootstrap ubuntu trusty amd64 i386

# Указываем URL на ваши исходники в GIT или SVN
nano build.conf

# Запускаем сборку пакетов
sudo ./chroot-and-build

Если всё нормально, то в текущем каталоге создадутся 4 подкаталога result-* с дебками.

Пример файла build.conf для сборки vlc-qt:

Цитировать
# у меня много ядер и памяти
smp=1

# то что нужно перед сборкой за исключением Build-Depends
required_packages="git ca-certificates build-essential devscripts fakeroot"

# откуда брать исходники
url_type="git"
url="https://github.com/vlc-qt/vlc-qt.git"

Проблемы:

  • парсер поля Build-Depends достаточно примитивный. Например, из комбинации packageA | packageB | packageC он возьмёт packageA, отбросив остальное, даже несмотря на то, что packageA может быть недоступен. Это может вызвать проблемы сборки некоторых исходников

TODO:

  • Наврятли я буду этим заниматься, но желающие могут добавить поддержку RPM-based дистрибутивов с помощью rinse

Высказывайте предложения и пишите о багах Улыбающийся
« Последнее редактирование: Апрель 18, 2016, 18:17 от Alex Custov » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 22.