Bug 17948 - /usr/lib/rpm/macros.d/* для файлов макросов
Summary: /usr/lib/rpm/macros.d/* для файлов макросов
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: rpm (show other bugs)
Version: unstable
Hardware: all Linux
: P2 enhancement
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-11-20 14:14 MSK by Mikhail Gusarov
Modified: 2008-11-24 01:16 MSK (History)
7 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mikhail Gusarov 2008-11-20 14:14:23 MSK
Хочется увидеть /usr/lib/rpm/macros.d/* в переменной macrofiles rpm, поскольку неизменяемые администраторм макросы из rpm-build-* логичнее (и более FHS-но) складывать вне /etc.
Comment 1 Dmitry V. Levin 2008-11-21 03:45:14 MSK
4.0.4-alt96.12-7-gd975fc6
Comment 2 at@altlinux.org 2008-11-21 14:28:42 MSK
Файлы с макросами традиционно отмечаются как %config, а класть %config-файлы в /usr нежелательно.  Аналогичная ситуация со скриптами /etc/rc.d/init.d -- они не предназначены для модификации, но традиционно помечаются как %config.  Короче, я бы не стал делать /usr/lib/rpm/macros.d, но и не возражаю, если его сделают.
Comment 3 Dmitry V. Levin 2008-11-21 14:54:06 MSK
(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
Comment 4 at@altlinux.org 2008-11-21 15:19:48 MSK
Давайте условимся.  "Конфиг" означает 1) обособленные 2) декларативные 3) текстовые данные, которые влияют на работу 4) заранее известной "исполняемой программы".  Конфиг может быть "гибким" (модифицируемым) или "негибким" (формальным, но всё ещё конфигом в смысле 1-4).  На уровне rpm "гибкие" конфиги помечаются флагом %config(noreplace) -- при обновлении пакетов такие конфиги сохраняются.  Либо, в противном случае, просто %config -- при обновлении пакетов такие конфиги заменяются.

Развивая аналогию, я не вижу особого различия между init.d и macros.d конфигами -- это немодифицируемые конфиги.  Администратор залезает в них только в самом крайнем случае.
Comment 5 Mikhail Gusarov 2008-11-21 15:25:11 MSK
Граница между конфигами и кодом достаточно сильно размыта, под определение "обособленные декларативные текстовые файлы, влияющие на работу конкретной программы" можно подогнать и "плагины", написанные на интерпретируемом декларативном языке программирования.

В случае RPM содержимое /etc/rpm/macros.d/* - это явно такие "плагины".

Кстати, инитскрипты под это определение не попадают.
Comment 6 Mikhail Gusarov 2008-11-21 15:26:15 MSK
И да, по-хорошему и инитскрипты было бы лучше складывать в /lib/init.d куда-нибудь (раз уж аналога /usr/share в / нет).
Comment 7 at@altlinux.org 2008-11-22 01:27:49 MSK
Плагины не подходят, потому что "декларативные данные" -- это преимущественно "параметры", а не императивный код.  "Реализация" к конфигам не относится.  В этом смысле init.d скрипты не следовало бы считать конфигами вообще.
Comment 8 Mikhail Gusarov 2008-11-22 01:34:07 MSK
Заглядываю в /etc/rpm/macros.d/{perl5,python} и вижу там кучу кода! Так что это никакие не данные. Это программы для кодогенератора, и, тем самым, не конфиги.
Comment 9 Dmitry V. Levin 2008-11-24 01:15:56 MSK
(In reply to comment #4)
> Давайте условимся.  "Конфиг" означает 1) обособленные 2) декларативные 3)
> текстовые данные, которые влияют на работу 4) заранее известной "исполняемой
> программы".  Конфиг может быть "гибким" (модифицируемым) или "негибким"
> (формальным, но всё ещё конфигом в смысле 1-4).  На уровне rpm "гибкие" конфиги
> помечаются флагом %config(noreplace) -- при обновлении пакетов такие конфиги
> сохраняются.  Либо, в противном случае, просто %config -- при обновлении пакетов
> такие конфиги заменяются.

Нет, немодифицируемый конфиг -- это не конфиг.

> Развивая аналогию, я не вижу особого различия между init.d и macros.d конфигами --
> это немодифицируемые конфиги.  Администратор залезает в них только в самом
> крайнем случае.

init.d -- это скрипты.  Называть их конфигами язык не поворачивается.
Comment 10 Dmitry V. Levin 2008-11-24 01:16:52 MSK
(In reply to comment #1)
> 4.0.4-alt96.12-7-gd975fc6

rpm-4.0.4-alt96.13