среда, 30 сентября 2009 г.

apt-move свой уютный репозиторий

[Debian Lenny]
Установка локального репозитория для Debian

Необходимые пакеты:
Рекомендую использовать miniCD образ(180 МБ)
apt-move (Конвертация deb пакетов из кэша в иерархию репозитория)
mini-httpd (Веб сервер - шустрый и простой в настройке)
gnupg (Управление сертификатами,в Lenny стоит по умолчанию)



На сервере (Центр обновления)
1) Указываем, откуда будем брать обновления в интернете
nano /etc/apt/sources.list
deb http://mirrors.kernel.org/debian stable main
2)Обновляемся, устанавливаем нужные пакеты (те пакеты, которые нужны клиентам)
apt-get update
apt-get -d upgrade
apt-get install mini-httpd
apt-get install apt-move
или через aptitude

3) Все скачанные пакеты должны лежать в /var/cache/apt/archives
4) Создаем директории для нашего репозитория
mkdir /var/www
mkdir /var/www/debian

5) Настраиваем GPG
5.1) Создаем пару ключей
gpg --gen-key
5.2) Выбираем пункт 1, указываем Имя, Отказываемся от пароля,жмем O.
В процессе генерации (появлении ++++) жмем произвольные клавиши.
5.3)
gpg --list-key
Ищем строку pub 1024D/ABCDEFGH <- У вас тут другие символы. 5.4) Помещаем ключи в apt хранилище gpg --export -a ABCDEFHG | apt-key add -

6) Настраиваем apt-move
nano /etc/apt-move.conf
LOCALDIR=/var/www/debian
COPYONLY=YES (Оставлять копии пакетов /var/cache/apt)
PKGCOMP=none (Очень важно - выбираем между сжатием и gpg)
GPGKEY=ABCDEFGH

7) Обновление репозитория
apt-move update

8) Экспорт ключа для клиентов.
gpg --output superkey.gpg --export ABCDEFGH

Если все пункты отработали без ошибок и в директории /var/www/debian лежат разложенные по индексам пакеты
и есть файл /var/www/debian/dists/stable/Release.gpg , то идем дальше.

9) Поднимаем http сервер.
nano /etc/default/mini-httpd
START=1 далее
nano /etc/mini-httpd.conf
host=*
data_dir=/var/www
/etc/init.d/mini-httpd start

10) Проверяем браузером доступность http://192.168.X.Y/debian
-------
У Клиента обновлений

1) Копируем superkey.gpg
scp -P 22 superuser@192.168.X.Y:superkey.gpg superkey.gpg
(superkey.gpg должен находиться в домашней директории пользователя superuser, иметь атрибут чтения и доступен для подключения по ssh)

2)Добавляем ключ в хранилище apt
apt-key add superkey.gpg

3)Обновляемся
apt-get update
apt-get -d upgrade
или через aptitude

Подводные камни

Как показали опыты aptitude не показывает некоторые ошибки и соответственно не работает обновление.
Конкретно мной была пропущено сообщение
W: Failed to fetch http://192.168.X.Y/debian/dists/stable/Release Unable to find expected entry main/binary-i386/Packages in Meta-index file (malformed Release file?)
E: Some index files failed to download, they have been ignored, or old ones used instead.
Решение: Отключить архивацию в apt-move.conf
PKGCOMP=none
Причем проблема возникает только с включенным gpgkey.

В случае если в репозитории отсутствует нужный пакет, хотя на сервере он установлен, поможет команда
apt-get -d имя-пакета --reinstall
apt-move update

P.S. В дальнейшем устанавливая пакеты на сервере обновлений можно использовать
apt-get -d install Имя_Пакета
В этом случае пакет будет только скачен и размещен в репозитории без установки и замусоривания системы.

Комментариев нет:

Отправить комментарий