Bug 24660 - Игнорируется параметр APT::Cache-Limit в подключаемых конфигах
Summary: Игнорируется параметр APT::Cache-Limit в подключаемых конфигах
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: hasher (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Dmitry V. Levin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-11-28 20:53 MSK by Dmitry A. Kharitonov
Modified: 2010-12-01 23:14 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dmitry A. Kharitonov 2010-11-28 20:53:21 MSK
Параметр APT::Cache-Limit игнорируется в конфигах, подключаемых ключём --apt-config=

подробности:
---------------------
$ cat /etc/apt/apt.conf
/*
 * This is the main configuration file for the APT suite of tools,
 * see apt.conf(5) for details.
 */

// See apt-cdrom(8) for details.
Acquire::CDROM::Copy "true";
Acquire::CDROM::mount "/media/cdrom";
APT::Cache-Limit "3355443";

RPM 
{
        Allow-Duplicated {
                // Old-style kernels.
                "^(NVIDIA_)?(kernel|alsa)[0-9]*(-adv|-linus)?($|-up|-smp|-secure|-custom|-enterprise|-BOOT|-tape|-aureal)";
                // New-style kernels.
                "^kernel-(image|modules)-.*";
        };
        Hold {
                // Old-style kernels.
                "^(kernel|alsa)[0-9]+-source";
        };
};

$ cat /media/repo/ALTLinux/hasherconf/Sisyphusi586.confDir::Etc::SourceList "/media/repo/ALTLinux-20101108/ALTLinux//hasherconf/Sisyphusi586.list";
Dir::Etc::SourceParts "/var/empty/";
APT::Cache-Limit "33554432";

$ cat /media/repo/ALTLinux-20101108/ALTLinux//hasherconf/Sisyphusi586.list
#Local branch for ALT Linux Sisyphus
rpm     file:///media/repo/ALTLinux-20101108/ALTLinux//Sisyphus i586 classic
rpm     file:///media/repo/ALTLinux-20101108/ALTLinux//Sisyphus noarch classic
rpm-src file:///media/repo/ALTLinux-20101108/ALTLinux//Sisyphus i586 classic

$ repo=~/"tmp/HASHER"; sudo rm -fr "$repo"; mkdir -p "$repo"; gear --commit --hasher -- hsh --lazy-cleanup --build-args="--enable=debug" --target=i586 --apt-config=/media/repo/ALTLinux/hasherconf/Sisyphusi586.conf "$repo"
E: Dynamic MMap ran out of room
E: Dynamic MMap ran out of room
E: При обработке font-manager (NewVersion1) возникла ошибка
E: Ошибка с MergeList /home/user/tmp/HASHER/aptbox/var/lib/apt/lists/_media_repo_ALTLinux-20101108_ALTLinux__Sisyphus_i586_base_pkglist.classic
E: Невозможно прочитать список пакетов или файл статуса.

$ cat "$repo"/aptbox/etc/apt/apt.conf 
Dir::State "/home/user/tmp/HASHER/aptbox/var/lib/apt/";
Dir::Cache "/home/user/tmp/HASHER/aptbox/var/cache/apt/";
Dir::Etc::SourceList "/media/repo/ALTLinux-20101108/ALTLinux//hasherconf/Sisyphusi586.list";
Dir::Etc::SourceParts "/var/empty/";
APT::Cache-Limit "33554432";
Dir::Etc::SourceList "/home/user/tmp/HASHER/aptbox/etc/apt/sources.list";
RPM::RootDir "/home/user/tmp/HASHER/aptbox";
APT::Install::Virtual "true";
APT::Install::VirtualVersion "true";
APT::Architecture i586;

-------------------------
В конфиге песочницы правильное значение!

теперь меняю системный конфиг
$ cat /etc/apt/apt.conf
/*
 * This is the main configuration file for the APT suite of tools,
 * see apt.conf(5) for details.
 */

// See apt-cdrom(8) for details.
Acquire::CDROM::Copy "true";
Acquire::CDROM::mount "/media/cdrom";
APT::Cache-Limit "33554432";

RPM 
{
        Allow-Duplicated {
                // Old-style kernels.
                "^(NVIDIA_)?(kernel|alsa)[0-9]*(-adv|-linus)?($|-up|-smp|-secure|-custom|-enterprise|-BOOT|-tape|-aureal)";
                // New-style kernels.
                "^kernel-(image|modules)-.*";
        };
        Hold {
                // Old-style kernels.
                "^(kernel|alsa)[0-9]+-source";
        };
};

И сборка проходит успешно!

$ cat "$repo"/aptbox/etc/apt/apt.conf 
Dir::State "/home/user/tmp/HASHER/aptbox/var/lib/apt/";
Dir::Cache "/home/user/tmp/HASHER/aptbox/var/cache/apt/";
Dir::Etc::SourceList "/media/repo/ALTLinux-20101108/ALTLinux//hasherconf/Sisyphusi586.list";
Dir::Etc::SourceParts "/var/empty/";
APT::Cache-Limit "33554432";
Dir::Etc::SourceList "/home/user/tmp/HASHER/aptbox/etc/apt/sources.list";
RPM::RootDir "/home/user/tmp/HASHER/aptbox";
APT::Install::Virtual "true";
APT::Install::VirtualVersion "true";
APT::Architecture i586;

А в песочнице прежний конфиг!
Comment 1 Dmitry V. Levin 2010-11-28 22:38:24 MSK
(In reply to comment #0)
> Параметр APT::Cache-Limit игнорируется в конфигах, подключаемых ключём
> --apt-config=

Когда вы переопределяете системный apt.conf ключем --apt-config, то /etc/apt/apt.conf игнорируется полностью.
Comment 2 Dmitry A. Kharitonov 2010-11-29 00:01:21 MSK
(В ответ на комментарий №1)
> (In reply to comment #0)
> > Параметр APT::Cache-Limit игнорируется в конфигах, подключаемых ключём
> > --apt-config=
> 
> Когда вы переопределяете системный apt.conf ключем --apt-config, то
> /etc/apt/apt.conf игнорируется полностью.

Тогда объясните мне, почему в указанном примере параметр APT::Cache-Limit игнорируется в /media/repo/ALTLinux/hasherconf/Sisyphusi586.conf, и побирается в /etc/apt/apt.conf ??
Comment 3 Dmitry A. Kharitonov 2010-11-29 09:40:07 MSK
До выяснения подробностей приоткрываю
Comment 4 Dmitry V. Levin 2010-11-30 04:49:07 MSK
(In reply to comment #3)
> До выяснения подробностей приоткрываю

У нас так не принято делать.  Баг открывают после выяснения подробностей, а не до этого.
Comment 5 Dmitry A. Kharitonov 2010-11-30 07:18:25 MSK
В описании я привёл подробное описание ситуации, в которой HASHER генерировал ОДИНАКОВЫЙ конфиг для apt. Но ПОВЕДЕНИЕ программы в этих ситуациях РАЗЛИЧАЕТСЯ и приводит к ОШИБКЕ. Это доказывает, что apt-get на стадии update не использует конфиги из песочницы.
Если такую работу программы вы считаете правильным, то расскажите: как я могу передавать параметры, в частности APT::Cache-Limit, через альтернативные конфигурационные файлы?

Ответьте, пожалуйста, на вопрос в комментарии #2.
Comment 6 Dmitry V. Levin 2010-11-30 13:58:48 MSK
(In reply to comment #1)
> (In reply to comment #0)
> > Параметр APT::Cache-Limit игнорируется в конфигах, подключаемых ключём
> > --apt-config=
> 
> Когда вы переопределяете системный apt.conf ключем --apt-config, то
> /etc/apt/apt.conf игнорируется полностью.

Впрочем, это зависит от содержимого передаваемого конфига.
Лично я использую конфиг на основе примера /usr/share/doc/hasher-*/apt.conf
в котором /etc/apt/apt.conf* игнорируются.  У вас, судя по процитированному aptbox/etc/apt/apt.conf, системный конфиг продолжает использоваться.
Comment 7 Dmitry A. Kharitonov 2010-11-30 14:27:32 MSK
(В ответ на комментарий №6)
> > Когда вы переопределяете системный apt.conf ключем --apt-config, то
> > /etc/apt/apt.conf игнорируется полностью.
> 
> Впрочем, это зависит от содержимого передаваемого конфига.
> Лично я использую конфиг на основе примера /usr/share/doc/hasher-*/apt.conf
> в котором /etc/apt/apt.conf* игнорируются.  У вас, судя по процитированному
> aptbox/etc/apt/apt.conf, системный конфиг продолжает использоваться.

Я, собственно, не возражаю против использования системного конфига. Мне кажется, что параметры, подключаемые из альтернативного конфига обязаны заменить своими значениями, значения системного конфига. Во всяком случае, я ожидаю именно такого поведения.
Или есть табу на изменение каких-то параметров? и они специально не перезаписываются.
Во всяком случае, конфиг в песочнице ("$repo"/aptbox/etc/apt/apt.conf) полностью соответствует моим представлениям о том как это должно работать и мне очень удивительно видеть действия программы, отличающихся от заданных.

Я могу только предположить, что вы запускаете apt-get update до переключения в песочницу. Тогда apt-get update действительно будет подхватывать системные настройки и не замечать альтернативных.

Вечером проверю ваши рекомендации по /usr/share/doc/hasher-*/apt.conf. Сейчас у меня нет с собой репозиториев.
Comment 8 Dmitry A. Kharitonov 2010-12-01 09:50:21 MSK
Проверил. добавление строчек

Dir::Etc::main "/dev/null";
Dir::Etc::parts "/var/empty";

проблему решает. Собственно, на проблему влияет параметр Dir::Etc::main "/dev/null";
Я не считаю это решением проблемы, по соображениям, указанным в Комментарий #7.
Comment 9 Dmitry V. Levin 2010-12-01 16:20:20 MSK
(In reply to comment #8)
> Проверил. добавление строчек
> 
> Dir::Etc::main "/dev/null";
> Dir::Etc::parts "/var/empty";
> 
> проблему решает. Собственно, на проблему влияет параметр Dir::Etc::main
> "/dev/null";
> Я не считаю это решением проблемы, по соображениям, указанным в Комментарий #7.

Переменная APT_CONFIG, с помощью которой hasher передает apt'у свой aptbox/etc/apt/apt.conf, по умолчанию не отменяет действие системных /etc/apt/apt.conf и /etc/apt/apt.conf.d/*, в которых могут находится конфликтующие параметры, как в вашем случае.
Comment 10 Dmitry A. Kharitonov 2010-12-01 16:52:33 MSK
А какое отношение это имеет к ошибке? альтернативный конфиг должен перезаписывать настройки, которые в нём указаны. Это, Дмитрий, как временный знак на дороге, который отменяет действия постоянных и предписывает что нужно делать.
Я же вам сообщил в комментарии #7, что я не возражаю против применения системных конфигов. Конфликтующие параметры должны перезаписываться альтернативным конфигом.
Или вы считаете, что это уже бага apt?
Comment 11 Dmitry V. Levin 2010-12-01 22:07:45 MSK
(In reply to comment #10)
> А какое отношение это имеет к ошибке? альтернативный конфиг должен
> перезаписывать настройки, которые в нём указаны. Это, Дмитрий, как временный
> знак на дороге, который отменяет действия постоянных и предписывает что нужно
> делать.

Это не альтернативный конфиг, это конфиг, который apt будет загружать первым.

> Я же вам сообщил в комментарии #7, что я не возражаю против применения
> системных конфигов. Конфликтующие параметры должны перезаписываться
> альтернативным конфигом.
> Или вы считаете, что это уже бага apt?

apt просто читает конфиги один за другим и перезаписывает старые значения повторно встреченных параметров новыми значениями.
Comment 12 Dmitry A. Kharitonov 2010-12-01 23:14:14 MSK
(В ответ на комментарий №11)
> (In reply to comment #10)
> > А какое отношение это имеет к ошибке? альтернативный конфиг должен
> > перезаписывать настройки, которые в нём указаны. Это, Дмитрий, как временный
> > знак на дороге, который отменяет действия постоянных и предписывает что нужно
> > делать.
> 
> Это не альтернативный конфиг, это конфиг, который apt будет загружать первым.
Получается, что мне нужно чтобы он загружался последним. Не понятно как тогда происходит подмена параметров, которые показывают место нужного мне репозитория. Они тогда должны всегда оказываться системными. На практике такого не происходит.
> 
> > Я же вам сообщил в комментарии #7, что я не возражаю против применения
> > системных конфигов. Конфликтующие параметры должны перезаписываться
> > альтернативным конфигом.
> > Или вы считаете, что это уже бага apt?
> 
> apt просто читает конфиги один за другим и перезаписывает старые значения
> повторно встреченных параметров новыми значениями.
Я именно так и предполагаю работу apt