From: Alexey Tourbin <at@altlinux.ru> To: devel@lists.altlinux.org Subject: [devel] hasher 1.3.14 - remote repo cache Date: Sat, 18 Jul 2009 12:40:59 +0400 Message-ID: <20090718084059.GA11322@altlinux.org> (raw) [-- Attachment #1: Type: text/plain, Size: 5622 bytes --] * Fri Jul 17 2009 Alexey Tourbin <at@altlinux> 1.3.14-alt1 - hsh-rpmi-print-files: New helper program, to replace 'apt-get --print-uris' with 'apt-get -o RPM::PM=external -o Dir::Bin::rpm=hsh-rpmi-print-files'. - hsh-sh-functions.in (print_uris): Updated for hsh-rpmi-print-files. - FAQ, README: Discarded remote repo limitations. * Fri Jul 17 2009 Alexey Tourbin <at@altlinux> 1.3.13-alt1 - mkaptbox: Eliminated read_apt_config() usage. - hsh-sh-functions.in (read_apt_config): Removed. - hsh-sh-cache-contents-functions: Set pkglists_dir from Dir::State::lists. * Wed Jul 15 2009 Alexey Tourbin <at@altlinux> 1.3.12-alt1 - hsh-sh-cache-contents-functions: Reimplemented contents index routines. - Contents index is now generated from apt pkglist files. - Added /usr/lib/kde4bin to contents_index_bin directories. - Disabled contents_index_all. * Thu May 07 2009 Dmitry V. Levin <ldv@altlinux> 1.3.11-alt1 Я предпринял ряд мер, направленных на улучшение работы хешера в конфигурации с remote репозиторием. Теперь с remote репозиторием хешер работает так же хорошо, как в конфигурации с локальным репозиторием. А именно, решены следующие две проблемы. 1) Воспроизводимость/идентичность сборки: результат сборки пакетов с использованием remote репозитория не должен отличаться от результата сборка пакетов на локальном репозитории. При сборке пакетов хешер использовал для порождения зависимостей файлы contents_index, которые доступны только на локальном репозитории (в виде отдельных файлов). Contents index -- это индекс файлов в репозитории, к каким пакетам эти файлы относятся. Contents index использовался в двух случаях: для отображения путей в названия пакетов (contents_index_all) и для поиска команд из shell-скриптов по каталогам PATH (contents_index_bin). contents_index_all теперь не используется (в последних релизах rpm) и не генерируется хешером вообще. При сборке пакетов не должно быть такого понятия, как все файлы и все пакеты в репозитории. Требования на файлы теперь отображаются в зависимости as is (после каноникализации имени файла и т.п.). contents_index_bin сохранен, но теперь он генерируется на основе pkglist* файлов, то есть на основе первичной информации из репозитория, доступной через apt как в remote, так и в локальной конфигурации. 2) Проблемы трафика. По умолчанию хешер всё время копирует/скачивает rpm-пакеты заново. Но должен быть простой способ, как настроить хешер, чтобы не было повторного скачивания пакетов. То есть чтобы можно было собирать хешером на локалхосте с относительно медленным интернетом. Далее описано, как правильно сконфигурировать локальное кеширование. Summary: нужно создать отдельный apt.conf и назначить в нём два постоянных каталога -- для скачивания индексов и для скачивания пакетов. ~/.hasher/config: workdir=$TMPDIR/build mkdir -p "$workdir" known_mountpoints=/proc packager="$(rpm --eval %packager)" apt_config=~/.hasher/apt.conf sed "s|@HOME@|$HOME|g" <"$apt_config".in >"$apt_config" Здесь устанавливается рабочий каталог хешера по умолчанию (сборка на tmpfs/swap идёт гораздо быстрее, чем сборка на ext3). Каталог /proc будет монтироваться по мере необходимости (на основе зависимостей пакетов). Packager выставляется в значение из ~/.rpmmacros (иначе sisyphus_check не пройдёт). Далее создается файл apt.conf. ~/.hasher/apt.conf.in: Dir::Etc::SourceList "@HOME@/.hasher/sources.list"; Dir::Etc::SourceParts "/var/empty/"; Dir::State::lists "@HOME@/.hasher/lists/"; Dir::Cache::archives "@HOME@/.hasher/archives/"; Сборка будет идти на репозитории, указанном в ~/.hasher/sources.list. ~/.hasher/sources.list: rpm [alt] ftp://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic rpm [alt] ftp://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus noarch classic Каталог Dir::State::lists определяет, куда будут скачиваться индексы репозитория (pkglist* и release* файлы) при 'apt-get update'. Каталог Dir::Cache::archives определяет, куда будут скачиваться пакеты при 'apt-get install'. Эти два каталога нужно создать так: mkdir -p ~/.hasher/lists/partial mkdir -p ~/.hasher/archives/partial (то есть нужно дополнительно создать подкаталог partial). Теперь всё готово для того, чтобы сказать hsh --init Начнётся скачивание пакетов из репозитория. Для инициализации базовой сборочной среды в первый раз нужно скачать примерно 40 метров (на мегабитном канале будет скачиваться несколько минут). К сожалению, сейчас хешер не показывает диагностику, какие файлы он скачивает. При желании это можно узнать вручную: find ~/.hasher/*/partial/ После этого можно собирать пакеты с помощь hsh* и gear-hsh как обычно. Недостающие пакеты будут скачиваться по мере необходимости. Обновление на текущее состояние удаленного репозитория будет выполняться автоматически (насколько я знаю, сейчас ftp.altlinux.org обновляется раз в сутки ранним утром). Можно пойти ещё дальше -- сделать общий кеш для системного апта и для хешера. Шарить листы я не рекомендую. Расшарить скачивание пакетов можно следующим способом. - Добавить себя в группу rpm, чтобы получить доступ на запись в /var/cache/apt/archives. - После этого нужно перелогиниться. - Вместо каталога ~/.hasher/archives создать симлинк: rm -rf ~/.hasher/archives ln -s /var/cache/apt/archives ~/.hasher/archives - Создать и/или исправить файл /var/cache/apt/archives/lock. У него должны быть права доступа 664, а не 644. [ -w /var/cache/apt/archives/lock ] || install -v -m664 /dev/null /var/cache/apt/archives/lock [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
next reply other threads:[~2009-07-18 8:40 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2009-07-18 8:40 Alexey Tourbin [this message] 2009-07-19 20:37 ` Michael Shigorin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20090718084059.GA11322@altlinux.org \ --to=at@altlinux.ru \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git