«ВНИМАНИЕ: терминал не полностью функционален» при использовании «man» в качестве root

«ВНИМАНИЕ: терминал не полностью функционален» при использовании «man» в качестве root

Я знаю, что этот вопрос задавался уже миллион раз, но ни один из найденных мной ответов не помог мне решить его.

У меня есть root shell, предоставленный sudo bash. Когда я пытаюсь использовать man, у меня появляется это сообщение:

WARNING: terminal is not fully functional
-  (press RETURN)

и ограниченный контроль над навигацией.

Работает, когда я не root. С root aptitudeработает правильно. Я пробовал export TERMс: linux, xterm, xterm-color, xterm-256color, ansi, screen-256color, ncurses, vt100.

Вывод stty -aабсолютно одинаков для пользователей root и non-root:

speed 38400 baud; rows 30; columns 271; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc

Я застрял.

Есть идеи?

заранее спасибо

решение1

Я решил эту проблему сам, добавив отсутствующий ncursesпакет, который предоставляет /usr/share/terminfo. Этот пакет, который по какой-то причине ада зависимости пакетов не был установлен, похоже, исправляет это. Хотя в моем случае это произошло как с rootпользователями root, так и с пользователями без прав root, так что это может быть не оно, но я думаю, стоит опубликовать, если кто-то окажется в моей ситуации в будущем и наткнется на этот вопрос в результатах Google.

В CentOS это ncurses-base.

В Debian 11 (и, вероятно, в Ubuntu) это ncurses-term.

Если у вас отсутствуют эти пакеты, попробуйте установить их и посмотреть, поможет ли это.

Я обнаружил это, пытаясь сделать это resetна терминале, и получившийся запрос «Тип терминала?» отклонял все, что я пробовал, например

Terminal type? screen                                      
reset: unknown terminal type screen
Terminal type?                                             
Terminal type? vt100
reset: unknown terminal type vt100

Это заставило меня сравнить его с работающей системой и поискать что-нибудь, включающее имя vt100. Немного покопавшись в grep -rрезультатах, я нашел файлы, /usr/share/terminfoкоторых не хватало в «плохой» системе. Вызов rpm -q --whatprovides /usr/share/terminfo/v/vt100привел меня к имени этого пакета.

решение2

Почти 3 года спустя ChatGPT предоставил мне решение...

# type man
man is aliased to `TERMINFO=~/.terminfo/ LESS=C TERM=mostlike PAGER=less man'

в какой-то момент «man» был привязан к фиктивной строке... это объясняет, почему другие пользователи не пострадали...

Связанный контент