Автор Тема: Сборка rpm-пакета: "chown ... operation not permited"?  (Прочитано 1762 раз)

Оффлайн Denjs

  • Начинающий
  • *
  • Сообщений: 9
Сборка RPM пакета останавливается из-за "chown ... operation not permited".

Этот chown - часть операций по установке описанных в make-файле. Мне нужно назначить root:root кладельцем скопированных файлов.

При нормальной установке - через "make install" все проходит нормально (потому что с правами рута)
А вот при сборке пакета с помощю gear+хешер (конкретнее через команду gear-hsh) - оно вываливается.
В спеке вызывается упомянутый выше make install .
%install
%make_install DESTDIR=%buildroot install
и пока не было chown в make-файле - все было ок. и пакет собирался и работал и безпакетная установка работала на ура.

как сделать так, что бы оно собиралось в пакет, и при этом не потеряло способности быть установленным через make install ?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 258
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Права root в rpm пакете задаются атрибутами, а не командой chown

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 935
    • Домашняя страница
    • Email
%build
...
%attr(0755,root,root) %_bindir/psi
Андрей Черепанов (cas@)

Оффлайн Denjs

  • Начинающий
  • *
  • Сообщений: 9
отлично)  :D  но !
я хочу сохранить возможность нормальной установки через "make install" без системы сборки пакетов.

Т.е. - как дать понять скрипту внутри мейкфайла, что он работает внутри сборщика пакетов? мне надо что бы по "#make install" сделанном внутри системы сборки пакетов - он пропускал "проблемный chown" возлагая данную задачу на "атрибуты внутри spec", а при штатном запуске из консоли - делал все как надо и сам?

анализ на "непустоту $DESTDIR" подойдет?
 т.к. у меня в спеке написано "%make_install DESTDIR=%buildroot " - то полагаю, что в штатном запуске из консоли из под рута оно будет пустым а при работе под системой сборки пакетов - нет.

или есть другие варианты?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 258
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Так в spec можно включить патч, который не будет отрабатываться в "обычном случае", я думаю, что DESTDIR может иметь какое-то значение.
Вообще-то не понятно зачем chown в Makefile. Обычно make install (если не собирается rpm), запускается от root. Гораздо больше смысла проверить перед chown, что make запущена от root.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 108
Т.е. - как дать понять скрипту внутри мейкфайла, что он работает внутри сборщика пакетов?
Делать в скрипте через переменную. Если она не определена, определять. А в RPM делать что-то вроде %makeinstall MYCHOWN="true".