Hasher/Tips: различия между версиями
< Hasher
(init) |
(про общесистемное кэширование скаченных пакетов) |
||
Строка 11: | Строка 11: | ||
При запуске hsh через i586 автоматически используется нужный sources.list. ''([http://lists.altlinux.org/pipermail/devel/2009-October/175713.html mithraen@ в devel@])'' | При запуске hsh через i586 автоматически используется нужный sources.list. ''([http://lists.altlinux.org/pipermail/devel/2009-October/175713.html mithraen@ в devel@])'' | ||
==Кэширование скачиваемых apt-ом пакетов== | |||
;"Проблема", в связи с которой возникает такое пожелание, вот в чём: | |||
:При каждой сборке в hasher-е, hasher готовит окружение для сборки, устанавливая пакеты к себе; их вытаскивает из репозитория-источника apt. Если репозиторий удалённый (например, используются общесистемные настройки apt, указывающие на ftp-репозиторий Sisyphus), то каждый раз apt будет скачивать все потребовавшиеся пакеты по сети (заново). Хотелось бы сэкономить на трафике и времени и использовать постоянный кэш apt -- один и тот же для всех предстоящих сборок в hasher-е. | |||
;Судя по высказывавшимся советам, это должно быть возможно, если включить себя в группу rpm: | |||
:[http://lists.altlinux.org/pipermail/sisyphus/2008-June/331310.html at@]:<blockquote>Добавьте себя в группу rpm.</blockquote> | |||
:[http://lists.altlinux.org/pipermail/sisyphus/2008-June/331313.html at@]:<blockquote>hasher умеет делать 'apt-get install --download-only' через системный /etc/apt/sources.list. Но ему может не хватить прав на /var/*/apt.</blockquote> | |||
:Но в чистом виде такой совет (просто добавление себя в группу rpm) не сработал для hasher-1.3.22-alt1 -- общесистемный /var/cache/apt/archives/ не стал хранить скаченные пакеты. | |||
;Поправка конфигурации apt для hasher:Посмотрим на то, как работает hasher. /usr/bin/mkaptbox готовит конфигурацию apt для hasher так (см. исходный код): | |||
<pre> | |||
# create final apt.conf file. | |||
cat >"$apt_config_file" <<__EOF__ | |||
Dir::State "$aptbox/var/lib/apt/"; | |||
Dir::Cache "$aptbox/var/cache/apt/"; | |||
${apt_config:+$(cat "$apt_config")} | |||
Dir::Etc::SourceList "$aptbox/etc/apt/sources.list"; | |||
RPM::RootDir "$aptbox"; | |||
APT::Install::Virtual "true"; | |||
APT::Install::VirtualVersion "true"; | |||
${alternate_arch:+APT::Architecture "${target:-$def_target}";} | |||
__EOF__ | |||
verbose "Created APT configuration file \`$apt_config_file'." | |||
</pre> | |||
:Т.е. оно не собирается использовать общесистемный кэш (а прописывает свою директорию для кэша, которая будет стираться между вызовами hsh). Но есть возможность вставить какую-нибудь нашу добавку к конфигурации, передав параметром --apt-config. | |||
:Я записал в некий файл (~/hsh-extra-apt.conf): | |||
<pre> | |||
Dir::Cache "/var/cache/apt/"; | |||
</pre> | |||
:(комментарии там не надо использовать, потому что при вставке в mkaptbox они нарушат синтаксис файла конфигурации). | |||
:Теперь я могу запускать сборки с опцией --apt-config=/home/imz/hsh-extra-apt.conf (нужно вписать именно полный путь, без ~) для hsh; например, так: | |||
gear-hsh -v -- -v --no-sisyphus-check=packager,gpg --apt-config=/home/imz/hsh-extra-apt.conf | |||
:и оно кэширует скачиваемые пакеты. | |||
;Замеченные проблемы: может понадобиться сделать от root: | |||
rm /var/cache/apt/archives/lock | |||
{{Category navigation|title=hasher|category=hasher|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=hasher|category=hasher|sortkey={{SUBPAGENAME}}}} | ||
[[Категория:hasher]] | [[Категория:hasher]] |
Версия от 23:03, 21 февраля 2012
Автоматическое переключение sources.list под архитектуру
В ~/.hasher/config:
# target if [ `uname -m` = "i686" ]; then def_target=i586 apt_config=$HOME/.hasher/apt.conf.i586 fi
При запуске hsh через i586 автоматически используется нужный sources.list. (mithraen@ в devel@)
Кэширование скачиваемых apt-ом пакетов
- "Проблема", в связи с которой возникает такое пожелание, вот в чём
- При каждой сборке в hasher-е, hasher готовит окружение для сборки, устанавливая пакеты к себе; их вытаскивает из репозитория-источника apt. Если репозиторий удалённый (например, используются общесистемные настройки apt, указывающие на ftp-репозиторий Sisyphus), то каждый раз apt будет скачивать все потребовавшиеся пакеты по сети (заново). Хотелось бы сэкономить на трафике и времени и использовать постоянный кэш apt -- один и тот же для всех предстоящих сборок в hasher-е.
- Судя по высказывавшимся советам, это должно быть возможно, если включить себя в группу rpm
- at@:
Добавьте себя в группу rpm.
- at@:
hasher умеет делать 'apt-get install --download-only' через системный /etc/apt/sources.list. Но ему может не хватить прав на /var/*/apt.
- Но в чистом виде такой совет (просто добавление себя в группу rpm) не сработал для hasher-1.3.22-alt1 -- общесистемный /var/cache/apt/archives/ не стал хранить скаченные пакеты.
- Поправка конфигурации apt для hasher
- Посмотрим на то, как работает hasher. /usr/bin/mkaptbox готовит конфигурацию apt для hasher так (см. исходный код):
# create final apt.conf file. cat >"$apt_config_file" <<__EOF__ Dir::State "$aptbox/var/lib/apt/"; Dir::Cache "$aptbox/var/cache/apt/"; ${apt_config:+$(cat "$apt_config")} Dir::Etc::SourceList "$aptbox/etc/apt/sources.list"; RPM::RootDir "$aptbox"; APT::Install::Virtual "true"; APT::Install::VirtualVersion "true"; ${alternate_arch:+APT::Architecture "${target:-$def_target}";} __EOF__ verbose "Created APT configuration file \`$apt_config_file'."
- Т.е. оно не собирается использовать общесистемный кэш (а прописывает свою директорию для кэша, которая будет стираться между вызовами hsh). Но есть возможность вставить какую-нибудь нашу добавку к конфигурации, передав параметром --apt-config.
- Я записал в некий файл (~/hsh-extra-apt.conf):
Dir::Cache "/var/cache/apt/";
- (комментарии там не надо использовать, потому что при вставке в mkaptbox они нарушат синтаксис файла конфигурации).
- Теперь я могу запускать сборки с опцией --apt-config=/home/imz/hsh-extra-apt.conf (нужно вписать именно полный путь, без ~) для hsh; например, так:
gear-hsh -v -- -v --no-sisyphus-check=packager,gpg --apt-config=/home/imz/hsh-extra-apt.conf
- и оно кэширует скачиваемые пакеты.
- Замеченные проблемы
- может понадобиться сделать от root:
rm /var/cache/apt/archives/lock