Сбой при обновлении sessreg: undefined reference to `ttyslot’
Стал обновлять Xorg, а он стал в ответ вываливаться на этапе обновления sessreg. Вспомнил, что уже когда-то была такая же проблема с обновлением Xfce и еще чего-то, но на работу это не влияло и я тогда забил. А сейчас стало критично, ибо после обновления чего-то еще Xorg просто отвалился не находя нужных библиотек. Ошибка выглядит вот так:
sessreg.c: In function 'main':
sessreg.c:276: warning: assignment discards qualifiers from pointer target type
sessreg.c:281: warning: implicit declaration of function 'ttyslot'
sessreg.c:281: warning: nested extern declaration of 'ttyslot'
sessreg.c: In function 'set_utmp':
sessreg.c:387: warning: declaration of 'line' shadows a global declaration
sessreg.c:93: warning: shadowed declaration is here
sessreg.c: In function 'set_utmpx':
sessreg.c:463: warning: declaration of 'line' shadows a global declaration
sessreg.c:93: warning: shadowed declaration is here
sessreg.c: In function 'Xslot':
sessreg.c:556: warning: declaration of 'ttys_file' shadows a global declaration
sessreg.c:113: warning: shadowed declaration is here
sessreg.c:556: warning: declaration of 'host_name' shadows a global declaration
sessreg.c:108: warning: shadowed declaration is here
sessreg.c: In function 'findslot':
sessreg.c:616: warning: declaration of 'host_name' shadows a global declaration
sessreg.c:108: warning: shadowed declaration is here
sessreg.c:632: warning: assignment discards qualifiers from pointer target type
CCLD sessreg
sessreg.o: In function `main':
sessreg.c:(.text+0xcc1): undefined reference to `ttyslot'
*** Error code 1
Stop in /usr/ports/x11/sessreg/work/sessreg-1.0.7.
*** Error code 1
Stop in /usr/ports/x11/sessreg/work/sessreg-1.0.7.
*** Error code 1
Как обычно, дело оказалось в бардаке в системе. Система периодически обновляется с 6.2, сейчас она
FreeBSD test.daemony.ru 9.0-STABLE FreeBSD 9.0-STABLE #0: Wed Jan 11 09:55:51 VOLT 2012 root@test.daemony.ru:/usr/obj/usr/src/sys/test i386VOLT 2012
На каком-то из обновлений забыл удалить старые файлы и библиотеки, и вот оно вылезло.
решение — пункт из действий по обновлению, удаляющий старые файлы и библиотеки:
# cd /usr/src
# yes | make delete-old
# yes | make delete-old-libs
После этого все нормально собирается.