Не засоряем Мир

Не так давно в зависимости мета-пакетов был добавлен sys-kernel/linux-firmware и у меня на домашнем компе выскочила такая вот коллизия:

...
[binary  N    #] sys-kernel/linux-firmware-20110604  USE="-savedconfig" 
[uninstall     ] x11-drivers/radeon-ucode-20110302 
[blocks b      ] x11-drivers/radeon-ucode ("x11-drivers/radeon-ucode" is blocking sys-kernel/linux-firmware-20110604)
[binary     U #] sys-kernel/calckernel-3.4.15-r10 [3.4.15-r8]
[binary     U #] sys-apps/calculate-builder-2.2.18 [2.2.16-r4]
[binary     U #] sys-apps/calculate-utilities-2.2.18 [2.2.16-r9]
[blocks B      ] net-wireless/iwl6050-ucode ("net-wireless/iwl6050-ucode" is blocking sys-kernel/linux-firmware-20110604)                                                                                                                   

 * Error: The above package list contains packages which cannot be
 * installed at the same time on the same system.

  (net-wireless/iwl6050-ucode-41.28.5.1::gentoo, installed) pulled in by
    net-wireless/iwl6050-ucode required by @selected

  (sys-kernel/linux-firmware-20110604::gentoo, binary scheduled for merge) pulled in by
    sys-kernel/linux-firmware required by (sys-kernel/calckernel-3.4.15-r10::calculate, binary scheduled for merge)


For more information about Blocked Packages, please refer to the following
section of the Gentoo Linux x86 Handbook (architecture is irrelevant):

http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?full=1#blocked

Надо сказать, что беспроводные сети у меня выключены, в /etc/make.conf стоит:

CALCULATE=“nowireless”

Тупиковая ситуация, противоречащая всем законам физики. С одной стороны, пакет sys-kernel/linux-firmware конфликтует с net-wireless/iwl6050-ucode, с другой - net-wireless/iwl6050-ucode должен быть принудительно удален обновленным app-misc/cl-wireless-meta. Ну это на случай, если бы у меня не была отключена поддержка беспроводных карт.

Попробовал так:

emerge -a app-misc/cl-wireless-meta

Получил туже ошибку.
Закомментировал CALCULATE="nowireless" - тоже не помогло.

Вспомнил тот совет, который сам же всем даю - не засоряйте мир!

Смотрим:

cat /var/lib/portage/world
app-emulation/virtualbox-bin
app-misc/calculate-meta
media-tv/xbmc
media-video/minitube
media-video/mplayer2
net-misc/whois
net-p2p/ktorrent
www-client/firefox
x11-drivers/nvidia-drivers
net-wireless/iwl6050-ucode

Вывод

Не помню по какой причине, но я обновлял отдельно пакет net-wireless/iwl6050-ucode. Он благополучно вписался в world, содержащий установленные пакеты - те, что вы ставили командой emerge без зависимостей. На смену net-wireless/iwl6050-ucode пришел пакет sys-kernel/linux-firmware, который конфликтует с net-wireless/iwl6050-ucode. Чтобы избежать конфликта, app-misc/cl-wireless-meta пытается его удалить (к слову, это одна из причин перехода на мета-пакеты). Но удалить из world не так-то просто! Вообще я не знаю других путей, кроме как отредактировать этот файл вручную. После этого все конечно же заработало.

Совет

# Если вы обновляете установленные в системе пакеты, используйте опцию -1, например так:

emerge -a1 net-wireless/iwl6050-ucode

# Старайтесь вместо обновления отдельных пакетов, обновлять весь мир:

emerge -uDNa world

Все установленные дополнительно программы можно всегда посмотреть в /var/lib/portage/world.

У меня помимо [blocks B ] net-wireless/iwl6050-ucode
вылезла еще целая куча этих net-wireless/iwl****-ucode

Удалял их все по схеме:

emerge -s iwl****-ucode (получить название и версию пакета ****-ucode)
emerge --unmerge =net-wireless/iwl****-ucode-**.**.*.*

и так с каждым net-wireless/iwl****-ucode

После этого помех для установки sys-kernel/linux-firmware-20110604 нет и система нормально обновляется, после чего успешно пересобрал мир, установка этих net-wireless/iwl****-ucode больше не предлагалась.