Делаем собственный репозиторий для Debian
Наткнулся я тут на прошлой неделе на старую публикацию Drew DeVault (его блог, кстати, от всей души рекомендую) и плотно призадумался. Сразу захотелось беспроблемной и по уму установки новый версий всяких мелких программ, которыми я пользуюсь. В последнее время с этим как раз наметились проблемы: копировать каждый раз бинарники на «сервер» Raspberry Pi и на VPS, где крутится этот сайт, настолько лень, что я не всегда пользовался свежей версией webmention.io-backup, хотя сам её пишу, а скачивать и ставить новые версии Hugo вручную и на VPS, и на ноутбук, и на домашний компьютер уж совсем надоело. Теперь у меня собственный репозиторий, и многое из этого будет происходить само по себе. Не прелестно ли, когда компьютеры делают тебе комфортно, а не ты им?!
Можете, кстати, репозиторием-то пользоваться, если есть желание. Строка для sources.list
выглядит как
deb [signed-by=/usr/share/keyrings/nekr0z.asc] http://deb.evgenykuznetsov.org stable main
(если, конечно, ключ сохранён в /usr/share/keyrings/nekr0z.asc
, а не куда-то ещё).
Вообще-то «правильный» способ делать всё по-дебиановски — не для простых смертных, но, к счастью, есть альтернативы. В частности, для сборки репозитория я пользуюсь aptly, и с ней просто: команда
aptly repo create myrepo
создаёт репозиторий «myrepo». Потом можно сделать ключ PGP, чтобы этот репозиторий подписывать, и добавить пакетов:
aptly repo add myrepo <filename>.deb
после чего собираем репозиторий в файловой системе:
aptly publish repo -distribution="stable" -gpg-key="A9C8BD9C3A5754D4" myrepo
Собственно, после этого готовый к использованию репозиторий лежит в ~/.aptly/public/
, и его можно раздавать по HTTP, или, в моём случае, отправить через rsync
на VPS, и раздавать уже оттуда.
Теперь, при желании, можно добавлять пакеты или делать какие-то изменения в «myrepo», а потом просто
aptly publish update -gpg-key="A9C8BD9C3A5754D4" stable
Делать всё это вручную, конечно, лень, так что я написал ещё пару небольших скриптов, чтобы добавление пакетов, пересборка репозитория и выгрузка его на VPS происходили в одну команду. А для того, чтобы Github автоматически запускал обновление репозитория, когда я выпускаю новые версии своих программ, пригодился принудительный запуск команды в SSH, о котором я узнал из того же блога; сама функция выглядит примерно так:
|
|
(здесь $1
— получаемый из case
аргумент вроде nekr0z/webmention.io-backup
).