The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"А подкиньте идею - реализация объекта Apt репозитарий."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Разное)
Изначальное сообщение [ Отслеживать ]

"А подкиньте идею - реализация объекта Apt репозитарий."  +/
Сообщение от A on 23-Дек-13, 12:07 
Apt репозитарий нужен для складёжа DEB (или RPM, у некоторых). Пакеты отбираются по определённым принципам, распихиваются по каталогам. Робот обходит эти каталоги, создаёт всё нужное - создаёт Apt репо.

Структура каталогов такая:


каталог-с-зависимостями-продукта
    |
    |____стабильной-ветки-кода-зависимости
    |           |
    |           |____зависимости-сборки
    |           |
    |           \____зависимости-установки
    |
    \____транковой-ветки-кода-зависимости
                |
                |____зависимости-сборки
                |
                \____зависимости-установки


Тогда Apt спецификация в /etc/apt/sources.list такая (я разбил одну строку спека на несколько):


deb  /путь-адрес/до/каталога/каталог-с-зависимостями-продукта
        стабильной-ветки-кода-зависимости
                зависимости-сборки
                зависимости-установки


Нужно написать этого робота. На первый взгляд просится сделать объект Apt репо. Типа такой:


класс AptРепозитарий {
    массив имена-веток-кода [массив имена-с-зависмостями];
}


Массив массивов - как-то криво это.

Подкиньте, плиз, идею, как красивее разбить на объекты, на составляющие.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "А подкиньте идею - реализация объекта Apt репозитарий."  +/
Сообщение от Andrey Mitrofanov on 23-Дек-13, 13:55 
> Тогда Apt спецификация в /etc/apt/sources.list такая (я разбил одну строку спека на
> несколько):
>
 
> deb  /путь-адрес/до/каталога/каталог-с-зависимостями-продукта
>         стабильной-ветки-кода-зависимости
>            
>     зависимости-сборки
>            
>     зависимости-установки
>

Мне (см.ниже) хваило "deb {file:|http:/}/path/to/dir/ /" с Packages и ко. лежащими в корне дерева директорий с пакетами.

> Нужно написать этого робота. На первый взгляд просится сделать объект Apt репо.
> Типа такой:

В левую руку - список каталогов, в правую - apt-ftparchive, и for на bash-е должен, вроде, решить. Мне (один-два локальных репо с пересобираемыми периодически пакетами и их вкладываением _руками в репо) хватило.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "А подкиньте идею - реализация объекта Apt репозитарий."  +/
Сообщение от A on 24-Дек-13, 11:47 
> В левую руку - список каталогов, в правую - apt-ftparchive, и for
> на bash-е должен, вроде, решить. Мне (один-два локальных репо с пересобираемыми
> периодически пакетами и их вкладываением _руками в репо) хватило.

Да, я базируюсь на apt-ftparchive. Придумываю, не сделать ли обёртку, которая позволяет вообще не вспоминать о чём-то, кроме названия репо. Обёртка на Perl + Moose, и тем самым можно, вроде бы, "недорого" сделать объектно-ориентированную обёртку к запуску apt-ftparchive.


P.S. Для интересующихся, howto:

    http://silicone.homelinux.org/2009/02/27/signed-personal-deb.../
    http://silicone.homelinux.org/repository/
    http://silicone.homelinux.org/repository/update_repos

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "А подкиньте идею - реализация объекта Apt репозитарий."  +/
Сообщение от Andrey Mitrofanov on 24-Дек-13, 12:37 
>silicone.homelinux.org/repository/update_repos

#!/bin/sh

mkpacked() {
[ -r "$1" ] || return
nice gzip -9 <"$1" >"$1.gz"
touch -r "$1" "$1.gz"
nice bzcat -z <"$1" >"$1.bz2"
touch -r "$1" "$1.bz2"
}
mkmk() {
echo "*** $1"
  apt-ftparchive -d .db "$1" . /dev/null >"$2"
  if [ "$1" != "release" ]; then
    mkpacked "$2"
  else
    rm -f "Release.gpg"
    gpg --homedir ~/debian/local_keys -abs -o "Release.gpg" "Release"
    touch -r "Release" "Release.gpg"
  fi
}

mkmk packages Packages
mkmk sources Sources
[ "Contents" -nt ".db" ] || mkmk contents Contents
mkmk release Release


С идеями и ОО туго. Первым делом переписал бы на /bin/bash, но, вроде, и незачем. Ну, Release куцый, ну про override-ы чего-то там. А так, работает.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру