LINUX.ORG.RU

Появились деббилды

 ,


6

3

Деббилды для Debian'а — тоже самое, что и слакбилды для Slackware. Это простые скрипты, которые собирают пакеты.

В отличие от makepkg, деббилды используют скрипт makedeb, который по дефолту отслеживает зависимости бинарников и включает их в .deb пакет. Если отслеживание зависимостей отключено, а в самих деббилдах нет специфичных для Debian'а команд, то деббилды должны успешно собирать .deb пакеты в любых дистрибутивах, поскольку makedeb собирает пакеты низкоуровнево (через ar + tar + ... и т.д.).

Например, вот таким скриптом может быть собран telegram-purple:

#!/bin/bash
# 2017 (c) Artem Kurashov <mail@saahriktu.org> under GNU GPLv3

#control variables
PKGNAM=telegram-purple
VERSION=$(ls $PKGNAM*.tar.?z* | cut -d _ -f 2 | cut -d . -f 1-3)
ARCH=$(dpkg --print-architecture)
BUILD=${BUILD:-1}

#adjust control file
sed -i "s/^Architecture:.*$/Architecture: $ARCH/" control
sed -i "s/^Version:.*$/Version: $VERSION/" control

#building
tar xvf $PKGNAM*.tar.?z*
cd $PKGNAM
./configure --prefix=/usr --libdir=/usr/lib
make

#packaging
mkdir ../data
DESTDIR="../data" make install
cd ../data
makedeb ep ${PKGNAM}_${VERSION}-${BUILD}_${ARCH}.deb

#cleaning
cd ..
rm -r control.tar.gz data data.tar.lzma debian-binary md5sums $PKGNAM
Здорово, правда?

В случае слакбилдов основными являются 2 главных файла: *.SlackBuild и slack-desc. В случае деббилдов используется связка *.DebBuild и control, где control — обычный Debian'овский control файл. Деббилды могут править control файл, с которым потом будет собран пакет. Скрипт makedeb в любом случае правит control файл, в т.ч. вписывая в него зависимости бинарников, а уже после этого собирает с ним пакет. Как видно, всё очень просто.

makedeb можно скачать здесь (.deb пакет со скриптом прилагается): makedeb-0.5.tar.gz
первый в мире репозиторий деббилдов (пока что содержит 3 рабочих деббилда для apl, purple-vk-plugin и telegram-purple): https://github.com/saahriktu/saahriktu-debbuilds

Ответ на: комментарий от actionless

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

Лично я долгое время просто юзал makedeb с control файлами без всяких скриптов. А сам скрипт makedeb появился как автоматизирующий то, что я делал руками:

.deb пакеты являются обычными ar архивами, и могут быть собраны без использования специальных утилит.

0) создать директорию, в которой будет произведена сборка;
1) создать в ней поддиректорию data;
2) собрать всё, что нужно собрать, возможно, подставляя в --prefix путь к поддиректории data;
3) поместить в поддиректорию содержимое пакета так, как будто бы это корень;
4) перейти в поддиректорию data и запаковать содержимое в data.tar.gz, перемещая затем его выше (mv data.tar.gz ..);
5) выполнить "find -type f -exec md5sum {} \; > md5sums && sed -i 's/\.\/usr/usr/g;/\.\/md5sums/d' md5sums && mv md5sums ..";
6) вернуться выше ("cd ..");
7) редактировать файл control;
8) запаковать control и md5sums в control.tar.gz;
9) выполнить "echo "2.0" > debian-binary";
a) выполнить "ar rcs имя_пакета.deb debian-binary control.tar.gz data.tar.gz";

PS. Параметр "Installed-Size" файла control принимает значение отношения кол-ва байт, занимаемых файлами и директориями пакета, к 1024. Это может быть даже дробное значение, например, "8.63281".

И стандартный формат слакбилдов очень хорошо подошёл к этой основе.

saahriktu ★★★★★ ()
Ответ на: комментарий от actionless

Мне интереснее было написать скрипт, который работает в любом дистрибутиве независимо от наличия дебиановских утилит. То, что в нём появилась процедура, которая юзает дебиановские утилиты, это уже другой вопрос. Это всего одна процедура, которая в ряде случаев не нужна совсем.

saahriktu ★★★★★ ()
Ответ на: комментарий от saahriktu

ну ты и чудик, по-ходу не в курсе, что дебиановский пакет можно собрать положив контрол файл и просто запустив `fakeroot dpkg-deb --build ./`

прямо как в твоей программе, только дебильник не нужно писать

UPD: вместо того, чтобы пытаться защитить свои ущербные идеи, посмотрел бы на аналогичные файлы из прыщавого арча и мерзкой генты, готорые ранее не удостоились внимания такого сэра

actionless ★★★★★ ()
Последнее исправление: actionless (всего исправлений: 1)
Ответ на: комментарий от actionless

dpkg-deb, повторяю, в системе может и не быть. И это не препятствие для того, чтобы создавать .deb пакеты со скриптами и данными.

saahriktu ★★★★★ ()
Ответ на: комментарий от saahriktu

то есть, ты считаешь, что твоя штука будет присутствовать в системе с большей вероятностью?

actionless ★★★★★ ()
Ответ на: комментарий от actionless

Я считаю, что makedeb и деббилды в целом будут работать в любой системе. Достаточно того, что любой желающий может их взять и оно заведётся.

saahriktu ★★★★★ ()
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от ya-betmen

Мне кажется

Да.

Ну неужели это совпадение? Adept_of_shreedom, i1atf, What_nick, Hose, Gicdillax, Flame4all, Flame_Provocator и ещё куча других акков которые я уже забыл. Можешь поинтересоваться за что их забанили, где оно, спровоцированное пламя. Пламя из пукана Пинкбайта не считается, оно у него само провоцируется на самом деле, пример.
Да и он как бы сам признавался почему себя так ведёт. В школе видимо постоянно п-дили.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.