TL; DR
在 PowerShell(管理员)中执行
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
choco install microsoft-windows-terminal
**还想看更多碎碎念?↓**
引言
长期以来咱的开发环境一直在使用 *nix / Linux 系统,比如 macOS 或者 Ubuntu,没什么太多的原因,其实就是「懒」。
*nix / Linux 上有着一套优秀的包管理系统及其社区,绝大部分软件的安装你只需要一行命令。据咱所知,很多人坚持用 arch Linux 的原因就是 AUR。
在下文中以 macOS 上的包管理举例子:
假如你想安装一套 Nginx + Mariadb + Python3 的开发环境,你只需要一行命令:
brew install nginx mariadb python3便可以省去在传统 Windows 上的
- 去各个官网下载编译版并安装
- 自行配置各个软件
- 配置 PATH 变量
等等等等一系列不友善的要花费数小时的过程。
如果你自行编译安装过一些软件的话,这个过程就更加繁琐复杂了。
人生苦短,多给自己节约点时间做点有意义的事。
什么是包管理?
你可以做出这样简单的理解:
对用户而言,包管理就像是电脑版的 App Store,但是这个应用商店足够自由且开放。
同时,包管理就像是一本软件安装的参考答案,几乎所有常用的命令行软件都可以通过包管理来安装,前人帮你写好了答案,你照着抄就可以。
一个软件安装要经过许多的步骤,我们用简单的命令行软件 curl 来举例:
- 去 curl 的官网下载最新版本的源代码
- 设置一些参数,检查依赖环境
- 利用 Makefile 进行安装
而包管理就是帮你进行这个复杂的过程的,对你而言,你只需要执行一行命令
brew install curl而 HomeBrew 在背后帮你执行的命令你可以在 homebrew-core 这个 github 仓库中看到。
https://github.com/Homebrew/homebrew-core/blob/master/Formula/curl.rb
我们来看一下这段 Ruby 代码
class Curl < Formula
desc "Get a file from an HTTP, HTTPS or FTP server"
homepage "https://curl.haxx.se/"
#App 的简介
url "https://curl.haxx.se/download/curl-7.68.0.tar.bz2"
sha256 "207f54917dd6a2dc733065ccf18d61bb5bebeaceb5df49cd9445483e8623eeb9"
#应该去哪里下载源代码
bottle do
cellar :any
sha256 "2695c7d41931198debef3736002422c036b36a547e4d6d3098184e90b729f571" => :catalina
......
end
#预编译版 bottle 的 sha256
head do
url "https://github.com/curl/curl.git"
depends_on "autoconf" => :build
depends_on "automake" => :build
depends_on "libtool" => :build
end
keg_only :provided_by_macos
depends_on "pkg-config" => :build
uses_from_macos "openssl"
#依赖环境
def install
system "./buildconf" if build.head?
args = %W[
--disable-debug
--disable-dependency-tracking
......
]
#编译过程的参数
system "./configure", *args
system "make", "install"
system "make", "install", "-C", "scripts"
libexec.install "lib/mk-ca-bundle.pl"
end
#编译命令
test do
filename = (testpath/"test.tar.gz")
......
end
end这实际上是一种「前人栽树,后人乘凉」的行为,社区讨论出安装 App 的最佳方式,而包管理帮你执行这一大串繁琐的过程。
但不仅仅在于命令行,很多的 GUI 软件也都可以通过 homebrew cask 来进行安装。
比如你可以通过
brew cask install atom chrome等来安装很多 App。
并且通过包管理安装的 App 都可以由包管理来负责更新,你只需要一行
brew cask upgrade便可以更新完所有通过 brew cask 安装的 App,是不是有应用商店内味儿了。
回到 Windows 上
Windows 上的各种「包管理」不温不火的原因可能是因为 Windows 上「包」的概念并不怎么明确。
在 Linux 下,配置皆文件,打开 conf 文件便可以修改你想要的配置和参数;Windows 下则采用了「注册表」的概念,而 Win 的理念可能并不想让用户接触到这个「潘多拉魔盒」,每次对注册表的编辑和修改都是令人头大的一件事情。
尽管有 MingW 这类软件可以帮你把 GUN 生态链搬到 Windows 上,可是安装和软件仍然是一件麻烦事。
Windows 自带的 cmd 和 PowerShell 的 UI 总是仿佛回到了 1998,没有 zsh 或者 fish 这样的优秀的 shell,「提笔忘参数」这种事情时有发生。
基本上咱在 Windows 上做的最多的事情可能就是游戏了,毕竟不做客户端软件开发也就很少用 VS,但是不得不说 VSCode 是真的很香。
微软这几年也开始拥抱开源社区,从 Windows Subsystem for Linux 就能看出来。
但不得不说微软自己的那个终端还是太复古了,使用体验不尽人意,然后微软推出了全新的终端:Windows Terminal
在 Github 官方介绍中,除了手动安装以外,官方还钦定了一种第三方安装方式:Chocolatey
安装方式也很令人满意:
choco install microsoft-windows-terminal关于 Chocolatey
Chocolatey 是 Windows 上的一个第三方「包管理」软件,使用 Apache 协议,同时提供商业版本(个人 / 团队可以直接使用社区版)
用他们自己的说法:
The licensing is very business friendly
安装 Chocolatey 也很简单,在管理员 PowerShell 中执行:
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
随后你便可以通过 Choco 安装包括 Windows Terminal 在内的很多软件了
比如你可以这样:
choco install adb android-sdk android-ndk jdk8 git python3 googlechrome notepadplusplus是不是省下了很多麻烦的配置过程,将来的统一升级管理也十分方便。
Chocolatey 的社区包已经十分完善了,你可以去他们的官网页面查找你想要的软件。
Windows Terminal
为什么要用 Windows Terminal 在前文已经提过了:替换掉原本的难用的终端。
简单的体验下来没发现什么太多问题,起码比默认的中易宋体好看多了。


可能是咱不太习惯 PowerShell 的语法和一大坨的报错信息吧,最终使用时间最多的也就是配合 WSL 使用了,不过安装过程中发现了个好用的包管理还蛮开心的。
用 Windows 10 自带的「包管理器」MS Store 装不是更方便嘛
https://www.microsoft.com/en-us/p/windows-terminal-preview/9n0dx20hk701
嘛,道理上这篇文章就是想介绍下包管理的。而且好多其他软件没法用 MS Store 安装就很麻烦(再加上 MS Store 在国内三天两头打不开