LINUX.ORG.RU
ФорумAdmin

Как создать сторонний репозиторий для Debian?

 


0

1

Допустим, что я хочу создать репозиторий-оверлей (в терминах Gentoo), для Debian.
Имя у него будет, допустим, gradle-repo.
/usr/local/gradle-repo/

Нужно будет где-то хранить исходники для сборки.
например, каждый в отдельной директории
/usr/local/gradle-repo/sources/<имя-пакета>/ (.git)

исходные текстовые файлы со скриптами, которые создают .deb-файлы
(аналог .ebuild-скриптов в Gentoo).
для каждого пакета создаём директорию
/usr/local/gradle-repo/recipes/<имя-пакета>/debian/

  • rules (Makefile-подобный скрипт сборки)
  • control (Зависимости, метаданные пакета, описание)
  • copyright (Информация о лицензиях)
  • патчи (patches/ — квалтифицированные патчи (если формат 3.0 (quilt)))
  • changelog (История изменений пакета)
  • различные скрипты (postinst, prerm)

Директория с бинарными файлами в формате .deb будет называтся, допустим
/usr/local/gradle-repo/binaries/
./pool/main/<имя-пакета>/ (*.deb)

.orig.tar.gz — оригинальный исходный код от разработчиков программы (upstream)
.diff.gz) — всё, что сделали разработчики Debian: папка debian/ с правилами, патчами, etc.
.dsc (Debian Source Control) — текстовый файл с метаданными и контрольными суммами

APT скачает исходный код этой зависимости, если в бинарном репозитории
будут лежать не только .deb, но и соответствующие .dsc и .orig.tar.gz файлы.

Пакет с исходным кодом для отладки (Debug package) — -dbgsym.deb

/usr/local/gradle-repo/binary-repo/
./dists/stable/main/binary-amd64/ (Packages, Packages.gz, Release)
./dists/stable/main/source/ (Sources, Sources.gz, Release)

/usr/local/gradle-repo/scripts/
build-package.sh # Сборка одного пакета
build-all.sh # Сборка всех зависимостей
update-repo.sh # Обновление метаданных репозитория
create-new-package.sh # Создание шаблона для нового пакета

/usr/local/gradle-repo/config/
для конфигурирования программ, работающих с репозиторием ./mini-dinstall/logdir/

sudo apt install mini-dinstall
/etc/mini-dinstall/mini-dinstall.conf
в конфиге мы указываем incoming: /usr/local/gradle-repo/config/mini-dinstall/incoming/
sudo systemctl enable mini-dinstall
sudo systemctl start mini-dinstall

Пакет собирать командами
cd /usr/local/gradle-repo/sources/gradle-foo
ln -s /usr/local/gradle-repo/recipes/gradle-foo/debian .
dpkg-buildpackage -us -uc

файл ../gradle-foo_1.0-1_amd64.changes копировать в директорию
/usr/local/gradle-repo/config/mini-dinstall/incoming/

Как я понял, эта тема
Debusine — «PPA для Debian», теперь в реальности
никакого отношения ко мне не имеет,
потому что я не разработчик Debian
(и не хочу им быть, это зашквар - быть причисленным к англоговорящим, и покорно-субмиссивно регистрироваться среди них. Проситутке какой может и норм, но я не из этих.)



Последнее исправление: Saakx (всего исправлений: 2)
Ответ на: комментарий от kostik87

Какие ещё тренды сейчас в моде?

Регистрироваться гордо-пассионарно среди себя, видимо.

Irma ★★★
()

А чо эта у тебя в посте английских слов больше, чем русских?

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

официальную документацию

Ну давай посмотрим, так ли она хороша, как мой стартовый пост.

Я запустил утилиту reprepo:
mkdir -p /usr/local/repo/gradle
cd /usr/local/repo/gradle
cat ./conf/distributions

