wsl2 ubuntu安装golang

目录

下载

golang 导入 wsl 代码

打开一个新项目 一直加载 go list -m json all

Debug 提示gcc 不存在 ,在 Ubuntu 20.04 上安装 GCC

环境变量消失

编辑器里面包报红

#先给权限

#选择项目的时候删除./idea文件试试

异常

Mysql sql model 报错 which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mod e=only_full_group_by"

彻底解决方案

Redis踩坑——MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on


为啥会选择独立安装golang呢,我的本地环境是wsl2+ubuntu+idea,想通过本地虚拟机直接debug,就不能把golang装在dokcer里面了

下载

wget https://golang.google.cn/dl/go1.18.7.linux-amd64.tar.gz

tar -C /usr/local -xzf go1.18.7.linux-amd64.tar.gz

vim /etc/profile
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/home/go
export GOBIN=$GOPATH/bin
#保存
source /etc/profile

export GO111MODULE=on
export GOPROXY='https://goproxy.io'
export GOPROXY=https://mirrors.aliyun.com/goproxy/

golang 导入 wsl 代码

打开一个新项目 一直加载 go list -m json all

Ennnnnnnnnn

记得开代理

Debug 提示gcc 不存在 ,在 Ubuntu 20.04 上安装 GCC

默认的 Ubuntu 软件源包含了一个软件包组,名称为 "build-essential",它包含了 GNU 编辑器集合,GNU 调试器,和其他编译软件所必需的开发库和工具。 想要安装开发工具软件包,以 拥有 sudo 权限用户身份或者 root 身份运行下面的命令:

sudo apt update

sudo apt install build-essential

这个命令将会安装一系列软件包,包括gcc,g++,和make。 你可能还想安装关于如何使用 GNU/Linux开发的手册。

sudo apt-get install manpages-dev

通过运行下面的命令,打印 GCC 版本,来验证 GCC 编译器是否被成功地安装。

gcc --version

在 Ubuntu 20.04 软件源中 GCC 的默认可用版本号为9.3.0:

gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

环境变量消失

#注意查看env环境变量里面的路劲

sudo vim ~/.profile
export GOROOT="/usr/local/go"
export GOBIN=$GOROOT/bin
export GOPATH="/home/go"
export PATH=$PATH:$GOPATH/bin


sudo vim ~/.bashrc
#添加 
export GOROOT="/usr/local/go"
export GOBIN=$GOROOT/bin
export GOPATH="/home/go"
export PATH=$PATH:$GOPATH/bin
#保存
source ~/.bashrc

编辑器里面包报红

#先给权限

#因为你的用个人账户开,比如我的账户test,遇到事情先给权限
sudo chown -R test:test-R /home

#选择项目的时候删除./idea文件试试

异常

Mysql sql model 报错 which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mod e=only_full_group_by"

SELECT @@sql_mode; set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

彻底解决方案

  1. 进入mysql :docker exec -ti 14ea13dd0cf8 /bin/bash

  2. 输入密码:mysql -uroot -p

  3. 查看sql_model:SELECT version(),@@SESSION.sql_mode,@@GLOBAL.sql_mode;

此时发现有ONLY_FULL_GROUP_BY

  1. 执行以下脚本:

mysql -uroot -p

SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

#查询sql model
SELECT version(),@@SESSION.sql_mode,@@GLOBAL.sql_mode;
  1. 此时在看sql_model:SELECT version(),@@SESSION.sql_mode,@@GLOBAL.sql_mode;

  2. 重启项目即可 dokcer restart mysql

Redis踩坑——MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on

不能彻底解决

root@ubuntu:/usr/local/redis/bin# ./redis-cli
127.0.0.1:6379> config set stop-writes-on-bgsave-error no

彻底解决

vim /etc/sysctl.conf 
'vm.overcommit_memory = 1' 
#然后重启
将vm.overcommit_memory改为1有什么作用呢,网上看到一个博客是如下解释,我个人也比较同意

0 — 默认设置。个人理解:当应用进程尝试申请内存时,内核会做一个检测。内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。举个例子,比如1G的机器,A进程已经使用了500M,当有另外进程尝试malloc 500M的内存时,内核就会进行check,发现超出剩余可用内存,就会提示失败。
1 — 对于内存的申请请求,内核不会做任何check,直到物理内存用完,触发OOM杀用户态进程。同样是上面的例子,1G的机器,A进程500M,B进程尝试malloc 500M,会成功,但是一旦kernel发现内存使用率接近1个G(内核有策略),就触发OOM,杀掉一些用户态的进程(有策略的杀)。
2 — 当 请求申请的内存 >= SWAP内存大小 + 物理内存 * N,则拒绝此次内存申请。解释下这个N:N是一个百分比,根据overcommit_ratio/100来确定,比如overcommit_ratio=50,那么N就是50%。

猜你喜欢

转载自blog.csdn.net/qq_27229113/article/details/129591512