URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 65906
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Создание локального зеркала Debian ..."

Отправлено auto_tips , 16-Апр-10 10:45 
Введение: Нужно было сделать зеркало 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 off

   ServerName "Debian mirror"
   ServerType standalone
   DeferWelcome off

   MultilineRFC2228 on
   DefaultServer on
   ShowSymlinks on

   TimeoutNoTransfer 600
   TimeoutStalled 600
   TimeoutIdle 1200

   DisplayLogin welcome.msg
   DisplayChdir .message true
   ListOptions "-l"

   DenyFilter \*.*/

   RequireValidShell off

   # Port 21 is the standard FTP port.
   Port 21

   MaxInstances 30

   User proftpd
   Group nogroup
   Umask 022 022

   AllowOverwrite 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


Содержание

Сообщения в этом обсуждении
"Создание локального зеркала Debian (apt-mirror + ProFTPd + Apache2)"
Отправлено Sakalou Aliaksei , 16-Апр-10 10:45 
Возьми в тег ссылку на http://wiki.binarylife.ru

"Создание локального зеркала Debian (apt-mirror + ProFTPd + Apache2)"
Отправлено ffsdmad , 16-Апр-10 11:04 
как то сложно, наверняка это же можно сделать проще

"Создание локального зеркала Debian (apt-mirror + ProFTPd + A..."
Отправлено gyouja , 16-Апр-10 12:07 
Конечно можно. Пакет 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 - это уже личное дело каждого.


"Создание локального зеркала Debian (apt-mirror + ProFTPd + A..."
Отправлено ffsdmad , 19-Апр-10 11:20 
debmirror это который на руби и тормозит по полчаса в процессе обновления и который не умеет снимать блокировки?
спасибо, пользуюсь им же, но уже сыт по горло

"Создание локального зеркала Debian (apt-mirror + ProFTPd + A..."
Отправлено RapteR , 19-Апр-10 11:35 
>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 мегабит. ЧЯДНТ?


"Создание локального зеркала Debian (apt-mirror + ProFTPd + A..."
Отправлено lioncub , 06-Апр-12 10:44 
>Конечно можно. Пакет debmirror гораздо удобнее, причем синкает еще и образы для netboot и т.п.

а как с помощью него зазеркалить, http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-.../ ?


"Создание локального зеркала Debian (apt-mirror + ProFTPd + A..."
Отправлено Анон , 16-Апр-10 13:00 
Все элементарно -- apt-cacher-ng. Может конечно не совсем то что было нужно -- кэширует по требованию. Самое то, если цель -- экономия трафика.
Вот тут хауту делал по этой теме http://wiki.e-lug.ru/%D0%9A%D0%B5%D...

"Создание локального зеркала Debian (apt-mirror + ProFTPd + Apache2)"
Отправлено RapteR , 16-Апр-10 13:59 
Убунтологам на заметку. Качается репа + несколько полезных сторонних репозиториев под 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


"Создание локального зеркала Debian (apt-mirror + ProFTPd + Apache2)"
Отправлено PavelR , 16-Апр-10 16:32 

подскажите мануал на тему:

требуется вести собственный форк пакета, т.е. определенные опции сборки + свои патчи применяются к некоторому стандартному пакету. При этом хочется его обновлять патчами "из апстрима", не теряя своих патчей. Подскажите как производить эту процедуру и какие инструменты применять.


"Создание локального зеркала Debian (apt-mirror + ProFTPd + Apache2)"
Отправлено Kirill , 19-Апр-10 09:10 
Более универсальный метод установки параметров proxy, как мне кажется:
$ cat /etc/apt/apt.conf.d/proxy
Acquire::http::Proxy "http://proxy.company.ru:8080";

"Создание локального зеркала Debian (apt-mirror + ProFTPd + A..."
Отправлено ffsdmad , 19-Апр-10 11:22 
>Более универсальный метод установки параметров proxy, как мне кажется:
>$ cat /etc/apt/apt.conf.d/proxy
>Acquire::http::Proxy "http://proxy.company.ru:8080";

прокси тоже нужно настраивать определённым образом, в частности разрешить кеширование больших файлов и выделить оГРОМЕННЫй раздел под кешь
иначе пара ядер, ооо и гномов отключат весь инет у company.ru


"Создание локального зеркала Debian (apt-mirror + ProFTPd + Apache2)"
Отправлено slavon , 22-Апр-10 14:15 
apt-cacher-ng

"Создание локального зеркала Debian (apt-mirror + ProFTPd + Apache2)"
Отправлено DieselxXx , 23-Дек-10 16:35 
Есть хороший гайд как создать локальное зеркало Ubuntu http://thetech.com.ua/?p=1394

"Создание локального зеркала Debian (apt-mirror + ProFTPd + Apache2)"
Отправлено Mozgoed , 18-Сен-11 03:27 
Моя программа может справиться с этой проблемой в визуальном режиме)
Фото: 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...

"Создание локального зеркала Debian (apt-mirror + ProFTPd + Apache2)"
Отправлено Mozgoed , 30-Сен-12 16:21 
Создал страничку с подробным описанием программы и самой свежей версией тут http://mozgoed-mgoy.narod.ru/?mod=page&page=7