Не удается написть ebuild с зависимостями
icerider 15 октября, 2008 - 13:15
Есть такая проблема:
необходимо написать ebuild, который в зависимостях требует postfix и procmail
postfix является virtual/mta
procmail требует virtual/mta
Если в системе не установлен postfix и в /etc/portage/porfile/virtuals не прописано, что
virtual/mta mail-mta/postfix
пакет не может установиться и говорит, что ssmtp и postfix блокируют друг друга.
Есть ли способ это как-либо обойти: необходимо, чтобы при установке этого пакета если не установлен не postfix не procmail не прочие virtaul/mta эти два пакета устанавливались.
»
- Для комментирования войдите или зарегистрируйтесь
re
Почитай в описании переменной DEPEND (на русском).
____________
Экономь электроэнергию! Выключи NumLock!
Развернутое описание проблемы
К сожалению мне не удается вписать в DEPEND зависимость так чтобы он правильно после этого устанавливался.
Объясню чуть по другому:
Пусть пакет для которого я деляю ebuild называет myprog
Для работы myprog требуется postfix а кроме него procmail
описывая в зависимосях myprog я указываю postfix и procmail причем именно в таком порядке.
Результаты:
а)Если у меня в системе стоит postfix emerge говорит мне ага все нашел, сейчас синсталю procmail а за ним myprog. Далее пакет прекрасно устанавливается.
б)Но есть другая ситуация: у меня в системе установлен, допустим ssmtp, (virtual/mta), я запуская emerge myporg оно хрюкает и говорит что ssmtp блокирует postfix: результат - тот что нужен. Ручками удаляю ssmtp - итог у меня в системе нет ни одной virtual/mta, запускаю emerge и в итоге вопли emerge по поводу того что ssmtp блокирует postfix, а постфик блокирует ssmtp. Если после этого вручную установить postfix - результат как вариант 'а', все отлично.
Ситуация которая происходит мной интерпретируется следующим образом:
при запуске emerge составляется список атомов, но при этом если не задан или не установлена virtual/mta он подцепляет под нее первую попавшуюся, а уже затем конфликтует с postfix.
Может есть вариант обхода
Если нет стандартного решения, может быть есть вариант обхода, просто procmail необходимо синсталлировать. На данный момент я решил это только emerge внутри pkg_setup() таких же решений в других пакетах я не нашел.
Способа нет
В данном конкретном случае способа обойти эту проблему на данный момент
нет. В portage 2.3 должны добавить возможность резолверу изменять
предыдущие решения на основе текущего состояния:
https://bugs.gentoo.org/1343
Так что ebuild вы пишите правильно, но вот пользователю придётся либо по
очереди делать сначала emerge postfix потом emerge ваш пакет, либо
использовать virtuals про который вы говорили, либо добавить ssmtp
в /etc/portage/package.mask.
re
Я правильно понял, что если для virtual/mta будет задан postfix, то проблема будет решена?
Можно соорудить конструкцию типа:
Кстати virtual/mta я в portage не видал. Оверлей?
____________
Экономь электроэнергию! Выключи NumLock!