开发环境搭建-1:配置 WSL (类 centos 的 oracle linux 官方镜像)
一些 Linux 基本概念
个人理解,并且为了便于理解,可能会存在一些问题,如果有根本上的错误希望大家及时指出发行版
WSL 的系统是基于特定发行版的特定版本的 Linux
发行版 = 有固定组织维护的、开箱就能用的 Linux
- 发行版由固定的团队、社区进行维护,出了问题有一定的支持
- 发行版的内容 = Linux内核 + 指定的一些实用软件组合(如软件包管理软件、可视化界面等)
- 不同发行版的授权协议有所不同,有的商用也是免费的,有的商用要付费
类比:比如不同厂商的音乐播放器,比如 QQ 音乐、网易云音乐、酷狗音乐等。本质都是音乐文件播放器,但在基础功能上定制了界面、曲库等功能
常见的软件发行版
- fedora系:fedora、centos、RHEL、open SUSE、oracle linux …
- debian系:debian、ubuntu
以上两大派系的常见差别
参考链接:https://fedoraproject.org/wiki/Comparison_to_other_distributions
- 系统指令:通用(都是基于 Linux 内核的),比如:cp、mv、rm、sudo、wget等。
- 一些与【实用软件组合】相关的指令,因为选用的软件不同,则支持的相关指令就不太相同,比如:
| fadora 系 | debian 系 | |
|---|---|---|
| 安装包格式 | rpm | deb |
| 软件管理 | 在线安装:yum、dnf 本地管理:rpm | 在线安装:apt-get 本地管理:dpkg |
选择建议:建议以实际项目使用的发型版本,确定自己需要的版本,最好是使用相同发行商的。例如:
- 后端、运维:公司使用 cenots --> 自己使用 fedora 系的发行版,最好也用 centos
- 学术、机器学习:项目在 ubuntu 上部署 --> 使用 debian 系的发行版,最好也用 ubuntu
版本
发行版本
就是 LInux 发行版的版本,比如 Ubuntu 22.04、CentOS 7.9 等不同版本,系统内核版本、附带的软件版本可能不同
类比:比如 Windows 的不同版本,如 Winsdows XP、Windows 7、Windows 10,整体界面、操作、对软件的兼容性都有不同
- 不同系统内核版本,运行程序的效率可能有不同,也可能会有软件在不同内核上运行出问题的情况
- 附带软件不同,一般来说新版软件会修复 bug,并提供新的功能
对于 Linux 【发行版】来说,有大版本和小版本,以下以 CentOS 举例
- 大版本 = 版本数字整数部分,比如 centos 7.6 中的 6
- 小版本 = 版本数字小数部分,比如 Ubuntu 22.04 中的 04
- 这其中有一些版本,作为长期支持版本(进行介绍时会有 LTS 相关文字),官方会提供长久的支持
选择原则:建议大版本不变,小版本选最新的 LTS 版本。例如:
- 项目上说用的是 centos7(或者 centos 7.6),则自己可以用 centos 7.9
- 项目上说用的时 Ubuntu 24,那自己可以装 ubuntu 24.04 LTS
安装包版本
使用 WSL 进行安装不需要选这个版本参考资料:https://blog.csdn.net/ZZQHELLO2018/article/details/104027963
以 CentOS 为例:
| CentOS | 标准安装盘,一般下载这个就可以了 里面包含大量的常用软件,大部分情况下安装时无需再在线下载 |
|---|---|
| Minimal | 精简版本,只包含核心组件,体积才仅为几百 MB 如果想要安装其他软件,则这个版本中不包含,需要联网才能安装 |
| Everything | 顾名思义,包含了所有软件组件,当然体积也是最大的。 对完整版安装盘的软件进行补充,集成所有软件 |
| NetInstall | 网络安装镜像 |
| LiveGNOME | GNOME桌面版 |
| LiveKDE | KDE桌面版 |
| LiveCD | 光盘上运行的系统,类拟于 WINPE |
安装 WSL
以下使用官方的指令进行安装注意:WSL 官方的安装方式要求能访问 github,最好是找个梯子,否则接下来的安装步骤非常难受
-
打开 powershell (管理员)
在 windows 图标右键,点击【终端(管理员)】

