[devel] %pre in update package

Led =?iso-8859-1?q?ledest_=CE=C1_gmail=2Ecom?=
Вс Ноя 23 02:34:18 MSK 2008


On Sunday, 23 November 2008 01:23:40 Dmitry V. Levin wrote:
> On Sun, Nov 23, 2008 at 01:19:19AM +0200, Led wrote:
> > On Sunday, 23 November 2008 01:08:37 Dmitry V. Levin wrote:
> > > On Sun, Nov 23, 2008 at 01:01:10AM +0200, Led wrote:
> > > > On Sunday, 23 November 2008 00:53:47 Dmitry V. Levin wrote:
> > > > > On Sat, Nov 22, 2008 at 01:24:27AM +0200, Led wrote:
> > > > > > On Saturday, 22 November 2008 00:49:30 Led wrote:
> > > > > > > А почему у нас не обрабатывается %pre скрипт, если пакет
> > > > > > > обновляется apt'ом? Если обновлять "rpm -U", то скрипт
> > > > > > > отрабатывает.
> > > > > >
> > > > > > Всё таки отрабатывает, но не так, как в случае
> > > > > > rpm -U
> > > > > >
> > > > > > По крайней мере,
> > > > > > find ...
> > > > > > при обновлении apt'ом не отработал (не нашёлся?)
> > > > > >
> > > > > > /bin/find ...
> > > > > > отработал
> > > > >
> > > > > Обычно такого не бывает, чтобы /bin выпал из непустого $PATH.
> > > > > По крайней мере, я бы не стал дальше искать баги в такой системе.
> > > > >
> > > > > > Но всё равно, ИМХО неправильно это (различное поведение при
> > > > > > apt-get update package
> > > > > > и
> > > > > > rpm -U package
> > > > >
> > > > > Обычно никакого различия в поведении не наблюдается.
> > > >
> > > > http://git.altlinux.org/people/led/packages/erlang-doc.git
> > >
> > > Вы предлагаете это собрать и установить apt'ом?
> >
> > Нет, не предлагаю. Я показал пример, в котором это произошло.
>
> Это пример глючного %pre-скрипта.
>
> > > А какой смысл в написанном там действии
> > > %pre
> > > /bin/find %_docdir/%bname-%version/lib -type l -delete
> >
> > Я не знаю как иначе rpm заставить удалить симлинки, если в новом релизе
> > пакета эти симлинки на каталоги поменялись на реальные каталоги.
>
> Сперва проверьте, что каталог %_docdir/%bname-%version/lib существует.

Проверял. При существующем каталоге и симлинках в нём "rpm -U" 
отрабатывает %pre-скрипт, а "apt--get install" - нет и пытается обновить 
пакет (естественно, обламывается).

>
> cd %_docdir/%bname-%version/lib 2>/dev/null &&
> find -type l -delete ||:

Зачем? find сам проверяет наличие каталога, в которые его натравливают, 
если %_docdir/%bname-%version/lib не существует, find ничего не делает.
"2>/dev/null ||:" действительно стОит указать, спасибо.

-- 
Led


Подробная информация о списке рассылки Devel