Просто встановіть простий, але підписаний сховище на веб-сервері. Оскільки більшість інших навчальних посібників дещо датовані чи громіздкі, я спробую тут повторити процедуру. Початкова конфігурація вимагає трохи зусиль, але простий сценарій побудови дозволяє легко управляти. І ви можете просто запустити нові *.deb
файли, а потім оновити або дозволити це працювати cron.
Створіть кілька ключів підпису
Спочатку потрібно створити gpg
ключ підпису для пакетів та вашого сховища. Зробіть це (4) ключем підпису RSA, без пароля, і надайте унікальний, $KEYNAME
коли його вимагають. (Подальші приклади вважають " dpkg1
" ім'ям ключа "."
gpg --gen-key
gpg -a --export-secret-key dpkg1 > secret.gpg
gpg -a --export dpkg1 > public.gpg
Я не сказав пароля, оскільки ваш веб-сервер не має вбудованої мавпи, яка б його вводила повторно. І підписані пакети та сховище призначені лише для задоволення скарг менеджерів оновлень щодо цього. Просто завантажте обидва ключі в нову /apt/
каталог репозиторію на своєму веб-сервері, але видаліть secret.gpg
ключ після ініціалізації.
Оновіть сценарій CGI
Це проста оболонка оновлення / сценарій CGI для неї:
#!/bin/sh
echo Status: 200 Okay
echo Content-Type: text/plain
echo
echo Rebuilding APT repository:
{
#-- settings
export GNUPGHOME=/var/www/usr12345/files
export KEYNAME=dpkg1
#-- one-time setup
if [ ! -e "$GNUPGHOME/secring.gpg" ] ; then
gpg --import -v -v ./secret.gpg
gpg --import -v -v ./public.gpg
gpg --list-keys
fi
#-- symlink .deb files from adjacent sub-directories
find .. -name '*.deb' -exec ln -s '{}' . \;
#-- build Packages file
apt-ftparchive packages . > Packages
bzip2 -kf Packages
#-- signed Release file
apt-ftparchive release . > Release
gpg --yes -abs -u $KEYNAME -o Release.gpg Release
} 2>&1
Три gpg
рядки потрібно виконати лише один раз, щоб ініціалізувати налаштування GPG в деякому каталозі $GNUPGHOME
(над коренем документа). Видаліть лише secret.gpg
успіх після.
Одна унікальна особливість цього маленького скрипта оболонки полягає в тому, що він приймає будь-які *.deb
файли, які ви потрапляєте, але також рекурсивно здійснює пошук (починаючи з одного рівня вгору) для інших, і позначає їх в. (Потрібно .htaccess Options FollowSymLinks
зрештою.)
Ви можете виконати цей скрипт вручну як CGI або за cron-завдання. Але прихойте його, а ще краще перемістіть його з кореня документа.
Оскільки це "тривіальне" сховане сховище, йому потрібен наступний apt-sources.list
запис:
deb http://example.org/deb/ ./ # Simple signed repo
Це підходить для сховищ однієї архітектури, і якщо ви не очікуєте сотні пакетів.
Підписання пакету
Після підключення gpg клавіш також підписування ваших індивідуальних пакетів:
dpkg-sig -k dpkg1 -s builder *.deb
(Це потрібно зробити на робочій станції, де будуються пакети, а не на веб-сервері репозиторію.)
Непідписаний сховище
Якщо вам не потрібні підписані пакети, ви можете зменшити скрипт оновлення до:
dpkg-scanpackages . > Packages
bzip2 -kf Packages
Який все ще може використовуватись середніми користувачами, але йому потрібен спеціальний прапор для apt.sources
:
deb [trusted=yes] http://apt.example.org/deb/ ./
Але будь ласка, не використовуйте trusted=yes
прапор звично для всього, або якщо ви фактично не впевнені в походженні пакета.
Для зручності використання
Для кінцевих користувачів просто занесіть HEADER.html
у каталог сховищ. Apaches mod_auto_index
додасть цю нотатку:
<h1>http://example.org/apt/</h1>
<dl>
<dt>Add this repository to /etc/apt/sources.list as:
<dd><kbd>deb http://example.org/apt/ ./ # example repo</kbd>
<dt>Import verification key with:
<dd><kbd>wget -q http://http://example.org/apt/public.gpg -O- | sudo apt-key add -</kbd>
</dl>
Альтернативи
На сьогоднішній день існує декілька інструментів для автоматизації управління сховищами. А ще є хостинг для онлайн-сховищ та послуги збирання пакетів ( gemfury , packagecloud , bintray тощо)
Досить зручною альтернативою є прим . Це сценарій Ruby, який будує складні APT і YUM repos. (Але сподіваємося, що RPM нарешті скоро згасне.) - Найкраще встановити per gem install prm
.
І я також написав невеликий сценарій, щоб автоматизувати це аналогічно: http://apt.include-once.org/apt-phparchive - Будь ласка, не будьте, що він не надто надійний і написаний на PHP (колись це випадково), і спочатку призначався для розшарувань DEB, RPM та APT та Phar.
Оскільки це тісно пов'язане з оригінальним питанням, є також інструменти для більш легкої побудови пакунків Debian. Дещо застаріла: EPM . Набагато сучасніший: FPM . І моя особиста вилка для цього: XPM (більш лінивий підхід до упаковки мов скриптових програм.)