Как создать RPM, который устанавливает файлы, зависящие от хоста - PullRequest
1 голос
/ 31 марта 2020

Мне нужно собрать один об / мин, который копирует содержимое файла A в /path/to/tartetfile, если имя хоста A . Во всех остальных случаях содержимое B должно быть скопировано в /path/to/targetfile. Я знаю, что это может быть неправильное использование оборотов, но я все еще должен сделать это так. Есть ли у вас какие-либо идеи, как сделать это элегантным способом?

Мое решение на данный момент будет создать пустой /path/to/targetfile в моем каталоге BUILD, а также /tmp/contents.tar.gz, который содержит файлы A и B. Затем в процедуре postinstall я извлеку соответствующие части от /tmp/contents.tar.gz до /path/to/targetfile и затем удалил тарбол. В процедуре предварительной деинсталляции я затем коснулся /tmp/contents.tar.gz, чтобы подавить ошибки отчета об оборотах для уже удаленного файла.

Мне кажется, это очень грязный способ сделать это. У вас есть лучшие?

1 Ответ

1 голос
/ 31 марта 2020

Если вы планируете злоупотреблять rpm вещами, для которых он не предназначен, вам придется делать грязные трюки.

Я не вижу другого обходного пути для вас. Я не вижу возможности удаления tar.gz et c, если только это (маленькое?) Дополнительное пространство действительно является проблемой для вас. Я бы предложил:

  • упаковать все файлы (A и B) в какой-то конкретный каталог c (/usr/lib/your-package или любой другой), а не в сжатый формат.
  • в * Секция 1010 * создает только символические ссылки, так что /path/to/targetfile указывает на /usr/lib/your-package/A или /usr/lib/your-package/B (символические ссылки почти не занимают места). Это имеет дополнительное значение, которое ls -l /path/to/targetfile покажет вам, на какой файл он указывает, давая вам информацию, является ли это файлом A или B.
  • в вашем разделе %files объявляет %ghost /path/to/targetfile для хорошего очистка после удаления.
...