开发环境搭建-1:配置 WSL (类 centos 的 oracle linux 官方镜像)

news2025/2/23 10:03:25

一些 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 系
安装包格式debrpm
软件管理在线安装: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网络安装镜像
LiveGNOMEGNOME桌面版
LiveKDEKDE桌面版
LiveCD光盘上运行的系统,类拟于 WINPE

安装 WSL

以下使用官方的指令进行安装

注意:WSL 官方的安装方式要求能访问 github,最好是找个梯子,否则接下来的安装步骤非常难受

  1. 打开 powershell (管理员)
    在 windows 图标右键,点击【终端(管理员)】

    之后的命令都在打开的命令行中输入
  2. (非必须)查看指令帮助
wsl --help

  1. 查看支持的【发行版】
wsl --list --online

  1. 选择相关版本进行安装
    我项目使用的是 centos,应该选择 fedora 系的系统,这里选择 oracle linux
    项目上使用的版本是 centos 8,4,这里选择相同大版本的 oracle linux 8.7
wsl --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 组),但每次操作还需要密码

下面的流程能实现免密执行代码

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

  1. 重新执行程序,发现已经不需要输入密码了(只需要在指令前加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

设置登录时显示系统概况

1. 安装`fastfetch`软件 2. 配置系统登录时显示的内容登录 参考文章:[https://cloud.tencent.com/developer/article/1869215](https://cloud.tencent.com/developer/article/1869215) 1. 打开配置文件(要使用 root 权限)
sudo vim /etc/profile
2. 在最后添加以下内容,保存退出文件
# hello screen
sudo fastfetch

  1. 实际效果(每次登录都有以下内容显示)
  2. 如果出现显示问题,请检查 MobaXterm 的连接参数

把这里的连接参数裁成【原生连接器】,然后关闭窗口,重新打开

启用 systemd 支持(支持 systemctl 指令)

默认 WSL 使用 sysV 而不是 systemd 作为进程管理工具 ,默认情况下 systemctl 指令不可用。如下图

这对于很多运维人员来说很不方便,也可能导致一些依赖相关指令的脚本或程序运行失败

微软提供了相关文档:https://learn.microsoft.com/zh-cn/windows/wsl/systemd#how-to-enable-systemd

  1. 检查版本(在 windows 命令行中执行命令)
wsl --version

可看到当前 wsl 版本满足要求

  1. 修改配置文件(在 WSL 命令行中执行,这里使用vim作为文本编辑器,注意要 root 权限)
sudo vim /etc/wsl.conf

按照官方教程修改文件,并保存退出(如果没有对应的文件,就大胆的新建一个)

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

修改时间和时区

前提:首先设置启用 systemd,具体看上面的步骤

WSL 中的时间、时区会自动和主机 Windows 上的配置进行同步,无需设置

但如果想配置不同时区、手动设置时间,则可参考以下配置

参考文档:https://blog.csdn.net/wdk996/article/details/135940814

  1. 查看当前时间相关配置:timedatectl指令
  2. 设置时区:这里设为中国时区(Asia/Shanghai)
timedatectl set-timezone "Asia/Shanghai"
  1. 设置时间:使用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
  1. 查询当前已经安装的 WSL
 wsl --list -v

  1. 停止对应的 WSL
wsl --shutdown WSL名称

  1. 解除挂载的磁盘
    不解挂直接删除也行,WIndows 系统会自动解除挂载的
wsl --umount 磁盘盘符
  1. 卸载对应的 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

永久禁用

  1. 进入上面的环境文件~/.bashrc,删除(或注释掉)上面添加的三行,保存退出
  2. 使用source ~/.bashrc应用配置文件
  3. 使用上面的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)](https://www.yuque.com/lilixxs-mzhpq/kxm5pt/smkt19n4u7bi9gpw)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2280885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

llama-2-7b权重文件转hf格式及模型使用

目录 1. obtain llama weights 2. convert llama weights files into hf format 3. use llama2 to generate text 1. obtain llama weights (1)登录huggingface官网,搜索llama-2-7b (2)填写申请表单,VP…

ElasticSearch(十一)— Elasticsearch中的SQL语句

一、总概 Elasticsearch 在 Basic 授权中支持以 SQL 语句的形式检索文档,SQL 语句在执行时会被翻译为 DSL 执行。从语法的角度来看,Elastisearch 中的 SQL 语句与RDBMS 中的 SQL 语句基本一致, 所以对于有数据库编程基础的人来说大大降低了使…

吴恩达深度学习——如何实现神经网络

来自吴恩达深度学习,仅为本人学习所用。 文章目录 神经网络的表示计算神经网络的输出激活函数tanh选择激活函数为什么需要非激活函数双层神经网络的梯度下降法 随机初始化 神经网络的表示 对于简单的Logistic回归,使用如下的计算图。 如果是多个神经元…

爬取NBA球员信息并可视化小白入门

网址:虎扑体育-NBA球员得分数据排行 第1页 步骤: 分析页面 确定URL地址模拟浏览器向服务器发送请求数据解析 提取想要的数据保存数据 爬虫所需要的模块 requests(发送HTTP请求)parsel(解析HTML内容)pandas(数据保存模块) 第一步分析页面 --确定是静态页面还是动态页面 右击点…

C语言初阶牛客网刷题——JZ17 打印从1到最大的n位数【难度:入门】

1.题目描述 牛客网OJ题链接 题目描述&#xff1a; 输入数字 n&#xff0c;按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3&#xff0c;则打印出 1、2、3 一直到最大的 3 位数 999。 用返回一个整数列表来代替打印n 为正整数&#xff0c;0 < n < 5 示例1 输入&…

寒假刷题记录

4968. 互质数的个数 - AcWing题库 涉及&#xff1a;快速幂&#xff0c;欧拉函数&#xff0c;分解质因数 #include <bits/stdc.h> #define fi first #define se second #define endl \n #define pb push_backusing namespace std; using LL long long;const int mod 9…

OSI5GWIFI自组网协议层次对比

目录 5G网络5G与其他协议栈各层映射 5G网络 物理层 (PHY) 是 5G 基站协议架构的最底层&#xff0c;负责将数字数据转换为适合无线传输的信号&#xff0c;并将接收到的无线信号转换为数字数据。实现数据的编码、调制、多天线处理、资源映射等操作。涉及使用新的频段&#xff08…

Java高频面试之SE-16

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本牛马baby今天又来了&#xff01;哈哈哈哈哈嗝&#x1f436; Java中异常的处理方式有哪些&#xff1f; 在 Java 中&#xff0c;异常的处理方式主要有以下几种&#xff1a; 1. 使用 try-catch 语句 …

HTML中的`<!DOCTYPE html>`是什么意思?

诸神缄默不语-个人CSDN博文目录 在学习HTML时&#xff0c;我们经常会看到HTML文档的开头出现<!DOCTYPE html>&#xff0c;它是HTML文件的第一行。很多初学者可能会疑惑&#xff0c;为什么需要这行代码&#xff1f;它到底有什么作用呢&#xff1f;在这篇文章中&#xff0…

Games104——游戏中地形大气和云的渲染

原文链接 原文链接 这里写目录标题 地形的几何Heightfield高程图网格自适应细分三角形的剖分二叉树T-Junctions四叉树TIN&#xff08;Triangulated Irregular Network&#xff09;不规则三角形网格 GPU Drived Tessellator(Hardware Tessellation)Mesh ShaderNon-HeightField…

Springboot自动配置的原理

先拿redis来举个例子 第一步导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 第二步配置 spring: redis: database:host:127.0.0.1 port…

【动态规划】落花人独立,微雨燕双飞 - 8. 01背包问题

本篇博客给大家带来的是01背包问题之动态规划解法技巧. &#x1f40e;文章专栏: 动态规划 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&#x1f680; 要开心要快乐顺便…

记一次虚机上传过慢问题排查

最近线上虚机有个特殊的用户反馈&#xff0c;用户反馈虚机从A服务器下载文件特别慢&#xff0c;于是scp A服务器数据到本地client&#xff0c;发现 只有几十K的流量。 当时第一反应怀疑是虚机负载压力比较大&#xff0c;但是查看虚机IO以及负载都很低。。。。 然后tcpdump抓包发…

web服务器 网站部署的架构

WEB服务器工作原理 Web web是WWW(World Wide Web)的简称&#xff0c;基本原理是&#xff1a;请求(客户端)与响应(服务器端)原理&#xff0c;由遍布在互联网中的Web服务器和安装了Web浏览器的计算机组成 客户端发出请求的方式&#xff1a;地址栏请求、超链接请求、表单请求 …

数据结构——实验七·排序

嗨~~欢迎来到Tubishu的博客&#x1f338;如果你也是一名在校大学生&#xff0c;正在寻找各种编程资源&#xff0c;那么你就来对地方啦&#x1f31f; Tubishu是一名计算机本科生&#xff0c;会不定期整理和分享学习中的优质资源&#xff0c;希望能为你的编程之路添砖加瓦⭐&…

Windows系统提示RunDLL PcaWallpaperAppDetect错误修复方法

最近&#xff0c;Win11 24H2预览版和Win10 LTSC 2025功能更新偶尔会触发RunDLL错误弹窗 具体表现为 //英文提示 Error in C:\WINDOWS\system32\PcaSvc.dll Missing entry: PcaWallpaperAppDetect//中文提示 C:\WINDOWS\system32\PcaSvc.dll出错 丢失条目:PcaWallpaperAppDe…

计算机组成原理——数据表示(二)

当生活的压力和困惑缠绕在身边&#xff0c;我们往往需要振奋精神&#xff0c;勇往直前。无论在何种困境中&#xff0c;我们都要保持积极的态度和坚定的信念。将悲观的情绪抛之脑后&#xff0c;展现出坚强的意志力和无尽的活力。振奋精神意味着我们要战胜自己内心的负面情绪&…

人源化抗体的改造方式及其优势【卡梅德生物】

随着生物制药行业的迅速发展&#xff0c;抗体药物已经成为治疗多种疾病&#xff08;尤其是癌症、免疫性疾病等&#xff09;的重要手段。抗体人源化改造技术作为抗体药物研发的关键技术之一&#xff0c;在提高药物疗效和降低免疫原性方面发挥了至关重要的作用。 1. 人源化抗体的…

【Linux】深刻理解动静态库

1.什么是库 库是写好的现有的&#xff0c;成熟的&#xff0c;可以复⽤的代码。现实中每个程序都要依赖很多基础的底层库&#xff0c;不可能每个⼈的代码都从零开始&#xff0c;因此库的存在意义⾮同寻常。本质上来说库是⼀种可执⾏代码的⼆进制形式&#xff0c;可以被操作系统载…

【java数据结构】其他非基于比较排序

【java数据结构】其他非基于比较排序 一、计数排序二、基数排序三、桶排序 博客最后附有整篇博客的全部代码&#xff01;&#xff01;&#xff01; 一、计数排序 场景&#xff1a;集中在某个范围内的一组数据 思路&#xff1a; 找到这组序列的最大值和最小值&#xff0c;通过…