Pull to refresh

Comments 36

wget -O — http://repo/keyFile | sudo apt-key add -

За такое хочется бить по рукам. Добавлять в доверенные ключ полученный по http вредно. Возьмите letsencrypt и настройте https для отдачи ключа или расположите его на доверенном сервере, доступном по https.

UFO just landed and posted this here

Тогда не нужны и подписи, можно подключать репозиторий так deb [trusted=yes] http://repo/ xenial contrib и не париться.

Некоторое время назад мне понадобилось поднять репозиторий пакетов для убунту и центоса. Готовых решений под мои требования не нашлось, как следствие появилось вот это: https://github.com/hulu/urepo

С rhel/centos обычно проблемы-то и нет, дёрнуть createrepo да и выставить директорию по http.

urepo именно это и делает
А что насчет сборки под разные дистрибутивы и архитектуры? Есть ли для этого какие-то удобные решения ( помимо того что поднимаем по виртукалке под каждую убунту, собираем, и выкладываем )?
Была бы возможность поставил бы здоровый плюс. Сейчас активно fpm использую в нашей компании, собираем 30+ пакетов с его помощью на одной машине сразу для yum и apt и никакой мороки с specfile и прочим.

Одно только проблема это написание хуков которые бы работали сразу с всеми менеджерами (yum ,dnf, apt-get).
Идеального варианта сейчас нет. Оптимальным вариантом является использование контейнеров. Позволяет решить вопрос декларативности окружения для сборки. Да и ресурсов требуется меньше, чем для виртуалок. Вообще тема крайне интересная, хотя специалистов по данной тематике не так много.
Я использую chroot. Хост система убунту, chroot среду собираю для разных версий убунту и центоса. Работает даже экзотический вариант, когда на 64-битной хост убунте собираются 32-битные пакеты для центоса.
Когда я на него смотрел некоторое время назад у него не было возможности хостить несколько версий одного пакета.
Я из-за этой особенности перешёл на mini-dinstall.
Зашел задать тот же вопрос. Много лет его использовал, был всем доволен.
У reprepro, на мой взгляд, есть два существенных недостатка:
— не умеет хранить несколько версий одного пакета в рамках одного Suite/Component
— при попытке добавить пакет версии ниже существующей, молча скипает с exitcode 0
А есть такой же мануал для CentOS?

rpm --addsign some-package-x.y.z-1.el6.rpm или rpmbuild -ba --sign path/to/package.spec + createrepo /path/to/repo требуют отдельного howto?


Есть, например, Fedora RPM Guide, где подробно описано как сгенерировать ключи и подписывать пакеты.

Да, иногда требуют:) это не моя специализация, поэтому было бы намного проще, если бы был пошаговый мануал вида: собираем программу из исходников — делаем из нее пакет — создаем репозиторий — настраиваем его на других машинах — автоматизируем скачивание исходников и сборку их с нужными опциями

За ссылки спасибо, но полный мануал все же был бы лучше.

Fedora RPM Guide и представляет собой полный мануал, который рассказывает об rpm, как оно устроено, как пишутся spec-файлы, какие есть триггеры и т. п.


Для меня сборка пакетов тоже не входит в специализацию, но это ни коим образом не закрывает возможность прочитать небольшой мануал и разобраться, когда понадобилось. Обычно проблема, скорее, найти нормальный мануал и отсеять кучу мусора от индусов и современных хабро-индусов, которых, к сожалению, стало многовато.

есть еще клевая утилита aptly, сам её юзал и буду юзать :).
Присоединяюсь! К тому же Aptly позволяет создавать сколько угодно репозиторием в рамках одной установки. Очень удобно.
статья про шелл скрипт на треть экрана, но спасибо.

контейнеры-шмонтейнеры. Описанный в статье вариант. Не решает частного варианта dependency hell в виде персборки при изменении зависимостей.

Описанный вариант даже не затрагивает этого момента. Если у вас есть опыт решения данной задачи, расскажите, как вы это делаете?

Для пакетов у меня стоит OBS (open build service), они решили вопрос сборки пакетов в docker, и стало возможным убрать в приватное облако.
С контейнерами сложнее, я сократил количество базовых контейнеров до минимума и сам прописал между ними связи.

У нас сейчас используется самописная сборочная система, я тоже смотрю OBS, но пока не решился на попытку перебраться на него. Я собираю порядка 30+ пакетов из 60+ компонентов со сложным деревом зависимостей в рамках одного продукта.

Попытка что-то написать у меня была, но света в конце туннеля я не увидел. Как раз в тот же момент OBS нормально научился собирать в докере.


Я даже не стал себе ломать голову, поддерживаю 1 машину с opensuse. Есть мысли обернуть запуск OBS демонов в какой-нибудь runit/supervisord и сделать докер образ.

UFO just landed and posted this here
Ну или как вариант:
cat << EOF | sudo tee -a /var/www/repo/Makefile
Мы храним локальное зеркало репы debian (благодаря этому получаем профит по скорости локальной сборки пакетов). Само зеркало делаем утилитой ftpsync.
А для хранения своих пакетов используем aptly. Он предоставляет очень удобное API для загрузки и публикации пакетов в репе. И не надо делать кучу магических скриптов :)
Я для этих нужд использую aptly, skyforge, rsync и jenkins (debian package builder + docker build environment + самописный плагин для добавления артефактов в aptly). aptly делает внутренний снепшот репозитория, потом мы его препрод-тестируем на железках, а потом rsync'ом публикуем наружу, если preprod прошел.
Sign up to leave a comment.

Articles