Исправление ошибки сна в Ubuntu 20.04 (WSL)
После обновления до Ubuntu 20.04 в подсистеме Windows для Linux (WSL) вы можете столкнуться с проблемой, когда команда sleep возвращает сообщение об ошибке: «sleep: не удается прочитать часы реального времени: неверный аргумент». Эта проблема вызвана ошибкой в WSL1 и связана с версией glibc, используемой в Ubuntu 20.04. В этой статье вы найдете несколько способов решения этой проблемы.
Понимание проблемы
Проблема возникает из-за ошибки в WSL1, которая влияет на команду сна в Ubuntu 20.04. Команда sleep — это основная команда, используемая в Linux для приостановки выполнения процесса на указанный период. Ошибка приводит к сбою команды sleep, возвращая сообщение об ошибке «Неверный аргумент».
Обходной путь 1: установка определенной версии пакета libc6
Один из обходных путей включает в себя загрузку и установку определенной версии пакета libc6. Пакет libc6 содержит библиотеку GNU C, которая является ключевой частью операционной системы Linux.
Обратите внимание: это решение предполагает установку пакета из стороннего источника. Прежде чем продолжить, всегда учитывайте риски и потенциальные трудности возврата к исходной версии.
Чтобы установить конкретную версию пакета libc6, используйте команды wget и dpkg следующим образом:
wget sudo dpkg -i libc6_2.31-0ubuntu9.7_amd64.deb
Команда wget используется для загрузки файлов из Интернета. Команда dpkg -i используется для установки пакета.
Обходной путь 2: замена двоичного файла /usr/bin/sleep скриптом Python
Другой обходной путь — заменить двоичный файл /usr/bin/sleep сценарием Python, который эмулирует его функциональность.
Во-первых, создайте резервную копию исходного бинарного файла сна:
sudo mv /usr/bin/sleep /usr/bin/sleep.bak
Затем создайте новый скрипт Python со следующим содержимым:
#!/usr/bin/python3 время импорта import sys time.sleep(float(sys.argv[1]))
Сохраните этот скрипт как /usr/bin/sleep и сделайте его исполняемым с помощью команды chmod:
sudo chmod +x /usr/bin/sleep
Команда chmod +x используется для создания исполняемого файла.
Обходной путь 3: использование команд apt-mark, apt –fix-broken install и apt full-upgrade.
Другое решение — использовать команды apt-mark, apt –fix-broken install и apt full-upgrade.
Сначала обновите списки пакетов с помощью apt-get update:
sudo apt-получить обновление
Затем выполните следующие команды:
sudo apt-mark hold libc6 sudo apt –fix-broken установить sudo apt с полным обновлением
Команда apt-markhold используется для предотвращения автоматической установки, обновления или удаления пакета. Команда apt –fix-broken install используется для разрешения и исправления любых сломанных зависимостей в вашей системе. Команда apt full-upgrade используется для обновления системы путем удаления/установки/обновления пакетов.
Заключение
Хотя эти обходные пути могут помочь устранить ошибку сна в Ubuntu 20.04 в WSL, важно учитывать потенциальные риски и ограничения каждого решения, прежде чем внедрять их. Всегда делайте резервную копию ваших данных и конфигураций, прежде чем вносить существенные изменения в вашу систему.
Подсистема Windows для Linux (WSL) — это уровень совместимости, который позволяет изначально запускать дистрибутивы Linux в Windows 10 и Windows Server. Это позволяет пользователям использовать инструменты, команды и приложения Linux без необходимости в отдельной виртуальной машине или установке с двойной загрузкой.
Команда sleep возвращает ошибку в Ubuntu 20.04 в WSL из-за ошибки в WSL1, которая влияет на команду sleep. Ошибка связана с версией glibc, используемой в Ubuntu 20.04.
Да, один из обходных путей включает установку определенной версии пакета libc6. Однако важно отметить, что это решение предполагает установку пакета из стороннего источника, и при возврате к исходной версии могут возникнуть риски и трудности.
Чтобы заменить двоичный файл /usr/bin/sleep сценарием Python, вы можете сначала создать резервную копию исходного двоичного файла сна с помощью команды sudo mv /usr/bin/sleep /usr/bin/sleep.bak. Затем создайте новый скрипт Python с предоставленным содержимым и сохраните его как /usr/bin/sleep. Наконец, сделайте скрипт исполняемым с помощью команды sudo chmod +x /usr/bin/sleep.
Команда apt-markhold используется для предотвращения автоматической установки, обновления или удаления пакета. Команда apt –fix-broken install используется для разрешения и исправления любых сломанных зависимостей в вашей системе. Команда apt full-upgrade используется для обновления системы путем удаления/установки/обновления пакетов. Эти команды используются в качестве обходного пути для исправления ошибки сна в Ubuntu 20.04 в WSL.