wsl2 ubuntu 20.04_卸载wsl ubuntu

wsl2 ubuntu 20.04_卸载wsl ubuntu最近Ubuntu22.04正式发布了,我使用的Ubuntu还是WSL2中的20.04版本,故前来升级。不过坑确实比想象中的多,遂来尝试总结一下,希望能帮助到有需要的同学。不过其实最后,大家会发现,改国内源一把梭,啥问题都解决了::>_………

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

最近 Ubuntu 22.04 正式发布了,我使用的 Ubuntu 还是 WSL2 中的 20.04 版本,故前来升级。不过坑确实比想象中的多,遂来尝试总结一下,希望能帮助到有需要的同学。不过这篇文章确实是我快折腾结束时,临时起意,故有些场景的截图可能会有所纰漏,还望包涵。

安装全新的 Ubuntu 22.04 WSL2

首先要注意的是,升级到 Ubuntu 22.04 后,需要按照附录所写,把 apt 软件源换成国内的,因为此新版本的官方源有些包无法正常下载。

隐去 APT 报错

如果你在使用 APT 安装软件包的结尾,出现这样的报错:

Failed to retrieve available kernel versions.
Failed to check for processor microcode upgrades.

那么可以通过修改 needrestart 的配置去消去这类报错1

sudo -e /etc/needrestart/needrestart.conf

在配置文件中找到 kernelhints 和 ucodehints 这两行,取消注释并将值改成 0:

$nrconf{kernelhints} = 0;
$nrconf{ucodehints} = 0;

这样再使用 APT 时就不会有之前的报错了。

不过这个报错留着也不会有什么影响,所以不改也可以,另外直接卸载此软件包也可以:

sudo apt-get purge needrestart

此外,22.04 的 APT 包安装结尾现在多了一些检查项,所以日志多了几条:
在这里插入图片描述
但并无大碍,无需关注。

启用 snap

现在 Ubuntu 的战略似乎都转向用 snapcraft 打包应用,很多软件在 apt 官方源内的版本都不是最新,甚至有的都不再提供 apt 安装方式2

但是,snap 的使用需要依赖 systemd,而这个在 WSL2 上没有正常开启,导致我们在使用 snap 时会报错:

error: cannot communicate with server: Post http://localhost/v2/snaps/xxx: dial unix /run/snapd.socket: connect: no such file or directory

目前需要我们手动配置开启 systemd,即在 WSL 启动时执行 wsl-systemd 即可3

sudo vim /etc/wsl.conf

在这份配置文件中加上下面的配置:

[boot]
command="/usr/libexec/wsl-systemd"

最后重启 WSL2,即可正常使用 snap:

在这里插入图片描述

但到这里其实还只是能使用 snap 的命令,并不能正常使用 snap 安装的软件包,还需要把 snap 安装的软件二进制可执行文件的文件夹放到环境变量中,然后重启终端:

# 注意使用单引号不是双引号,或者直接用编辑器修改对应 bash 或 zsh 的配置文件也可以
echo 'export PATH=$PATH:/snap/bin\n' >> ~/.zshrc
echo 'export PATH=$PATH:/snap/bin\n' >> ~/.bashrc

至此,snap 安装的应用也可以正常使用了。

升级已有 Ubuntu 20.04 WSL2

如果已经安装使用了 Ubuntu 20.04,是可以直接不卸载此子系统,直接滚动升级到 22.04 版本的:

sudo do-release-upgrade -d

升级后大概还是会遇到上面 22.04 小节的问题,然后解决一遍即可。

但是可能,你无法直接进行升级,因为 22.04 版本官方源在国内有一定的问题(报错见下,因为忘了截图,就根据网上的一些问题还原了一个报错4),所以也要保证升级时使用的 22.04 版本源为国内源,成功率会高很多。

