屏幕在 NetBSD 上失败,报告 "poll: Invalid argument"

screen fails on NetBSD, reporting "poll: Invalid argument"

我已经在几个不同的操作系统上安装和使用了很多次 screen。最近在一台NetBSD-8.0的虚拟机上安装了

$ sudo pkgin install screen
calculating dependencies...done.

1 package to install:
  screen-4.8.0nb1

0 to refresh, 0 to upgrade, 1 to install
0B to download, 1098K to install

proceed ? [Y/n] Y
installing screen-4.8.0nb1...
screen-4.8.0nb1: setting permissions on /usr/pkg/bin/screen-4.8.0 (o=root, g=wheel, m=4511)
screen-4.8.0nb1: adding /usr/pkg/bin/screen to /etc/shells
screen-4.8.0nb1: registering info file /usr/pkg/info/screen.info
===========================================================================
$NetBSD: MESSAGE,v 1.5 2005/12/28 17:53:24 reed Exp $
[snip]
===========================================================================
pkg_install warnings: 0, errors: 0
reading local summary...
processing local summary...
marking screen-4.8.0nb1 as non auto-removable

然而,当我去使用它时,我立即失败了。

$ uname -mrs
NetBSD 8.0 amd64
$ ls -l /usr/pkg/bin/screen
lrwxr-xr-x  1 root  wheel  12 Apr  6 02:50 /usr/pkg/bin/screen -> screen-4.8.0
$ groups
users wheel
$ screen
poll: Invalid argument

即使我先删除然后重新安装 screen 包,这个问题仍然存在。有什么问题的建议吗?

我的猜测是用于为 8.0 构建二进制包的系统(从 8.0_2020Q1 pkgsrc 版本开始)不再与 NetBSD 完全兼容-8.0 版本。它可能 运行 在较新的版本中,在 chroot(8) 沙箱中。

我建议使用 NetBSD-9.0,因为它是最新的 NetBSD 版本,或者 NetBSD-8.2,因为它是netbsd-8 分支中的最新版本。使用最新的 NetBSD 和 pkgsrc 版本可以更好地覆盖未修补的漏洞。

但是,如果您想继续使用 NetBSD-8.0,您可以从 8.0_2019Q4 pkgsrc 发布。要从该版本中提取 pkgin(1),请编辑 /usr/pkg/etc/pkgin/repositories.conf 文件以使用此存储库 URL:

http://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/amd64/8.0_2019Q4/All

目前文件中可能只有一行没有被注释掉,它指向一个 URL 其中只有 8.0(在服务器是最新 pkgsrc 版本的符号 link)。只需替换该行,或将其注释掉并添加上面的行。

然后删除并重新安装 screen:

sudo pkgin remove screen && sudo pkgin install screen