On Wed, Sep 24, 2008 at 11:28:41PM +0400, Dmitry V. Levin wrote: > > 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-скриптом? На практике дублирование зависимостей Requires(post), скорее всего, ничего не даст, кроме *гарантии*, что упорядочение всегда будет правильным. Но как раз нужна именно гарантия, иначе можно договориться до того, что на практике зависимости Requires(pre) и Requires(post) вообще не нужны.