[РЕШЕНО]Почему emerge -puDNv world находит не все обновления
pascorp 15 октября, 2022 - 10:42
# emerge -puDNv world These are the packages that would be merged, in order: Calculating dependencies... done! Total: 0 packages, Size of downloads: 0 KiB eix vkd3d [U] app-emulation/vkd3d Доступные версии: 1.5^t {ncurses spirv-tools ABI_MIPS="n32 n64 o32" ABI_S390="32 64" ABI_X86="32 64 x32"} Установленные версии: 1.2(13:16:36 20.11.2020)(-spirv-tools ABI_MIPS="-n32 -n64 -o32" ABI_S390="-32 -64" ABI_X86="32 64 -x32") Домашняя страница: https://gitlab.winehq.org/wine/vkd3d/ Описание: D3D12 to Vulkan translation library * app-emulation/vkd3d-proton Доступные версии: ~2.6 **9999*l {crossdev-mingw debug extras ABI_X86="(+)32 64"} Домашняя страница: https://github.com/HansKristian-Work/vkd3d-proton/ Описание: Fork of VKD3D, development branches for Proton's Direct3D 12 implementation # emerge -pv app-emulation/vkd3d These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] dev-util/spirv-headers-1.3.224::gentoo 427 KiB [ebuild U ] app-emulation/vkd3d-1.5::gentoo [1.2::gentoo] USE="ncurses%* -spirv-tools" ABI_X86="32 (64) (-x32)" 759 KiB Total: 2 packages (1 upgrade, 1 new), Size of downloads: 1 185 KiB
Т.е. мне казалось, что после emerge -puDNv world не должно оставаться не обновленных пакетов.
# eclean -d distfiles * Building file list for distfiles cleaning... * Your distfiles directory was already clean. The following unavailable installed packages were found app-emulation/vkd3d-1.2
Так же не понятно почему ругается eclean
»
- Для комментирования войдите или зарегистрируйтесь
Потому что так надо.
emerge -vpuND --backtrack=40 @system @world
Очистка системы от ненужных/несуществующих пакетов (например, emerge -qc), потом уже чистка дистрибутивов: eclean-dist -d.
Информация к размышлению:
Опцию
-d
можно применять только тогда, когда портаж используется для этой одной системы, т.е. в системе нет виртуальных машин и/или других удалённых систем, разделяющих доступ к портажу (NFS
, 'mount --bind
' и т.п.) и отличающихся конфигурациями.Спасибо за ответ,
Спасибо за ответ, но:
Ну, тогда :)
Против лома нет приема:
emerge -qpe @system @world | grep " U "
Потом с ключиками -q1 пересобираем, что нужно.
Как оказалось, есть такие
Как оказалось, есть такие приемы :-) по предложенной команде все пакеты предлагается просто пересобрать.
Вобщем буду просто периодически выполнять EIX_LIMIT=0 eix -cu и по результату пересобирать в ручную пакеты.
Спасибо.
Поломаешь систему.
Значит, нечего обновлять. Бывают ситуации, когда какой-то пакет требует по зависимости не последнюю версию зависимого пакета, а вполне определенную. Обновишь - поломаешь. eix -Icu (ключик I нужен, чтобы ограничиться установленными пакетами, а не весь portage высыпать), например, это не учитывает, просто даст пакеты которые можно обновить, но зависимости развалятся.
P.S.
Очевидно, у тебя есть версии, собранные вручную с явным указанием версии. Например, командой вида:
emerge -q =gtkmm-3.24.6-r1
В world пакет gtkmm попал с явным указанием версии, значит, обновляться не будет. Но! В приведенном примере он необходим именно третьей версии. Если обновить до четвертой, есть такая возможность, то Inkscape, которому он нужен, все равно потребует третью версию. За коллизии и несовместимости уже отвечает обновлятор, он и должен будет разбираться с этим странным зоопарком. Кстати, если в world попадают пакеты с указанием версий, на них и emerge -qc не действует. Считается, что именно этот пакет этой версии и есть то, что нужно создателю мира, а ему виднее, кто кому буратино.
В файле /var/lib/portage/world не должно быть указаний версий - раз. Должны быть перечислены только конечные пакеты, от которых уже ничего не зависит, это два. Цепочки зависимости строятся по ebuild'ам системой portage и никак иначе.
Для справки:
Последнее утверждение уже не соответствует текущему функционированию портажа: ныне он при обновлении пакетов сам пихает в
/var/lib/portage/world
практически все пакеты! Можешь для проверки выполнить командуи удивиться! :D
Сделал.
...@... ~ $ grep lib /var/lib/portage/world
app-office/libreoffice
...@... ~ $ grep -c '' /var/lib/portage/world
90
Это все (90 строк и единственный lib - libreoffice). Приведи свой результат. Хочу удивиться.
Удивляйся! :)
Кстати, а какой у тебя профиль? Мой:
И еще - покажи инфу портажа. Моя:
Эт запросто.
... @ ... ~ $ eselect profile list | grep "*"
[1] default/linux/amd64/17.1 (stable) *
... @ ... ~ $ emerge -qpe system world| grep -c ''
920
Ну, и --info от emerge: https://dpaste.com/8CEB7N5CJ
Объемом твоего мира удивлен! Три четверти всех пакетов системы. При моей десятой выглядит странно. %)
Ну, я как бы и рулю не слишком простыми системами! :D
Видимо разница в том, что ты, похоже, программист, а я - сисадмин! И мой комп не только как терминал и/или традиционный десктоп используется, но и как полигон для опробования разных штучек! ;) Во многом благодаря Генте... :) на бинарных дистрибутивах так не поиграешься...
.
Пользуюсь виртуализацией. Воспроизводство и масштаб.
Не понятно, почему у нас такая разница в поведении портажа...
Единственное серьёзное отличие я увидел в том, что ты не используешь системдю... Неужели это может повлиять?..
Не должно.
Не должно. Разница в использовании системы.
Я понимаю, что не должно...
хотя и не исключаю такого... возможно без системд используются более старые версии пакетов, например...
Надо бы сравнить, но лень! :) Кстати, если вдруг захочешь сравнить: http://dpaste.com/3MQZ8FGM7
Незачем.
Достаточно одинаковых связок ядро-gcc-binutils-glibc.
Выискивать отличия нескольких сотен пересекающихся среди почти трех тысяч... Неоправданно. Глянул краем глаза, отличия уровня X.Y.Z и X.Y.Z-r1.
Ты не о том, ну да ладно...
Причём тут тулчейн, если вопрос был о различном функционировании портажа?!
Поэтому нужно сравнивать только его утилиты.
SysA написал(а):Причём тут
Portage версии 3.0.38.1. Пока ему не скажешь, он ничего в world не пишет.
# equery -q l app-portage/*
.
cat /var/lib/portage/world
equery -q l "*"
Еще один USE исключил.
Еще один USE исключил для portage, -rsync-verify. Минус два пакета из мира. :)
Не самое лучшее решение...
1. Отключать проверку стоит только для своих доверительных репозиториев - например, у меня стоят зеркалирующие прокси для портажа, которые делают проверку автоматически для каждого изменения. А все рядовые хосты пользуются только этими прокси. Поэтому на хостах проверка отключена.
2. Не вижу смысла гнаться за минимизацией мира...
Еще лучше так:
А
eclean
не ругается, а предупреждает, что данная версия пакета отсутствует в репозитории. После полного обновления это сообщение пропадёт.Спасибо за ответ, но на
Спасибо за ответ, но на emerge -uDNU --with-bdeps=y --changed-deps=y --verbose-conflicts @world -pv пишет:
Total: 667 packages (667 reinstalls)
Т.е. предлагает просто пересобрать, а не обновить.
В то же время:
т.е. находит несколько пакетов которые могут обновиться, но почему-то не обновляются по общей команде emerge puDNv world
Все немножко не так, как ты себе представляешь...
Видимо это потому, что у тебя есть много некорректно собранных пакетов, вот тебе и предлагается полная пересборка, которая заодно и обновит пакеты. Так будет не всегда - при последующих обновлениях все должно быть нормально. Я так уже несколько лет делаю...
А не обновляются, потому как они, наверное, были поставлены по зависимости, и их, видимо, нет в
/var/lib/portage/world
, и они не учитываются при расчёте зависимостей по опции-D
. Именно эту проблему/свойство устраняет набор опций, который я дал в предыдущем сообщении.Кстати, после обновления рекомендую выполнить
revdep-rebuild -ipv
- возможно будет найдено несоответствие библиотек, которое могло вызвать полную пересборку, о которой ты упомянул вначале.Также после окончательного обновления настоятельно рекомендую
emerge --depclean -a
, чтобы убрать ненужные пакеты. Но перед тем, как разрешить удаление, внимательно просмотри список - иногда система может предложить удалить нужные тебе пакеты. В этом случае их надо будет зафиксировать в портаже вручную.Всем спасибо.
Буду периодически, после обновления, выполнять EIX_LIMIT=0 eix -cu для выявления таких пакетов.