![`tlmgr update` 失败,提示“设备的 ioctl 不合适”](https://linux22.com/image/355227/%60tlmgr%20update%60%20%E5%A4%B1%E8%B4%A5%EF%BC%8C%E6%8F%90%E7%A4%BA%E2%80%9C%E8%AE%BE%E5%A4%87%E7%9A%84%20ioctl%20%E4%B8%8D%E5%90%88%E9%80%82%E2%80%9D.png)
尝试运行tlmgr update --self
,但失败并显示以下错误消息:
/usr/local/texlive/2016/bin/x86_64-linux/tlmgr: open tlpdb(http://ctan.math.washington.edu/tex-archive/systems/texlive/tlnet/tlpkg/texlive.tlpdb) failed: Inappropriate ioctl for device at /usr/local/texlive/2016/tlpkg/TeXLive/TLPDB.pm line 358.
现在我该怎么办?我正在使用 Ubuntu 14.04,并使用从 tug.org 安装了 TeXLive ./install-tl
。
答案1
我查看了源文件,发现此错误是在wget
无法下载包数据库时发出的。我正在使用存储库ftp://tug.org/historic/systems/texlive/2017/tlnet-final
,似乎存在间歇性不可用的情况(服务器过载或连接不稳定)。这与配置无关wget
(正如@chbrown所暗示的),只是过一段时间再试一次就可以了。
答案2
该消息很神秘,但我在 TeXLive 2018 中遇到了同样的问题。我使用opensnoop
(= dtrace
) 来监视正在打开的文件tlmgr
,并注意到它正在读取我的~/.wgetrc
配置文件,该文件有自定义设置header
设置user_agent
。
我删除了该文件,重新运行tlmgr
,一切顺利:)。YMMV,因为我不知道“设备的不适当 ioctl”与执行 HTTP 请求有什么关系。
总结:删除您的~/.wgetrc
。