Apt репозитарий нужен для складёжа DEB (или RPM, у некоторых). Пакеты отбираются по определённым принципам, распихиваются по каталогам. Робот обходит эти каталоги, создаёт всё нужное - создаёт Apt репо.Структура каталогов такая:
каталог-с-зависимостями-продукта
|
|____стабильной-ветки-кода-зависимости
| |
| |____зависимости-сборки
| |
| \____зависимости-установки
|
\____транковой-ветки-кода-зависимости
|
|____зависимости-сборки
|
\____зависимости-установки
Тогда Apt спецификация в /etc/apt/sources.list такая (я разбил одну строку спека на несколько):
deb /путь-адрес/до/каталога/каталог-с-зависимостями-продукта
стабильной-ветки-кода-зависимости
зависимости-сборки
зависимости-установки
Нужно написать этого робота. На первый взгляд просится сделать объект Apt репо. Типа такой:
класс AptРепозитарий {
массив имена-веток-кода [массив имена-с-зависмостями];
}
Массив массивов - как-то криво это.Подкиньте, плиз, идею, как красивее разбить на объекты, на составляющие.
> Тогда Apt спецификация в /etc/apt/sources.list такая (я разбил одну строку спека на
> несколько):
>
> deb /путь-адрес/до/каталога/каталог-с-зависимостями-продукта
> стабильной-ветки-кода-зависимости
>
> зависимости-сборки
>
> зависимости-установки
>Мне (см.ниже) хваило "deb {file:|http:/}/path/to/dir/ /" с Packages и ко. лежащими в корне дерева директорий с пакетами.
> Нужно написать этого робота. На первый взгляд просится сделать объект Apt репо.
> Типа такой:В левую руку - список каталогов, в правую - apt-ftparchive, и for на bash-е должен, вроде, решить. Мне (один-два локальных репо с пересобираемыми периодически пакетами и их вкладываением _руками в репо) хватило.
> В левую руку - список каталогов, в правую - 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
>silicone.homelinux.org/repository/update_repos
#!/bin/shmkpacked() {
[ -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-ы чего-то там. А так, работает.