Создание зеркала репозитория Ubuntu ( один из методов )

Я бы хотел поделиться опытом создания зеркала для репозитория дистрибутива Ubuntu Linux.

Однажды появилась необходимость создать репозитарий убунту. Перерыв интернет я напоролся на 1000 и 1 метод создания зеркала, после долгих эксперементов и неудач всетаки у меня все получилось.

Мануалов можно найти множество, но, в большенстве случаев, там многое не договаривается или написано недоступным языком.

Причин, по которым Вы захотите создать репозиторий, может быть несколько: например у Вас нестабильно работающий или (и) медленный интернет и Вы бы хотели хранить репозиторий у себя на жестком диске, еще один вариант, это создание зеркала внутри локальной сети, именно так и поступил я. И руководство будет для этого варианта.

Итак, для начала нам потребуется сам репозиторий, для его закачки на винчестер нам потребуется программа debmirror, установить ее можно через ваш любимый менеджер пакетов Adept или Synaptic, ну или через консоль. Здесь я буду приводить примеры для консоли, ну, а с графикой Вы и сами разберетесь.

Устанавливаем программу debmirror:

sudo apt-get install debmirror

Теперь подготовим папку, в которую будет закачан репозиторий:

mkdir /путь/к/папке/репозитория/

Конечно же вы можете назвать папку как угодно.

Теперь нам нужно создать скрипт - в этой самой папке - который, собственно, и будет закачивать репозиторий.

nano -w /путь/к/папке/репозитория/mirror.sh

Скрипт должен содержать следующие строки:

#!/bin/bash -x
/usr/bin/debmirror --nosource -m --passive --host=archive.ubuntulinux.org \
--root=ubuntu --method=ftp --progress \
--dist=hardy,hardy-security,hardy-updates,hardy-backports,hardy-proposed \
--ignore-release-gpg --section=main,restricted,multiverse,universe,proposed \
--arch=i386,amd64 /путь/к/папке/репозитория/

Этот скрипт будет выкачивать репозиторий для версии Ubuntu 8.04 архитектуры i386,amd64. Наверное вы все заметили параметр —arch. Этот параметр указывает архитектуру, для которой собраны пакеты. Вы также можете установить значение параметра amd64.

В данном случае зазеркаливаем весь репозитарий для i386, amd64.

Ну все, теперь переходим в каталог со скриптом выполняем его:

cd /путь/к/папке/репозитория/
./mirror.sh

и идем гулять дней на пару .......(или в процессе можно сделать пару вещей читаем ниже про апач).

Учтите, что у меня, например, репозиторий занял около 45Гб (i386). Работу скрипта всегда можно завершить без каких либо последствий, а после следующего старта скрипта он проверит все md5 суммы пакетов и продолжит работу(учтите, что проверка контрольных сумм занимает значительный ресурс процессора, так что по мере роста количества скачанных пакетов старайтесь реже прерывать работу скрипта).

Ну вот, теперь у вас на жестком диске лежит копия репозитория, если вы желаете добавить его в источники пакетов, то вам нужно прописать строку примерно следующего вида:

deb file:///путь/к/папке/репозитория/ hardy main restricted multiverse universe proposed

Теперь, собственно, создание зеркала.

Итак, для зеркала нам понадобится WEB-сервер Apache. Для установки индейца наберите в терминале:

sudo apt-get install apache2

Теперь можно проверить работоспособность сервера, запустив Apache и набрав в браузере свой IP адрес.

Затем (ради упрощения) давайте сделаем ссылку из каталога репозитария на /var/www/ubuntu:

ln -s /путь/к/папке/репозитория/ /var/www/ubuntu

Это означает, что когда вы захотите скачать с вашего зеркала, вы заходите на http://ваш_IP_или_адрес_сайта/ubuntu/.

Отлично! Значит так, у нас есть все пакеты и рабочий сервер. Теперь нам нужно настроить клиентов.

Для добавления репозитория в источники пакетов вам нужно прописать в файле /etc/apt/sources.list примерно следующее

deb http://Ваш IP адрес/ubuntu/ hardy main restricted multiverse universe proposed

для обновления зеркала раз в сутки запускайте скрипт обновления (как это делать смотри выше) или пропишите автозапуск скрипта в кроне (опишу чуть позже).

Внимание: статья еще не совсем дописана, но в скором времени допишу. Еще чуть попозже опишу процесс созданя зеркала для медибунту (кодеки скайп и прочее), и еще один способ с логами и т.д.

с Ув. Samnick.

исходный материал http://trambroid.com/node/30

https://wiki.ubuntu.com/RussianDocumentation/Debmirror