The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Создание локального зеркала Debian (apt-mirror + ProFTPd + Apache2)
Введение: Нужно было сделать зеркало 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=view&id=171&Itemid=1
- Как создать локальное зеркало Debian/Ubuntu используя apt-mirror (перевод)
*
http://wiki.binarylife.ru/index.php/Apt-get_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8 -
 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
 
15.04.2010 , Автор: Yuri Rybnikov
Ключи: debian, apt, packet, mirror / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Linux специфика / Установка и работа с пакетами программ в Linux

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Sakalou Aliaksei (?), 10:45, 16/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Возьми в тег ссылку на http://wiki.binarylife.ru
     
  • 1.2, ffsdmad (ok), 11:04, 16/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    как то сложно, наверняка это же можно сделать проще
     
     
  • 2.3, gyouja (?), 12:07, 16/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно можно. Пакет 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 - это уже личное дело каждого.

     
     
  • 3.8, ffsdmad (ok), 11:20, 19/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    debmirror это который на руби и тормозит по полчаса в процессе обновления и который не умеет снимать блокировки?
    спасибо, пользуюсь им же, но уже сыт по горло
     
     
  • 4.10, RapteR (ok), 11:35, 19/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >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 мегабит. ЧЯДНТ?

     
  • 3.14, lioncub (ok), 10:44, 06/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >Конечно можно. Пакет debmirror гораздо удобнее, причем синкает еще и образы для netboot и т.п.

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

     
  • 2.4, Анон (?), 13:00, 16/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Все элементарно -- apt-cacher-ng. Может конечно не совсем то что было нужно -- кэширует по требованию. Самое то, если цель -- экономия трафика.
    Вот тут хауту делал по этой теме http://wiki.e-lug.ru/%D0%9A%D0%B5%D1%88%D0
     

  • 1.5, RapteR (ok), 13:59, 16/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Убунтологам на заметку Качается репа несколько полезных сторонних репозиторие... текст свёрнут, показать
     
  • 1.6, PavelR (??), 16:32, 16/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/

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

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

     
  • 1.7, Kirill (??), 09:10, 19/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Более универсальный метод установки параметров proxy, как мне кажется:
    $ cat /etc/apt/apt.conf.d/proxy
    Acquire::http::Proxy "http://proxy.company.ru:8080";
     
     
  • 2.9, ffsdmad (ok), 11:22, 19/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Более универсальный метод установки параметров proxy, как мне кажется:
    >$ cat /etc/apt/apt.conf.d/proxy
    >Acquire::http::Proxy "http://proxy.company.ru:8080";

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

     

  • 1.11, slavon (??), 14:15, 22/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    apt-cacher-ng
     
  • 1.12, DieselxXx (?), 16:35, 23/12/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Есть хороший гайд как создать локальное зеркало Ubuntu http://thetech.com.ua/?p=1394
     
  • 1.13, Mozgoed (?), 03:27, 18/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Моя программа может справиться с этой проблемой в визуальном режиме)
    Фото: 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#msg1024374
     
  • 1.15, Mozgoed (?), 16:21, 30/09/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Создал страничку с подробным описанием программы и самой свежей версией тут http://mozgoed-mgoy.narod.ru/?mod=page&page=7
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру