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

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.xdnf.cn/news/16226.html

相关文章:

  • MinIO 版本管理实践指南(附完整 Go 示例)
  • MySQL深度理解-MySQL索引优化
  • 二分查找----5.寻找旋转排序数组中的最小值
  • Android Activity与Fragment生命周期变化
  • 谈谈ArrayList与Vector的理解?
  • NOTEPAD!NPCommand函数分析之comdlg32!GetSaveFileNameW--windows记事本源代码分析
  • TechGPT3部署
  • 【STM32】FreeRTOS 任务的创建(二)
  • 深入理解大语言模型生成参数:temperature、top\_k、top\_p 等全解析
  • EasyExcel 模板导出数据 + 自定义策略(合并单元格)
  • vue 项目中 components 和 views 包下的组件功能区别对比,示例演示
  • AudioLLM 开源项目了解学习
  • 网络编程——聊天程序实现
  • 基于arduino uno r3主控的环境监测系统设计-2
  • 后端分页接口实现
  • SpringBoot框架简介
  • PHP 与 Vue.js 结合的前后端分离架构
  • Qwen3-Coder实现中国象棋游戏的尝试
  • DRF - 博客列表API
  • 【C++】类和对象(中)
  • Eureka-服务注册,服务发现
  • 办公自动化入门:如何高效将图片整合为PDF文档
  • PHP文件下载
  • Lua(字符串)
  • 图论:搜索问题
  • linus 环境 tomcat启动日志分隔
  • LeetCode31~50题解
  • LeetCodeOJ题:回文链表
  • CAN总线仲裁中的延时补偿机制
  • Lua(文件I/O)