搭建 Yak 语言开发环境
在正式学习 Yak 语言之前,我们需要先准备好开发环境。Yak 提供了两种使用方式,你可以根据自己的使用场景任选其一:
- 【推荐】使用 Yakit 内置的 Yak 引擎:通过图形化客户端 Yakit 直接编写并执行 Yak 代码,开箱即用,自带代码补全。
- 【专家】直接安装 Yak 引擎:把引擎安装到系统中,使用命令行
yak [your-script].yak执行脚本,适合自动化、服务器与 CI 场景。
- 如果你是初学者,或者希望获得最完整的编程辅助体验,请直接选择第一种「在 Yakit 中使用内置引擎」。
- 如果你需要在服务器上批量运行脚本,或者想把 Yak 集成进自己的工具链,请选择第二种「在系统中使用 Yak 引擎」。
两种方式底层都是同一个 Yak 引擎,能力完全一致。
【推荐】在 Yakit 中使用内置的 Yak 引擎
Yak 语言核心提供了非常强大的安全能力,但它本质上是一门语言,直接使用要求用户既要学习 Yak 语法,又要具备一定的安全理解。
为了让 Yak 的安全能力更贴近实际使用,我们为 Yak 编写了 gRPC 服务器,并基于它构建了图形化客户端 Yakit。Yakit 是一个高度集成化的 Yak 语言安全能力输出平台,它内置了 Yak 引擎的下载与管理能力,你无需手动安装引擎即可开始编程。
第一步:下载并安装 Yakit 客户端
前往官网下载与你操作系统匹配的 Yakit 安装包(提供 macOS、Windows、Linux 版本)。
图:Yakit 官网多平台安装包下载界面(提供 Windows / macOS / Linux 版本)
你也可以前往 Yakit 的 GitHub Releases 下载对应平台的发行版。
图:Yakit 的 GitHub Releases 发布页
下载完成后按照常规方式安装即可。Windows 下双击 .exe 安装程序,按向导提示逐步完成(启动 → 选择安装路径 → 安装 → 完成)。
图:Yakit Windows 安装向导(启动 → 选择路径 → 安装 → 完成)
macOS 下打开 .dmg 镜像,把 Yakit 图标拖入「应用程序(Applications)」文件夹即可。
图:macOS 下将 Yakit 拖拽到「应用程序」文件夹完成安装
在较新版本的 macOS 或 Apple Silicon(M 系列芯片)系统下,首次打开可能会提示安装包"已损坏",这是系统的隔离属性(quarantine)导致的,并非文件本身损坏。
【配图:macOS 提示 "Yakit 已损坏" 的弹窗】
在「终端(Terminal)」中执行以下命令清除隔离属性即可正常打开:
sudo xattr -r -d com.apple.quarantine /Applications/Yakit.app
第二步:使用 Yakit 下载核心 Yak 引擎
首次启动 Yakit 时,客户端会引导你初始化核心 Yak 引擎。选择「初始化引擎(本地模式)」,按界面提示等待引擎下载安装完成即可——这是开箱即用的本地一体化工作模式,足以应对绝大多数任务。
图:Yakit 首次启动的引擎初始化界面(选择「初始化引擎」即进入本地模式)
下面的视频演示了完整的引擎下载流程:
第三步:使用 Yak Runner 执行 Yak 代码
引擎安装完成并连接成功后,点击主界面右上角的 Yak Runner,即可新建脚本、编写并运行 Yak 代码。它不仅是编辑器,更是一个完整的 Yak 语言集成开发环境(IDE),集文件管理、代码编辑与执行调试于一体。
图:Yak Runner 一体化开发工作台(左侧资源管理器 / 中部代码编辑区 / 下方输出面板)
点击代码编辑区右上角的 执行 按钮运行脚本,结果会实时反馈在下方的「输出」面板中。
图:在 Yak Runner 中执行脚本,输出面板实时展示运行结果
如果你想进一步了解 Yak Runner 的工程化管理、智能补全、调试与集成终端等完整能力,可参阅 Yakit 使用手册:Yak IDE - Yak Runner 集成开发环境。
下面的视频演示了在 Yak Runner 中运行第一段 Hello World 代码:
Yak Runner 内置了 Yak 代码的自动补全,它直接与引擎通信来调度代码并生成补全,可以在多平台下提供统一一致的 Yak 编程体验。对于绝大多数用户,这是最省心的开发方式。
【专家】在系统中使用 Yak 引擎
以下步骤会把核心引擎安装到系统中,使你能够通过系统命令直接执行 Yak 脚本,适合服务器、自动化与 CI 等无图形界面的场景。
一键脚本安装(macOS / Linux)
- macOS (Intel/M1) 安装
- Linux 安装
- Windows 安装
Yak 中的 SYN 扫描技术依赖 github.com/google/gopacket,在捕获数据包时需要使用 libpcap 作为外部依赖。如果遇到 pcap 依赖问题,可通过以下命令安装 libpcap:
brew install libpcap
在 macOS 下安装 Yak 非常简单,直接在终端执行:
bash <(curl -sS -L http://oss-qn.yaklang.com/install-latest-yak.sh)
脚本会自动下载并把 Yak 安装到系统可执行目录。安装过程中可能会要求输入管理员密码(用于把引擎复制到系统目录)。
【配图:macOS 终端执行一键安装脚本的过程,安装成功后输出 yak version 信息】
安装完成后,执行 yak version 可以看到类似如下的版本信息:
Yak Language Build Info:
Version: v0.9.7a2-ff28a9389f7bd7538de20468b4a096258dfe3ce6
GoVersion: go version go1.15.13 darwin/amd64
GitHash: ff28a9389f7bd7538de20468b4a096258dfe3ce6
BuildTime: Mon Jul 19 17:45:48 2021 +0800
Linux 平台的 Yak 通过静态编译,一般不需要额外安装 libpcap。
如果静态编译版本出现问题导致引擎不可用,可以下载"非静态编译"版本使用。该版本需要通过 apt install libpcap(或对应发行版的包管理器)来解决 libpcap.so 缺失的问题。
大多数情况下,Linux x64 平台可以通过以下命令直接安装:
bash <(curl -sS -L http://oss-qn.yaklang.com/install-latest-yak.sh)
安装流程与 macOS 基本一致。安装完成后,执行 yak version 验证安装是否成功。
【配图:Linux 终端执行一键安装脚本并通过 yak version 验证】
由于 SYN 扫描功能的需要,Windows 版本需要安装抓包依赖。
如果你之前安装过 Nmap,一般不需要额外处理;如果出现依赖缺失,可安装 npcap for Common Windows Version。
- 以管理员权限打开
cmd。
【配图:以管理员身份打开 Windows 命令提示符 cmd】
- 安装 Yak 二进制程序:在打开的 cmd 中输入并执行以下命令。
powershell (new-object System.Net.WebClient).DownloadFile('https://oss-qn.yaklang.com/yak/latest/yak_windows_amd64.exe','yak_windows_amd64.exe') && yak_windows_amd64.exe install && del /f yak_windows_amd64.exe
上述命令在管理员权限下实际完成三个步骤:
- 下载最新版本的
windows x64Yak 发行版; - 执行
yak_windows_amd64.exe install把 Yak 安装到本地可执行目录; - 删除刚刚下载的临时文件。
- 安装完成后,在任意命令行中执行
yak version即可验证。
【配图:Windows 下安装 Yak 并通过 yak version 验证成功】
安装代码编辑器与 Yak 插件
虽然我们努力让编写 Yak 脚本尽量简单,但借助编辑器插件可以获得语法高亮与代码补全,让编写过程更高效。
VSCode 插件的更新与维护频度不高,自动补全可能不及 Yakit 中的 Yak Runner 完整。若你追求最佳编程体验,仍推荐使用 Yak Runner。
确认 Yak 已安装完毕
在安装插件之前,先确认引擎已经就绪。在命令行执行 yak version,能正常输出版本信息即表示安装成功:
Yak Language Build Info:
Version: v0.9.7a2-ff28a9389f7bd7538de20468b4a096258dfe3ce6
GoVersion: go version go1.15.13 darwin/amd64
GitHash: ff28a9389f7bd7538de20468b4a096258dfe3ce6
BuildTime: Mon Jul 19 17:45:48 2021 +0800
安装 VSCode 并启用 Yaklang 插件
首先安装 VSCode。安装完成后,在插件市场搜索 yaklang,即可找到并安装 Yak 语言插件。
【配图:VSCode 插件市场中搜索并安装 yaklang 插件】
安装好插件后,你就可以在任何地方开始编写 Yak 脚本了。
- 当文件以
.yak为后缀时,会自动启用代码高亮; - 当输入内置库名称后跟
.时,会自动提示该库可用的接口; - 对动态语言中的变量,插件会尝试猜测可能的字段名与方法名,虽不一定完全准确,但能帮助你快速筛选。
由于研发精力有限,插件的补全能力仍在完善中,欢迎社区共同建设 Yak 生态。
手动下载 / 安装
如果一键脚本不可用,或你希望自行管理安装过程,可以手动下载对应平台的发行版后安装。
如果遇到 pcap / libpcap 依赖问题,请先参考上文「依赖说明」对应平台的处理办法。
- macOS (Intel/M1) x64 下载
- Linux x64 下载
- Windows x64 下载
点击下载 yak_darwin_amd64。
下载完成后执行:
chmod +x yak_darwin_amd64 && ./yak_darwin_amd64 install
在确认 yak version 执行成功后,即可删除下载的文件 yak_darwin_amd64。
点击下载 yak_linux_amd64。
下载完成后执行:
chmod +x yak_linux_amd64 && ./yak_linux_amd64 install
在确认 yak version 执行成功后,即可删除下载的文件 rm ./yak_linux_amd64。
点击下载 yak_windows_amd64。
可手动把 yak_windows_amd64.exe 放入系统可执行目录,或参考上文一键命令完成安装。
常见安装问题 Q&A
Yak 安装的原理是什么?
- 安装脚本托管在阿里云 OSS 上,可下载
http://oss-qn.yaklang.com/install-latest-yak.sh查看具体安装方法; - 安装脚本会把 yak 主程序下载到本地;
- yak 程序会把自己的二进制复制到可执行目录中(例如
/usr/local/bin或C:\Windows\System32\),然后执行yak version验证安装结果。
如何删除 Yak?
找到 Yak 的安装路径并删除即可。例如在 *unix 系统下,可通过 which yak 找到安装路径。
安装失败应该如何操作?
- 手动下载适合自己平台的最新 Yak 发行程序;
- 在管理员 / root 权限下执行
yak_{{GOOS}}_amd64 install命令; - 执行成功后,确认
yak version能正常运行。
pcap / libpcap 依赖出现问题?
- *unix 操作系统下,一般通过
brew/apt/yum install libpcap即可解决; - Windows 平台下,可下载并安装
npcap for Common Windows Version解决。