Это будет не просто архив всех скачанных пакетов. С помощью Apache пакеты из такого репозитория сможет скачать кто угодно и откуда угодно (зная ваш IP, естественно). Это немного подправленная версия мануала:
http://forum.ubuntu.ru/index.php?topic=28366.msg197361
Установка Апача тут не рассмотрена. Этот процесс описан уже не единожды и очень популярно. Итак, чтобы не копировать никуда наши пакетики, скачанные в /var/cache/apt/archives, сделаем симлинк
ln -s /var/cache/apt/archives /var/www/repo/packages
Скриптов два. Оба лежат прямо в /var/www/repo/
Один - создает списки пакетов (полную и гзипованую версию):
#!/bin/bash
dpkg-scanpackages . /dev/null > Packages
cat Packages | gzip -9c > Packages.gz
Если нету своего ключа для подписи - лезем на http://letras.ru/2008/06/gpg-crossplatform-encryption/ и вчитываемся поглубже.
Второй скрипт - формирует файл Release (необходим для создания подписанных репозиториев) и собственно подписывает:
#!/bin/bash
cat > Release <<END
Archive: hardy
Version: 8.04
Origin: Ubuntu
Label: Simba's local Ubuntu Hardy Heron repository
Architecture: i386
MD5Sum:
END
md5sum=$(md5sum Packages | cut -d ' ' -f1)
sizeinbytes=$(ls -l Packages | cut -d ' ' -f5)
printf " "$md5sum" %16d Packages\n" $sizeinbytes >> Release
md5sum=$(md5sum Packages.gz | cut -d ' ' -f1)
sizeinbytes=$(ls -l Packages.gz | cut -d ' ' -f5)
printf " "$md5sum" %16d Packages.gz\n" $sizeinbytes >> Release
gpg -bao Release.gpg Release
Необходимо
помнить, что второй скрипт будет интерактивно запрашивать пароль к gpg
ключу, которым подписываемся. Наверное как-то можно сделать и не
интерактивно, дабы в крон запихнуть...
Еще нужно экспортировать публичный ключ:
gpg --export -a "Иван Васильевич" > /var/www/repo/public.key
Иван Васильевич - это имя того, чьим ключом подписывали.
Примечание[boh]: у меня вылазила ошибка, что у рута нет прав доступа к файлу public.key Поэтому, я сначала вывел
gpg --export -a "Иван Васильевич"
в консоль, а вывод скопировал в соответствующий файл, предварительно создав его.
Теперь про %3a... Из-за этой комбинации в названиях многих пакетов, возникают ошибки. Этого легко избежать. У меня папке /var/www/repo/packages/ лежит файлик .htaccess следующего содержания:
RewriteEngine On
RewriteRule ^(.*?):(.*)$ $1\%253a$2
Дабы это заработало, надо включить модуль rewrite для апача:
ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
и разрешить использовать его в конфиге (например в /etc/apache2/apache2.conf):
<Directory /var/www/repo/>
AllowOverride All
</Directory>
Теперя этот репозиторий можно использовать следующим образом.
Импортируем ключ, которым подписывали:
wget -q http://<IP или имя компа>/repo/public.key -O- | sudo apt-key add -
А это в sources.list:
deb http://<IP или имя компа>/repo ./
Использованные источники:
http://forum.ubuntu.ru/index.php?topic=8073
Комментариев нет:
Отправить комментарий