Bug #640

Блокировки в бинарном профиле

Added by Артём Власов over 5 years ago. Updated over 5 years ago.

Status:New Start:03/20/2014
Priority:Urgent Due date:
Assignee:- % Done:

0%

Category:- Spent time: -
Target version:-
Votes: 0

Description

При обновлении часто возникают блокировки из-за того, что у пакетов изменились флаги, но эти флаги когда-то требовали другие пакеты. Сейчас уже не требуют, но бинарник был собран давным давно и его зависимости остались без изменений.

Чтоб было понятнее, поясню на примере sys-auth/polkit-kde-agent
Год назад он требовал dev-qt/qtgui с флагами accessibility и dbus, сейчас зависимость от qtgui из ебилда убрали, но версия не поменялась.

Судя по всему, именно из-за этого и не был пересобран пакет и в кеше по-прежнему старые зависимости.

polkit-kde-agent был собран аж 01.04.2013 и с тех пор не обновлялся.

Как-то нужно это отслеживать, т. к. эта проблема штатными средствами portage не решается никак. Ну или я не смог найти решения. А я хорошо искал.

Возможным решением может быть копирование таких пакетов в оверлей и незначительная смена их версии, чтобы они могли штатно пересобраться.

History

Updated by Артём Власов over 5 years ago

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

Updated by Артём Власов over 5 years ago

Нашел более-менее приемлемое решение, как обойти проблему при обновлении:

1. Выполняем

emerge -ep world

Появится сообщение о блокировке. Например такое:

emerge: there are no ebuilds built with USE flags to satisfy ">=dev-qt/qtgui-4.7.4:4[accessibility,dbus]".
!!! One of the following packages is required to complete your request:
- dev-qt/qtgui-4.8.5-r1::gentoo (Missing IUSE: dbus)
- dev-qt/qtgui-4.8.5-r1::gentoo (Missing IUSE: dbus)
(dependency required by "net-irc/konversation-1.4" [binary])
(dependency required by "@selected" [set])
(dependency required by "@world" [argument])

Смотрим самую верхнюю строчку, начинающуюся с 'dependency required by' и копируем имя пакета. В данном случае это net-irc/konversation

Снова выполняем предыдущую команду, но дополняем её параметром --usepkg-exclude 'net-irc/konversation'. Имя пакета обязательно в кавычках. Если пакетов несколько (см. ниже), имена разделяются пробелами.:

emerge -ep world --usepkg-exclude 'net-irc/konversation'

Если снова получили блокировку, аналогичным образом добавляем к флагу --usepkg-exclude очередное имя:

emerge -ep world --usepkg-exclude 'net-irc/konversation kde-misc/kde-gtk-config'

Повторяем до тех пор, пока emerge не перестанет выдавать сообщения о блокировках.

Затем меняем -ep на -uND и спокойно обновляемся.

Например прямо сейчас, чтобы обновиться, мне пришлось выполнить это:

emerge -uND world --usepkg-exclude 'net-p2p/ktorrent net-irc/konversation net-libs/libktorrent app-cdr/k3b kde-misc/synaptiks sys-auth/polkit-kde-agent sys-auth/polkit-qt dev-libs/libdbusmenu-qt media-video/kdenlive kde-misc/openofficeorg-thumbnail media-video/kffmpegthumbnailer kde-misc/kde-gtk-config'

Updated by Артём Власов over 5 years ago

Процитирую себя же, чтоб не затерялось:

(01:27:18 PM) Yuego1: seamuz: вощщем нету от eclean-pkg толку
(01:35:34 PM) Yuego1: seamuz: и по поводу твоего "финта ушами" с FEATURES: http://pastebin.calculate-linux.org/en/show/6460
(01:45:00 PM) Yuego1: seamuz: однако, http://pastebin.calculate-linux.org/en/show/6461
(01:47:32 PM) Yuego1: seamuz: и всё же, после всего проделанного выше: http://pastebin.calculate-linux.org/en/show/6462
(01:49:28 PM) Yuego1: я балбес. не тот флаг указал )
(01:52:35 PM) Yuego1: seamuz: фиг там. после того даже, как собрал бинарник принудительно, ничего не поменялось. блокировка никуда не делась
(01:52:35 PM) Yuego1: в общем, выходит, emerge плевать хотел на локальный кеш. зеркало для него важнее
(02:03:00 PM) Yuego1: хотя... всё сложнее. в бинпакете снова оказались те же зависимости. более того, они не в ебилде записаны. они  в kde4-base.eclass автоматом дописываются в DEPEND

Updated by Сергей Федотов over 5 years ago

Та балбес, это я. Я тебя дезинформировал. Надо собирать с -b а не с -k.

--buildpkg [ y | n ] (-b short option)
--usepkg [ y | n ] (-k short option)

Updated by Артём Власов over 5 years ago

Сергей Федотов wrote:

Та балбес, это я. Я тебя дезинформировал. Надо собирать с -b а не с -k.
[...]

Это-то я знаю. Только и сам головой не подумал - скопипастил. Потом-то ещё раз уже правильно всё сделал :)
Но в любом случае результат тот же - повторно даже из обновлённого пакета не хочет ставить.

Also available in: Atom PDF

Thank you!