以下配置在 Ubuntu 22.04 下测试通过。
注意:测试程序在 WSL 1 上无法正常运行。请根据微软文档 Check which version of WSL you are running, 如果你正在使用 WSL 1,请 Upgrade version from WSL 1 to WSL 2。
本项目需要 Go 1.18 或以上版本。
目前apt管理的安装的Go版本较老(1.18),如果需要安装新版请手动安装。
输入
sudo apt install golang-go安装完成后之后运行以下命令检查 Go 版本:
go version配置 Go 模块代理 加速 Go 模块的下载:
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct删除旧版本 Go(如有):
sudo rm -rf /usr/local/gosudo apt remove golang-go下载 Go 安装包:(你可以从 Go 官网 获取最新版本下载链接)
curl -LO "https://go.dev/dl/go<version>.linux-amd64.tar.gz"解压到 /usr/local 目录:
sudo tar -C /usr/local -xzf go<version>.linux-amd64.tar.gz在go.mod中修改:
- go 1.18
+ go <version>其中<version>应该手动填入你需要的版本,如1.20.5。
将 /usr/local/go/bin 目录添加到 PATH 环境变量中。
如果你使用的是 bash,执行以下命令:
echo 'export PATH="$PATH:/usr/local/go/bin"' >> ~/.bashrc如果你使用的是 zsh,执行以下命令:
echo 'export PATH="$PATH:/usr/local/go/bin"' >> ~/.zshrc运行:
source ~/.bashrc或者重启终端使环境变量生效。
推荐使用 VSCode 作为开发工具。你也可以使用 GoLand 等其他 IDE,但是请自行解决环境配置问题。
如果你使用虚拟机或服务器,建议使用 VSCode 的 Remote - SSH 插件连接到虚拟机或服务器上进行开发。
安装 VSCode Go 语言扩展。
安装后会弹出若干次缺包提示,内容类似于
The "gopls" command is not available. Run "go install -v golang.org/x/tools/gopls@latest" to install.
一律选择 Install。
进入项目根目录,执行以下命令:
go build如果编译成功,会在当前目录下生成名为 dht 的可执行文件,这表示你的环境配置成功。
你可以通过以下命令运行测试程序:
./dht -test all测试需要一段时间,正常情况下你会看到测试通过的提示。你还会在当前目录下看到名为 dht-test.log 的日志文件,其中包含了测试程序的运行日志。
Final print:
Basic test passed with fail rate 0.0000
Force quit test passed with fail rate 0.0000
Quit & Stabilize test passed with fail rate 0.0000
如果你遇到 Too many open files 的错误,可以参考 资源释放 部分。
注意:这部分配置不是必须的,但是如果你测试程序运行时遇到问题,可以尝试以下配置。
释放本项⽬需要的⼀些资源限制,包括 Port Range 和 Max File 和 TCP MSL。
sudo vim /etc/systcl.conf # 在该⽂件尾部添加下⾏
net.ipv4.ip_local_port_range = 20240 65535
net.ipv4.tcp_fin_timeout = 4sudo vim /etc/security/limits.conf # 在该⽂件尾部添加下⾯⼏⾏
* soft nofile 65535
* hard nofile 65535reboot # 重启