Сохранять файлы/каталоги для обновления rpm в файле .spec(rpmbuild)

Я написал файл .spec на RHEL и собираю RPM с помощью rpmbuild. Мне нужны идеи о том, как справиться с ситуацией ниже.

Мой RPM создает пустой каталог журналов при первой установке в папке установки, как показано ниже.

 /opt/MyInstallation-1.0.0-1/some executables
 /opt/MyInstallation-1.0.0-1/lib/carries shared objects(.so files)
 /opt/MyInstallation-1.0.0-1/config/carries some XML and custom configuration files(.xml, etc)
 /opt/MyInstallation-1.0.0-1/log--->This is where application writes logs

Когда мой RPM обновляет MyInstallation-1.0.0-1, например, до MyInstallation-1.0.0-2, я получаю все правильно, как и хотел.

Но мой вопрос: как сохранить файлы журналов, написанные в MyInstallation-1.0.0-1? Или точно скопировать каталог журнала в MyInstallation-1.0.0-2.


person Owais    schedule 16.10.2014    source источник


Ответы (2)


Я считаю, что если вы пометите каталог как %config, ожидается, что у пользователя там будут файлы, поэтому он оставит его в покое.

person Aaron D. Marasco    schedule 18.10.2014

Я нашел решение или обходной путь для этого методом проб и ошибок :)

Я использую rpmbuild версии 4.8.0 на RHEL 6.3 x86_64. Я считаю, что это будет работать и на других дистрибутивах.

Если вы устанавливаете только с одним именем, например «MyInstallation», а не «MyInstallation-номер версии-номер сборки RPM», и создаете «каталог журналов как стандартный каталог (без дополнительных флагов на нем) [см. Исходный вопрос для сценария] Всякий раз, когда вы обновляетесь, обычно вы не трогаете каталог журналов. RPM оставит его содержимое как есть. Все, что вам нужно сделать, это убедиться, что вы сохранили строку ниже в разделе установки.

%install install --directory $RPM_BUILD_ROOT%{_prefix}/%{name}/log

Здесь префикс и имя являются макросами. Это не имеет ничего общего с основной концепцией.

Что касается конфигурационных файлов, ниже приведена очень точная таблица, которая поможет вам защитить ваши конфигурационные файлы. Опять же, это правило нельзя применять к журналам, создаваемым нашими приложениями.

http://www-uxsup.csx.cam.ac.uk/~jw35/docs/rpm_config.html

С уважением.

person Owais    schedule 20.10.2014
comment
Более того, убедитесь, что %files в обоих пакетах содержат спецификацию, включающую этот каталог, и тогда он не будет удален. Конечно, вам все равно придется создать этот каталог, если исходный код основной ветки этого не сделает - не будет ли чище исправить основной make-файл, чтобы также правильно создать каталог журнала? Я думаю, это личное предпочтение, но ключ в том, чтобы гарантировать, что файлы % в обоих проектах нуждаются в этом каталоге, чтобы он сохранялся между обновлениями. - person user2066657; 24.08.2017