写点什么

Windows Server 2019 安装提要 (及 VS 2019 Build Tool) - 续

用户头像
hedzr
关注
发布于: 1 小时前
Windows Server 2019 安装提要 (及 VS 2019 Build Tool) - 续

The Essentials: After Windows Server 2019 Evaluation Installed - PART II

上一次写了 Windows Server 2019 安装提要 (及 VS 2019 Build Tool),然后描述了基本的安装后配置工作。不过这离我的目标——一个轻量级(22GB 之轻)的 MSVC 构建环境——还差得远。


所以继续追加配置过程中遇到的问题。如下。

安装后提要

安装 Chocolatey

安装 Chocolatey:


powershell Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) 
复制代码


chocolatey 是一个命令行的包管理器。像 apt。


在 choco 官方的软件仓库页面可以查找特定的软件包:https://chocolatey.org/packages

安装 nano 编辑器

用惯了命令行中的简易编辑器,nano 可以满足多数的轻量级编辑需求。


安装它:


choco install -y nano
复制代码


然后可以在命令行中直接 nano 1.txt

修订环境变量

在 Server Core 的命令行界面中,你默认处于 cmd 提示符下,可以输入命令 “powershell” 来进入到 PowerShell 提示符模式。


在 cmd 提示符中,setset PATH 依旧有效,可以用来显示全部或指定的环境变量,set PATH="%PATH%;xxx" 可以设置环境变量。


官方对此有说明:关于环境变量 - PowerShell - Microsoft Docs

永久修订环境变量

为了永久性地修改环境变量,需要利用 PowerShell 中提供的 Set-ItemProperty 接口。


如果你真的对 cmd 提示符下的永久修改环境变量感兴趣,查看 SETX 命令的参考:

setx /?

有时候,你会发现,万能的重启非常有用:shutdown -r -f

幸好 server core 的重启往往非常快,至少是足够快了。

辅助函数

在 powershell 环境中,可以添加一组函数来简化环境变量的修订工作。首先进入到 PowerShell 提示符,然后粘贴下面的脚本:


function get_path () {  $val = Get-ItemProperty -Path HKCU:\Environment -Name Path  $val.path.Split(';')  # Write-Host $val.Replace(";","`n") -ForegroundColor Green}function set_path ($new_path) {  Set-ItemProperty -Path HKCU:\Environment -Name path -Value $new_path  Write-Host "The operation completed successfully.`n" -ForegroundColor Green}function add_path ($path) {  $val = Get-ItemProperty -Path HKCU:\Environment -Name path  $new_path = $val.path + ";" + $path.Trim()  Set-ItemProperty -Path HKCU:\Environment -Name path -Value $new_path  Write-Host "The operation completed successfully.`n" -ForegroundColor Green}function del_path ($path) {  $path = ';' + ($path.Trim() -replace "\\","\\")  $val = Get-ItemProperty -Path HKCU:\Environment -Name Path  $old_path = $val.path  $flag = 0    # if the argument $path ends with a slash  if ($path.endswith("\\")) {    # if the path in the registry ends with a slash    if ($old_path -match $path) {      $new_path = $old_path -replace $path,""      Set-ItemProperty -Path HKCU:\Environment -Name Path -Value $new_path      $flag = 1    }    # if the path in the registry does not end with a slash    else {      $path = $path.Substring(0,$path.LastIndexOf('\') - 1)      if ($old_path -match $path) {        $new_path = $old_path -replace $path,""        Set-ItemProperty -Path HKCU:\Environment -Name Path -Value $new_path        $flag = 1      }    }  }  # if the argument $path does not end with a slash  else {    # if the path in the registry ends with a slash    $path += "\\"    if ($old_path -match $path) {      $new_path = $old_path -replace $path,""      Set-ItemProperty -Path HKCU:\Environment -Name Path -Value $new_path      $flag = 1    }    else {      # if the path in the registry does not end with a slash      $path = $path.Substring(0,$path.LastIndexOf('\') - 1)      if ($old_path -match $path) {        $new_path = $old_path -replace $path,""        Set-ItemProperty -Path HKCU:\Environment -Name Path -Value $new_path        $flag = 1      }    }  }
if ($flag) { Write-Host "The operation completed successfully.`n" -ForegroundColor Green } else { Write-Host "The operation failed.`n" -ForegroundColor Red }}
复制代码


就可以得到四个辅助函数。


  • Get_path 可以显示 PATH 的当前值;

  • set_path "new_path_value"add_path "append_text" 可以设置 PATH 值;

  • del_path "a_path_part" 可以删除一个 PATH 片段,PATH 变量的值是用分号分隔的多个片段。

