# Циклические зависимости между udev и gentoo-sources

## Russlan

Добрый день.

Имеется сервер с Gentoo, который к сожалению давно не обновляли.

Архитектура системы: ~x86

Ядро: 2.6.32-r7

udev: 171-r6

Почитал новости, понял, что нужно будет обновлять udev. Portage мне предлагает перейти на sys-fs/udev-212-r1. Для перехода на версии udev страше udev-200 мне нужно пересобрать ядро с опцией CONFIG_DEVTMPFS, а для перехода на версии страше udev-210 еще и с опциями CONFIG_FHANDLE и CONFIG_NET, однако в ядре 2.6.32-r7 я нашел поддержку только CONFIG_DEVTMPFS.

Пересобрал ядро 2.6.32-r7 с поддержой CONFIG_DEVTMPFS.

При попытке установить соурсы более нового ядра обнаружил непонятную зависимость sys-kernel/gentoo-sources-3.12.21-r1 от sys-fs/udev-212-r1:

```

emerge -pv gentoo-sources

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild  N     ] sys-devel/bc-1.06.95  USE="readline -libedit -static" 284 kB

[ebuild    U   ] sys-fs/udev-212-r1 [171-r6] USE="acl%* firmware-loader%* kmod%* static-libs%* -doc% -gudev -introspection (-selinux) (-action_modeswitch%) (-build%) (-debug%) (-edd%) (-extras%) (-floppy%) (-hwdb%) (-keymap%) (-rule_generator%*) (-test%)" 0 kB

[ebuild  N     ] virtual/libudev-208:0/1  USE="static-libs" 0 kB

[ebuild  N     ] virtual/udev-208-r2  USE="static-libs -gudev -introspection" 0 kB

[ebuild  N     ] sys-apps/hwids-20140317  USE="udev" 0 kB

[ebuild  N     ] sys-fs/udev-init-scripts-26-r2  0 kB

[ebuild  NS    ] sys-kernel/gentoo-sources-3.12.21-r1:3.12.21-r1 [2.6.32-r7:2.6.32-r7] USE="-build -deblob -experimental -symlink" 75,196 kB

Total: 7 packages (1 upgrade, 5 new, 1 in new slot), Size of downloads: 75,479 kB

```

Так как не нашел в portage ебилдов udev моложе udev-212-r1, то попытался собрать его, на что конешно получил:

```

make: *** [src/libsystemd/sd-bus/libsystemd_internal_la-sd-bus.lo] Error 1

make: *** [src/libudev/libudev_la-libudev-monitor.lo] Error 1

 * ERROR: sys-fs/udev-212-r1::gentoo failed (compile phase):

 *   emake failed

 *

 * If you need support, post the output of `emerge --info '=sys-fs/udev-212-r1::gentoo'`,

 * the complete build log and the output of `emerge -pqv '=sys-fs/udev-212-r1::gentoo'`.

 * The complete build log is located at '/var/tmp/portage/sys-fs/udev-212-r1/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/sys-fs/udev-212-r1/temp/environment'.

 * Working directory: '/var/tmp/portage/sys-fs/udev-212-r1/work/systemd-212-.default'

 * S: '/var/tmp/portage/sys-fs/udev-212-r1/work/systemd-212'

>>> Failed to emerge sys-fs/udev-212-r1, Log file:

>>>  '/var/tmp/portage/sys-fs/udev-212-r1/temp/build.log'

 * Messages for package sys-fs/udev-212-r1:

 *   CONFIG_FHANDLE:     is not set when it should be.

 * Please check to make sure these options are set correctly.

 * Failure to do so may cause unexpected problems.

 * ERROR: sys-fs/udev-212-r1::gentoo failed (compile phase):

 *   emake failed

 *

 * If you need support, post the output of `emerge --info '=sys-fs/udev-212-r1::gentoo'`,

 * the complete build log and the output of `emerge -pqv '=sys-fs/udev-212-r1::gentoo'`.

 * The complete build log is located at '/var/tmp/portage/sys-fs/udev-212-r1/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/sys-fs/udev-212-r1/temp/environment'.

 * Working directory: '/var/tmp/portage/sys-fs/udev-212-r1/work/systemd-212-.default'

 * S: '/var/tmp/portage/sys-fs/udev-212-r1/work/systemd-212'

```

Таким образом, ни ядро новое не скачать, ни udev не обновить...

Подскажите плиз, как бы мне эту ситуацию разрешить?

Заранее благодарю всех ответивших!

----------

## Pinkbyte

1) Убедитесь что в ядре есть CONFIG_NET и CONFIG_FHANDLE - это, вкупе с CONFIG_DEVTMPFS обязательный минимум для работы udev-212;

2) emerge -1O gentoo-sources, eselect kernel set, компилим ядро(и делаем emerge @module-rebuild или module-rebuild rebuild если нужно), ставим, прописываем в загрузчик

2а) прописываем в загрузчик net.ifnames=0(если нежелаем Predictable network interface names) или не делаем это, но тогда правим симлинки на имена сетевых интерфейсов

3) emerge -1u sys-fs/udev

4) Ребут

----------

## TigerJr

Удали сначала udev-171-r6

emerge -C udev 

установи gentoo-sources

emerge -av gentoo-sources 

ну и отрапортуй получилось ли что или нет?

 *Quote:*   

> Пересобрал ядро 2.6.32-r7 с поддержой CONFIG_DEVTMPFS.

 

Сервачок то очень старый, я бы не пытался его обновлять. 

Основная причина после emerge --sync у тебя удалятся ebuild'ы установленных программ. Затем после emerge portage изменится EAPI, а после этого ты уже ни чего в системе не переустановишь.

Лучше выводи сервер на ТО (тех обслуживание) и переустанавливай всё заного.

----------

