Хочется увидеть /usr/lib/rpm/macros.d/* в переменной macrofiles rpm, поскольку неизменяемые администраторм макросы из rpm-build-* логичнее (и более FHS-но) складывать вне /etc.
4.0.4-alt96.12-7-gd975fc6
Файлы с макросами традиционно отмечаются как %config, а класть %config-файлы в /usr нежелательно. Аналогичная ситуация со скриптами /etc/rc.d/init.d -- они не предназначены для модификации, но традиционно помечаются как %config. Короче, я бы не стал делать /usr/lib/rpm/macros.d, но и не возражаю, если его сделают.
(In reply to comment #2) > Файлы с макросами традиционно отмечаются как %config, Странная традиция. Наверное, она появилась от того, что файлы находятся в /etc. Похоже что причина со следствием поменялись местами. > а класть %config-файлы в /usr нежелательно. Конечно. > Аналогичная ситуация со скриптами /etc/rc.d/init.d -- они не > предназначены для модификации, но традиционно помечаются как %config. В /etc/rc.d/init.d админ иногда может залезть руками. А зачем ему менять сброчные макросы? > Короче, > я бы не стал делать /usr/lib/rpm/macros.d, но и не возражаю, если его сделают. Я вроде бы сделал в 4.0.4-alt96.12-7-gd975fc6
Давайте условимся. "Конфиг" означает 1) обособленные 2) декларативные 3) текстовые данные, которые влияют на работу 4) заранее известной "исполняемой программы". Конфиг может быть "гибким" (модифицируемым) или "негибким" (формальным, но всё ещё конфигом в смысле 1-4). На уровне rpm "гибкие" конфиги помечаются флагом %config(noreplace) -- при обновлении пакетов такие конфиги сохраняются. Либо, в противном случае, просто %config -- при обновлении пакетов такие конфиги заменяются. Развивая аналогию, я не вижу особого различия между init.d и macros.d конфигами -- это немодифицируемые конфиги. Администратор залезает в них только в самом крайнем случае.
Граница между конфигами и кодом достаточно сильно размыта, под определение "обособленные декларативные текстовые файлы, влияющие на работу конкретной программы" можно подогнать и "плагины", написанные на интерпретируемом декларативном языке программирования. В случае RPM содержимое /etc/rpm/macros.d/* - это явно такие "плагины". Кстати, инитскрипты под это определение не попадают.
И да, по-хорошему и инитскрипты было бы лучше складывать в /lib/init.d куда-нибудь (раз уж аналога /usr/share в / нет).
Плагины не подходят, потому что "декларативные данные" -- это преимущественно "параметры", а не императивный код. "Реализация" к конфигам не относится. В этом смысле init.d скрипты не следовало бы считать конфигами вообще.
Заглядываю в /etc/rpm/macros.d/{perl5,python} и вижу там кучу кода! Так что это никакие не данные. Это программы для кодогенератора, и, тем самым, не конфиги.
(In reply to comment #4) > Давайте условимся. "Конфиг" означает 1) обособленные 2) декларативные 3) > текстовые данные, которые влияют на работу 4) заранее известной "исполняемой > программы". Конфиг может быть "гибким" (модифицируемым) или "негибким" > (формальным, но всё ещё конфигом в смысле 1-4). На уровне rpm "гибкие" конфиги > помечаются флагом %config(noreplace) -- при обновлении пакетов такие конфиги > сохраняются. Либо, в противном случае, просто %config -- при обновлении пакетов > такие конфиги заменяются. Нет, немодифицируемый конфиг -- это не конфиг. > Развивая аналогию, я не вижу особого различия между init.d и macros.d конфигами -- > это немодифицируемые конфиги. Администратор залезает в них только в самом > крайнем случае. init.d -- это скрипты. Называть их конфигами язык не поворачивается.
(In reply to comment #1) > 4.0.4-alt96.12-7-gd975fc6 rpm-4.0.4-alt96.13