Переезд с Ubuntu 18.04 на 20.04 в подсистеме WSL

Вступление

Всем привет!

Если Вы читаете эту статью, то, скорее всего, столкнулись с проблемами в работе с личными или рабочими проектами, вызванными недавним обновлением VS Code до версии 1.86. И вроде новая версия нужна, и страшно потерять все данные.

Ubuntu 18.04 использует GLIBC 2.27, соответственно, под новые требования уже не подходит.

Ubuntu 18.04 использует GLIBC 2.27, соответственно, под новые требования уже не подходит.

Среди найденных на просторах Интернета рекомендаций было два варианта решения:

И так как упускать дальнейшие обновления редактора до очередных ограничений мне показалось менее выигрышным вариантом, ниже я приведу два способа, один из которых сработал для меня, другой нашел отклик среди других разработчиков. Но обо всем по порядку.

(почти) Установка

Пожалуйста, сперва дочитайте статью до конца, воспользуйтесь ссылками на Источники ниже, прежде чем вносить какие-либо изменения.

Установка

При вызове командной оболочки PowerShell запускаем конкретный дистрибутив с конкретным пользователем:

wsl --distribution  --user 

// Например,
// wsl --distribution Ubuntu-18.04 --user root

Можем уточнить информацию об установленном дистрибутиве перед началом работы:

lsb_release -a

После чего получим следующие данные:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:        18.04
Codename:       bionic

Убедившись в том, что данная версия подходит для обновления, поочередно выполняем следующие команды:

sudo apt update                         // Раз
sudo apt list --upgradable              // Два
sudo apt upgrade                        // Три
sudo apt --purge autoremove             // Четыре
sudo apt install update-manager-core    // Пять
sudo do-release-upgrade                 // ОШИБКА!

Что случилось?

Отсутствие допуска к внесению изменений непременно вызовет сообщение следующего содержания:

Checking for a new Ubuntu release In /etc/update-manager/release-upgrades Prompt is set to never so upgrading is not possible.

Исходя из текста, нам нужно найти файл release-updates и в самом его конце изменить Prompt=never на Prompt=normal. Вроде бы ничего сложного, но как начинающему разработчику определиться где он находится и как его отредактировать?

Решение 1. Через VS Code (сработало у других)

Как ни пытайтесь, просто так залезть в содержимое через VS Code или Проводник у Вас не выйдет. Даже пройдя путь Ubuntu-18.04/etc/update-manager/release-upgrades, внеся изменение в значение Prompt, Вы сначала получите предложение перезайти с правами администратора:

Предупредительное окно редактора, нет прав доступа.

Предупредительное окно редактора, нет прав доступа.

Но решением проблемы с правами доступа это не будет:

Ошибка в доступе хосту wsl.localhost

Ошибка в доступе хосту wsl.localhost

Пора действовать. Для предоставления прав доступа нашему хосту (в данном случае это wsl.localhost), нам нужно зайти в Settings (Ctrl + ,), оттуда в раздел Security и найти секцию allowedUNCHosts, где мы вручную вписываем имя хоста, под которым собираемся вносить изменения. Ограничений нет, ведь Вы так же можете войти под именем localhost, wsl$ и др.:

Предоставление прав доступа хост-именам.

Предоставление прав доступа хост-именам.

Все. На этом месте у части пользователей появляется уникальная возможность править файлы в подсистеме WSL напрямую в VS Code, что позволит успешно завершить установку. Однако, способ этот срабатывает не всегда и не у всех.

Решение 2. Через GNU Nano (сработало у меня)

Простенький и понятный редактор, не вызывающий сложностей с правами доступа и прочими подводными камнями. Все тот же PowerShell, прописываем, что нам нужно отредактировать файл в nano:

nano /etc/update-manager/release-upgrades

Внешний вид редактора GNU Nano

Внешний вид редактора GNU Nano

Меняем значение Prompt c never на normal. Готово! Сохраняемся Ctrl + O, Enter и выходим Ctrl + X, после чего продолжаем установку.

Завершение

Теперь у нас есть полное право обновиться до версии 20.04, продолжим, где остановились:

sudo do-release-upgrade 

// Получим следующее сообщение: 

Checking for a new Ubuntu release
There is no development version of an LTS available.
To upgrade to the latest non-LTS develoment release 
set Prompt=normal in /etc/update-manager/release-upgrades.

Все. Запасаемся терпением, в зависимости от надобности устанавливаем или отказываемся от предлагаемых пакетов. Я указал установку на базе существующей версии, что позволило сохранить результаты работы до обновления. Не уходите надолго! Местами понадобятся наши Yes/No на соответствующие настройки. При успешном завершении и перезагрузке получим следующее сообщение на команду lsb_release -a:

Проверка изменения версии.

Проверка изменения версии.

На этом все. Спасибо за внимание:)

Источники

  1. https://www.nextofwindows.com/how-to-upgrade-existing-wsl-wsl2-ubuntu-18–04-to-20–04

  2. https://stackoverflow.com/questions/76236922/the-host-was-not-found-in-the-list-of-allowed-hosts-do-you-want-to-open-i

  3. https://linuxsheet.com/answers/1315484u/? ysclid=lsohsay3ld583746504

© Habrahabr.ru