Косяк в rc-скрипте gentoo
Feb. 4th, 2021 01:56 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Промучился полчаса, пока понял, почему у меня после апдейта (плюс еще и ядро обновил) "поломался" udev (вставляю преобразователь CAN<>USB, а /dev/ttyUSB0 не появляется). Оказывается, ошибка в init-скрипте. Есть функция get_udevd_binary. Вот так она должна выглядеть:
а в оригинале break после обнаружения бинарника отсутствует! А какая-то падла занесла мне симлинк /lib/systemd/systemd-udevd -> ../../bin/udevadm!!! Понятное дело, что симлинк неправильный (должно быть /sbin/udevd), поэтому ничего не происходило и демон udevd не запускался! Добавил break и удалил мусор. Все работает.
P.S. А вообще, если бы разработчики пакета udev-init-scripts были бы приличными людьми, то такой проверки бы вообще не было, а просто было бы написано command="/sbin/udev". Потому что приличному человеку даже в голову не может прийти, что кто-то может пользоваться смесью openrc и systemd!
get_udevd_binary() { local bins bins="/sbin/udevd /lib/systemd/systemd-udevd /usr/lib/systemd/systemd-udevd" for f in ${bins}; do if [ -x "$f" ]; then command="$f" break fi done if [ -z "$command" ]; then eerror "Unable to find udev executable." return 1 fi }
а в оригинале break после обнаружения бинарника отсутствует! А какая-то падла занесла мне симлинк /lib/systemd/systemd-udevd -> ../../bin/udevadm!!! Понятное дело, что симлинк неправильный (должно быть /sbin/udevd), поэтому ничего не происходило и демон udevd не запускался! Добавил break и удалил мусор. Все работает.
P.S. А вообще, если бы разработчики пакета udev-init-scripts были бы приличными людьми, то такой проверки бы вообще не было, а просто было бы написано command="/sbin/udev". Потому что приличному человеку даже в голову не может прийти, что кто-то может пользоваться смесью openrc и systemd!