howto → Делаем свой локальный deb репозиторий (Debian, Ubuntu etc.) своими руками
Возник праздный интерес (пригодится обязательно, уверен, но пока праздный), допустим есть н-ное количество машин на Ubuntu, и если их много, то трафик обращений к репозиториям всех машин будет по-сути прямо-пропорционален их количеству и если апдейт одной машины — это еще куда ни шло, то 20 или больше, это уже серьезно. С анлимами для корпоратива у нас в стране плохо, поэтому вопрос трафика часто стоит очень остро. Да и канал грузить почем-зря тоже не стоит, когда имеются простые и элегантные решения.
Если загуглить на данную тему, то прежде всего вылезают 2 популярных решения: apt-mirror и apt-proxy. Оба решения по-своему привлекательны, но поскольку для перевода этого всего в практическую плоскость надо осознать и сделать выбор, я расскажу вкратце особенности.
apt-mirror — это пакет, который делает полное локальное зеркало репозиториев. Оно устанавливается, настраивается, затем запускается и выкачивает все содержимое репозиториев, которые указали в настройках. В принципе хорошо, ведь все возможные пакеты будут доступны сразу и на высокой скорости. Но с другой стороны нам придется выкачать ВСЕ что нужно и не нужно. По-крайней мере этот нюанс поставил крест на выборе apt-mirror.
apt-proxy — работает по-несколько иному принципу, мне он понравился больше. Я считаю, что принцип даже более интеллектуален. Он не выкачивает все подряд, а качает только то, что было запрошено, то есть фактически при первом обращении он выкачивает нужный пакет из интернета, поэтому придется подождать, при последующих отдает его локальную копию. В общем кеширующее проксирование репозитория — наш выбор!
В руках у меня, для экспериментов, оказались 2 машинки. Небольшой маловажный сервачок на Debian Squeese и десктоп с Ubuntu 9.10 Karmic. (На дебиане решил развернуть прокси для репов кармика, на десктопе соответственно подправить sources.list)
Но ВНЕЗАПНО я не обнаружил в репах Squeese пакета apt-proxy. Побродив по интернетам, на странице проекта apt-proxy я познал, что жизнь штука сложная и что кто-то там разбился в автокатастрофе, возвращаясь с какой-то ITшной тусы. В итоге обещанный рефакторинг не закончен и в общем фиг его знает. Однако там же я увидел список клонов проекта, и о чудо, в дебиане оказался один из них: apt-cacher.
В-общем волею судеб дальше пойдет речь именно об apt-cacher, который оказался вполне доставляющим.
НА СЕРВЕРЕ:
Установка:
Настройка:
Поскольку наши клиентские машины пользуют убунту, в конфиге прописываем path_map:
Дефолтный порт apt-caher — 3142. Для того, чтобы повесить его на порт <1024, надо запускать его из под рута, что в целом не нужно.
Таким образом получаем следущие связки:
Причем, что порадовало, в отличие от многих пакетов, тут не надо указывать конкретный дистрибутив, то есть с этими настройками мы сможем обслуживать машины с любым дистрибутивом убунту.
включаем автозапуск демона:
Устанавливаем значение:
Рестартим:
Вуаля. Все готово к работе.
НА ДЕСКТОПНОЙ МАШИНЕ:
Теперь вносим наш репозиторий в sources.list десктопной машинки:
Комментируем там все и пишем свои строчки:
Ну и пробуем:
Вот так мы легко и просто обмазались локальным апт-прокси. =)
Удачи!
Если загуглить на данную тему, то прежде всего вылезают 2 популярных решения: apt-mirror и apt-proxy. Оба решения по-своему привлекательны, но поскольку для перевода этого всего в практическую плоскость надо осознать и сделать выбор, я расскажу вкратце особенности.
apt-mirror — это пакет, который делает полное локальное зеркало репозиториев. Оно устанавливается, настраивается, затем запускается и выкачивает все содержимое репозиториев, которые указали в настройках. В принципе хорошо, ведь все возможные пакеты будут доступны сразу и на высокой скорости. Но с другой стороны нам придется выкачать ВСЕ что нужно и не нужно. По-крайней мере этот нюанс поставил крест на выборе apt-mirror.
apt-proxy — работает по-несколько иному принципу, мне он понравился больше. Я считаю, что принцип даже более интеллектуален. Он не выкачивает все подряд, а качает только то, что было запрошено, то есть фактически при первом обращении он выкачивает нужный пакет из интернета, поэтому придется подождать, при последующих отдает его локальную копию. В общем кеширующее проксирование репозитория — наш выбор!
В руках у меня, для экспериментов, оказались 2 машинки. Небольшой маловажный сервачок на Debian Squeese и десктоп с Ubuntu 9.10 Karmic. (На дебиане решил развернуть прокси для репов кармика, на десктопе соответственно подправить sources.list)
Но ВНЕЗАПНО я не обнаружил в репах Squeese пакета apt-proxy. Побродив по интернетам, на странице проекта apt-proxy я познал, что жизнь штука сложная и что кто-то там разбился в автокатастрофе, возвращаясь с какой-то ITшной тусы. В итоге обещанный рефакторинг не закончен и в общем фиг его знает. Однако там же я увидел список клонов проекта, и о чудо, в дебиане оказался один из них: apt-cacher.
В-общем волею судеб дальше пойдет речь именно об apt-cacher, который оказался вполне доставляющим.
НА СЕРВЕРЕ:
Установка:
$ sudo apt-get install apt-cacher
Настройка:
$ sudo vim /etc/apt-cacher/apt-cacher.conf
Поскольку наши клиентские машины пользуют убунту, в конфиге прописываем path_map:
path_map = ubuntu ru.archive.ubuntu.com/ubuntu; ubuntu-updates ru.archive.ubuntu.com/ubuntu ; ubuntu-security security.ubuntu.com/ubuntu ; ubuntu-partner archive.canonical.com/ubuntu
Дефолтный порт apt-caher — 3142. Для того, чтобы повесить его на порт <1024, надо запускать его из под рута, что в целом не нужно.
Таким образом получаем следущие связки:
http://localrepo:3142/ubuntu => http://ru.archive.ubuntu.com/ubuntu
http://localrepo:3142/ubuntu-updates => http://ru.archive.ubuntu.com/ubuntu
http://localrepo:3142/ubuntu-security => http://security.ubuntu.com/ubuntu
http://localrepo:3142/ubuntu-partner => http://archive.canonical.com/ubuntu
Причем, что порадовало, в отличие от многих пакетов, тут не надо указывать конкретный дистрибутив, то есть с этими настройками мы сможем обслуживать машины с любым дистрибутивом убунту.
включаем автозапуск демона:
$ sudo vim /etc/default/apt-cacher
Устанавливаем значение:
AUTOSTART=1
Рестартим:
$ sudo /etc/init.d/apt-cacher restart
Вуаля. Все готово к работе.
НА ДЕСКТОПНОЙ МАШИНЕ:
Теперь вносим наш репозиторий в sources.list десктопной машинки:
$ sudo vim /etc/apt/sources.list
Комментируем там все и пишем свои строчки:
#local repo
deb http://localrepo:3142/ubuntu/ karmic universe multiverse main restricted
deb http://localrepo:3142/ubuntu-updates/ karmic-updates universe multiverse main restricted
deb http://localrepo:3142/ubuntu-security/ karmic-security universe multiverse main restricted
deb http://localrepo:3142/ubuntu-partner/ karmic partner
Ну и пробуем:
$ sudo apt-get update
Вот так мы легко и просто обмазались локальным апт-прокси. =)
Удачи!
- +14
- Procion
- 17 апреля 2010, 13:09
Локальный репозитарий нужная вещь, спасибо, +1.
Из интересного могу найти время и описать создание своего собственного лайфсиди/usb на базе убунтовского с блекджеком и…. Было дело, создавал себе такой для автоматизации установки готового образа системы на компьютеры.
Но это не было дистрибутивом, это была именно готовая система, которую лайф-usb просто копировал на диск в полностью автоматическом режиме.
А остальные проблемы в чем заключались???
Я установил apt-move в файле /etc/apt-move.conf я прописал путь LOCALDIR=/home/sat/debian, всё это дело сохранил и ввёл команду apt-move update, далее в папку /home/sat/debian я скопировал все файлы debian-testing-i386-netinst.iso (
Пробовал всё это делать и под рутом итог один.
Даже после исправления этой ошибки проблемы не закончились.
как я исправил эту ошибку:
Я переименовал папку которая была /debian/dists/Squeeze в /debian/dists/sid и из файла mycd.conf я удалил: