К основному контенту

Пересборка deb пакета в Fedora 44

 Мне все чаще приходится взаимодействовать с дистрибутивами на основе deb пакетов. Долгое время и если была необходимость, всегда собирал rpm пакеты, там все просто и понятно. И вот решил попробовать собрать deb пакет. Так как уже давно есть контейнеры и по моему мнению сборка пакетов, для контроля правильных зависимостей, в изолированном окружении больше не нужна. Берешь пустой контейнер и вперед. 

Так как может понадобится пересобрать и другие программы я разделил сборку на два этапа: (все шаги выполняются от пользователя)

1. Подготовка сборочного контейнера (пригодится для других программ).

Создаем файл: vi Dockerfile
FROM docker.io/library/debian:forky
MAINTAINER user <user@mail.lan>
USER root
RUN apt-get update && apt-get install -y devscripts quilt
USER ${CONTAINER_DEFAULT_USER}
и собираем контейнер
podman build -t home.lan/debian14-debuild .

2. Пересборка пакета. 

Скачиваем исходники программы, файлов описания пакета и правил сборки с
https://mentors.debian.net/debian/pool/main/libm/libmateweather/
libmateweather_1.28.2-1.dsc
libmateweather_1.28.2-1.debian.tar.xz
libmateweather_1.28.2.orig.tar.xz

делаем в текущей директории директорию app1, помещаем скаченные файлы туда, и там же будут собранные бинарные пакеты.

создаем скрипт для сборки в контейнере vi start_build_binary.sh:

#!/bin/sh

APP_NAME="libmateweather1t64"
NAME="libmateweather"
VERSION="1.28.2"
SUB_VERSION="1"

podman run --rm \
    --volume ./app1:/app/:Z \
    --workdir /app/ home.lan/debian14-debuild \
    /bin/sh -c "cat /etc/debian_version; \
    apt update; \
    dpkg-source -x ${NAME}_${VERSION}-${SUB_VERSION}.dsc; \
    cd ${NAME}-${VERSION}/; \
    apt-get build-dep -y .; \
    dpkg-buildpackage -b -uc -us"

запускаем скрипт и наблюдаем как собираются бинарники под тестовый (на сегодня) дистрибутив Debian.

В результате сборки в директории app1 появятся пакеты:
сама программа:

  1. libmateweather1t64_1.28.2-1_amd64.deb
  2. libmateweather-common_1.28.2-1_all.deb

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

  1. libmateweather-dev_1.28.2-1_amd64.deb

и вспомогательный файлы для контроля сборки и отладки:

  1. libmateweather_1.28.2-1_amd64.buildinfo
  2. libmateweather_1.28.2-1_amd64.changes
  3. libmateweather1t64-dbgsym_1.28.2-1_amd64.deb

P.S. Исходники мне указали на одном известном форуме.
Все это я собирал в дистрибутиве Fedora 44 c помощью системы управления контейнерами podman. 

Комментарии

Популярные сообщения из этого блога

FF 31.x ESR and Nagios Checker

Оказывается FireFox 31.x сделали ESR. И достаточно быстро его затискали в обновление CentOS 6 . Но этот Firefox уже с новым интерфейсом и на нем отсутcтвует статус бар внизу :( В частности я использую Nagios Checker его перенести нельзя и мне это доставляет большое неудобство. К счастью прям на странице Nagios Checker рекомендуют установить дополнение status-4-evar , и все сразу становится как было :)

bootc

 С большим опозданием, хочу сообщить вам о новой крутой технологии bootc . Получается она вышла достаточно давно, и уже с весны 2025 года стала доступна в RHEL 10. Сам я с этой технологией познакомился случайно, благодаря статье про Fedora Hummingbird из журнала Fedora Magazine . Там упоминается это замечательная технология как bootc. По сути bootc - переводится как загружаемый контейнер.  Т.е. контейнер может работать как обычный OCI/Docker контейнер, но также может работать в виртуальных машинах и даже на голом железе. Причем сам контейнер по сути есть атомарный т.е. (immutable) и после создания его нельзя изменить и как следствие надежный и безопасный. При обновлении старый объект удаляется и заменяется новым. Причем все это может делать сам контейнер, следить о появлении новой версии в регистре, скачивать слой контейнера и если что не так то откатывать изменение. Причем вся сборка этого контейнера управляется через API (API-driven), т.е. полная автоматизация, модульность...

Install Redmine 2.3.1 in CentOS 6.x

Я собрал стек Ruby on Rails версии 3.2.13 под ruby 1.8.7 из дистрибутива CentOS 6.x. Теперь можно легко и просто установить на сервер с EL6 систему управления проектами Redmine версии 2.3.1 . Установить все это можно простым скриптом ( если не нравится скрипт то можно посмотреть внутрь него и выполнить все шаги руками ) Загрузка скрипта P.S. К сожалению из за невозможности удалять пакеты в системе сборки koji пришлось сделать репозитарий на google drive. P.P.S. С помощью костылей в виде указывание EPOCH в spec, удалось таки собрать пакеты в russian KOJI, так что в качестве репозитария можно указывать теперь: baseurl=http://koji.russianfedora.ru/repos/dist-el6-build/latest/$basearch/