On Wed, Sep 24, 2008 at 03:43:54PM +0000, Alexey Tourbin wrote: > On Wed, Sep 24, 2008 at 05:16:13PM +0400, Dmitry V. Levin wrote: > > On Wed, Sep 24, 2008 at 12:37:26PM +0000, Alexey M. Tourbin wrote: > > > Когда в %post-скрипте пакета запускается программа, запакованная > > > в сам этот пакет, тогда некоторые зависимости Requires пакета нужно > > > продублировать в Requires(post). Например, если в пакете libgtk+2 > > > запускается программа gkt-update-icon-cache, то должна появиться > > > зависимость на новый пакет glib2 вида > > > Requires(post): libglib-2.0.so.0(GLIB_2.18). > > > > Зачем должна появляться такая зависимость? > > 1) пакет foo содержит программу /usr/bin/update-foo. > 2) /usr/bin/update-foo запускается в %post-срипте пакета foo. > 3) зависимость Requires(post): /usr/bin/update-foo естественным > образом оптимизируется (*), потому что на стадии выполнения %post-скрипта > файл /usr/bin/update-foo уже распакован (в любом случае, эта зависимость > ничего не дала бы). > 4) файл /usr/bin/update-foo слинкован с libglib-2.0.so.0(GLIB_2.18). > > Тогда rpm имеет право установить/обновить пакет glib2 после пакета foo. > Остается полагаться на топологическую сортировку пакетов при установке > или обновлении, но она может не сработать (rpm всё ещё имеет право > переупорядочить пакеты невыгодным нам образом), и тогда %post-скрипт > обломится. rpm пытается упорядочить установку пакетов согласно зависимостям. Невыгодное упорядочение может возникнуть только в случае, если имеет место цикл зависимостей, который был разорван неудачно. Насколько это реально, в применении к описываемой ситуации с %post-скриптом? -- ldv