On Fri, Aug 15, 2008 at 04:26:13PM +0400, Alexey Gladkov wrote: > Alexey Tourbin wrote: > >Обычно не следует выполнять прикладной > >код в BEGIN. > >BEGIN зарезервирован для всяких хитрых > >штук. > > То что грабля(с точки зрения запаковщика > rpm пакета) имеет красивую ручку, не делает > её удар менее болезненным. > > В моём случае, этот скрипт при обычном > исполнении нормально работает, а при > запаковке умирает с криками. Запаковка сводится к syntax check (syntax check строит дерево байткода, но не исполняет его, кроме блоков BEGIN; perl.req потом вклинивается в самом конце и ищет байткоды, которые означают загрузку модулей). Корень проблемы в том, что файлы лежат в RPM_BUILD_ROOT, а не там, где они будут лежать после установки пакета. Но это не единственная проблема такого рода. Например, RPATH, зашитиый в бинарик, может дать неправильный результат, потому что игнорирует RPM_BUILD_ROOT. > Я не знал про такие тонкости в обработке > BEGIN, как и автор скрипта. Поэтому я решил > предупредить, если кто ещё не знает.