当前位置: 首页 > news >正文

Windows环境下 Go项目迁移至Ubuntu(WSL) 以部署filebeat为例

1、先在Ubuntu操作系统下,配置go语言环境【需要go build ,当然如果你是打算在外界编译成可执行文件,然后丢到wsl,可以不要配置go环境】

配置go流程如下:【注意,如果有旧版本,记得先删除,否则后面项目运行不起来】

报错

 Load redeclared in this block

①先拉包 :wget  https://golang.google.cn/dl/go1.24.2.linux-amd64.tar.gz 
中间的版本,可以随意更改,go.mod用的是1.24.2

②然后再解压:tar -xvzf go1.24.2.linux-amd64.tar.gz -C /usr/local/

③配置环境变量:

        编辑用户的bashrc文件
        nano ~/.bashrc

        文件末尾加这三行
        export GOROOT=/usr/local/go
        export GOPATH=$HOME/go
        export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

        刷新
        source ~/.bashrc

配置go env 【一般开启Module模式和更改proxy 】
默认官方直链,没梯子很慢。可以更换cn站点

go env -w GO111MODULE=on

go env -w GOPROXY=https://goproxy.cn,direct

2、完成以上操作go 可以正常使用了,我们切到项目下,直接go build 命令,自动帮我们下载依赖
当然,如果想更改版本,可以:go get package@version 指定版本

比如我在项目中需要更改filebeat的版本: go get github.com/elastic/beats/v7@v7.17.29 

更改后,记得go mod tidy ,否则项目编译会报错
还有当你把go.mod文件删除后,重新go mod init + ModuleName ,也是需要go mod tidy的,否在会报错【当然,如果你go mod tidy 了还报错,就需要检查你当前路径是否在GOPATH下,如果在的话可以切换GOPATH路径,或者退出GOPATH路径,这也是Module模式和GOPATH模式的区别】

报错:
cannot determine module path for source directory

3、项目编译 :go build -o filebeat . 【-o 指定编译后的文件名称】

生成可执行文件后,还不能立即使用【这个时候只是普通文件】,我们还需要更改操作权限:
chmod 777 文件名

4、项目运行:当文件变成可执行文件后,通过命令 ./filebeat -e -c filebeat.yml执行程序

如果你的整个源码是通过从windows拖过来的,你的文件的拥有者可能只是普通用户,这个时候如果你是root用户,想执行这个可执行文件,可能会报错:

报错:error loading config file: config file ("filebeat.yml") must be owned by the user identifier (uid=0) or root

通过ll 可以查看当前路径下的文件的拥有者,如果不是现在本人,通过命令:
chown -R root:root 文件路径 【-R 表示递归 冒号前后表示用户以及用户组】

最后我还碰到一个报错:

runtime/cgo: pthread_create failed: Operation not permitted

SIGABRT: abort

通过查阅大量文档,最后解决方案是,提升filebeat的版本,通过我上面将的 go get 提升到了7.17.29解决问题。

http://www.lryc.cn/news/598673.html

相关文章:

  • 如何在 Ubuntu 24.04 服务器或桌面版上安装和使用 gedit
  • 深度分析Java内存回收机制
  • 跨境支付入门~国际支付结算(电商篇)
  • unordered_map和unordered_set特性以及解决哈希冲突
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-19,(知识点:PCB布局布线的设计要点)
  • DevOps 完整实现指南:从理论到实践
  • LeetCode 23:合并 K 个升序链表
  • 【已解决】YOLO11模型转wts时报错:PytorchStreamReader failed reading zip archive
  • 医疗AI轻量化部署方案的深度梳理与优化路径判研
  • 基于Qt的仿QQ聊天系统设计
  • Ethereum: 区块链浏览器,我们的“天眼”
  • 力扣 hot100 Day54
  • 【开源】WpfMap:一个基于WPF(Windows Presentation Foundation)技术构建的数据可视化大屏展示页面
  • JS对象键的秘密:数字变字符串?
  • 【Linux基础知识系列】第六十四篇 - 了解Linux的硬件架构
  • 应急响应】Linux 自用应急响应工具发版 v6.0(LinuxGun)
  • redis 源码阅读
  • 完整指南:使用Apache htpasswd为Chronograf配置基础认证及功能详解
  • AWS S3 生命周期管理最佳实践:IoT Core 日志的智能存储优化
  • 【水文水资源] SWAT、AquaCrop模型、HYPE、Aquatox、Delft3D、FVCOM、3s水文、
  • 数据推荐丨海天瑞声7月数据集上新啦!
  • 用python自动标注word试题选项注意事项
  • 基于k2-icefall实践Matcha-TTS中文模型训练2
  • 机器学习概述与 KNN 算法详解
  • 湖北大数据集团赴OpenCSG三峡传神社区调研指导
  • 虚拟电厂——解读69页 2024虚拟电厂售电业务及共享储能等新型业态趋势【附全文阅读】
  • YOLO11有效涨点优化:注意力魔改 | 新颖的多尺度卷积注意力(MSCA),即插即用,助力小目标检测
  • 深入解析文件操作(下)- 文件的(顺序/随机)读写,文件缓冲区,更新文件
  • 模块化商城的快速部署之道:ZKmall开源商城如何让电商功能即插即用
  • 前端安全问题怎么解决