将上述辅助函数永久化

在 cmd 提示符环境中,通过 nano 编辑文件 %USERPROFILE%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1,并将上面的代码追加到该文件中,以后每次启动 PowerShell,这几个辅助函数都将会自动生效了。

安装 vscode

一般来说,nano 可以满足我们的大量幻想。不过我们还可以有更神奇的选择,在 Server Core 中安装 Visual Studio Code,它不香吗!


官网下载安装包,然后在服务器上执行该安装包。


例如:


curl -UseBasicParsing -Uri "https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user" -OutFile "vscode-user-setup-x64.exe".\vscode-user-setup-x64.exe
复制代码


注意在 powershell 环境中,curl 实际上是 Invoke-WebRequest 的别名。如果你想查阅可用的命令行参数的话,使用“Invoke-WebRequest -?”。


如果你想要使用 GNU 的 curl 或者 wget,可以通过 chocolatey 方式安装它们。


如果你想要为所有用户安装 Visual Studio Code,下载安装包时注意选择 System Installer。


参考(仅用做记录):

$Env:Path += "$Env:UserProfile\AppData\Local\Programs\Microsoft VS Code"

"c:\Program Files (x86)\Microsoft Visual Studio\Installer"

GUI?

在 server core 环境中,的的确确是可以安装 Visual Studio Code 的,它的运行有一点点仿佛的不同,但你应该是觉察不到的,


你可能会像我一样遇到没有文件对话框的问题。也就是说,在 vscode 窗口里 File Open 菜单命令是无响应的。但这难不倒我们,在 cmd 提示符中用 code 1.txt 发起 vscode 编辑器就可以了。


例如这里:



康康,它确实能够工作,对于长期在 bash 环境中的人来说,这特么真的不合理,但又合理的很,不是吗?

安装 git

首先你需要下载 git for win 的安装包:这里


在 Server Core 中可以直接运行安装包,有点违和(对于 SSH 惯了的人)但是行得通:


posh-git

posh-git 是一组整合脚本,帮助你在 powershell 环境中更好滴使用 git 命令行,例如自动补全什么的。


可以通过 PowerShell 来安装 posh-git 模块,它的背后是通过 nuget 方式达成的:


Install-Module posh-git -Scope AllUsers -Force
复制代码


如果只是想安装到当前用户,将 AllUsers 改为 CurrentUser 即可。


以上方式来自于 Git - Git in PowerShell

和 Visual Studio 2019 Build Tool 有关的

首先,在 Server Core 中安装了 VSBT 工具之后,环境变量并不会得到更新。你需要执行 VS 的 LaunchDevCmd.bat 来进入到 VSBT 的工作环境。


在工作环境中,什么 cmake,cl,dotnet,nmake,msbuild 等等等才会有效。


问题在于,LaunchDevCmd.bat 是隐藏的非常深的。它在 C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools 之中,这对于命令行环境来说,绝对是超级崩溃的长文件名了。


所以你可以考虑在 PATH 环境变量中追加该路径,例如:SETX PATH "%PATH%;C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools"


然后就可以直接键入 LaunchDevCmd.bat 来进入到 VSBT 的构建环境了。

vcpkg

为了安装一些公开的源码包,还需要 vcpkg 就绪。它的安装很简单(参考其官网):


cd %USERPROFILE%\mkdir workcd workgit clone https://github.com/Microsoft/vcpkg.git.\vcpkg\bootstrap-vcpkg.sh
复制代码


等到它构建完了,就可以运行它了:


%USERPROFILE%\work\vcpkg\vcpkg list%USERPROFILE%\work\vcpkg\vcpkg install yaml-cpp
复制代码


在我们的源码开发中,cmake 构建流程需要注入 vcpkg 控制文件:


# configurecmake -DENABLE_AUTOMATE_TESTS=OFF -S . -B build/ -DCMAKE_TOOLCHAIN_FILE=%USERPROFILE%/work/vcpkg/scripts/buildsystems/vcpkg.cmake
# buildcmake --build build/# installcmake --build build/ --target install
复制代码


如上

🔚

暂时写这么多。

发布于: 1 小时前阅读数: 4
用户头像

hedzr

关注

还未添加个人签名 2020.05.12 加入

https://hedzr.com

评论

发布
暂无评论
Windows Server 2019 安装提要 (及 VS 2019 Build Tool) - 续