之后的命令都在打开的命令行中输入 -
(非必须)查看指令帮助
wsl --help
-
查看支持的【发行版】
wsl --list --online
-
选择相关版本进行安装
我项目使用的是 centos,应该选择 fedora 系的系统,这里选择 oracle linux
项目上使用的版本是 centos 8,4,这里选择相同大版本的 oracle linux 8.7wsl --install OracleLinux_8_7
输入
logout即可退出 WSL,返回 Windows 命令行

- 安装时会提示设置用户名、密码,之后登录 WSL 时,默认都会使用这个用户
- 执行指令的过程中,如果提示“无法解析服务器名称或地址”,那就说明无法用官方指令进行安装,需要梯子
相关问题参考:https://zhuanlan.zhihu.com/p/568008269
配置 WSL
将 WSL 移动到其他盘
这里将刚才安装的 WSL(名称为`OracleLinux_8_7`)移动到 D 盘下的 WSL_DIR 文件夹中 wsl --manage OracleLinux_8_7 --move D:/WSL_DIR/

打开对应文件夹,发现 WSL 的磁盘文件(.hdx 文件)已经在对应文件夹中了

mobXterm 配置远程连接到 WSL
MobaXterm 默认支持 WSL。在新增连接时,分类选择【WSL】即可
- 如果下拉框没有对应选项,可以直接输入 WSL 的名称

- 汉化版 MobaXterm 在这里下载(github,需要梯子):https://github.com/RipplePiam/MobaXterm-Chinese-Simplified
Linux 系统配置
进入 / 退出 Linux 系统
在 Windows 命令行中,输入`wsl`进入默认 WSL 系统中
在 Linux 命令行中,输入logout退出 Linux 系统,返回 WSL 系统

设置 root 账户
WSL 默认没有 root 密码,需要进行设置参考:https://blog.csdn.net/weixin_44953227/article/details/109466253
输入sudo passwd root,进入设置,要输入两次密码

设置当前用户具有 root 权限
oracle linux 已经自动设置了当前用户具有 root 权限(已经加入 wheel 组),但每次操作还需要密码下面的流程能实现免密执行代码
-
将当前用户加入 wheel 用户组(实际上 oracle linux 已经默认做了)
可以看到,此时 sudo 指令还需要输入当前用户的密码sudo usermod -aG wheel $USER -
修改wheel用户权限,可以免密运行指令
-
打开权限管理配置文件
这里打开文件使用的是vim软件,软件的具体使用方法请自行搜索,这里不再介绍sudo vim /etc/sudoers -
修改以下内容,并强制保存退出

-
-
重新执行程序,发现已经不需要输入密码了(只需要在指令前加
sudo就行)

设置 Linux 软件源(repos)
默认的 WSL 系统软件源从官网获取,需要梯子,国内访问速度很慢
这里使用开源的项目:https://linuxmirrors.cn/
根据官网指南,先切换到 root 用户,然后运行脚本
sudo passwd root
切换到 root 用户,要输入 root 用户密码,若之前没设置过则先按照上一步设置 root 密码

根据 linuxmirrors-官网 给的教程,执行命令

然后执行脚本即可,这个脚本非常人性化,都是中文,不需要教程了
放点执行截图

执行结束,测试一下,安装个fastfetch软件(此软件可查看系统概况,软件官网(需要梯子))

发现报错PGP key not found

