* [devel] hasher 1.3.14 - remote repo cache
@ 2009-07-18 8:40 Alexey Tourbin
2009-07-19 20:37 ` Michael Shigorin
0 siblings, 1 reply; 2+ messages in thread
From: Alexey Tourbin @ 2009-07-18 8:40 UTC (permalink / raw)
To: devel
[-- 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 --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [devel] hasher 1.3.14 - remote repo cache
2009-07-18 8:40 [devel] hasher 1.3.14 - remote repo cache Alexey Tourbin
@ 2009-07-19 20:37 ` Michael Shigorin
0 siblings, 0 replies; 2+ messages in thread
From: Michael Shigorin @ 2009-07-19 20:37 UTC (permalink / raw)
To: devel
On Sat, Jul 18, 2009 at 12:40:59PM +0400, Alexey Tourbin wrote:
> Я предпринял ряд мер, направленных на улучшение работы хешера
> в конфигурации с remote репозиторием. Теперь с remote
> репозиторием хешер работает так же хорошо, как в конфигурации
> с локальным репозиторием.
Спасибо! (даже если у меня сейчас везде с локальных зеркал)
Хорошо бы ещё это письмо в документацию hasher, или обязательно
перевести на английский и причесать?
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-07-19 20:37 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-07-18 8:40 [devel] hasher 1.3.14 - remote repo cache Alexey Tourbin
2009-07-19 20:37 ` Michael Shigorin
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