Понадобилось мне собрать и запустить программу, написанную для .NET 2.0 в Alt Linux 6.0. Но MonoDevelop 2.4.2, имеющийся в репозитории p6 дистрибутива, не поддерживает отладку приложения (пропускает точки останова) - вести разработку в этой версии было неудобно. А mono сыпала ошибки, при работе с базой данных. Посоветовали мне взять версию MonoDevelop и mono из постоянно обновляемого репозитория Sisyphus (packages.altlinux.org/ или sisyphus.ru/).
Решил сначала оттестировать процесс перехода на нестабильный репозиторий в виртуальной машине. А для тестирования создать локальную копию репозитория. Чтобы не тянуть пакеты по сети каждый раз.
Размер Sisyphus
Согласно описанию на странице Фильтр пакетов для rsync сайта репозитория:
После синхронизации получится несколько больший размер - 16 ГБайт (при этом многое было исключено, если не исключать ничего, получилось бы больше). Но в целом - соответствует правде. В 15 ГБайт можно уложиться, если исключить из списка синхронизируемых пактов большие пакеты, которые вряд ли понадобятся.Sisyphus — постоянно изменяющийся репозиторий пакетов. Появляются новые сборки, обновляются старые. Для человека, поддерживающего актуальность своей копии репозитория, требуется постоянная синхронизация с Sisyphus. На данный момент размер репозитория составляет около 15 Гб.
Инструмент для синхронизации репозитория
В списке рассылки пользователей Alt Linux высказывалось мнение, что содержимое репозиториев при доступе по различным протоколам отличается (что странно, адрес сервера один и тот же), речь шла о репозитории p6. Во всяком случае, ftp протокол не рекомендовалось использовать, а рекомендовалось http.Проводя аналогию, думал, что для синхронизации Sisyphus буду использовать протокол http, то есть, wget. Примерно так:
cd /Develop/AltLinux/ && wget -m -e robots=off -R "index.html*" -np http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/А потом нашел руководство www.altlinux.org/Mirror, прочитав которое выбрал скрипт sisyphus-mirror, скрывающий которые аспекты использования rsync и позволяющий максимально удобно создать зеркало репозитория.
Настройка sisyphus-mirror
Настройки по умолчанию хранятся в файлах:
- /etc/sisyphus-mirror/sisyphus-mirror.conf
- /etc/sisyphus-mirror/exclude
- /etc/sisyphus-mirror/include
Настройки по умолчанию можно переопределить, создав и заполнив файлы:
- ~/.sisyphus-mirror/config
- ~/.sisyphus-mirror/exclude
- ~/.sisyphus-mirror/include
Файл config
В конфигурационном файле по умолчанию заданы настройки:
SRCROOT=rsync://rsync.altlinux.org/ALTLinux DESTROOT=/var/ftp/ALTLinux LIST="Sisyphus" ARCH="noarch i586 x86_64 x86_32" ARGS="-rltmvH --delete-delay --delete-excluded --stats" INTERACTIVE=0 TMPDEST=.new EXCLUDE_FILE=/etc/sisyphus-mirror/exclude INCLUDE_FILE=/etc/sisyphus-mirror/include RSHOME="$HOME/.sisyphus-mirror"
Другие настройки закомментированы. Настройки, которые будут переопределены в файле ~/.sisyphus-mirror/config, выделены. Содержимое файла ~/.sisyphus-mirror/config:
DESTROOT=/Develop/AltLinux ARCH="noarch i586" EXCLUDE_FILE=~/.sisyphus-mirror/exclude INTERACTIVE=1 SPEED=512
Репозиторий будет помещаться в каталог
/Develop/AltLinux. Нужны пакеты для noarch и i586, остальные пока не нужны. Используется свой собственный фильтр из файла ~/.sisyphus-mirror/exclude. Ограничена скорость загрузки и включен интерактивный режим (вывод списка скачиваемых пакетов в окно консоли).Файл exclude
По умолчанию файл/etc/sisyphus-mirror/exclude содержит небольшой фильтр:SRPMS #*led-tc* #*ice-wks* #kernel-source-2.6.22*
SRPMS, надо написать, например, так (любой из вариантов):- SRPMS.classic
- SRPMS.*
- http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/noarch/
- RPMS.classic/
- SRPMS.classic/
- base/
- http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/i586/
- RPMS.classic/
- RPMS.debuginfo/
- SRPMS.classic/
- base/
SRPMS.classic RPMS.debuginfoДалее, анализ названий списка пакетов, показывает, что не понадобятся также пакеты удовлетворяющие маске:
*-dev-* *-devel-* *-debuginfo-* *-demo-* *-examples-* *-headers-* *-javadoc-* *-src-* *-source-* *-sources-* *-static-* *-samples-* *-tests-* clipart-*
Также есть фильтр пакетов на странице Фильтр пакетов для rsync сайта репозитория, который поможет отфильтровать, например, игры и другие группы пакетов, которые не являются нужными в текущей ситуации, и от которых явно не зависят нужные пакеты.
Эти три группы фильтров заносятся в файл
Решил, что тут настраивать ничего не надо. Поэтому переопределять эти настройки не стал.
Определить сколько пакетов осталось скачать можно, например, посчитав количество символических ссылок, которые пока не указывают на файлы:
Например, команда
Из которого видно, что в текущий момент осталось скачать 21 пакет (определено, по количеству строк "
После завершения синхронизации размер каталога получился 16 ГБайт:
Эти три группы фильтров заносятся в файл
~/.sisyphus-mirror/exclude.Файл include
По умолчанию файл include имеет следующее содержимое:list/** .timestamp
Решил, что тут настраивать ничего не надо. Поэтому переопределять эти настройки не стал.
Запуск sisyphus-mirror
В консоли надо выполнить команду
В результате: sisyphus-mirror - Загрузится список пакетов.
- Загрузятся нужные пакеты из сетевого репозитория в локальный.
- Удалятся пакеты локального репозитория, которых больше нет в сетевом репозитории.
sisyphus-mirror: Mirroring Sisyphus Welcome to ALT Linux Team public rsync archive! receiving file list ... done Список загруженных пакетов deleting Список удалённых пакетов Number of files: 41816 Number of files transferred: 406 Total file size: 16899703581 bytes Total transferred file size: 785537951 bytes Literal data: 460000241 bytes Matched data: 325537710 bytes File list size: 3257029 File list generation time: 22.128 seconds File list transfer time: 0.000 seconds Total bytes sent: 267073 Total bytes received: 463430202 sent 267073 bytes received 463430202 bytes 424436.86 bytes/sec total size is 16899703581 speedup is 36.45 sisyphus-mirror: Successfuly mirrored Sisyphus sisyphus-mirror: All done
Определить сколько пакетов осталось скачать можно, например, посчитав количество символических ссылок, которые пока не указывают на файлы:
cd /Develop/AltLinux && du -LНапример, команда
du -L выдаст такой список: 228M ./Sisyphus/noarch/base du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/qutim-lang-es-0.3.1.0-alt1.git20130117.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/wmfon-1.3-alt1.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/terminfo-extra-5.9-alt2.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/wmhaltlive-1.0-alt1.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/udev-rule-generator-197-alt1.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/qutim-lang-cz-0.3.1.0-alt1.git20130117.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/udev-rules-197-alt1.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/systemd-sysvinit-197-alt1.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/qutim-lang-ru-0.3.1.0-alt1.git20130117.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/wmhalt-1.3-alt1.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/rsyslog-docs-html-7.2.5-alt1.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/qutim-lang-fr-0.3.1.0-alt1.git20130117.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/zsh-completion-systemd-197-alt1.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/qutim-lang-sk-0.3.1.0-alt1.git20130117.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/udev-hwdb-197-alt1.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/systemd-analyze-197-alt1.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/wmtrashpy-0.93-alt1.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/qutim-lang-en-0.3.1.0-alt1.git20130117.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/qutim-lang-uk-0.3.1.0-alt1.git20130117.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/wmrand-1.0-alt1.noarch.rpm» du: невозможно получить доступ к «./Sisyphus/noarch/RPMS.classic/qutim-lang-de-0.3.1.0-alt1.git20130117.noarch.rpm» 9,8G ./Sisyphus/noarch/RPMS.classic 10G ./Sisyphus/noarch 137M ./Sisyphus/i586/base 6,2G ./Sisyphus/i586/RPMS.classic 6,3G ./Sisyphus/i586 956K ./Sisyphus/files/noarch/RPMS 960K ./Sisyphus/files/noarch 1,5M ./Sisyphus/files/i586/RPMS 1,5M ./Sisyphus/files/i586 2,5M ./Sisyphus/files 17G ./Sisyphus 17G .
Из которого видно, что в текущий момент осталось скачать 21 пакет (определено, по количеству строк "
du: невозможно получить доступ к").После завершения синхронизации размер каталога получился 16 ГБайт:
[slowtest@localhost AltLinux]$ du 228M ./Sisyphus/noarch/base 31M ./Sisyphus/noarch/RPMS.classic 259M ./Sisyphus/noarch 137M ./Sisyphus/i586/base 16M ./Sisyphus/i586/RPMS.classic 153M ./Sisyphus/i586 9,8G ./Sisyphus/files/noarch/RPMS 9,8G ./Sisyphus/files/noarch 5,8G ./Sisyphus/files/i586/RPMS 5,8G ./Sisyphus/files/i586 16G ./Sisyphus/files 16G ./Sisyphus 16G .