rpmbuild создает файлы tmp и завершается неудачно из-за «Отказано в доступе» при попытке удалить их - PullRequest
1 голос
/ 09 декабря 2011

Фон

Я пытаюсь создать простой rpm, который просто копирует некоторые исходные файлы веб-приложения в каталог установки.Веб-приложение написано на Java и предоставляется поставщиком (то есть оно написано не мной).

rpm не может быть скомпилирован из-за ошибки, описанной ниже.Тем не менее, я успешно создал почти идентичные обороты для другого веб-приложения на основе Java того же производителя.Спецификационные файлы такие же, за исключением имен таких вещей, как путь установки и имя исходного файла.

Проблема

rpmbuild -v -bb --clean SPECS/web-app.spec завершается неудачно с Permission denied, когда он пытается удалить некоторые файлыв {BUILDROOT}/web-app-1.0/tmp.

Я проверил разрешения для файлов, которые rpmbuild не удалось удалить.Ниже приведены некоторые примеры:

-r--r--r--. 1 signer signer  1203 Jan 13  2006 Adler32.class
-r--r--r--. 1 signer signer 19498 Jan 13  2006 Deflate.class
-r--r--r--. 1 signer signer   628 Jan 13  2006 Deflate$Config.class
-r--r--r--. 1 signer signer  8673 Jan 13  2006 InfBlocks.class

Они имеют правильное имя владельца и группу для моего пользователя сборки (signer), но не имеют разрешения на запись.

Эти файлы не являются частью какого-либо процесса, который яявно определены в моей спецификации оборотов.Все, что делает мой spec-файл - это запускает %setup, создает каталог и копирует в него файлы.Исходный архив, извлеченный во время %setup, имеет правильные разрешения для всех своих файлов;Я могу извлечь и удалить дерево, которое оно создает.Эти файлы НЕ являются частью исходного архива.Я думаю, что tmp файлы связаны с некоторой обработкой файлов Java;rpmbuild долго переупаковывал jar-файлы в конце сборки.Я не уверен, для чего это нужно, и сомневаюсь, что это необходимо для развертываемого приложения.

Вопросы

Можно ли отключить перепаковку файла jar, чтобы это исправить?Есть другие идеи?

Ответы [ 2 ]

1 голос
/ 10 декабря 2011

В итоге самым простым решением было отключить перепаковку jar, добавив следующее определение в мой файл спецификаций: %define __jar_repack %{nil}

Ответ BRPocock также должен работать.Причина, по которой я отключил перепаковку банок вместо того, чтобы перепаковывать банки самостоятельно, как предложил BRPocock, заключается в том, что сборка rpmbuild занимает почти 10 минут при включенной переупаковке банок, но только минуту с отключенной.

1 голос
/ 09 декабря 2011

К сожалению, похоже, что .jar, вероятно, содержит каталоги без разрешений на запись, поэтому в сложившихся обстоятельствах ... извлеките содержимое затронутых jar самостоятельно, измените разрешения +w и перепакуйте их ...: - /

...