Некоторые файлы моего пакета rpm (в зависимости от некоторых условий) удаляются в скриптлете %post, что вызывает предупреждение во время удаления: "удаление не удалось: нет такого файла или каталога"
Примечание. Эта проблема не возникает в системах с более ранними версиями RPM и наблюдается только на RHEL7 и SLES12.
Пытаясь в этом разобраться, я нашел в исходниках RPM (fsm.c) следующий код:
/*
* Missing %ghost or %missingok entries are not errors.
* XXX: Are non-existent files ever an actual error here? Afterall
* that's exactly what we're trying to accomplish here,
* and complaining about job already done seems like kinderkarten
* level "But it was MY turn!" whining...
*/
if (rc == RPMERR_ENOENT && missingok) {
rc = 0;
}
/*
* Dont whine on non-empty directories for now. We might be able
* to track at least some of the expected failures though,
* such as when we knowingly left config file backups etc behind.
*/
if (rc == RPMERR_ENOTEMPTY) {
rc = 0;
}
if (rc) {
int lvl = strict_erasures ? RPMLOG_ERR : RPMLOG_WARNING;
rpmlog(lvl, _("%s %s: remove failed: %s\n"),
S_ISDIR(sb.st_mode) ? _("directory") : _("file"),
fpath, strerror(errno));
}
}
Кажется, что %missingok атрибут виртуального файла решает проблему, но на самом деле атрибута %missingok нет, есть %config (missingok) вместо одного.
Что делает это странным для меня, так это то, что мы помечаем файл как файл config, хотя AFAICS нет строгой разницы между файлами конфигурации и обычными файлами.
Вопрос: Можно ли использовать вышеупомянутый атрибут для файлов без конфигурации (для двоичных файлов)? Это вызовет проблемы при обновлении или что-то в этом роде?
Спасибо.
.rpmsave
для измененных файлов, я полагаю (но это не должно иметь большого значения). При этом вы, вероятно, можете просто игнорировать предупреждение (например, комментарий указывает, что это не проблема). Мой вопрос, хотя, почему вы делаете это в первую очередь? - person Etan Reisner   schedule 14.04.2015%ghost
создайте символические ссылки на соответствующие двоичные файлы для системы и сохраните настоящие двоичные файлы в каталогах с архитегами и создайте символические ссылки в%post
(и перестаньте удалять неправильные двоичные файлы). знак равно - person Etan Reisner   schedule 14.04.2015rm -rf FILENAME 2>/dev/null || true
должен это сделать. - person Aaron D. Marasco   schedule 15.04.2015