[root@iZwz9f559fa6a44djkfo68Z ngrok]# make release-server release-client
bin/go-bindata -nomemcopy -pkg=assets -tags=release \
-debug=false \
-o=src/ngrok/client/assets/assets_release.go \
assets/client/...
bin/go-bindata -nomemcopy -pkg=assets -tags=release \
-debug=false \
-o=src/ngrok/server/assets/assets_release.go \
assets/server/...
go get -tags 'release' -d -v ngrok/...
src/github.com/mattn/go-runewidth/runewidth.go:7:2: found packages uniseg (doc.go) and main (gen_breaktest.go) in /root/ngrok-server/ngrok/src/github.com/rivo/uniseg
make: *** [Makefile:8: deps] Error 1
该回答引用ChatGPT以下答案由GPT-3.5大模型与博主波罗歌共同编写:
根据你提供的错误信息,发现是在执行 make release-server release-client
时出现了错误。具体错误是在执行 go get 命令时,报了一个找不到包的错误。
根据错误信息中提示的 /root/ngrok-server/ngrok/src/github.com/rivo/uniseg
可以看出,这是一个第三方包的路径。
有可能是,这个第三方包被错误地拷贝到了你的项目中,并且在执行 go get 命令时发现了这个包。
你可以尝试移除 src/github.com/rivo/uniseg
这个目录并重新执行 make release-server release-client
。
如果移除之后问题依然存在,可以尝试执行 go get github.com/rivo/uniseg
命令安装这个包,并清除 GOPATH 下的缓存再重新执行 make 命令。
如果我的回答解决了您的问题,请采纳!
该回答引用ChatGPT:
这个错误可能是由于go版本太老所导致的。请确保你的go版本为1.16及以上。 另外,需要检查是否缺少依赖项。您可以通过运行以下命令来检查和安装依赖项:
go mod tidy
go mod download
根据错误信息,这似乎是由于 go runewidth 库和 go uniseg 库之间的命名冲突造成的。您可以尝试在执行编译之前手动处理这个冲突。以下是一些可能有效的方法:
尝试重新安装 go-bindata 库:
go get github.com/jteeuwen/go-bindata/...
然后再执行编译命令看看是否仍然报同样的错误。
尝试升级 go-runewidth 库。您可以使用以下命令来更新该库:
go get github.com/mattn/go-runewidth
然后再执行编译命令看看是否仍然报同样的错误。
手动处理命名冲突。您可以尝试手动重命名 go uniseg 库的某些文件或包,或者尝试使用一个不同的代替库。具体的处理方法需要视具体情
根据提供的信息,似乎是在执行 make release-server release-client 命令时出现了编译错误。错误信息指出在编译 ngrok 时遇到了 src/github.com/mattn/go-runewidth/runewidth.go:7:2 的问题。
然而,错误信息可能并不充分。请确保您已经安装了 go-bindata 和 go,并且将其添加到了系统的 PATH 环境变量中。
引用chatGPT作答,这个编译错误是因为 ngrok 依赖的一个库 rivo/uniseg 在生成文档时与 main 包发生了冲突,导致编译失败。
解决这个问题的方法是手动删除生成的文档(doc.go)并再次编译,可以按照以下步骤进行:
1.进入 rivo/uniseg 库的源代码目录:
cd $GOPATH/src/github.com/rivo/uniseg
2.删除生成的文档(doc.go):
rm doc.go
3.回到 ngrok 源代码目录,重新编译:
cd $GOPATH/src/github.com/inconshreveable/ngrok
make release-server release-client
这样应该就能成功编译 ngrok 了。
git clone https://github.com/inconshreveable/ngrok.git
ngrok.cn2118.cn
你自己的域名openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.cn2118.cn" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=ngrok.cn2118.cn" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
如图
替换我们刚刚生成的证书
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key
y
继续替换即可】make release-server
log "github.com/keepeye/log4go"
编译成功后,应该可以在 /usr/local/src/ngrok/bin 下生成了一个 ngrokd 可执行文件,这就是我们的服务端了,现在启动服务端试试:
然后重新 make release-server
生成客户端
GOOS=windows GOARCH=amd64 make release-server release-client
nohup bin/ngrokd -domain="ngrok.cn2118.cn" -httpAddr=":8001" &
lsof -i:8001
Ngrok\windows_amd64
目录下载到Windows客户端上ngrok.cfg
server_addr: "ngrok.cn2118.cn:4433"
trust_host_root_certs: false
ngrok -config=ngrok.cfg -subdomain www 80