WSL教程(二)避坑指南

1、包管理器问题

有很多人在拿到一个全新的Linux环境,会下意识地执行yum updateapt update && apt upgrade,然而我不建议你在WSL中这么做。

我第一次安装Ubuntu后,执行了升级,在随后的使用中很快遇到了离谱的问题:

dpkg因为依赖问题无法使用,然而唯一解决方法是使用aptitude修复依赖,但是aptitude只能通过apt安装,apt又因为dpkg有问题而无法使用。

遇到这么糟心的问题,我决定直接删除重开,这又浪费了我几个小时。

因此,我建议直接先安装aptitude,这样无论是否遇到问题都有这样一个解决方案。

2、端口冲突问题

在上一篇文章中,我提到要注意端口冲突。

但是WSL的端口冲突不像单纯的Linux/Windows环境,会直接报致命错误然后退出。WSL如果和Windows使用了相同端口,将不会有任何提示。

例如:SSH Server For Windows使用了22端口,WSL的SSH又使用了22端口,这并不冲突,但是访问22端口只能访问到SSH Server For Windows。

因此,当出现访问正确的端口,但返回结果不匹配时,可以尝试排查此问题。

3、Systemd问题

WSL并不是完整的Linux系统,所以会出现一些很奇怪的错误,例如systemctl完全无法使用。

因此,请将systemctl替换为service。注意:两个命令的参数顺序有所不同,例如:

Bash
1
2
systemctl start ssh
service ssh start

4、软件下载安装问题

因为无法获得系统发行版(或返回的是Microsoft),因此使用pip下载某些软件(例如:supervisor)会报错,没有对应发行版的版本。

因此,建议直接使用apt安装:

Bash
1
sudo apt install supervisor

5、Windows防火墙问题

在默认情况下,使用WSL安装软件(例如OpenSSH,Python)会弹出Windows防火墙,询问是否允许软件使用网络。

当直接使用cmd/powershell时,可以直接点击允许访问,但是如果使用SSH连接,往往就不容易注意到这个问题。

因此,当安装软件卡住时,可以远程连接到桌面看看是否有弹出Windows防火墙,或直接禁用。

注意:
我的Windows服务器是NAT网络,无需担心安全问题;
如果有公网IP和全端口,不建议关闭防火墙。

WSL教程(二)避坑指南

https://blog.tsinbei.com/tw/archives/1038/

文章作者
Hsukqi Lee
发布于

2023-01-11

修改于

2023-05-18

许可协议

CC BY-NC-ND 4.0

# 编程  Shell  Linux  CentOS  软件  Windows  Ubuntu  Debian  Deepin  虚拟机  SSH  WSL  HyperV

评论

昵称
邮箱
网址
暂无