On Thu, Feb 28, 2008 at 09:34:19PM +0300, Dmitry V. Levin wrote: > > Насколько я вижу, сейчас есть всего один пакет, который "меньше" rpm > > и в котором есть shell-скриптлет -- coreutils, в котором дёргается > > install-info. Значит, в coreutils желательно вручную прописать > > зависимость на /bin/sh. Ещё в принципе желательно добавить зависимость > > на /bin/sh в info-install. > > А как быть с зависимостями на coreutils? Их тоже предлагается optimize out > в сочетании с гарантией того, что coreutils должен быть установлен раньше > других пакетов? Так я думал. Точнее, я думал, что такая система является non-conforming (не удовлетворяющая положениям стандартов, которые утверждают, что в любой системе должны присутствовать /bin/sh, /bin/rm и т.д.), поэтому такие системы я наскоро исключил из своего обдумывания. :) > В любом случае убирать автозависимости вида /bin/cp не вижу смысла: обычно > такие зависимости это признак ошибки неиспользования $PATH. Ну уж не такая это и ошибка, хотя и для явного указания путей на базовые системные команды обычно нет хорошей причины. Просто ещё есть дефолтный alias cp='cp -i', он вообще-то не активизируется для неинтерактивных шеллов (в скриптах), но иногда всё равно хочется его избегать. :) > > Таким образом, если заморачиваться этой гипотетической проблемой, > > то зависимость на /bin/sh нужна в трёх местах -- rpm, coreutils > > и info-install. Я считаю это достаточно надёжной конструкцией -- > > больше нигде зависимость на /bin/sh можно не ставить. > > А как гарантировать, что эти три кита будут установлены раньше других > зависимых пакетов, если действует оптимизация зависимостей на coreutils? Получается, что никак. Но, с другой стороны, наличие /bin/sh и как минимум некоторых команд из coreutils -- это свойство conforming среды. Кстати, библиотечная функция system(3) неявно требует /bin/sh. Не значит ли это, что в пакет glibc-core нужно добавить зависимость на /bin/sh? Ведь гипотетически возможно, что, допустим, в "%post -p /usr/bin/post" в программе на Си (/usr/bin/post) используется system(3), и всё обломится. В общем, возможны два разных подхода: 1) полагаемся на то, что есть корректно инициализированная conforming минимальная рабочая среда; можно кое-что оптимизировать; 2) ни на что не полагаемся, ничего не оптимизируем.