Прежде чем читать этот пост откройте консоль и выполните следующие команды
ls /etc/apt/sources.list.d | wc -l
Если у вас вдруг появилась надпись
"ls" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
то значит эта статья точно не для вас.
Если у вас не Debian, Ubuntu или их потомки, а что-то на основе RPM или Gentoo, то это тоже не для вас, по крайне мере пока.
Если у вас получилось число меньше 5, то вам наверное не пригодится то что написано дальше.
Ну а если вы получили число больше 10 (а то и 24 как получилось у меня) то читайте дальше и вы сможете сэкономить много времени.
Как в голову пришла идея
Итак, все началось немногим меньше полутора лет назад, когда я обновлял свою тестовую ubuntu natty на ставший тестовым oneiric. Матов было много, так как приходилось мониторить, когда ppa репозитории перейдут на новый дистрибутив и каким он будет. Кто-то переходил на oneiric, а кто-то только на natty — на это все ушло довольно много времени.
Потом было обновление до oneiric и precise, увеличение количества репозиториев и количества ругательств, установка системы на работе с нуля и подключения этого добра в новую систему.
Как вы все наверное заметили, что сторонние репозитории управляются достаточно сложно: нужно самому следить за ключами, для хостящихся на launchpad нужно каждые пол года менять дистрибутив, достаточно неудобно их удалять — нужно удалить еще и ключ.
А ведь по сути подключение репозитория сводится к добавлению двух файлов - список адресов в sources.list.d и gpg ключ в trusted.gpg.d, так почему бы их не объединить в пакет, установив который вы подключаете репозиторий, а удалив — отключаете.
Пакет по формату получился простейший, без каких либо зависимостей и не требующий ничего особенного для сборки, но оставался вопрос — как такие пакеты устанавливать, поэтому пришлось реализовывать еще и репозиторий.
И что из этого получилось
А получился сайт http://pkggen.no-ip.org/, который представляет собой довольно простую вещь — вы скачиваете и ставите один пакет, после чего вы можете ставить все пакеты, которые есть на сайте, а если вам чего-то не хватает (а в начале так и будет), то после регистрации можно добавить свои репозитории, и система сама сгенерирует для них пакеты и добавит в репозиторий. PPA репозитории отслеживаются автоматически и проверяются на обновление на launchpad. Все пакеты репозиториев начинаются с префикса, так-что искать в общем списке их можно не только по источнику, но и по имени.
Техническая реализация
Во-первых, код открыт — в лучших традициях OpenSource.
Во-вторых, реализовано все на Symfony 2 и
Автор: iborzenkov