Введение: Нужно было сделать зеркало Debian в локальной сети университета. Под эти нужны была создана виртуальная машина и установлен "голый" Debian.
IP адрес достался по-наследству от старого зеркала: 192.168.1.200.
Были поставленыVMware Tools. И всё сконфигурировано для работы.++ Далее пойдем по порядку.
В нашем университете используется прокси-сервер,
и чтобы установить его по умолчанию в файл конфигурации окружения /etc/profile необходимо внести изменения, а именно добавить:export http_proxy=http://192.168.251.1:8080/
export ftp_proxy=ftp://192.168.251.1:8080/Ставим пакет, который будет выполнять зеркалирование apt-mirror:
apt-get install apt-mirror
Дальше нам надо определиться с файлом конфигурации зеркала. Что будет зеркалироваться и откуда.
Так как через университетский прокси доступно быстрое зеркало http://ftp.mgts.by/debianПравим /etc/apt/mirrors.list:
# apt-mirror configuration file
##
## The default configuration options (uncomment and change to override)
##
#set base_path /var/spool/apt-mirror
set mirror_path $base_path/mirror
set skel_path $base_path/skel
set var_path $base_path/var
#set defaultarch i386
set nthreads 20
set _tilde 0# etch's section
#deb http://ftp.mgts.by/debian etch main contrib non-free# lenny's section
deb http://ftp.mgts.by/debian lenny main contrib non-free# squeeze's section
deb http://ftp.mgts.by/debian squeeze main contrib non-free
# sid's section
deb http://ftp.mgts.by/debian sid main contrib non-free##
## Cleaner configuration example
##set cleanscript $var_path/clean.sh
# Cleaning section
clean http://ftp.mgts.by/
skip-clean http://ftp.mgts.by/debian/doc/
Что бы не было ошибки при выполнении /var/spool/apt-mirror/var/clean.sh надо пропатчить /usr/bin/apt-mirror
Содержание файла apt-mirror.patch:
--- /usr/bin/apt-mirror 2007-12-02 11:22:02.000000000 +0100
+++ apt-mirror-patched 2008-06-15 11:28:47.000000000 +0200
@@ -518,14 +518,14 @@
my $dir = shift;
my $is_needed = 0;
return 1 if $skipclean{$dir};
- opendir(DIR, $dir) or die "apt-mirror: can't opendir $dir: $!";
- foreach (grep { !/^\.$/ && !/^\.\.$/ } readdir(DIR)) {
+ opendir(my $dir_h, $dir) or die "apt-mirror: can't opendir $dir: $!";
+ foreach (grep { !/^\.$/ && !/^\.\.$/ } readdir($dir_h)) {
my $item = $dir . "/". $_;
$is_needed |= process_directory($item) if -d $item && ! -l $item;
$is_needed |= process_file($item) if -f $item;
$is_needed |= process_symlink($item) if -l $item;
}
- closedir DIR;
+ closedir $dir_h;
push @rm_dirs, $dir unless $is_needed;
return $is_needed;
}Патчим:
cat apt-mirror.patch | patch -p1
Логинимся под пользователем apt-mirror:
su - apt-mirror
Запускаем программу зеркалирования:
apt-mirror
Идем пить чай.
Оговорюсь, в зависимости от количества дистрибутивов выбранных для зеркалирования и каталогов для зеркалирования объем скачанной информации может быть очень большой.
Поэтому запаситесь терпением и работайте в screen'е :)
Должны быть всякие сообщения о том что всё ок. А при ошибке надо гуглить и исправлять.После окончания успешного зеркалирования выполняем /var/spool/apt-mirror/var/clean.sh:
# /bin/bash /var/spool/apt-mirror/var/clean.sh
Чистим от "шлаков". И освобождаются Гигабайты пространства.
Настраиваем автоматизацию по планировщику. Правим планировщик для проверки зеркала каждый день в час ночи и очистки от "мусора" в четыре утра.
В /etc/cron.d/apt-mirror добавляем:
#
# Regular cron jobs for the apt-mirror package
#
0 1 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log
0 4 * * * root /bin/bash /var/spool/apt-mirror/var/clean.sh > /var/spool/apt-mirror/var/cron_cl.log
#Ставим apache2 для доступа по HTTP к зеркалу:
apt-get install apache2
Делаем доступ к зеркалу через HTTP, для этого создаем симлинк:
ln -s /var/spool/apt-mirror/mirror/ftp.mgts.by/debian /var/www/debian
Далее делаем, как и положено, ссылку на stable дистрибутив:
cd /var/spool/apt-mirror/mirror/ftp.mgts.by/debian/dists
ln -s lenny/ stableДальше надо сделать доступ по FTP к зеркалу с помощью сервера ProFTPd:
apt-get install proftpd
Конфигурируем его. Правим /etc/proftpd/proftpd.conf под наши нужды:
Include /etc/proftpd/modules.conf
UseIPv6 off
IdentLookups offServerName "Debian mirror"
ServerType standalone
DeferWelcome offMultilineRFC2228 on
DefaultServer on
ShowSymlinks onTimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"DenyFilter \*.*/
RequireValidShell off
# Port 21 is the standard FTP port.
Port 21MaxInstances 30
User proftpd
Group nogroup
Umask 022 022AllowOverwrite on
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
User ftp
Group nogroup
UserAlias anonymous ftp
DirFakeUser on ftp
DirFakeGroup on ftp
# Пускать пользователей с шелом /bin/false и прочей невалидной ерундой
RequireValidShell off
MaxClients 100
Так как ProFTPd не понимает симлинки за пределы текущего FTP-дерева, то сделаем хитрый mount:mkdir /home/ftp/debian
mount --bind /var/spool/apt-mirror/mirror/ftp.mgts.by/debian /home/ftp/debianЧтобы не пропадал mount после перезагрузки в /etc/fstab вносим изменения, добавляем в конец строчку:
/var/spool/apt-mirror/mirror/ftp.mgts.by/debian /home/ftp/debian none bind
Всё. Готово. Для уверенности можем перезагрузить сервер и понять, что всё будет работать :)
++ Ссылки:
* http://apt-mirror.sourceforge.net - apt-mirror (apt sources mirroring tool)
* http://www.howtoforge.com/local_debian_ubuntu_mirror - How To Create A Local Debian/Ubuntu Mirror With apt-mirror
* http://www.linuxnsk.ru/index.php?option=com_content&task=vie... - Как создать локальное зеркало Debian/Ubuntu используя apt-mirror (перевод)
* http://wiki.binarylife.ru/index.php/Apt-get_%D1%87... - Apt-get через прокси
* http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=484876 - apt-mirror: many closedir() errors
* http://itblog.su/proftpd-vs-symlinks.html - proftpd vs symlinks
* http://sudouser.com/nastrojka-cron - Настройка Cron
URL:
Обсуждается: http://www.opennet.me/tips/info/2345.shtml
Возьми в тег ссылку на http://wiki.binarylife.ru
как то сложно, наверняка это же можно сделать проще
Конечно можно. Пакет debmirror гораздо удобнее, причем синкает еще и образы для netboot и т.п.:# crontab -l
12 4 * * * flock -n /tmp/debmirror-debian.lock /usr/local/scripts/debmirror-debian.sh
32 * * * * flock -n /tmp/debmirror-debian-security.lock /usr/local/scripts/debmirror-debian-security.sh
2 * * * * flock -n /tmp/debmirror-debian-volatile.lock /usr/local/scripts/debmirror-debian-volatile.sh# cat /usr/local/scripts/debmirror-debian.sh
/usr/bin/debmirror --progress --nosource --method=http --root=debian --host=ftp.ru.debian.org --arch=amd64,i386 --dist=lenny --section=main,contrib,non-free,main/debian-installer --di-arch=amd64,i386 --di-dist=lenny /home/apt-mirror/debian# cat /usr/local/scripts/debmirror-debian-security.sh
/usr/bin/debmirror --progress --nosource --method=http --root=/ --host=security.debian.org --arch=amd64,i386 --dist=lenny/updates --section=main,contrib,non-free /home/apt-mirror/debian-security# cat /usr/local/scripts/debmirror-debian-volatile.sh
/usr/bin/debmirror --progress --nosource --method=http --root=debian-volatile --host=volatile.debian.org --arch=amd64,i386 --dist=lenny/volatile --section=main,contrib,non-free /home/apt-mirror/debian-volatileНу а способ настройки доступа к зеркалу по ftp/http - это уже личное дело каждого.
debmirror это который на руби и тормозит по полчаса в процессе обновления и который не умеет снимать блокировки?
спасибо, пользуюсь им же, но уже сыт по горло
>debmirror это который на руби и тормозит по полчаса в процессе обновления
>и который не умеет снимать блокировки?
>спасибо, пользуюсь им же, но уже сыт по горлоdebmirror это который на перле, не тормозит и с блокировками проблем нет. вот в лог проезжания ниженаписанного скрипта:
Update local repo started at 07:00:01 (04/19/10)
Ubuntu repo updated at 07:01:23
OpenOffice.org repo updated at 07:01:26
UNetBootIn repo updated at 07:01:27
VirtualBox repo updated at 07:01:29
Qutim repo updated at 07:01:30
Qutim.SVN repo updated at 07:01:32
WINE repo updated at 07:01:33
Update complite!Общий вес репозиториев составляет 47 ГБ и все это перелопачивает 4 пенек ворочия стареньким ide винтом за полторы минуты. Толщина канала в инет 10 мегабит. ЧЯДНТ?
>Конечно можно. Пакет debmirror гораздо удобнее, причем синкает еще и образы для netboot и т.п.а как с помощью него зазеркалить, http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-.../ ?
Все элементарно -- apt-cacher-ng. Может конечно не совсем то что было нужно -- кэширует по требованию. Самое то, если цель -- экономия трафика.
Вот тут хауту делал по этой теме http://wiki.e-lug.ru/%D0%9A%D0%B5%D...
Убунтологам на заметку. Качается репа + несколько полезных сторонних репозиториев под i368 и amd64.#!/bin/bash -x
echo -n "Update local repo started at " > /data/hdd3/repo/data.txt; date "+%X (%x)" >> /data/hdd3/repo/data.txt
/usr/bin/debmirror --nosource --passive --host=archive.ubuntulinux.org --root=ubuntu --method=ftp --progress --dist=karmic,karmic-security,karmic-updates,karmic-backports,karmic-proposed --ignore-release-gpg --section=main,restricted,multiverse,universe --arch=i386,amd64 /data/hdd3/repo/karmic > /data/hdd3/repo/repo_karmic.log
echo -n "Ubuntu repo updated at " >> /data/hdd3/repo/data.txt; date "+%X" >> /data/hdd3/repo/data.txt
/usr/bin/debmirror --nosource --host=ppa.launchpad.net --root=openoffice-pkgs/ubuntu --method=http --progress --dist=karmic --ignore-release-gpg --section=main --arch=i386,amd64 /data/hdd3/repo/karmic_ooo > /data/hdd3/repo/repo_ooo.log
echo -n "OpenOffice.org repo updated at " >> /data/hdd3/repo/data.txt; date "+%X" >> /data/hdd3/repo/data.txt
/usr/bin/debmirror --nosource --host=ppa.launchpad.net --root=gezakovacs/ubuntu --method=http --progress --dist=karmic --ignore-release-gpg --section=main --arch=i386,amd64 /data/hdd3/repo/karmic_unetbootin > /data/hdd3/repo/repo_unetbootin.log
echo -n "UNetBootIn repo updated at " >> /data/hdd3/repo/data.txt; date "+%X" >> /data/hdd3/repo/data.txt
/usr/bin/debmirror --nosource --host=download.virtualbox.org --root=virtualbox/debian --method=http --progress --dist=karmic --ignore-release-gpg --section=non-free --arch=i386,amd64 /data/hdd3/repo/karmic_virtualbox > /data/hdd3/repo/repo_virtualbox.log
echo -n "VirtualBox repo updated at " >> /data/hdd3/repo/data.txt; date "+%X" >> /data/hdd3/repo/data.txt
/usr/bin/debmirror --nosource --host=ppa.launchpad.net --root=qutim/qutim/ubuntu --method=http --progress --dist=karmic --ignore-release-gpg --section=main --arch=i386,amd64 /data/hdd3/repo/karmic_qutim > /data/hdd3/repo/repo_qutim.log
echo -n "Qutim repo updated at " >> /data/hdd3/repo/data.txt; date "+%X" >> /data/hdd3/repo/data.txt
/usr/bin/debmirror --nosource --host=ppa.launchpad.net --root=qutim/qutim.svn/ubuntu --method=http --progress --dist=karmic --ignore-release-gpg --section=main --arch=i386,amd64 /data/hdd3/repo/karmic_qutim_svn > /data/hdd3/repo/repo_qutim_svn.log
echo -n "Qutim.SVN repo updated at " >> /data/hdd3/repo/data.txt; date "+%X" >> /data/hdd3/repo/data.txt
/usr/bin/debmirror --nosource --host=ppa.launchpad.net --root=ubuntu-wine/ubuntu --method=http --progress --dist=karmic --ignore-release-gpg --section=main --arch=i386,amd64 /data/hdd3/repo/karmic_wine > /data/hdd3/repo/repo_wine.log
echo -n "WINE repo updated at " >> /data/hdd3/repo/data.txt; date "+%X" >> /data/hdd3/repo/data.txt
echo "Update complite!" >> /data/hdd3/repo/data.txt
подскажите мануал на тему:требуется вести собственный форк пакета, т.е. определенные опции сборки + свои патчи применяются к некоторому стандартному пакету. При этом хочется его обновлять патчами "из апстрима", не теряя своих патчей. Подскажите как производить эту процедуру и какие инструменты применять.
Более универсальный метод установки параметров proxy, как мне кажется:
$ cat /etc/apt/apt.conf.d/proxy
Acquire::http::Proxy "http://proxy.company.ru:8080";
>Более универсальный метод установки параметров proxy, как мне кажется:
>$ cat /etc/apt/apt.conf.d/proxy
>Acquire::http::Proxy "http://proxy.company.ru:8080";прокси тоже нужно настраивать определённым образом, в частности разрешить кеширование больших файлов и выделить оГРОМЕННЫй раздел под кешь
иначе пара ядер, ооо и гномов отключат весь инет у company.ru
apt-cacher-ng
Есть хороший гайд как создать локальное зеркало Ubuntu http://thetech.com.ua/?p=1394
Моя программа может справиться с этой проблемой в визуальном режиме)
Фото: http://mozgoed-mgoy.narod.ru/ubuntu/screen.jpg
Ссылка: http://mozgoed-mgoy.narod.ru/ubuntu/ubuntu-repository.zip
Программа Portable и кроссплатформенная. Для работы нужен .Net Framework 2.0
Есть английская версия.
Подробности на http://forum.ubuntu.ru/index.php?topic=123223.msg1024374#msg...
Создал страничку с подробным описанием программы и самой свежей версией тут http://mozgoed-mgoy.narod.ru/?mod=page&page=7