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

В целом идея хорошая, но у дебиана большой репозиторий. Мне еще ни разу не требовалось пакеты руками под дебиан собирать, не считая сборки из чисто спортивных интересов. Поэтому вряд ли взлетит. И да, с названием надо что-то делать, заголовок новости прочитал как «Появились дебилы», хотя они никуда и не исчезали :)

anonymous ()

А чем оно отличается от использования alien ?

Jopich1 ()

Уже и не поймешь, это ТС троллит модераторов или они его, когда подтверждают всё это. Но в любом случае, поиметыми оказываются читатели главной.

anonymous ()

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

BillDver ★★★ ()

А смысл? Если есть dh_make -n && dpkg-buildpackage

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

dh_make c флажком -n, не? тогда orig не нужен, можно править исходник и собирать сразу пакет.

ncrmnt ★★★★★ ()

Одну букву «б» из названия надо убрать, она тяжело произносится и странно звучит. Так и видится бегущий древний мальчик разносчик газет: «Дебилды! Свежие дебилды. Они выпустили дебилды, покупайте дебилды! Вам нужны дебилды для дебов.»

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

Дебилиановские деббилоиды. Хм.Звучит.

anonymous ()

Это, конечно, очень хорошо, но я мечтаю о гуёвой софтине с кнопкой «собрать». То есть скачал какой-нибудь там тарбол, выбрал его в этой софтине, ткнул кнопочку " собрать", и ррраз! вылез деб-пакет, или рпм-пакет. И чтобы софтина была в вариантах на гтк2 и 3. Такая бывает?

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

но я мечтаю о гуёвой софтине с кнопкой «собрать»

Слово «собрать» замени на «страдать». И постигнешь дзен линукса.

anonymous ()

Деббилды для деббилов не осиливших dpkg-buildpackage

Deleted ()

вот вроде придумали адеватные пакетные системы nix и guix, но нет, некоторые так и продолжают жить в каменном веке

anonymous ()
Ответ на: комментарий от mahalaka

прикольно, но название дебильное

Я бы даже сказал деббильное

ya-betmen ★★★★★ ()

Похоже, что на Лоре и дебиане это не нужно

sehellion ★★★★★ ()

Название новости - атас! Смотрю главную, а там новость - «Появились дебилы» о_О

th3m3 ★★★★★ ()

Признавайтесь, кто прочитал: «Появились дебилы?»

Michail_Ul ★★ ()

Спасибо, поржал :) Пойду соберу дебилду

anonymous ()

ТС Почему нет команды СДИП в0.1 и СДИП в0.1гип ? Недоработка.

anc ★★★★★ ()

разве alien не этим же самым занимается ?

Jopich1 ()

Спасибо конечно, но опоздал проект лет на 10. Раньше когда debian rules были сложными - это было бы очень круто. А сейчас когда rules для стандартного autotools/qmake/cmake проекта состоит из трёх строк, этот проект уже излишен.

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

На самом деле, вещь нужная, но, имхо, идеально это сделали в Арче. Слакбилды подразумевают кучу дополнительной работы, тогда как пкгбилды в общем случае делают абсолютно всю работу по сборке пакета, включая выкачку исходников и установку готового пакета в систему, одним файлом.

meliafaro ★★★★★ ()

деббилды должны успешно собирать .deb пакеты в любых дистрибутивах, поскольку makedeb собирает пакеты низкоуровнево

А как он прописывает зависимости, если я собираю deb на Федоре?

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

Самое забавное, я сам только вчера пытался придумать костыли, позволяющие собирать деб-пакеты так же просто, как в Арче или хотя бы Слаке, причем у меня тоже крутилось в голове название makedeb)

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

Предложение надо читать целиком:

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

В таком случае зависимости прописываются вручную.

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

Так а если включено? Или makedeb определяет систему, и если это не Debian, то выключает зависимости?

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

Тогда всё засыпется, поскольку будут пытаться выполняться отсутствующие команды. Хотя что-то в итоге, может, и получится, но неизвестно что.

saahriktu ★★★★★ ()

Почему-то эта штука вызывает ещё большее отвращение чем стандартные способы собирания дебиановских пакетов.

ei-grad ★★★★★ ()

Здорово, правда?

А зависимости где указываются?

grem ★★★★★ ()

Наконец-то! А то в deb настолько упоротая структура, что я до сих пор не освоил, как их собирать. Честно говоря, из-за этого не очень-то и хотелось, поэтому я всегда предпочитал PKGBUILD из Arch или ebuild из Gentoo.
Только название неудачное на русский взгляд. Думаю, будут часто опечатываться (случайно или ради троллинга), опуская букву «д».

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

а там новость - «Появились дебилы» о_О

Тоже мне новость, действительно.

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

до сих пор не освоил, как их собирать

Не сложнее, чем освоить генту..

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

Упрощение работы мейнтейнера - это всегда хорошо, но и правда - осилить дебиановский rules совсем не сложно. ИМХО есть вещи, для которых должен быть какой-то порог вхождения. Если человек не может осилить систему сборки - то ему, вероятно, не место в сборщиках. Если же каждая Таня и каждый Денис на переменке между уроками смогут пересобрать пакет - качество этих пакетов будет соответствующее. А этими пакетами, на секундочку, другие люди пользоваться будут.

anonymous ()

Метеорологи объявили неделю saahriktu на лоре…

Слушай, ТС, прекрати заниматься бесполезной фигней, а? Лучше бы поней или аниме смотрел, право слово. Ну либо заведи себе бложик на blogspot.com и отчитывайся о своих героических свершениях софтостроения там.

anonymous ()

Предсказываю:

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

Потом он добавит механизм, позволяющий управлять опциями сборки пакета без переписывания этих самых дебилдов.

Потом он почешет репу и прикрутит автоматическое вытягивание зависимостей - ведь для зависимостей уже есть дебилды, надо просто их подтянуть.

Затем он посмотрит на свой клон Gentoo и отформатирует жесткий диск.

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

Не все осиливают такие форматы, включая форматы .spec файлов для rpm'а и ебилдов. А обычные скрипты просты и понятны.

Господи, какой мусор гуляет в твоей голове...

AVL2 ★★★★★ ()

а зачем деббилды, если есть checkinstall?

xmikex ★★★ ()

Велосипед. Кто мешал портонуть рачевский pkgbuild?

PanZagloba ()

Силен и могуч Русский язык! Не ожидал, что ты захочешь вырывать зубы через «задний проход» ;) Ну да чем черт не шутит ;)) Так к Ubuntu и дойдёшь ;)

vombat ()
Ответ на: комментарий от AVL2

Нормально, чё. Он теряет эту, девственность ;) Тут, правда, ждёт разочарование )) До него уже дядьки подумали. Но никто не запрещает забивать гвозди микроскопом ;)

vombat ()

а зависимости оно так же криво проверяет как synsptic в убунте?
и можно ли другое действие над зависимостями производить, отличное от включения их в пакет?

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

Процедура поиска зависимостей в makedeb ищет бинарники, смотрит через ldd какие библиотеки им нужны, а потом составляет список пакетов к которым они относятся через «dpkg -S» и «apt-cache show». Хотя она и несколько костыльная, да, и в отдельных случаях может сработать криво. Ну так и версия makedeb 0.5.

и можно ли другое действие над зависимостями производить, отличное от включения их в пакет?

Разве зависимости в данном случае - это не значение поля «Depends» в файле control?

saahriktu ★★★★★ ()
Последнее исправление: saahriktu (всего исправлений: 1)

Так трудно было ознакомиться с официальной документацией? Всё уже придумано, инструментов хватает, в т.ч. удобных скриптов для автоматизации и ускорения рутины. https://www.debian.org/doc/manuals/maint-guide/

anon1337 ()

И не заметил в деббилде какого-либо поля для указания зависимостей сборки. Это же самое главное. Понятно, что такое есть у пакетов из репозиториев, но раз уж пишутся правила в т.ч. для левых исходников, то неплохо бы дать возможность автору простыни сразу указать зависимости сборки.

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