Использование %{buildroot} в файле SPEC

Я создаю простой установщик RPM, мне просто нужно скопировать файлы в структуру каталогов, которую я создаю в процессе %install.

Процесс %install в порядке, я создаю следующую папку /opt/company/application/ с помощью команды mkdir -p %{buildroot}/opt/company/%{name}, а затем приступаю к копированию файлов и подкаталогов из моего пакета. Я попытался установить его, и он работает.

Сомнение у меня возникает при удалении. Я хочу удалить папку /opt/company/application/, и я думал, что вы должны использовать %{buildroot} в любом месте при ссылке на место установки. Поскольку я понимаю, что у пользователя может быть другая структура, и вы не можете предположить, что rmdir /opt/company/%{name}/ будет работать. Использование этой команды в разделе %postun успешно удаляет каталоги, тогда как использование rmdir ${buildroot}/opt/company/%{name} не удаляет папки.

Мой вопрос: не следует ли вам использовать ${buildroot} в %postun, чтобы получить правильное место установки? Если это не так, то почему?


person Carlos Pastor    schedule 18.09.2013    source источник


Ответы (1)


Не беспокойтесь об этом. Если вы заявите каталог как свой собственный в разделе %files, RPM сделает это за вас.

К вашему сведению, %{buildroot}, вероятно, не будет существовать на целевой машине.

person Aaron D. Marasco    schedule 19.09.2013
comment
Ну да, я объявляю этот каталог своим в разделе %files. Итак, все, что я пишу в разделе %files, нужно использовать в разделе %postun (если это необходимо), не так ли? И вы правы, %{buildroot} не должно существовать на целевой машине. - person Carlos Pastor; 19.09.2013
comment
По умолчанию вам не нужен %postun — RPM автоматически удалит любой файл, на который вы претендуете под %files. - person Aaron D. Marasco; 20.09.2013