解决方法,下载 centos、EPEL 官方对应的 PGP 秘钥文件到对应路径,查看解决方法(原贴在 github 需要梯子)
Linux 系统优化
在 WSL 系统中进行配置,这里是在 Oracle Linux 8.7 中进行配置
关闭 SELinux
WSL 的 Oracle Linux 8.7 已经默认关闭,这里跳过
相关文档:https://help.aliyun.com/zh/ecs/use-cases/enable-or-disable-selinux
优化内核参数
按需配置,有相关报错再来配,没问题就不管
参考文章:https://developer.aliyun.com/article/700149
设置登录时显示系统概况
- 安装
fastfetch软件 - 配置系统登录时显示的内容登录
参考文章:https://cloud.tencent.com/developer/article/1869215-
打开配置文件(要使用 root 权限)
sudo vim /etc/profile -
在最后添加以下内容,保存退出文件
# hello screen sudo fastfetch
3. 实际效果(每次登录都有以下内容显示) 
-
- 如果出现显示问题,请检查 MobaXterm 的连接参数
把这里的连接参数裁成【原生连接器】,然后关闭窗口,重新打开

启用 systemd 支持(支持 systemctl 指令)
默认 WSL 使用 sysV 而不是 systemd 作为进程管理工具 ,默认情况下 systemctl 指令不可用。如下图
这对于很多运维人员来说很不方便,也可能导致一些依赖相关指令的脚本或程序运行失败
微软提供了相关文档:https://learn.microsoft.com/zh-cn/windows/wsl/systemd#how-to-enable-systemd

-
检查版本(在 windows 命令行中执行命令)
wsl --version可看到当前 wsl 版本满足要求

-
修改配置文件(在 WSL 命令行中执行,这里使用
vim作为文本编辑器,注意要 root 权限)sudo vim /etc/wsl.conf按照官方教程修改文件,并保存退出(如果没有对应的文件,就大胆的新建一个)

-
重启 WSL(先关闭再启动)
- 关闭:在 windows 命令行中输入
wsl --shutdown - 启动(WSL 有活动,就会自动启动,这里直接远程连接,就能激活 WSL)
- 关闭:在 windows 命令行中输入
-
重启之后,重新输入相关指令,正常运行

修改时间和时区
前提:首先设置启用 systemd,具体看上面的步骤
WSL 中的时间、时区会自动和主机 Windows 上的配置进行同步,无需设置
但如果想配置不同时区、手动设置时间,则可参考以下配置
参考文档:https://blog.csdn.net/wdk996/article/details/135940814
-
查看当前时间相关配置:
timedatectl指令

-
设置时区:这里设为中国时区(Asia/Shanghai)
timedatectl set-timezone "Asia/Shanghai" -
设置时间:使用
date -s 时间字符串实现

此时系统级的服务(比如 dnf/yum 等)就能访问外网了,但是 git 还需要额外配置
其他特殊的WSL配置
修改 WSL 的文件位置
WSL 默认将文件放在 C 盘,可利用此指令移动 WSL 到新的磁盘,减少C盘占用wsl --manage WSL名称 --move 新路径
以下将OracleLinux_8_7这个WSL的系统文件移动到D:/WSL_DIR/路径下(D盘下的WSL_DIR文件夹下)

