LINUX.ORG.RU

не понимаю поведения оператора слота :=

 , ,


1

1

Опять проблемы с обновлением генты. Имеется выхлоп emerge -avDuN --with-bdeps=y @world:

!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

dev-lang/perl:0

  (dev-lang/perl-5.24.1-r1:0/5.24::gentoo, ebuild scheduled for merge) pulled in by
    =dev-lang/perl-5.24* required by (virtual/perl-AutoLoader-5.740.0-r4:0/0::gentoo, installed)
    ^              ^^^^^                                                                                                                               
    (and 48 more with the same problem)

  (dev-lang/perl-5.22.3_rc4:0/5.22::gentoo, installed) pulled in by
    dev-lang/perl:0/5.22=[-build(-)] required by (dev-perl/XML-Simple-2.200.0-r1:0/0::gentoo, installed)
                 ^^^^^^^^                                                                                                                   
    (and 146 more with the same problem)

Как мы видим, у нас dev-lang/perl желает обновиться до версии 5.24, но уже установленные модули перла (в eclass'е которых написано что-то типа DEPEND=«dev-lang/perl:=[-build(-)]») препятствуют этому. Очевидно, на момент установки модулей версия перла была 5.22, в соответствии с логикой оператора слота := в DEPEND).

Знатокам вопрос — а как ж emerge сказать, чтобы он все ставшие «неактуальными» слоты с оператором := таки обновил? Понятно, что можно решить проблему топорно — установить новый dev-lang/perl без учета зависимостей (emerge --nodeps), а уж потом запускать обновление мира. Но очевидно, это не то, на что рассчитывали авторы портаджа.

---

UPD: горшочек, не вари. Первый оратор вполне объяснил суть происходящего. Всем спасибо.

★★★★★

Последнее исправление: demidrol (всего исправлений: 1)

уже установленные модули перла (в eclass'е которых написано что-то типа DEPEND=«dev-lang/perl:=[-build(-)]») препятствуют этому.

Дело не в этом.
--backtrack=10
Просто зависимостей очень много.

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

хм, погляжу. Зависимостей и правда много, обновление мира обсчитывается около пяти минут.

demidrol ★★★★★
() автор топика

рекомендую добавить в make.conf в EMERGE_DEFAULT_OPTS --ignore-built-slot-operator-deps=y

уменьшает время просчёта зависимостей при обновлении мира и избавляет от тупых ошибок, связанных с этими зависимостями. все проблемы, которые от этого могут возникнуть, решаются выполнением emerge @preserved-rebuild после обновления мира.

eternal_sorrow ★★★★★
()

Я добавил --backtrack=30, всё само разрулилось.

OldManClone ★★
()

:0/5.22=

:слот/сабслот
= — привязка к слоту/сабслоту, то есть пересборка пакета при изменении слота/сабслота зависимости.

У Пинкбайта лучше получается это объяснять.

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

Херовенький совет, он может доставить проблем.

Каких именно проблем? С учетом того, что есть FEATURES=«preserve-libs».

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

Каких именно проблем?

Таких, что можно не заметить (а большинство юзеров даже не читают выхлоп портажа про пакеты/конфиги/новости) момент, когда всё сломалось.

FEATURES=«preserve-libs»

Большинство юзеров не знают даже про FEATURES. Хотя, я где-то читал, что preserve-libs включен по дефолту (если явно не отключен в конфиге), только уже не помню где. Только это всё не избавляет от работы мозгом.

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

Ну в целом правильно, все это на свой страх и риск.

Deleted
()
Ответ на: комментарий от r3lgar

можно не заметить (...) момент, когда всё сломалось

что же это за момент такой?

где-то читал, что preserve-libs включен по дефолту

где-то

man portage?

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

что же это за момент такой?

Это тот момент, когда пытливый, но достаточно криворукий юзер садится перед компьютером и начинает жмякать по кнопочкам.

где-то

man portage?

Или там, или где-то в коде, или на гентовики. Через меня в сутки столько информации ходит, что я точно не вспомню источник информации, полученой полгода назад. Помню, что источник не левый.

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

где-то

man portage

вообще то это был намёк на то, что это не «где-то читал» а абсолютно точная инфа и этот факт даёт основания полагать, что ничего от данной опции не сломается. я лично вообще не понимаю, зачем эта возможность была добавлена, она только создаёт лишние проблемы при просчёте зависимостей

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

абсолютно точная инфа

То, что это точная инфа из достоверного источника — это я и сам помню.

ничего от данной опции не сломается

От юзера зависит.

я лично вообще не понимаю, зачем эта возможность была добавлена, она только создаёт лишние проблемы при просчёте зависимостей

Проблем она не создаёт, она от них избавляет. Точнее, даже не от проблем, а от проблемных юзеров. :3

А нытики, что портаж думает слишком медленно, были, есть и всегда будут.

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