![Ubuntu 20.04(WSL)上的睡眠功能不起作用](https://linux22.com/image/923661/Ubuntu%2020.04%EF%BC%88WSL%EF%BC%89%E4%B8%8A%E7%9A%84%E7%9D%A1%E7%9C%A0%E5%8A%9F%E8%83%BD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
在 WSL 上升级到 20.04 后,睡眠功能无法正常工作并出现错误:
sleep: cannot read realtime clock: Invalid argument
答案1
wget https://launchpad.net/~rafaeldtinoco/+archive/ubuntu/lp1871129/+files/libc6_2.31-0ubuntu8+lp1871129~1_amd64.deb
sudo dpkg --install libc6_2.31-0ubuntu8+lp1871129~1_amd64.deb
sudo apt-mark hold libc6
sudo apt --fix-broken install
sudo apt full-upgrade
答案2
刚刚遇到这个问题,我/usr/bin/sleep
用一个 python 脚本替换了二进制文件,大致取代了该功能。
备份/usr/bin/sleep
并替换为以下内容的文件
#!/usr/bin/env python3
import sys
import time
time.sleep(int(sys.argv[1]))
chmod +x /usr/bin/sleep
替换后请记得。
答案3
这是因为 WSL1 中有一个错误。看这里: https://discourse.ubuntu.com/t/ubuntu-20-04-and-wsl-1/15291
即将推出的 Ubuntu 20.04 实现了 glibc 2.31。除非您使用 Insider,否则您尚未获得问题 4989 的修复,并且可能几个月内都不会得到修复。如果没有修复,Ubuntu 20.04 在 WSL 1 上往往会出现问题,有时甚至在升级到 Ubuntu 20.04 的过程中也会出现问题。例如,htop 在未打补丁的 WSL 1 上的 Ubuntu 20.04 上不起作用。
答案4
这远非理想,但另一种解决方法是编辑/var/lib/dpkg/info/libc6:amd64.postinst
并注释掉set -e
脚本顶部的(插入#
作为行中的第一个字符)。
您仍会收到sleep: cannot read realtime clock: Invalid argument
错误,但它不会导致包的升级中止。
这并不理想,因为:
- 修改了标准安装后脚本。
libc6
每次升级时都必须应用脚本更改。