Codename:  trixie
Suite:  stable
Version: 13.x
Origin: Debian
Label: Debian 13.x
Description: Gradle packaging repository
Architectures: amd64 source
Components: main
DebIndices: Packages Release . .gz .bz2
DscIndices: Sources Release . .gz .bz2
Contents: . .gz .bz2

apt-get install reprepro
reprepro export
reprepro createsymlinks

И вот что она мне создала:

/usr/local/repo/gradle# tree
.
├── conf
│   └── distributions
├── db
│   ├── checksums.db
│   ├── contents.cache.db
│   ├── packages.db
│   ├── references.db
│   ├── release.caches.db
│   └── version
└── dists
    ├── stable -> trixie
    └── trixie
        ├── Contents-amd64 -> main/Contents-amd64
        ├── Contents-amd64.bz2 -> main/Contents-amd64.bz2
        ├── Contents-amd64.gz -> main/Contents-amd64.gz
        ├── main
        │   ├── binary-amd64
        │   │   ├── Packages
        │   │   ├── Packages.bz2
        │   │   ├── Packages.gz
        │   │   └── Release
        │   ├── Contents-amd64
        │   ├── Contents-amd64.bz2
        │   ├── Contents-amd64.gz
        │   └── source
        │       ├── Release
        │       ├── Sources
        │       ├── Sources.bz2
        │       └── Sources.gz
        └── Release

Вижу ли я, куда складывать исходники? Нет.
Куда складывать рецепты? Нет.
Есть ли ссылки про это в указанной статье? Нет.

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

Это названия у обсуждений релевантные.
А содержимое-контент у обсуждений - это частные вопросы, которые никак не отвечают на мой.

Меня не только процесс распространения волнует, но и процесс разработки.
Зачем они заставили меня прочитать две лишних секции про создание зеркал?
А вот на вопрос - как бы мне разрабатывать не под рутом, они даже не подумали отвечать.

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

Ну там есть папка source и binary.

А этот топик - статья или вопрос? Вообще по-моему для того чтобы поставить кастомную версию не надо гродить репозиторий, просто пишешь apt install ./gradle.deb

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

DSC файлы, если это ты называешь рецептами добавляются по аналогии с deb пакетом.

Ты можешь вообще свалить всё в одну плоскую кучу и сгенерировать Content файл.

Но по принятому стандарту группы пакетов с однотипными именам размещаются в поддиректориях с именем в 1-буквы/2-буквы/пакет или 1-буква/пакет или 2-3-буквы/пакет.

Т.е. ты просто делаешь add готового пакета и reprepo сам помещает его в поддиректории, создавая правильную структуру.

Аналогично из dsc файлами.

Почитай, пожалуйста https://manpages.debian.org/trixie/reprepro/reprepro.1.en.html.

И аналогично с исходниками, там ключи есть, всё в man.

И темы почитай внизу.

Вместо кучи текста - почитай ссылки и документацию. Ты этого не сделал.

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

А этот топик - статья или вопрос?

Это сдача отчёта по скоропечати и облачения мыслей в слова.

С подтверждением, что автор не умеет читать документацию и пользоваться поиском тем на форуме.

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

Я эту простыню по твоей ссылке тоже не осилил если что. Вместо предлагаемого там сделал себе сборщик репы на пхп. Сама репа - это просто пачка файлов, опубликованная на http-сервере.

Впрочем простыню автора этой темы, да ещё и с плохим форматированием, я тоже не осилил. По-моему он уже напридумывал себе сложностей.

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

По ссылке читать нечего, в смысле мало, если понимать что читаешь.

Если кратко - средствами reprepo инициализируешь репозиторий и далее просто его же средствами добавляет deb / dsc / прочее в репозиторий, а он сам посещает файлы и обновляет файлы с содержимым репозитория.

У автора запрос не только на deb пакеты.

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

средствами reprepo

А чего не mini-dinstall ?

Никаких ссылок на стандарты, «читай ссылки» - какие неизвестно, нет объяснения причин, чем одна утилита лучше другой (а там их ещё несколько штук).

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