Не обновляются некоторые пакеты

Привет народ!

Я тут продолжаю активно изучать портаж и вот с чем столкнулся:

#eix sudo 
[U] app-admin/sudo
     Available versions:  1.6.8_p9 1.6.8_p9-r2 ~1.6.8_p11 ~1.6.8_p12 1.6.8_p12-r1
     Installed versions:  1.6.8_p9-r2(18:38:02 21.12.2006)(ldap -offensive pam -selinux -skey)
...
#emerge --update --deep -pv world 
...
Calculating world dependencies... done!

Total: 0 packages, Size of downloads: 0 kB

И таких штук 7-10..

Пачиму так?

Что выводит

Что выводит команда cat /var/lib/portage/world | grep sudo?

Ээть.. Пока

Ээть.. Пока ждалответа - обновил через: emerge --update sudo и теперь оно в world присутствует. Не знаю було ли оно там раньше.. :(

Но есть несколько пакетов которые я ещё не успел обновить руками.

Вот что есть:

#eix XML-Simple

[U] dev-perl/XML-Simple
     Available versions:  2.14 ~2.15 2.16
     Installed versions:  2.14(17:30:59 21.12.2006)
...

# emerge --update --deep -pv world
...
Calculating world dependencies... done!

Total: 0 packages, Size of downloads: 0 kB

# cat /var/lib/portage/world | grep Simple
-- Пусто
# dep --rev-depends XML-Simple
-- Пусто (!)
# emerge --depclaan -p 
...
Number to remove:     0

Ну ладно с судо - я им пользуюсь, скорее всего таки в ворде оно было.
А этот пакет? Он никому не нужен. Не обновляется. И не удаляется депклином.. Странный вопщем.

emerge --update world

emerge --update world ищет обновляемые пакеты в /var/lib/portage/world. а указанных пакетов там нет. возможно, указанные вами пакеты изначально мержились с опцией -1 (--oneshot), которая подавляет запись пакета в /var/lib/portage/world. и еще - после обновления дерева портежей надо делать update-eix

А что

А что тогда делать, чтобы обновить ВСЮ систему?
Предлагаю написать скрипт, который сделает find в /var/db/pkg и emerge -uN все что нашел..

find /var/db/pkg/ -maxdepth 2 -mindepth 2
Выдает все установленные пакеты, вот только префикс убрать.. читаю ман

_________________
~? **!

в новых версиях

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

--with-bdeps < y | n >
In dependency calculations, pull in build time dependencies that are not strictly required. This defaults to n for installation actions and y make.conf--depclean action.This setting can be added to EMERGE_DEFAULT_OPTS (see make.conf(5)) and later overridden via  the command line.

Re: А что

TolicH написал(а):
А что тогда делать, чтобы обновить ВСЮ систему?
Предлагаю написать скрипт, который сделает find в /var/db/pkg и emerge -uN все что нашел..

Проще устанавливать то что нужно без --oneshot, а потом пользоваться emerge -uDN world && emerge --depclean

ставить нужно

ставить нужно без -1, а обновлять зависимости - обязательно с -1 иначе расчёт зависимостей будет как зря, много что левого будет

Это

Это так.
Апдейт-еикс делал.
Но тогда не понятно -почему пакет который не в ворлде и не является чьей-то зависимостью не удаляется --depclean'ом?

значит

значит является

Я смотрю

Я смотрю dep'ом..
dep -L XML-Simple:

И ничего не выводит..

dev-perl/XML-Simple:

dev-perl/XML-Simple:
x11-misc/icon-naming-utils-0.8.2 >=dev-perl/XML-Simple-2
может он в систем попал?

Вот на досуге

Сделал скрипт, который 100% обновит ВСЕ, что есть в системе.

#!/bin/bash
find /var/db/pkg/ -maxdepth 2 -mindepth 2 | 
while read f; do 
  c=${f#"/var/db/pkg/"};
  qatom $c;
done | 
awk '{ printf $1"/"$2"\n"; }' |
xargs emerge -uN

_________________
~? **!

gentoo.org

На официальном сайте мне дали внятный ответ.

Пакет не будет обновляться по вызову emerge -uDN world в двух ситуациях:
1. Если он был поставлен с --oneshot, что пресекает запись его в /var/lib/portage/world
2. Если пакет не является прямой завимостью какого-либо пакета в world. Опция --deep считает зависимости, зависимости зависимостей итд до самого дна дерева portage. Но она не учитывает build dependencies - то есть пакеты, которые необходимы для сборки пакетов из world либо их прямых зависимостей. Для того, чтобы обновить такие пакеты, нужно использовать опцию --with-bdeps=y, но вопрос - а нужно ли вообще обновлять эти пакеты, если они не участвуют в работе системы.

Если есть желание обновить ну совсем все (даже то, что с -1 ставилось) - то скрипт, подобный тому, что лежит постом выше, является решением этой задачи.
_________________
~? **!

Ммм.. Мысль

Ммм.. Мысль понятна.

Получается что если этот пакет не учавствует в работе системы - я могу его спокойно удалить..

Зависимости,

Зависимости, которые не нужны никакому пакету с успехом можно удалить используя emerge --depclean
Крайне желательно выполнить revdep-revuild после этой операции.
________________
~? **!

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".