ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [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