百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Win10 快速搭建各种开发环境(win10 快速搭建各种开发环境的软件)

nanshan 2024-11-11 12:19 11 浏览 0 评论

1 概述

作为一名使用 win10 的开发者,搭建开发环境往往是一件比较痛苦的事,需要从网上下载各种软件,在电脑上配置不同软件运行环境,对软件进行各种设置,不仅耗时,而且容易出现各种问题。搭建的环境还会存在下面一些问题:

  1. 安装大量程序造成路径污染。
  2. 安装和卸载比较麻烦。
  3. 开发环境不能迁移,重装系统或者换电脑需要重新搭建开发环境。
  4. 软件版本不好控制。

为了解决上面这些问题,我们可以使用 WSL+Docker+Scoop 搭建开发环境,取代通过图形界面安装软件和 VMware 安装 Linux 环境的传统方式。

WSL 是适用于 Linux 的 Windows 子系统, 可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器或 Windows 机器上。

Scoop 是 Windows 的命令行安装程序,可以让我们从命令行以最小的安装量安装程序, 它消除了安装界面和安装程序造成的路径污染,它安装和卸载软件只需一行命令就可以完成,它还可以随意切换软件的版本。

一个完整的开发环境组成:首先使用 WSL 搭建一个 Linux 环境,然后在 Linux 环境里安装 Docker 应用,使用 Docker 来安装一些常用软件,比如数据库、web 环境等,Scoop 则是在本机上安装一些开发用到的软件,比如 jdkmavenidea 等。WSL 和 Scoop 都是比较容易备份和还原的,这两个搭建好了,我们利用备份还原可以快速在另一台机器上搭建同样的一套环境,下面是搭建环境的具体流程。

2 WSL

2.1 WSL 安装

  1. 使用 WINDOWS 键 + R,输入 winver,检查 win10 版本,确保内部版本号是 18362.1049 以上,否则更新 win10 到最新版本。
  1. 以管理员身份打开 PowerShell 并运行下面命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  1. 重新启动计算机。
  2. 下载 Linux内核更新包[1],然后安装。
  3. wsl2 设置为默认版本, 以管理员身份打开 PowerShell 并运行下面命令:
wsl --set-default-version 2
  1. 安装 Ubuntu 20.04 LTS, 打开 Microsoft Store[2],搜索 Ubuntu 20.04 LTS[3] 安装, 安装完成后打开 Ubuntu 20.04 LTS, 等候几分钟会提示设置用户名和密码,如果不设置用户名和密码直接关闭窗口则默认以 root 登录,这里我们直接关闭窗口,不设置用户名和密码。
  1. 然后重新打开 Ubuntu 20.04 LTS 就会进入 Ubuntu 20.04 LTS了,我们也可以在 powershell 使用 wsl 这个命令进入 Ubuntu 20.04 LTS

2.2 WSL 配置

WSL 每次启动后,windows 都会给它分配一个随机的 IP 地址,这样是不利于我们访问 docker 里的服务的,为了解决这个问题,我们可以创建一个脚本文件 wsl2-ip.bat来给 wsl 分配一个固定的 IP,在每次启动 wsl 后用管理员权限运行这个脚本,文件内容如下:

@echo off
setlocal enabledelayedexpansion
 
:: set wsl2 ip
wsl -u root ip addr | findstr "192.168.169.2" > nul
if !errorlevel! equ 0 (
    echo wsl ip has set
) else (
    wsl -d Ubuntu-20.04 -u root ip addr add 192.168.169.2/28 broadcast 192.168.169.15 dev eth0 label eth0:1
    echo set wsl ip success: 192.168.169.2
)
 
:: set windows ip
ipconfig | findstr "192.168.169.1" > nul
if !errorlevel! equ 0 (
    echo windows ip has set
) else (
    netsh interface ip add address "vEthernet (WSL)" 192.168.169.1 255.255.255.240
    echo set windows ip success: 192.168.169.1
)
pause

其中 192.168.169.2 表示 Linux 的 IP 地址, 192.168.169.1 表示主机的 IP 地址。

有时会遇到 Ubuntu 20.04 LTS 无法连接网络,这个非常重要,我们可以运行下面命令解决:

sed -i '4d' /etc/resolv.conf
sed -i '3a\nameserver 8.8.8.8' /etc/resolv.conf
sed -i '4a\nameserver 114.114.114.114' /etc/resolv.conf

2.3 Ubuntu 配置

2.3.1 替换镜像源

  1. 备份 sources.list 文件,运行下面命令:
mv /etc/apt/sources.list /etc/apt/sources.list.bak
  1. 创建 source.list 文件,运行下面命令:
vim /etc/apt/sources.list
  1. 然后在文件里添加下面内容,下面源任选其一即可。
# 清华源
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# 阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
# 中科大源
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
#deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
#deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
#deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
#deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
#deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
#网易163源
deb http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse
#deb-src http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse
#deb-src http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse
#deb-src http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse
#deb-src http://mirrors.163.com/ubuntu/ focal-proposed main restricted universe multiverse
#deb-src http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse
  1. 进行更新,运行下面命令:
apt update
apt upgrade -y

2.3.2 开启 systemctl

  1. 安装 daemonizefontconfig 软件,运行下面命令:
apt install -y fontconfig daemonize
  1. 运行 vim /etc/profile 命令,在末尾添加下面内容:
SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target#39; | grep -v unshare | awk '{print $2}')
if [ -z "$SYSTEMD_PID" ]; then
 sudo /usr/bin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
 SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target#39; | grep -v unshare | awk '{print $2}')
fi
if [ -n "$SYSTEMD_PID" ] && [ "$SYSTEMD_PID" != "1" ]; then
  exec sudo /usr/bin/nsenter -t $SYSTEMD_PID -a su - $LOGNAME
fi
  1. 运行 vim /etc/sudoers 命令,在末尾添加下面内容:
%sudo ALL=(ALL) NOPASSWD: /usr/sbin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
%sudo ALL=(ALL) NOPASSWD: /usr/bin/nsenter -t [0-9]* -a su - [a-zA-Z0-9]*
  1. 刷新 profile 文件,运行下面命令:
source /etc/profile

2.3.2 开启 ssh

  1. 设置 root 账号的密码,用作后续登陆使用,运行下面命令:
passwd root
  1. 备份原始的 sshd_config,运行下面命令:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  1. 修改 sshd_config 文件,运行下面命令:
sed -i '15c Port 22' /etc/ssh/sshd_config
sed -i '17c ListenAddress 0.0.0.0' /etc/ssh/sshd_config
sed -i '34c PermitRootLogin yes' /etc/ssh/sshd_config
sed -i '58c PasswordAuthentication yes' /etc/ssh/sshd_config
  1. 重启 sshd,运行下面命令
systemctl restart sshd

2.4 Docker 安装与配置

官方和阿里的源选择其一,建议使用阿里源,速度快。

2.4.1 官方安装

  1. 卸载旧版本,运行下面命令:
apt-get remove docker docker-engine docker.io containerd runc
  1. 更新 apt 软件包索引并安装软件包以允许 apt 通过 HTTPS 使用存储库,运行下面命令:
apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
  1. 添加 Docker 的官方 GPG 密钥,运行下面命令:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 设置稳定的存储库,运行下面命令:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 安装最新版本的 Docker Engine 和容器,运行下面命令:
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
apt-mark hold docker-ce docker-ce-cli containerd.io

2.4.2 阿里源安装

  1. 卸载旧版本,运行下面命令:
apt-get remove docker docker-engine docker.io containerd runc
  1. 更新 apt 软件包索引并安装软件包以允许 apt 通过 HTTPS 使用存储库,运行下面命令:
apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
  1. 添加 Docker 的阿里 GPG 密钥,运行下面命令:
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  1. 设置稳定的存储库,运行下面命令:
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
  1. 安装最新版本的 Docker Engine 和容器,运行下面命令:
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
apt-mark hold docker-ce docker-ce-cli containerd.io

2.4.3 配置镜像加速

创建 /etc/docker/daemon.json 文件,并填写以下内容:

{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
}

3 Scoop

3.1 Scoop 安装

  1. 以管理员权限打开 PowerShell 。
  2. 自定义用户软件和全局软件安装位置,运行下面命令:
