LINUX.ORG.RU

Работа с зависимостями

 ,


0

3

Пробую Gentoo, и уже не раз сталкиваюсь с ситуацией, когда два пакета зависят от одного и того же третьего, но первый из этих двух хочет, чтобы третий был собран с флагом икс, а второй хочет, чтобы третий был собран без оного. Среди предлагаемых решений есть следующие:

  • установить глобально флаг икс и пересобрать мир -uND world (вопрос - что делать, если это не сработает, и мне для установки второго пакета действительно нужна версия, собранная без этого флага?)
  • замаскировать второй пакет (непонятно тогда, как я смогу вообще установить его?..)
  • вмерджить второй пакет без проверки зависимостей, надеясь на то, что заработает и так (??? мне кажется, что это даже не решение, а очень грязный трюк, который может сработать, но нет абсолютно никаких гарантий работоспособности программы)

Как я понимаю, проблема в том, что пакет, установленный в систему, не идентифицируется портежем по набору USE-флагов, использованных при сборке. И мне непонятно, почему сделано именно так. Только для того, чтобы исключить дублирование пакетов в системе ? Разъясните, пожалуйста, правильно ли я всё интерпретирую, и есть ли решение этой проблемы в общем случае ?

PS. Погуглил по этой теме, наткнулся на менеджер пакетов Nix, который судя по описанию умеет делать именно то, что мне нужно, причем ещё и виртуализирует хранилище файлов, которые привносятся пакетом в систему при установке. То ли это, что мне надо ?

Примеры пакетов приведи.

science ★★☆
()
Ответ на: комментарий от l0stparadise

Пакет libxml, флаг icu. chromium требовал его отсутствия, а qutim - его наличия. Сейчас включил icu глобально, пересобираю всё, а пока собирается - интересуюсь вопросом. Но мне интересно не конкретное решение, а решение и объяснение этой ситуации в общем случае, поэтому и не хотел писать названия.

x_zealot
() автор топика
Ответ на: комментарий от x_zealot

пересобираю всё

Пересобирать всё не надо. Надо лишь обновить мир:

emerge -auvDN world

Но решение глобального включения icu правильное, сам с таким сталкивался, когда ставил KDE.

поэтому и не хотел писать названия.

Зря, названия как раз и надо писать, ну либо самому смотреть ebuild`ы пакетов.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

Да, именно так и делаю, неправильно обозвал процесс. Повторюсь только, что меня больше интересует проблема в общем случае. Потому как нет гарантии, что я не столкнусь с аналогичными траблами впоследствии.

x_zealot
() автор топика
Ответ на: комментарий от x_zealot

Повторюсь только, что меня больше интересует проблема в общем случае

Повторюсь в таком случае смотрите ebuild`ы конфликтующих пакетов и их зависимостей.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

А разве информация о таких случаях не выводится в выхлопе emerge ? Я в ебилды не залезал, но список флагов и конфликтующий пакет видел.

x_zealot
() автор топика
Ответ на: комментарий от x_zealot

Необходимость задействования или нет флага у пакета может тянуть флаг как в блокирующих пакетах, так и в их зависимостях. Поэтому нужно смотреть ebuild блокирующих пакетов и ebuild`ы зависимостей.

kostik87 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.