挂载 windows 的文件夹到 WSL 中
相当于在 WSL 和 windows 中创建一个共享文件夹,便于共享数据卸载某一版本的 WSL
注意:卸载对应 WSL 版本之前,需要先停止 WSL-
查询当前已经安装的 WSL
wsl --list -v
-
停止对应的 WSL
wsl --shutdown WSL名称
-
解除挂载的磁盘
不解挂直接删除也行,WIndows 系统会自动解除挂载的wsl --umount 磁盘盘符 -
卸载对应的 WSL
wsl --unregister WSL名称
开发运行环境配置
git 安装及代理加速
git 软件设置代理(全局设置)
git config --global http.proxy $http_proxy
git config --global https.proxy $https_proxy
如果要禁用代理
先临时禁用系统代理
unset $http_proxy
unset $https_proxy
永久禁用
- 进入上面的环境文件
~/.bashrc,删除(或注释掉)上面添加的三行,保存退出 - 使用
source ~/.bashrc应用配置文件 - 使用上面的
unset指令删除当前残留的环境变量
再禁用 git 代理
git config --global --unset http.proxy
git config --global --unset https.proxy
注意:上面的操作需要先禁用 git 代理,再禁用系统代理
配置 Python 开发环境(uv)
使用uv进行 python 版本、项目、依赖包、虚拟环境管理
详见文章:配置 python 运行环境(使用 uv 管理 python 项目)
配置 node 前端开发环境(nvm+node+pnpm)
详见文章:配置 nodejs 开发环境 (nvm + pnpm)
相关文章:
开发环境搭建-1:配置 WSL (类 centos 的 oracle linux 官方镜像)
一些 Linux 基本概念 个人理解,并且为了便于理解,可能会存在一些问题,如果有根本上的错误希望大家及时指出 发行版 WSL 的系统是基于特定发行版的特定版本的 Linux 发行版 有固定组织维护的、开箱就能用的 Linux 发行版由固定的团队、社…...
Spring Boot MyBatis Plus 版本兼容问题(记录)
Spring Boot & MyBatis Plus 版本兼容问题(Invalid value type for attribute factoryBeanObjectType: java.lang.String) 问题描述问题排查1. 检查 MapperScan 的路径2. 项目中没有配置 FactoryBean3. 检查 Spring 和 MyBatis Plus 版本兼容性 解决…...
26. 【.NET 8 实战--孢子记账--从单体到微服务】--需求更新--用户注销、修改用户名、安全设置
在实际开发过程中,项目需求的变更和增加是常见的情况,因此这篇文章我们就模拟一下项目需求新增的情况。 一、需求 项目经理今天提出了新的功能,需要增加重置密码、安全设置、修改用户名、注销账户这四个功能,这四个功能必须是独…...
神经网络|(一)加权平均法,感知机和神经元
【1】引言 从这篇文章开始,将记述对神经网络知识的探索。相关文章都是学习过程中的感悟和理解,如有雷同或者南辕北辙的表述,请大家多多包涵。 【2】加权平均法 在数学课本和数理统计课本中,我们总会遇到求一组数据平均值的做法…...
OpenHarmony OTA升级参考资料记录
OpenHarmony 作为一个开源分布式操作系统,通过其强大的 OTA(Over-The-Air)升级能力,为开发者和厂商提供了一套灵活而安全的系统升级方案。 OTA升级方式 根据升级包的应用方式,OpenHarmony 的 OTA 升级可以分为两种:本地升级和网络OTA升级。 本地升级 本地升级是将已制作…...
在 Kubernetes 上快速安装 KubeSphere v4.1.2
目录标题 安装文档配置repo安装使用插件 安装文档 在 Kubernetes 上快速安装 KubeSphere 配置repo export https_proxy10.10.x.x:7890 helm repo add stable https://charts.helm.sh/stable helm repo update安装 helm upgrade --install -n kubesphere-system --create-name…...
【回忆迷宫——处理方法+DFS】
题目 代码 #include <bits/stdc.h> using namespace std; const int N 250; int g[N][N]; bool vis[N][N]; int dx[4] {0, 0, -1, 1}; int dy[4] {-1, 1, 0, 0}; int nx 999, ny 999, mx, my; int x 101, y 101; //0墙 (1空地 2远方) bool jud(int x, int y) {if…...
华为OD机试真题---战场索敌
华为OD机试真题“战场索敌”是一道考察算法和数据结构应用能力的题目。以下是对该题目的详细解析: 一、题目描述 有一个大小是NM的战场地图,被墙壁’#‘分隔成大小不同的区域。上下左右四个方向相邻的空地’.‘属于同一个区域,只有空地上可…...
计算机网络 (53)互联网使用的安全协议
一、SSL/TLS协议 概述: SSL(Secure Sockets Layer)安全套接层和TLS(Transport Layer Security)传输层安全协议是工作在OSI模型应用层的安全协议。SSL由Netscape于1994年开发,广泛应用于基于万维网的各种网络…...
c++算法贪心系列
本篇文章,同大家一起学习贪心算法!!! 第一题 题目链接 2208. 将数组和减半的最少操作次数 - 力扣(LeetCode) 题目解析 本题重点:最终的数组和要小于原数组和的一半,且求这一操作的…...
【Maui】注销用户,采用“手势”点击label弹窗选择
文章目录 前言一、问题描述二、解决方案三、软件开发(源码)3.1 方法一:前端绑定3.2 方法二:后端绑定3.3 注销用户的方法 四、项目展示 前言 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创…...
智慧脚下生根,智能井盖监测终端引领城市安全新革命
在繁忙的都市生活中,我们往往只关注地面的繁华与喧嚣,却忽略了隐藏在地面之下的基础设施——井盖。这些看似不起眼的井盖,实则承担着排水、通讯、电力等重要功能,是城市安全运转的重要一环。然而,传统的井盖管理面临着…...
Word2Vec如何优化从中间层到输出层的计算?
文章目录 Word2Vec如何优化从中间层到输出层的计算?用负采样优化中间层到输出层的计算负采样方法的关键思想负采样的例子负采样的采样方法 Word2Vec如何优化从中间层到输出层的计算? 重要性:★★ 用负采样优化中间层到输出层的计算 以词汇…...
第七篇:vue3 计算属性:computed
v-model "firstName". // v-model. 就是双向绑定的意思 <br/> // 通过 v-model 进行绑定姓:<input type"text" v-model "firstName"><br/>名:<input type"text" v-model"lastN…...
搭建k8s集群
一、准备工作(所有节点) 在开始部署之前,我们需要对所有节点进行以下准备工作。 1.1、关闭防火墙 # 关闭防火墙 systemctl stop firewalld# 禁止防火墙开机自启 systemctl disable firewalld1.2、 关闭 SELinux # 永久关闭 SELinux sed -…...
Android SystemUI——最近任务应用列表(十七)
对于最近任务应用列表来说,在 Android 原生 SystemUI 中是一个单独的组件。 <string-array name="config_systemUIServiceComponents" translatable="false">……<item>com.android.systemui.recents.Recents</item> </string-arra…...
java 根据前端传回的png图片数组,后端加水印加密码生成pdf,返回给前端
前端传回的png图片数组,后端加水印加密码生成pdf,返回给前端 场景:重点:maven依赖controllerservice 场景: 当前需求,前端通过html2canvas将页面报表生成图片下载,可以仍然不满意。 需要java后…...
《探秘鸿蒙Next:如何保障AI模型轻量化后多设备协同功能一致》
在鸿蒙Next的多设备协同场景中,确保人工智能模型轻量化后功能的一致性是一项极具挑战性但又至关重要的任务。以下是一些关键的方法和策略。 统一的模型架构与标准 采用标准化框架:选择如TensorFlow Lite、PyTorch Mobile等在鸿蒙Next上适配良好的轻量化…...
C语言二级
//请编写函数fun(),该函数的功能是:计算并输出给定整数n的所有因 //子(不包括1和自身)之和。规定n的值不大于1000。例如,在主函数 //中从键盘给n输入的值为856,则输出为:sum 763。 //注意&…...
隐私保护+性能优化,RyTuneX 让你的电脑更快更安全
RyTuneX 是一款专为 Windows 10 和 11 用户量身打造的系统优化工具,采用先进的 WinUI 3 框架开发,以其现代化的设计风格和强大的功能集合脱颖而出。这款工具不仅界面简洁美观,还提供了多样化的系统优化选项,旨在帮助用户最大化设备…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