Err:1 http://cn.archive.ubuntu.com/ubuntu jammy/universe amd64 libfuse2 amd64 2.9.9-5ubuntu3 Connection failed [IP: 91.189.91.38 80]
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/universe/f/fuse/libfuse2_2.9.9-5ubuntu3_amd64.deb Connection failed [IP: 91.189.91.38 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

Aborting
Reading package lists... Done
Building dependency tree
Reading state information... Done
=== Command terminated with exit status 1 (Mon May 02 15:30:00 2022) ===

至于如何保证国内源,这里提供两种方案和思路供尝试,这些方案是我在搜索一些问题的解决方案时得到的启发,但因为我安装了新的 22.04 版本,没有继续折腾滚动升级的方式,故留下一些记录,如果有同学遇到类似的问题,可供参考。

方案一:保证升级前的系统 APT 源为国内源

理论上只要你和附录一样,改用国内源5,那么升级应该也会是顺利使用国内源升级6

方案二:修改升级脚本替换源为国内源

这个方案比较暴力,也比较有意思,思路就是手动修改升级系统的脚本7,使之按照自己的意愿升级,可操作性和灵活性都比较大,如果上面方案一试了不可以,就可以试试这种备选的万能方案。

每次运行 do-release-upgrade 时,都会在 /tmp 目录下缓存一个升级包的解压目录,里面即为升级程序的脚本源码,大多是 Python 程序。

注意,直接使用 sudo 是没法接 cd 之类的 shell 内建命令(不是可执行程序)的,需要先升级权限为 root:

sudo -i

然后进入一个 do-release-upgrade 缓存目录,比如我这里是 /tmp/ubuntu-release-upgrader-49tqpuq1,你的可能不一样,但里面的文件都是差不多的,

在这里插入图片描述
我们可以看到修改源的地方是在 apt_clone.py 这个文件:
在这里插入图片描述
于是可以找到 _rewrite_sources_list 这个方法是重写当前系统的 sources.list 文件到新的发行版的 source.list,然后依照这个来升级系统和包……那么这里我们自然也可以自行在这代码里改成我们想要的国内源来升级……这里具体如何修改 Python 代码就不细说了,其实说到这里,我已经明白方案一就可以了,不用大费周折来改到这里,因为这里代码赫然写着只替换发行版的名字,不替换 URL。
在这里插入图片描述

最后如果改完,可以运行升级程序即可继续正常升级:

# 此时还是 root 权限,且在缓存文件夹中
./dist-upgrade.py --frontend=DistUpgradeViewText

其实这个过程还有很多地方可以随心所欲地修改,比如按照这个 Issue7 注释掉 snapd 的一些逻辑使得安装过程更顺畅等等……还是很有趣的。

附录

安装 WSL2

这个过程官方文档已经写得很详尽了,就不赘述了8

查看系统发行版本

lsb_release -a

替换 APT 国内源

# 养成备份好习惯
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

# 编辑 APT 源列表
sudo vim /etc/apt/sources.list

将里面默认的 archive.ubuntu.com/ubuntu/security.ubuntu.com/ubuntu/ 都替换成你选择的国内源地址。

比如都替换成 mirrors.tuna.tsinghua.edu.cn/ubuntu/

在这里插入图片描述
在这里插入图片描述
最后刷新一下包列表,完成更换:

sudo apt update

sudo apt dist-upgrade

snap 国内速度慢

如果想国内使用 snap 可以参考这篇博文9的两个方案,我因为使用了科学上网的方式,就没有继续使用这里的方案了。

Hyper-V 虚拟机改分辨率

附赠一下用 Hyper-V 虚拟机时如果需要改掉默认的分辨率需要的一个 PowerShell 下的命令10,这个跟本篇并无太大关系,但如果你最后转去使用 Hyper-V 安装 Ubuntu 的话,还是需要这个的:

# template
set-vmvideo $vm_name -horizontalresolution:$width -verticalresolution:$height -resolutiontype single

# example
set-vmvideo Ubuntu -horizontalresolution:1920 -verticalresolution:1080 -resolutiontype single

只需这一行命令设置一下,下次启动名为 $vm_name 的虚拟机时,显示的分辨率就会如你设置这般。

WSL2 上你会需要的一些工具

wslu

wslu 是一个 WSL2 下和 Windows 系统交互的命令行工具集合11

sudo apt install wslu

我目前在用的:

  • wslview:可以通过此命令调用 Windows 的默认浏览器打开 WSL2 内的超链接。使用时你可以直接把 WSL2 下的默认浏览器(即环境变量 BROWSER 设置为 wslview12),这样你就可以不用再在 WSL2 里安装浏览器,通过 wslg13 来使用浏览器了。而是可以直接打开终端上的超链接,很方便。

最后,来点魔法

WSL2 内不能直接使用 Windows 下配置的魔法,需要设置到 Windows 魔法端口的代理,这里14已经描述的很详细了,也可以直接复制我的配置15,祝君体验愉快。


  1. windows subsystem for linux – Ubuntu 22.04 LTS on WSL: “Failed to retrieve available kernel versions”/“Failed to check for processor microcode upgrades” when installing packages – Ask Ubuntu ↩︎

  2. Ubuntu Makes Firefox Snap Default in 21.10 – OMG! Ubuntu! ↩︎

  3. WSL2- Ubuntu 20.04 Snap store doesn’t work due to systemd dependency · Issue #5126 · microsoft/WSL ↩︎

  4. Bug #1969597 “can not install xrdp on ubuntu 22.04” : Bugs : xrdp package : Ubuntu ↩︎

  5. apt get – Ubuntu apt-get unable to fetch packages – Stack Overflow ↩︎

  6. Exit 1 when upgrading to Ubuntu 21.04 · Issue #6942 · microsoft/WSL ↩︎

  7. Exit 1 when upgrading to Ubuntu 21.04 · Issue #6942 · microsoft/WSL ↩︎ ↩︎

  8. Install WSL | Microsoft Docs ↩︎

  9. snap install too slow ↩︎

  10. virtual machine – Change screen resolution of Ubuntu VM in Hyper-V – Super User ↩︎

  11. wslutilities/wslu: A collection of utilities for Windows 10 Linux Subsystems ↩︎

  12. icyzeroice/linux-vor ↩︎

  13. microsoft/wslg: Enabling the Windows Subsystem for Linux to include support for Wayland and X server related scenarios ↩︎

  14. 记一次在 WSL2 下使用魔法 ↩︎

  15. icyzeroice/linux-vor ↩︎

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184319.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Linux系统安装tomcat7

    Linux系统安装tomcat7Linux上如果尚未安装JDK,可以参考博文https://mp.csdn.net/postedit/801814221.下载Linux版tomcat7,官网即可下载https://tomcat.apache.org/download-70.cgi2.确定好在Linux上你tomcat要放的路径,我的是/usr/tomcat,可以在/usr目录下mkdirtomcat3.将本地tomcat的文件…

  • 域名、服务器、IP之间的关系[通俗易懂]

    域名、服务器、IP之间的关系[通俗易懂]文章转载自:[https://www.jianshu.com/p/c3d3f6629c13](https://www.jianshu.com/p/c3d3f6629c13)本文主要针对域名、服务器和IP之间的关系进行介绍,并通过实际案例讲解域名解析过程本文目录基础概念案例分析阿里云域名解析过程基础概念服务器:服务器其实就像我们的家用电脑一样,也有主板、CPU、内存、硬盘、电源等。根据功能来说服务器可分为web服务器、ftp服务器、数据库服务器、邮件服务器等等,做什么用途就可以叫做什么服务器

  • mysql卸载步骤_系统应用怎么卸载步骤

    mysql卸载步骤_系统应用怎么卸载步骤重装卸载了一下午,很多方法都尝试了,最后终于找到一个彻底删干净的方法:1.很多大佬都提到的cmd搜索regedit注册表,打开后找到下面三个目录并删除(要是没有不用管)HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Application/MySQLHKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Application/MySQLHKEY_LOCAL_MACHIN

  • 记忆化递归(记忆化搜索)

    记忆化递归(记忆化搜索)前言​ 前一篇博客写到入门的dp算法,后来又遇到一个奇怪的变种题目,同样也是可以用dp写的(至少标签是有动态规划)。我看了答案还是有些不能完全理解,于是又去b站翻了翻教程基础DP,其中提到记忆化的递归(也称记忆化搜索),相当于结合了dp和递归的优点(这时我又觉得比DP还厉害),然后就准备写写记忆化递归。目录​ 1.记忆化递归的解释与分析​ 2.记忆化递归的应用一、记忆化递归的解释与分析前面说道它结合了dp和递归的优点,分别是记忆化和逻辑清晰易懂。下面还是结合斐波那契数列的来理解:F(.

  • BZOJ 3747 POI2015 Kinoman 段树

    BZOJ 3747 POI2015 Kinoman 段树

  • 工厂+策略解决多重if-else

    工厂+策略解决多重if-else

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号