Шаманы в зазеркалье: поднимаем зеркало Ubuntu под FreeBSD

Имея небольшую локалку, некоторое количество пользователей-линуксоидов и довольно тощий канал в инет, разумно было бы поднять свое зеркало репозитария Убунты, чтобы пользователи лишний раз не лазили куда не надо. Удобнее всего зеркало умеет делать сам линукс – буквально в пару команд. Но из серверов в наличии имеется только FreeBSD версии 7.2 – не смертельно конечно, но повозиться придется чуть дольше.

Перво-наперво определяемся с местом – у меня зеркало для двух версий (9.04 и 9.10) заняло около 80 гигов. Затем ставим нужные пакеты:

/usr/ports/www/p5-libwww
/usr/ports/devel/p5-LockFile-Simple
/usr/ports/archivers/p5-IO-Compress-Base
/usr/ports/archivers/p5-Compress-Zlib/
/usr/ports/archivers/p5-Compress-Raw-Zlib/
/usr/ports/archivers/p5-IO-Compress-Zlib
/usr/ports/security/p5-Digest-SHA1
/usr/ports/security/p5-MD5
/usr/ports/net/p5-URI
/usr/ports/security/gnupg

После это качаем исходники скрипта debmirror отсюда.

Качаем, распаковываем – в линуксе его можно установить, у меня он работает и без этого – достаточно просто знать, куда мы его распаковали. После этого готовим специальный скрипт:

#!/bin/sh
/home/snake/debmirror --progress --verbose 
--cleanup --nosource --md5sums --host=mirror.yandex.ru 
--root=ubuntu --ignore-release-gpg 
--dist=jaunty,jaunty-security,jaunty-updates,jaunty-backports, 
karmic,karmic-security,karmic-updates,karmic-backports 
--section=main,restricted,universe,multiverse --method=http  
--arch=i386,amd64  /mnt/media4/ubuntu

Кратко поясню:

# --arch         #Архитектура. Может быть i386, powerpc или amd64.
# --section=    # Секция (main/restricted/universe/multiverse). Как минимум main, restricted
# --dist=        # Релиз (кодовое название, а так же опции security, updates, backports
# --host=       # Имя сервера
# --root=       # Папка на сервере (обычно /ubuntu)
# --method=   # Протокол для передачи (http, ftp, hftp, rsync)
# /mnt/media4/ubuntu      # Директория с зеркалом

# --nosource      #не качает deb-src пакеты, существенно экономит место
# --progress       #показывает процесс скачивания
# --cleanup        #удаляет устаревшие пакеты
# --verbose        #показывает подробные ошибки
# --ignore-release-gpg  # не проверять gpg подпись скачиваемых пакетов. 
# Почему-то не отключается, и получать gpg ключ все равно приходится. 
# Как получить - написано ниже.
# --md5sums          # Проверять md5 хэши скачиваемых пакетов

Если при запуске скрипта вываливается вот такая ошибка:

gpgv: keyblock resource `/root/.gnupg/trustedkeys.gpg': general error
gpgv: Signature made Срд 22 Апр 2009 21:35:26 UTC using DSA key ID 437D05B5
[GNUPG:] ERRSIG 40976EAF437D05B5 17 2 00 1240436126 9
[GNUPG:] NO_PUBKEY 40976EAF437D05B5
gpgv: Can't check signature: public key not found

То выполняем вот такую команду:

snake@snake [~/.gnupg]# gpg --keyserver keyserver.ubuntu.com -a --no-default-keyring 
--keyring trustedkeys.gpg --recv-keys 

Где берем из ошибки. Получившийся файлик копируем в папку ~/.gnupg/

Когда все файлы обновлений скачаются, следует открыть доступ к папке с зеркалом через http и/или ftp, например так:

ln -s /mnt/media4/ubuntu /var/www/ubuntu

Добавим наш скрипт в cron. Для этого в файл /etc/crontab добавим:

30      4       *       *       7       root    /home/snake/umirror.sh

Наше зеркало будет обновлять раз в неделю в 4.30 утра – пакеты обновляются не так уж часто, а в случае чего-то критического никто не мешает запустить обновление вручную.

Далее остаются сущие мелочи – настроить клиента:

cd /etc/apt
sudo mv sources.list sources.list.orig
sudo mcedit sources.list
deb http://snake.khd.ru/ubuntu karmic main restricted universe multiverse
deb http://snake.khd.ru/ubuntu karmic-updates main restricted universe multiverse
deb http://snake.khd.ru/ubuntu karmic-security main restricted universe multiverse
deb http://snake.khd.ru/ubuntu karmic-backports main restricted universe multiverse

После этого пользователи должны вообще забыть о существовании удаленных репозиториев – разве что для какой-то экзотики.

4 Comments

  1. Это все конечно замечательно, и у меня давно подняты зеркала Ubuntu, Debian, Fedora и CentOS.
    Но вот подскажите мне, как мне поднять зеркало FreeBSD под линуксом? Что-то я догнать немогу вообще…
    Не охото из-за одного сервера ставить фрю на тазик 🙁 Хотя можно и под гентой (благо вналичие) попробовать, она как бы ближе всего к фре стоит 🙂

    1. А что нужно? Дерево портов по cvsup отдавать? Или зеркало фтпшника с образами, пакетами (частично) и т.д?

  2. Вот за это благодарен тебе, о умнейший !!! : gpg –keyserver keyserver.ubuntu.com -a –no-default-keyring –keyring trustedkeys.gpg –recv-keys

Leave a Reply