LINUX.ORG.RU

Какие-то сохранённые кеши настроек старых версий пакетов заменяют актуальные?

 


0

0

Давненько я тут не была. Раньше при использовании Gentoo мне казалось (специально не приглядывалась), что после даунгрейда пакетов и возврата из даунгрейда на пакеты из актуальной версии стабильной ветки пакетов дистрибутива, некоторые пакеты сохраняют свою версию от даунгрейда. Недавно решила поиграть в Dragon Age Origins и накатить Wine до версии 3.0 где сохранена настройка Direct3D strictdrawordering=disabled, благодаря которой в игре проигрываются *.bik ролики коих в игре много сюжетных в том числе и разочаровавшись производительностью wine 2.21 с winetricks-20200412 решила откатиться на актуальную версию wine 6.5 и соответственно winetricks-20210206. К моему удивлению emerge мне предложил поставить wine 6.1 вместо 6.5 и предложил winetricks-20200412 вместо актуального winetricks-20210206. Где-то есть какие-то кеши старых пакетов или какие-то настройки от пакетов, которые перебивают актуальные версии пакетов или что происходит?

★☆☆

winetricks-20200412

Предложил поставить текущую стабильную, т.к. более новая не размаскирована?

wine

Такого мпаеета в gentoo нет, есть virtual/wine, который тянет wine-vanilla или wine-staging, но у обоих в дереве максимум версия 6.3. Откуда должна была взяться 6.5?

grem ★★★★★
()

Нашла проблему. После подключения через eselect repository репозиторий с wine-staging установкой старого вайна и последующим удалением и отключением репозитория, в /var/db/repos нужно удалять директории с отключенными репозиториями иначе просто лежащие там пакеты в кеше имеют походу приоритет выше основного репозитория системы и emerge будет видеть эти пакеты и предлагать их устанавливать. После удаления всех директорий от неиспользуемых репозиториев в emerge появился wine-staging-6.3, который хочет использовать актуальный winetricks-20210206 вместо winetricks-20200412 от wine-staging-2.21.

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

Если мы планируем использовать разные репозитории через стандартный eselect repository, то нужна команда, после введения которой актуализируется основной репозиторий выбранной например стабильной ветки пакетов установленного профиля системы.

With ★☆☆
() автор топика
Ответ на: комментарий от grem

Предложил поставить текущую стабильную, т.к. более новая не размаскирована?

Нет. В кеше /var/db/repos лежал wine-staging-2.21, а максимальная версия winetricks могла быть установлена под версию wine-staging-2.21 версии winetricks-20200412, а максимальная же версия wine-staging используемая winetricks-20200412 после удаления стороннего репозитория могла использовать wine-staging-6.1, хотя в ситемном репозитории Gentoo уже был виден wine-staging-6.3 и поэтому никакие манипуляции с маскированем версий и размаскированием не работали, об этом я не написала выше. Но это как-то неправильно в целом, что кеши пакетов от сторонних репозиториев имеют приоритет выше версий пакетов основной системы по умолчанию, даже если пакеты из сторонних репозиториев имеют старую версию. Где-то эти приоритеты пакетов из сторонних репозиториев должны настраиваться над системными Gentoo и наоборот.

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

Так следить нужно откуда ставится пакет, emerge же пишет откуда ставит, например, имя_пакета::gentoo.

У меня только оверлей steam и guru подключены, в которых пакеты не пересекаются с основным деревом

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

Да мне-то чего ссылки копипастишь. )) Это надо копипастить тем кто является мейнтейнером пакета eselect repository. Это вообще на багу похоже, ну или на недосмотр работы приоритетов с отсутствующим упоминанием в хендбуке к пакету eselect repository на соответствующей странице https://wiki.gentoo.org/wiki/Eselect/Repository. Если бы я изначально не знала, какие версии пакетов мне нужны, то я бы и не заметила как устаревший пакет из давно удалённого репозитория остался в кеше репозиториев системы и влиял оттуда на основную системную ветку Gentoo, а в последствии это бы привело к сложно разрешимой циклической зависимости в будущем. Вот чем это всё опасно.

With ★☆☆
() автор топика
Последнее исправление: With (всего исправлений: 2)
Ответ на: комментарий от grem

Если бы emerge устанавливал пакеты с учётом имени репозитория, а не версии пакета или внятной работы атомов, то проблемы не было бы. С разной версией пакета и одноимённого пакета, который есть в системе основного репозитория Gentoo и начинаются эти странности. Ещё приоритет из кеша отключенного репозитория при котором emerge предлагает ставить пакет устаревшей версии из отключенного репозитория игнорируя основной системный Gentoo - вообще бред.

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

Сложно что-либо сказать не видя конфигов. Может у тебя в них пакеты из основной репы замаскированы.

eselect для реп вообще не использовал (доки подправить неплохо бы, упомянув приоритеты), но, возможно, по умолчанию приоритет для внешних выше. По крайней мере для local при одинаковых версиях оставит установленный из local.

emerge умеет ставить с учётом имени репы emerge имя_пакета::имя_репы и всегда показывает откуда ставится пакет таким же образом.

Можно маскировать/размаскировать с учётом репы.

Если считаешь, что при отключении репы пакет ставится оттуда, то это скорее баг - опиши его в багзилле.

Скорее всего это он: https://bugs.gentoo.org/676930

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 3)

можно попробовать замаскировать репозиторий целиком и размаскировать только нужные пакеты, не знаю правильно ли это

doc0
()

portage при вичислении зависимостей оставляет установленные пакеты в высоком приоритете и в world файле могут быть указаны слоты репозитории и лишние пакеты
чтобы сделать перерасчет зависимостей нужно указывать нужные флаги и пакеты

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