<br> Hello all,<br> <br> <br> <br> <br> TL;DR: The OmniOS terminfo package seems broken after Oct 22 and delivers too few files. Packaged software does not fall back to other available locations.<br> <br> <br> <br> <br> Details:<br> <br> <br> <br> <br> A week or two ago, different CLI programs began acting up on my OmniOS box, saying nonsense like this:<br> <br> <br> <br> <br> # mc<br> Error opening terminal: xterm.<br> <br> <br> <br> <br> Same for vt100, vt220, ansi...<br> <br> I have terminfo packages installed and up-to-date, and while looking at the system I see 3 locations at least:<br> <br> # find /opt -name terminfo -ls<br>   1124    2 drwxr-xr-x  14 root     root           14 Oct 29 14:45 /opt/local/share/lib/terminfo<br> <br> <br> <br> <br> <br> # find /usr -name terminfo -ls<br>    349    4 drwxr-xr-x  44 root     bin            44 Dec  4  2014 /usr/gnu/share/terminfo<br>    332    0 lrwxrwxrwx   1 root     root           17 Dec  4  2014 /usr/gnu/lib/terminfo -> ../share/terminfo<br>  29464    4 drwxr-xr-x  44 root     bin            44 Dec  4  2014 /usr/share/lib/terminfo<br> <br> <br> <br> <br> The /usr ones seem similar to OI/Hipster - they contain seemingly equivalent content except most of the files are different at binary level. Apparently, they come from terminfo and ncurses, and maybe should be merged(?) in illumos-gate(?):<br> <br> # pkg search xterm<br> INDEX      ACTION VALUE                          PACKAGE<br> basename   file   usr/gnu/share/terminfo/x/xterm pkg:/library/ncurses@5.9-0.151015<br> basename   file   usr/share/lib/terminfo/x/xterm pkg:/system/data/terminfo@0.5.11-0.151015<br> <br> <br> <br> <br> <br> The /opt location is rather empty in comparison (and `pkg search -r filenames` fails to find what package this should have been, also on older BEs):<br> <br> <br> <br> <br> # find /opt | grep terminfo | sort<br> /opt/local/share/lib/terminfo<br> /opt/local/share/lib/terminfo/d<br> /opt/local/share/lib/terminfo/d/dec+pp<br> /opt/local/share/lib/terminfo/d/dec+sl<br> /opt/local/share/lib/terminfo/g<br> /opt/local/share/lib/terminfo/g/gnome-2012<br> /opt/local/share/lib/terminfo/i<br> /opt/local/share/lib/terminfo/i/iterm<br> /opt/local/share/lib/terminfo/l<br> /opt/local/share/lib/terminfo/l/linux2.2<br> /opt/local/share/lib/terminfo/l/linux2.6<br> /opt/local/share/lib/terminfo/l/linux3.0<br> /opt/local/share/lib/terminfo/m<br> /opt/local/share/lib/terminfo/m/mach-gnu<br> /opt/local/share/lib/terminfo/m/mach-gnu-color<br> /opt/local/share/lib/terminfo/m/minix-3.0<br> /opt/local/share/lib/terminfo/m/mlterm2<br> /opt/local/share/lib/terminfo/m/mlterm3<br> /opt/local/share/lib/terminfo/n<br> /opt/local/share/lib/terminfo/n/netbsd6<br> /opt/local/share/lib/terminfo/n/nsterm-256color<br> /opt/local/share/lib/terminfo/n/nsterm-build326<br> /opt/local/share/lib/terminfo/n/nsterm-build343<br> /opt/local/share/lib/terminfo/o<br> /opt/local/share/lib/terminfo/o/old-st<br> /opt/local/share/lib/terminfo/p<br> /opt/local/share/lib/terminfo/p/pccon<br> /opt/local/share/lib/terminfo/p/pccon+base<br> /opt/local/share/lib/terminfo/p/pccon+colors<br> /opt/local/share/lib/terminfo/p/pccon+keys<br> /opt/local/share/lib/terminfo/p/pccon+sgr+acs<br> /opt/local/share/lib/terminfo/p/pccon+sgr+acs0<br> /opt/local/share/lib/terminfo/p/pccon-m<br> /opt/local/share/lib/terminfo/p/pccon0<br> /opt/local/share/lib/terminfo/p/pccon0-m<br> /opt/local/share/lib/terminfo/p/putty+fnkeys<br> /opt/local/share/lib/terminfo/p/putty+fnkeys+esc<br> /opt/local/share/lib/terminfo/p/putty+fnkeys+linux<br> /opt/local/share/lib/terminfo/p/putty+fnkeys+sco<br> /opt/local/share/lib/terminfo/p/putty+fnkeys+vt100<br> /opt/local/share/lib/terminfo/p/putty+fnkeys+vt400<br> /opt/local/share/lib/terminfo/p/putty+fnkeys+xterm<br> /opt/local/share/lib/terminfo/p/putty-sco<br> /opt/local/share/lib/terminfo/s<br> /opt/local/share/lib/terminfo/s/screen+italics<br> /opt/local/share/lib/terminfo/s/screen.konsole-256color<br> /opt/local/share/lib/terminfo/s/screen.mlterm-256color<br> /opt/local/share/lib/terminfo/s/screen.putty<br> /opt/local/share/lib/terminfo/s/screen.putty-256color<br> /opt/local/share/lib/terminfo/s/screen.vte-256color<br> /opt/local/share/lib/terminfo/s/screen.xterm-256color<br> /opt/local/share/lib/terminfo/s/simpleterm<br> /opt/local/share/lib/terminfo/s/st<br> /opt/local/share/lib/terminfo/s/st-16color<br> /opt/local/share/lib/terminfo/s/st-256color<br> /opt/local/share/lib/terminfo/s/stterm<br> /opt/local/share/lib/terminfo/s/stterm-16color<br> /opt/local/share/lib/terminfo/s/stterm-256color<br> /opt/local/share/lib/terminfo/s/sun+sl<br> /opt/local/share/lib/terminfo/t<br> /opt/local/share/lib/terminfo/t/teken<br> /opt/local/share/lib/terminfo/t/terminator<br> /opt/local/share/lib/terminfo/t/terminology<br> /opt/local/share/lib/terminfo/t/tmux<br> /opt/local/share/lib/terminfo/t/tmux-256color<br> /opt/local/share/lib/terminfo/v<br> /opt/local/share/lib/terminfo/v/vt520ansi<br> /opt/local/share/lib/terminfo/v/vte-2012<br> /opt/local/share/lib/terminfo/v/vte-2014<br> /opt/local/share/lib/terminfo/x<br> /opt/local/share/lib/terminfo/x/xterm+256setaf<br> /opt/local/share/lib/terminfo/x/xterm+kbs<br> /opt/local/share/lib/terminfo/x/xterm+sm+1002<br> /opt/local/share/lib/terminfo/x/xterm+sm+1003<br> /opt/local/share/lib/terminfo/x/xterm+sm+1005<br> /opt/local/share/lib/terminfo/x/xterm+sm+1006<br> /opt/local/share/lib/terminfo/x/xterm+tmux<br> /opt/local/share/lib/terminfo/x/xterm+x10mouse<br> /opt/local/share/lib/terminfo/x/xterm+x11hilite<br> /opt/local/share/lib/terminfo/x/xterm+x11mouse<br> /opt/local/share/lib/terminfo/x/xterm-1005<br> /opt/local/share/lib/terminfo/x/xterm-1006<br> /opt/local/share/lib/terminfo/x/xterm-x10mouse<br> /opt/local/share/lib/terminfo/x/xterm-x11hilite<br> /opt/local/share/lib/terminfo/x/xterm-x11mouse<br> <br> <br> <br> <br> <br> But it is the one searched by software (and no fallbacks to other locations). For example, trussing that "mc" call I see:<br> <br> <br> <br> <br> # truss -fl -wall -rall mc 2>&1<br> <br> ...<br> <br> 14731/1:        getuid()                                        = 0 [0]<br> 14731/1:        ioctl(1, TCGETS, 0x00508360)                    Err#22 EINVAL<br> 14731/1:        fstat(2, 0xFFFFFD7FFFDFE790)                    = 0<br> Cannot get terminal settings: 14731/1:  write(2, 0x004EAD60, 30)                        = 30<br> 14731/1:           C a n n o t   g e t   t e r m i n a l   s e t t i n g s :<br> Invalid argument (22)14731/1:   write(2, 0x00515DC0, 21)                        = 21<br> 14731/1:           I n v a l i d   a r g u m e n t   ( 2 2 )<br> <br> 14731/1:        write(2, "\r\n", 2)                             = 2<br> 14731/1:        sigaction(SIGCLD, 0xFFFFFD7FFFDFFAE0, 0x00000000) = 0<br> 14731/1:        sigaction(SIGTSTP, 0x00000000, 0x0051AC20)      = 0<br> 14731/1:        ioctl(1, TCGETA, 0xFFFFFD7FFFDFF9E0)            Err#22 EINVAL<br> 14731/1:        stat("/root/.terminfo", 0x0054E2D0)             Err#2 ENOENT<br> 14731/1:        stat("/opt/local/share/lib/terminfo", 0x0054E2D0) = 0<br> 14731/1:        time()                                          = 1446459993<br> 14731/1:        access("/opt/local/share/lib/terminfo/x/xterm", R_OK) Err#2 ENOENT<br> Error opening terminal: 14731/1:        write(2, 0xFFFFFD7FFD1390DD, 24)                = 24<br> 14731/1:           E r r o r   o p e n i n g   t e r m i n a l :<br> xterm14731/1:   write(2, " x t e r m", 5)                       = 5<br> .<br> 14731/1:        write(2, " .\n", 2)                             = 2<br> 14731/1:        _exit(1)<br> <br> <br> <br> <br> <br> In particular, the larger set of files was there until Oct 22 as I can see in my snapshots, and then thousands of them went AWOL:<br> <br> <br> <br> <br> # find postupgrade_pkgips-20151022T174922Z/share/lib/terminfo/ -type f | wc -l<br> 2616<br> <br> <br> # find /opt/local/share/lib/terminfo/ -type f | wc -l<br> 72<br> <br> <br> <br> <br> <br> Jim Klimov<br> <br> <br> <br> <p></p>