$env:SCOOP='D:\Softwares\Scoop\LocalApps'
[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')
$env:SCOOP_GLOBAL='D:\Softwares\Scoop\GlobalApps'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine')
  1. 配置安全策略以及安装 Scoop,运行下面命令:
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')

3.2 安装失败解决方案

  1. 如果发生下面错误,这是因为网络原因无法访问 GitHub。
  1. 访问 IP地址查询网站[4],输入raw.githubusercontent.com域名,查询对应的 IP 地址。
  1. 配置 C:\Windows\System32\drivers\etc\hosts文件,在修改前赋予 hosts 文件读写权限。
  1. 修改 host 文件内容如下,第一列是查询出来的ip地址,第二列是其对应的域名,中间有个空格。
  1. 保存后重新运行安装命令。
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')

3.3 Scoop 配置

  1. 安装 Scoop 运行所需要的基础软件:
scoop install sudo
sudo scoop install 7zip git innounp dark -g
  1. 运行下面命令,检查Scoop还存在的问题,输入提示运行的命令,来解决存在的问题,如果你使用的安装路径不是我的路径,请修改命令中的软件安装位置:
scoop checkup
Add-MpPreference -ExclusionPath 'D:\Softwares\Scoop\LocalApps'
Add-MpPreference -ExclusionPath 'D:\Softwares\Scoop\GlobalApps'
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1
  1. 配置软件仓库,官方软件仓库目前收录的软件很少,不足以支持我们的使用,添加下面的软件仓库,能让我们安装更多的软件:
scoop bucket add extras
scoop bucket add versions
scoop bucket add nightlies
scoop bucket add nirsoft
scoop bucket add php
scoop bucket add nerd-fonts
scoop bucket add nonportable
scoop bucket add java
scoop bucket add games
scoop bucket add jetbrains
scoop bucket add dorado https://github.com/chawyehsu/dorado
scoop bucket add Ash258 https://github.com/Ash258/Scoop-Ash258.git
scoop bucket add pleiades https://github.com/jfut/scoop-pleiades.git
scoop bucket add Scoop-Apps https://github.com/ACooper81/scoop-apps
scoop bucket add scoop-zapps https://github.com/kkzzhizhou/scoop-zapps
scoop bucket add lemon https://github.com/hoilc/scoop-lemon
scoop bucket add raresoft https://github.com/L-Trump/scoop-raresoft

如果软件仓库添加失败,还是因为网络的原因,大家可以把这些仓库 fork 到自己的码云账户下,然后再添加。

  1. 使用 aria2 来加速软件的安装:
scoop install aria2 -g
scoop config aria2-max-connection-per-server 16
scoop config aria2-split 16
scoop config aria2-min-split-size 1M

如果想关闭 aria2,可以运行 scoop config aria2-enabled false命令。

3.4 Scoop 常用命令

# 搜索app
scoop search <应用名>
 
# 检查哪些软件有更新
scoop status
 
# 版本切换
scoop reset <应用名>@<版本切换>
 
# 禁止某app更新
scoop hold <应用名>
 
# 更新所有app
scoop update *
 
# 安装app
scoop install <应用名>
 
#全局安装app
scoop install -g <应用名>
 
#安装extras软件源下的app
scoop install extras/<应用名>
 
# 卸载app
scoop uninstall <应用名>
 
# 卸载全局安装的app
scoop uninstall -g <应用名>

4 总结

开发环境软件的安装与配置到这里就完成了,利用上面这些软件,你可以快速搭建 JavaGoC++Python等开发环境。

参考资料

[1] Linux内核更新包: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

[2] Microsoft Store: https://aka.ms/wslstore

[3] Ubuntu 20.04 LTS: https://www.microsoft.com/store/apps/9n6svws3rx71

[4] IP地址查询网站: https://www.ipaddress.com/

相关推荐

0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)

文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...

ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes

为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...

生产环境starrocks 3.1存算一体集群部署

集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...

在CentOS上添加swap虚拟内存并设置优先级

现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...

国产深度(deepin)操作系统优化指南

1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...

postgresql-15.4 多节点主从(读写分离)

1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...

Docker 容器 Java 服务内存与 GC 优化实施方案

一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...

虚拟内存设置、解决linux内存不够问题

虚拟内存设置(解决linux内存不够情况)背景介绍  Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...

Elasticsearch性能调优(5):服务器配置选择

在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...

Es如何落地

一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...

针对Linux内存管理知识学习总结

现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...

MySQL进阶之性能优化

概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...

Linux Cgroups(Control Groups)原理

LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...

linux 常用性能优化参数及理解

1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...

如何在 Linux 中使用 Sysctl 命令?

sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...

取消回复欢迎 发表评论: